mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
commit
680c7330d3
@ -22,15 +22,16 @@ extern "C" {
|
|||||||
|
|
||||||
ArduinoOTAClass::ArduinoOTAClass()
|
ArduinoOTAClass::ArduinoOTAClass()
|
||||||
: _port(0)
|
: _port(0)
|
||||||
|
, _udp_ota(0)
|
||||||
|
, _initialized(false)
|
||||||
, _state(OTA_IDLE)
|
, _state(OTA_IDLE)
|
||||||
, _size(0)
|
, _size(0)
|
||||||
, _cmd(0)
|
, _cmd(0)
|
||||||
, _ota_port(0)
|
, _ota_port(0)
|
||||||
, _start_callback(NULL)
|
, _start_callback(NULL)
|
||||||
, _end_callback(NULL)
|
, _end_callback(NULL)
|
||||||
, _progress_callback(NULL)
|
|
||||||
, _error_callback(NULL)
|
, _error_callback(NULL)
|
||||||
, _udp_ota(0)
|
, _progress_callback(NULL)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,9 +126,13 @@ struct SSDPTimer {
|
|||||||
|
|
||||||
SSDPClass::SSDPClass() :
|
SSDPClass::SSDPClass() :
|
||||||
_server(0),
|
_server(0),
|
||||||
|
_timer(new SSDPTimer),
|
||||||
_port(80),
|
_port(80),
|
||||||
|
_respondToPort(0),
|
||||||
_pending(false),
|
_pending(false),
|
||||||
_timer(new SSDPTimer)
|
_delay(0),
|
||||||
|
_process_time(0),
|
||||||
|
_notify_time(0)
|
||||||
{
|
{
|
||||||
_uuid[0] = '\0';
|
_uuid[0] = '\0';
|
||||||
_modelNumber[0] = '\0';
|
_modelNumber[0] = '\0';
|
||||||
@ -300,6 +304,8 @@ void SSDPClass::_update(){
|
|||||||
case VALUE:
|
case VALUE:
|
||||||
if(cr == 2){
|
if(cr == 2){
|
||||||
switch(header){
|
switch(header){
|
||||||
|
case START:
|
||||||
|
break;
|
||||||
case MAN:
|
case MAN:
|
||||||
#ifdef DEBUG_SSDP
|
#ifdef DEBUG_SSDP
|
||||||
DEBUG_SSDP.printf("MAN: %s\n", (char *)buffer);
|
DEBUG_SSDP.printf("MAN: %s\n", (char *)buffer);
|
||||||
|
@ -92,6 +92,7 @@ class SSDPClass{
|
|||||||
|
|
||||||
UdpContext* _server;
|
UdpContext* _server;
|
||||||
SSDPTimer* _timer;
|
SSDPTimer* _timer;
|
||||||
|
uint16_t _port;
|
||||||
|
|
||||||
IPAddress _respondToAddr;
|
IPAddress _respondToAddr;
|
||||||
uint16_t _respondToPort;
|
uint16_t _respondToPort;
|
||||||
@ -101,7 +102,6 @@ class SSDPClass{
|
|||||||
unsigned long _process_time;
|
unsigned long _process_time;
|
||||||
unsigned long _notify_time;
|
unsigned long _notify_time;
|
||||||
|
|
||||||
uint16_t _port;
|
|
||||||
char _schemaURL[SSDP_SCHEMA_URL_SIZE];
|
char _schemaURL[SSDP_SCHEMA_URL_SIZE];
|
||||||
char _uuid[SSDP_UUID_SIZE];
|
char _uuid[SSDP_UUID_SIZE];
|
||||||
char _friendlyName[SSDP_FRIENDLY_NAME_SIZE];
|
char _friendlyName[SSDP_FRIENDLY_NAME_SIZE];
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
|
|
||||||
ESP8266WebServer::ESP8266WebServer(IPAddress addr, int port)
|
ESP8266WebServer::ESP8266WebServer(IPAddress addr, int port)
|
||||||
: _server(addr, port)
|
: _server(addr, port)
|
||||||
|
, _currentMethod(HTTP_ANY)
|
||||||
, _currentHandler(0)
|
, _currentHandler(0)
|
||||||
, _firstHandler(0)
|
, _firstHandler(0)
|
||||||
, _lastHandler(0)
|
, _lastHandler(0)
|
||||||
@ -40,11 +41,13 @@ ESP8266WebServer::ESP8266WebServer(IPAddress addr, int port)
|
|||||||
, _currentArgs(0)
|
, _currentArgs(0)
|
||||||
, _headerKeysCount(0)
|
, _headerKeysCount(0)
|
||||||
, _currentHeaders(0)
|
, _currentHeaders(0)
|
||||||
|
, _contentLength(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
ESP8266WebServer::ESP8266WebServer(int port)
|
ESP8266WebServer::ESP8266WebServer(int port)
|
||||||
: _server(port)
|
: _server(port)
|
||||||
|
, _currentMethod(HTTP_ANY)
|
||||||
, _currentHandler(0)
|
, _currentHandler(0)
|
||||||
, _firstHandler(0)
|
, _firstHandler(0)
|
||||||
, _lastHandler(0)
|
, _lastHandler(0)
|
||||||
@ -52,6 +55,7 @@ ESP8266WebServer::ESP8266WebServer(int port)
|
|||||||
, _currentArgs(0)
|
, _currentArgs(0)
|
||||||
, _headerKeysCount(0)
|
, _headerKeysCount(0)
|
||||||
, _currentHeaders(0)
|
, _currentHeaders(0)
|
||||||
|
, _contentLength(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,23 +146,23 @@ protected:
|
|||||||
HTTPMethod _currentMethod;
|
HTTPMethod _currentMethod;
|
||||||
String _currentUri;
|
String _currentUri;
|
||||||
|
|
||||||
size_t _currentArgCount;
|
|
||||||
RequestArgument* _currentArgs;
|
|
||||||
HTTPUpload _currentUpload;
|
|
||||||
|
|
||||||
RequestArgument* _currentHeaders;
|
|
||||||
size_t _headerKeysCount;
|
|
||||||
size_t _contentLength;
|
|
||||||
String _responseHeaders;
|
|
||||||
|
|
||||||
String _hostHeader;
|
|
||||||
|
|
||||||
RequestHandler* _currentHandler;
|
RequestHandler* _currentHandler;
|
||||||
RequestHandler* _firstHandler;
|
RequestHandler* _firstHandler;
|
||||||
RequestHandler* _lastHandler;
|
RequestHandler* _lastHandler;
|
||||||
THandlerFunction _notFoundHandler;
|
THandlerFunction _notFoundHandler;
|
||||||
THandlerFunction _fileUploadHandler;
|
THandlerFunction _fileUploadHandler;
|
||||||
|
|
||||||
|
int _currentArgCount;
|
||||||
|
RequestArgument* _currentArgs;
|
||||||
|
HTTPUpload _currentUpload;
|
||||||
|
|
||||||
|
int _headerKeysCount;
|
||||||
|
RequestArgument* _currentHeaders;
|
||||||
|
size_t _contentLength;
|
||||||
|
String _responseHeaders;
|
||||||
|
|
||||||
|
String _hostHeader;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool ESP8266WebServer::_collectHeader(const char* headerName, const char* headerValue) {
|
bool ESP8266WebServer::_collectHeader(const char* headerName, const char* headerValue) {
|
||||||
for (size_t i = 0; i < _headerKeysCount; i++) {
|
for (int i = 0; i < _headerKeysCount; i++) {
|
||||||
if (_currentHeaders[i].key==headerName) {
|
if (_currentHeaders[i].key==headerName) {
|
||||||
_currentHeaders[i].value=headerValue;
|
_currentHeaders[i].value=headerValue;
|
||||||
return true;
|
return true;
|
||||||
@ -226,7 +226,7 @@ void ESP8266WebServer::_parseArguments(String data) {
|
|||||||
}
|
}
|
||||||
_currentArgCount = 1;
|
_currentArgCount = 1;
|
||||||
|
|
||||||
for (int i = 0; i < data.length(); ) {
|
for (int i = 0; i < (int)data.length(); ) {
|
||||||
i = data.indexOf('&', i);
|
i = data.indexOf('&', i);
|
||||||
if (i == -1)
|
if (i == -1)
|
||||||
break;
|
break;
|
||||||
|
@ -44,10 +44,10 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
String _uri;
|
|
||||||
HTTPMethod _method;
|
|
||||||
ESP8266WebServer::THandlerFunction _fn;
|
ESP8266WebServer::THandlerFunction _fn;
|
||||||
ESP8266WebServer::THandlerFunction _ufn;
|
ESP8266WebServer::THandlerFunction _ufn;
|
||||||
|
String _uri;
|
||||||
|
HTTPMethod _method;
|
||||||
};
|
};
|
||||||
|
|
||||||
class StaticRequestHandler : public RequestHandler {
|
class StaticRequestHandler : public RequestHandler {
|
||||||
@ -67,7 +67,7 @@ public:
|
|||||||
if (requestMethod != HTTP_GET)
|
if (requestMethod != HTTP_GET)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (_isFile && requestUri != _uri || !requestUri.startsWith(_uri))
|
if ((_isFile && requestUri != _uri) || !requestUri.startsWith(_uri))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -311,7 +311,7 @@ bool WiFiClientSecure::verify(const char* fp, const char* url) {
|
|||||||
uint8_t sha1[20];
|
uint8_t sha1[20];
|
||||||
int len = strlen(fp);
|
int len = strlen(fp);
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
for (int i = 0; i < sizeof(sha1); ++i) {
|
for (size_t i = 0; i < sizeof(sha1); ++i) {
|
||||||
while (pos < len && fp[pos] == ' ') {
|
while (pos < len && fp[pos] == ' ') {
|
||||||
++pos;
|
++pos;
|
||||||
}
|
}
|
||||||
|
@ -309,9 +309,6 @@ class ClientContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ClientContext* _next;
|
|
||||||
int _refcnt;
|
|
||||||
|
|
||||||
tcp_pcb* _pcb;
|
tcp_pcb* _pcb;
|
||||||
|
|
||||||
pbuf* _rx_buf;
|
pbuf* _rx_buf;
|
||||||
@ -320,6 +317,9 @@ class ClientContext {
|
|||||||
discard_cb_t _discard_cb;
|
discard_cb_t _discard_cb;
|
||||||
void* _discard_cb_arg;
|
void* _discard_cb_arg;
|
||||||
|
|
||||||
|
int _refcnt;
|
||||||
|
ClientContext* _next;
|
||||||
|
|
||||||
size_t _size_sent;
|
size_t _size_sent;
|
||||||
bool _send_waiting;
|
bool _send_waiting;
|
||||||
};
|
};
|
||||||
|
@ -365,22 +365,17 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int _refcnt;
|
|
||||||
udp_pcb* _pcb;
|
udp_pcb* _pcb;
|
||||||
|
|
||||||
ip_addr_t _dest_addr;
|
|
||||||
uint16_t _dest_port;
|
|
||||||
|
|
||||||
uint16_t _multicast_ttl;
|
|
||||||
|
|
||||||
bool _first_buf_taken;
|
|
||||||
pbuf* _rx_buf;
|
pbuf* _rx_buf;
|
||||||
|
bool _first_buf_taken;
|
||||||
size_t _rx_buf_offset;
|
size_t _rx_buf_offset;
|
||||||
|
int _refcnt;
|
||||||
pbuf* _tx_buf_head;
|
pbuf* _tx_buf_head;
|
||||||
pbuf* _tx_buf_cur;
|
pbuf* _tx_buf_cur;
|
||||||
size_t _tx_buf_offset;
|
size_t _tx_buf_offset;
|
||||||
|
uint16_t _multicast_ttl;
|
||||||
|
uint16_t _dest_port;
|
||||||
|
ip_addr_t _dest_addr;
|
||||||
rxhandler_t _on_rx;
|
rxhandler_t _on_rx;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ bool MDNSResponder::begin(const char* domain){
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Copy in domain characters as lowercase
|
// Copy in domain characters as lowercase
|
||||||
for (int i = 0; i < n; ++i)
|
for (size_t i = 0; i < n; ++i)
|
||||||
_hostName[i] = tolower(domain[i]);
|
_hostName[i] = tolower(domain[i]);
|
||||||
_hostName[n] = '\0';
|
_hostName[n] = '\0';
|
||||||
|
|
||||||
@ -190,7 +190,7 @@ void MDNSResponder::_parsePacket(){
|
|||||||
|
|
||||||
char serviceName[32];
|
char serviceName[32];
|
||||||
uint8_t serviceNameLen;
|
uint8_t serviceNameLen;
|
||||||
uint16_t servicePort;
|
uint16_t servicePort = 0;
|
||||||
|
|
||||||
char protoName[32];
|
char protoName[32];
|
||||||
uint8_t protoNameLen;
|
uint8_t protoNameLen;
|
||||||
@ -367,7 +367,7 @@ void MDNSResponder::_parsePacket(){
|
|||||||
else if(questions[i] == MDNS_TYPE_PTR) responseMask |= 0xF;
|
else if(questions[i] == MDNS_TYPE_PTR) responseMask |= 0xF;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _reply(responseMask, (serviceName), (protoName), servicePort);
|
return _reply(responseMask, serviceName, protoName, servicePort);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MDNSResponder::enableArduino(uint16_t port, bool auth){
|
void MDNSResponder::enableArduino(uint16_t port, bool auth){
|
||||||
@ -461,12 +461,12 @@ void MDNSResponder::_reply(uint8_t replyMask, char * service, char *proto, uint1
|
|||||||
|
|
||||||
char boardName[64];
|
char boardName[64];
|
||||||
const char *boardExtra = "board=";
|
const char *boardExtra = "board=";
|
||||||
os_sprintf(boardName, "%s%s\0", boardExtra, ARDUINO_BOARD);
|
os_sprintf(boardName, "%s%s", boardExtra, ARDUINO_BOARD);
|
||||||
uint8_t boardNameLen = os_strlen(boardName);
|
uint8_t boardNameLen = os_strlen(boardName);
|
||||||
|
|
||||||
char authUpload[16];
|
char authUpload[16];
|
||||||
const char *authUploadExtra = "auth_upload=";
|
const char *authUploadExtra = "auth_upload=";
|
||||||
os_sprintf(authUpload, "%s%s\0", authUploadExtra, reinterpret_cast<const char*>((_arduinoAuth)?"yes":"no"));
|
os_sprintf(authUpload, "%s%s", authUploadExtra, reinterpret_cast<const char*>((_arduinoAuth)?"yes":"no"));
|
||||||
uint8_t authUploadLen = os_strlen(authUpload);
|
uint8_t authUploadLen = os_strlen(authUpload);
|
||||||
|
|
||||||
uint16_t textDataLen = (1 + boardNameLen) + (1 + tcpCheckExtraLen) + (1 + sshUploadExtraLen) + (1 + authUploadLen);
|
uint16_t textDataLen = (1 + boardNameLen) + (1 + tcpCheckExtraLen) + (1 + sshUploadExtraLen) + (1 + authUploadLen);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user