Added files
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
#ifndef AUTH_H
|
||||
#define AUTH_H
|
||||
|
||||
#include "httpd.h"
|
||||
#include <esp8266.h>
|
||||
|
||||
#ifndef HTTP_AUTH_REALM
|
||||
#define HTTP_AUTH_REALM "Protected"
|
||||
#endif
|
||||
|
||||
#define HTTPD_AUTH_SINGLE 0
|
||||
#define HTTPD_AUTH_CALLBACK 1
|
||||
|
||||
#define AUTH_MAX_USER_LEN 32
|
||||
#define AUTH_MAX_PASS_LEN 32
|
||||
|
||||
//Parameter given to authWhatever functions. This callback returns the usernames/passwords the device
|
||||
//has.
|
||||
typedef int (* AuthGetUserPw)(HttpdConnData *connData, int no, char *user, int userLen, char *pass, int passLen);
|
||||
|
||||
int ICACHE_FLASH_ATTR authBasic(HttpdConnData *connData);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,5 @@
|
||||
#ifndef CAPTDNS_H
|
||||
#define CAPTDNS_H
|
||||
void ICACHE_FLASH_ATTR captdnsInit(void);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,22 @@
|
||||
#ifndef CGIFLASH_H
|
||||
#define CGIFLASH_H
|
||||
|
||||
#include "httpd.h"
|
||||
|
||||
#define CGIFLASH_TYPE_FW 0
|
||||
#define CGIFLASH_TYPE_ESPFS 1
|
||||
|
||||
typedef struct {
|
||||
int type;
|
||||
int fw1Pos;
|
||||
int fw2Pos;
|
||||
int fwSize;
|
||||
char *tagName;
|
||||
} CgiUploadFlashDef;
|
||||
|
||||
int cgiReadFlash(HttpdConnData *connData);
|
||||
int cgiGetFirmwareNext(HttpdConnData *connData);
|
||||
int cgiUploadFirmware(HttpdConnData *connData);
|
||||
int cgiRebootFirmware(HttpdConnData *connData);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,37 @@
|
||||
#ifndef CGIWEBSOCKET_H
|
||||
#define CGIWEBSOCKET_H
|
||||
|
||||
#include "httpd.h"
|
||||
|
||||
#define WEBSOCK_FLAG_NONE 0
|
||||
#define WEBSOCK_FLAG_CONT (1<<0) //Set if the data is not the final data in the message; more follows
|
||||
#define WEBSOCK_FLAG_BIN (1<<1) //Set if the data is binary instead of text
|
||||
|
||||
|
||||
|
||||
typedef struct Websock Websock;
|
||||
typedef struct WebsockPriv WebsockPriv;
|
||||
|
||||
typedef void(*WsConnectedCb)(Websock *ws);
|
||||
typedef void(*WsRecvCb)(Websock *ws, char *data, int len, int flags);
|
||||
typedef void(*WsSentCb)(Websock *ws);
|
||||
typedef void(*WsCloseCb)(Websock *ws);
|
||||
|
||||
struct Websock {
|
||||
void *userData;
|
||||
HttpdConnData *conn;
|
||||
uint8_t status;
|
||||
WsRecvCb recvCb;
|
||||
WsSentCb sentCb;
|
||||
WsCloseCb closeCb;
|
||||
WebsockPriv *priv;
|
||||
};
|
||||
|
||||
int ICACHE_FLASH_ATTR cgiWebsocket(HttpdConnData *connData);
|
||||
int ICACHE_FLASH_ATTR cgiWebsocketSend(Websock *ws, char *data, int len, int flags);
|
||||
void ICACHE_FLASH_ATTR cgiWebsocketClose(Websock *ws, int reason);
|
||||
int ICACHE_FLASH_ATTR cgiWebSocketRecv(HttpdConnData *connData, char *data, int len);
|
||||
int ICACHE_FLASH_ATTR cgiWebsockBroadcast(char *resource, char *data, int len, int flags);
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,13 @@
|
||||
#ifndef CGIWIFI_H
|
||||
#define CGIWIFI_H
|
||||
|
||||
#include "httpd.h"
|
||||
|
||||
int cgiWiFiScan(HttpdConnData *connData);
|
||||
int tplWlan(HttpdConnData *connData, char *token, void **arg);
|
||||
int cgiWiFi(HttpdConnData *connData);
|
||||
int cgiWiFiConnect(HttpdConnData *connData);
|
||||
int cgiWiFiSetMode(HttpdConnData *connData);
|
||||
int cgiWiFiConnStatus(HttpdConnData *connData);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,27 @@
|
||||
// Combined include file for esp8266
|
||||
|
||||
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifdef FREERTOS
|
||||
#include <stdint.h>
|
||||
#include <espressif/esp_common.h>
|
||||
|
||||
#else
|
||||
#include <c_types.h>
|
||||
#include <ip_addr.h>
|
||||
#include <espconn.h>
|
||||
#include <ets_sys.h>
|
||||
#include <gpio.h>
|
||||
#include <mem.h>
|
||||
#include <osapi.h>
|
||||
#include <user_interface.h>
|
||||
#include <upgrade.h>
|
||||
#endif
|
||||
|
||||
#include "platform.h"
|
||||
#include "espmissingincludes.h"
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
#ifndef ESPFS_H
|
||||
#define ESPFS_H
|
||||
|
||||
// This define is done in Makefile. If you do not use default Makefile, uncomment
|
||||
// to be able to use Heatshrink-compressed espfs images.
|
||||
//#define ESPFS_HEATSHRINK
|
||||
|
||||
typedef enum {
|
||||
ESPFS_INIT_RESULT_OK,
|
||||
ESPFS_INIT_RESULT_NO_IMAGE,
|
||||
ESPFS_INIT_RESULT_BAD_ALIGN,
|
||||
} EspFsInitResult;
|
||||
|
||||
typedef struct EspFsFile EspFsFile;
|
||||
|
||||
EspFsInitResult espFsInit(void *flashAddress);
|
||||
EspFsFile *espFsOpen(char *fileName);
|
||||
int espFsFlags(EspFsFile *fh);
|
||||
int espFsRead(EspFsFile *fh, char *buff, int len);
|
||||
void espFsClose(EspFsFile *fh);
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,76 @@
|
||||
#ifndef ESPMISSINGINCLUDES_H
|
||||
#define ESPMISSINGINCLUDES_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <c_types.h>
|
||||
|
||||
|
||||
int strcasecmp(const char *a, const char *b);
|
||||
#ifndef FREERTOS
|
||||
#include <eagle_soc.h>
|
||||
#include <ets_sys.h>
|
||||
//Missing function prototypes in include folders. Gcc will warn on these if we don't define 'em anywhere.
|
||||
//MOST OF THESE ARE GUESSED! but they seem to swork and shut up the compiler.
|
||||
typedef struct espconn espconn;
|
||||
|
||||
int atoi(const char *nptr);
|
||||
void ets_install_putc1(void *routine);
|
||||
void ets_isr_attach(int intr, void *handler, void *arg);
|
||||
void ets_isr_mask(unsigned intr);
|
||||
void ets_isr_unmask(unsigned intr);
|
||||
int ets_memcmp(const void *s1, const void *s2, size_t n);
|
||||
void *ets_memcpy(void *dest, const void *src, size_t n);
|
||||
void *ets_memset(void *s, int c, size_t n);
|
||||
int ets_sprintf(char *str, const char *format, ...) __attribute__ ((format (printf, 2, 3)));
|
||||
int ets_str2macaddr(void *, void *);
|
||||
int ets_strcmp(const char *s1, const char *s2);
|
||||
char *ets_strcpy(char *dest, const char *src);
|
||||
size_t ets_strlen(const char *s);
|
||||
int ets_strncmp(const char *s1, const char *s2, int len);
|
||||
char *ets_strncpy(char *dest, const char *src, size_t n);
|
||||
char *ets_strstr(const char *haystack, const char *needle);
|
||||
void ets_timer_arm_new(os_timer_t *a, int b, int c, int isMstimer);
|
||||
void ets_timer_disarm(os_timer_t *a);
|
||||
void ets_timer_setfn(os_timer_t *t, ETSTimerFunc *fn, void *parg);
|
||||
void ets_update_cpu_frequency(int freqmhz);
|
||||
int os_printf(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
|
||||
int os_snprintf(char *str, size_t size, const char *format, ...) __attribute__ ((format (printf, 3, 4)));
|
||||
int os_printf_plus(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
|
||||
void uart_div_modify(int no, unsigned int freq);
|
||||
uint8 wifi_get_opmode(void);
|
||||
uint32 system_get_time();
|
||||
int rand(void);
|
||||
void ets_bzero(void *s, size_t n);
|
||||
void ets_delay_us(int ms);
|
||||
|
||||
//Hack: this is defined in SDK 1.4.0 and undefined in 1.3.0. It's only used for this, the symbol itself
|
||||
//has no meaning here.
|
||||
#ifndef RC_LIMIT_P2P_11N
|
||||
//Defs for SDK <1.4.0
|
||||
void *pvPortMalloc(size_t xWantedSize);
|
||||
void *pvPortZalloc(size_t);
|
||||
void vPortFree(void *ptr);
|
||||
void *vPortMalloc(size_t xWantedSize);
|
||||
void pvPortFree(void *ptr);
|
||||
#else
|
||||
void *pvPortMalloc(size_t xWantedSize, const char *file, int line);
|
||||
void *pvPortZalloc(size_t, const char *file, int line);
|
||||
void vPortFree(void *ptr, const char *file, int line);
|
||||
void *vPortMalloc(size_t xWantedSize, const char *file, int line);
|
||||
void pvPortFree(void *ptr, const char *file, int line);
|
||||
#endif
|
||||
|
||||
//Standard PIN_FUNC_SELECT gives a warning. Replace by a non-warning one.
|
||||
#ifdef PIN_FUNC_SELECT
|
||||
#undef PIN_FUNC_SELECT
|
||||
#define PIN_FUNC_SELECT(PIN_NAME, FUNC) do { \
|
||||
WRITE_PERI_REG(PIN_NAME, \
|
||||
(READ_PERI_REG(PIN_NAME) \
|
||||
& (~(PERIPHS_IO_MUX_FUNC<<PERIPHS_IO_MUX_FUNC_S))) \
|
||||
|( (((FUNC&BIT2)<<2)|(FUNC&0x3))<<PERIPHS_IO_MUX_FUNC_S) ); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,83 @@
|
||||
#ifndef HTTPD_H
|
||||
#define HTTPD_H
|
||||
|
||||
#include <esp8266.h>
|
||||
|
||||
#define HTTPDVER "0.4"
|
||||
|
||||
#define HTTPD_CGI_MORE 0
|
||||
#define HTTPD_CGI_DONE 1
|
||||
#define HTTPD_CGI_NOTFOUND 2
|
||||
#define HTTPD_CGI_AUTHENTICATED 3
|
||||
|
||||
#define HTTPD_METHOD_GET 1
|
||||
#define HTTPD_METHOD_POST 2
|
||||
|
||||
typedef struct HttpdPriv HttpdPriv;
|
||||
typedef struct HttpdConnData HttpdConnData;
|
||||
typedef struct HttpdPostData HttpdPostData;
|
||||
|
||||
typedef int (* cgiSendCallback)(HttpdConnData *connData);
|
||||
typedef int (* cgiRecvHandler)(HttpdConnData *connData, char *data, int len);
|
||||
|
||||
//A struct describing a http connection. This gets passed to cgi functions.
|
||||
struct HttpdConnData {
|
||||
ConnTypePtr conn; // The TCP connection. Exact type depends on the platform.
|
||||
char requestType; // One of the HTTPD_METHOD_* values
|
||||
char *url; // The URL requested, without hostname or GET arguments
|
||||
char *getArgs; // The GET arguments for this request, if any.
|
||||
const void *cgiArg; // Argument to the CGI function, as stated as the 3rd argument of
|
||||
// the builtInUrls entry that referred to the CGI function.
|
||||
void *cgiData; // Opaque data pointer for the CGI function
|
||||
char *hostName; // Host name field of request
|
||||
HttpdPriv *priv; // Opaque pointer to data for internal httpd housekeeping
|
||||
cgiSendCallback cgi; // CGI function pointer
|
||||
cgiRecvHandler recvHdl; // Handler for data received after headers, if any
|
||||
HttpdPostData *post; // POST data structure
|
||||
int remote_port; // Remote TCP port
|
||||
uint8 remote_ip[4]; // IP address of client
|
||||
uint8 slot; // Slot ID
|
||||
};
|
||||
|
||||
//A struct describing the POST data sent inside the http connection. This is used by the CGI functions
|
||||
struct HttpdPostData {
|
||||
int len; // POST Content-Length
|
||||
int buffSize; // The maximum length of the post buffer
|
||||
int buffLen; // The amount of bytes in the current post buffer
|
||||
int received; // The total amount of bytes received so far
|
||||
char *buff; // Actual POST data buffer
|
||||
char *multipartBoundary; //Text of the multipart boundary, if any
|
||||
};
|
||||
|
||||
//A struct describing an url. This is the main struct that's used to send different URL requests to
|
||||
//different routines.
|
||||
typedef struct {
|
||||
const char *url;
|
||||
cgiSendCallback cgiCb;
|
||||
const void *cgiArg;
|
||||
} HttpdBuiltInUrl;
|
||||
|
||||
int cgiRedirect(HttpdConnData *connData);
|
||||
int cgiRedirectToHostname(HttpdConnData *connData);
|
||||
int cgiRedirectApClientToHostname(HttpdConnData *connData);
|
||||
void httpdRedirect(HttpdConnData *conn, char *newUrl);
|
||||
int httpdUrlDecode(char *val, int valLen, char *ret, int retLen);
|
||||
int httpdFindArg(char *line, char *arg, char *buff, int buffLen);
|
||||
void httpdInit(HttpdBuiltInUrl *fixedUrls, int port);
|
||||
const char *httpdGetMimetype(char *url);
|
||||
void httpdDisableTransferEncoding(HttpdConnData *conn);
|
||||
void httpdStartResponse(HttpdConnData *conn, int code);
|
||||
void httpdHeader(HttpdConnData *conn, const char *field, const char *val);
|
||||
void httpdEndHeaders(HttpdConnData *conn);
|
||||
int httpdGetHeader(HttpdConnData *conn, char *header, char *ret, int retLen);
|
||||
int httpdSend(HttpdConnData *conn, const char *data, int len);
|
||||
void httpdFlushSendBuffer(HttpdConnData *conn);
|
||||
|
||||
//Platform dependent code should call these.
|
||||
void httpdSentCb(ConnTypePtr conn, char *remIp, int remPort);
|
||||
void httpdRecvCb(ConnTypePtr conn, char *remIp, int remPort, char *data, unsigned short len);
|
||||
void httpdDisconCb(ConnTypePtr conn, char *remIp, int remPort);
|
||||
int httpdConnectCb(ConnTypePtr conn, char *remIp, int remPort);
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,9 @@
|
||||
#ifndef HTTPDESPFS_H
|
||||
#define HTTPDESPFS_H
|
||||
|
||||
#include "httpd.h"
|
||||
|
||||
int cgiEspFsHook(HttpdConnData *connData);
|
||||
int ICACHE_FLASH_ATTR cgiEspFsTemplate(HttpdConnData *connData);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,33 @@
|
||||
#ifndef PLATFORM_H
|
||||
#define PLATFORM_H
|
||||
|
||||
#ifdef FREERTOS
|
||||
//#include "esp_timer.h"
|
||||
typedef struct RtosConnType RtosConnType;
|
||||
typedef RtosConnType* ConnTypePtr;
|
||||
#define httpd_printf(fmt, ...) do { \
|
||||
static const char flash_str[] ICACHE_RODATA_ATTR STORE_ATTR = fmt; \
|
||||
printf(flash_str, ##__VA_ARGS__); \
|
||||
} while(0)
|
||||
#else
|
||||
#define printf(...) os_printf(__VA_ARGS__)
|
||||
#define sprintf(str, ...) os_sprintf(str, __VA_ARGS__)
|
||||
#define strcpy(a, b) os_strcpy(a, b)
|
||||
#define strncpy(a, b, c) os_strncpy(a, b, c)
|
||||
#define strcmp(a, b) os_strcmp(a, b)
|
||||
#define strncmp(a, b, c) os_strncmp(a, b, c)
|
||||
#define malloc(x) os_malloc(x)
|
||||
#define free(x) os_free(x)
|
||||
#define memset(x, a, b) os_memset(x, a, b)
|
||||
#define memcpy(x, a, b) os_memcpy(x, a, b)
|
||||
#define strcat(a, b) os_strcat(a, b)
|
||||
#define strstr(a, b) os_strstr(a, b)
|
||||
#define strlen(a) os_strlen(a)
|
||||
#define memcmp(a, b, c) os_memcmp(a, b, c)
|
||||
typedef struct espconn* ConnTypePtr;
|
||||
#define httpd_printf(format, ...) os_printf(format, ##__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,39 @@
|
||||
/* header */
|
||||
|
||||
#ifndef __SHA1_H__
|
||||
#define __SHA1_H__
|
||||
|
||||
#define HASH_LENGTH 20
|
||||
#define BLOCK_LENGTH 64
|
||||
|
||||
typedef struct sha1nfo {
|
||||
uint32_t buffer[BLOCK_LENGTH/4];
|
||||
uint32_t state[HASH_LENGTH/4];
|
||||
uint32_t byteCount;
|
||||
uint8_t bufferOffset;
|
||||
uint8_t keyBuffer[BLOCK_LENGTH];
|
||||
uint8_t innerHash[HASH_LENGTH];
|
||||
} sha1nfo;
|
||||
|
||||
/* public API - prototypes - TODO: doxygen*/
|
||||
|
||||
/**
|
||||
*/
|
||||
void sha1_init(sha1nfo *s);
|
||||
/**
|
||||
*/
|
||||
void sha1_writebyte(sha1nfo *s, uint8_t data);
|
||||
/**
|
||||
*/
|
||||
void sha1_write(sha1nfo *s, const char *data, size_t len);
|
||||
/**
|
||||
*/
|
||||
uint8_t* sha1_result(sha1nfo *s);
|
||||
/**
|
||||
*/
|
||||
void sha1_initHmac(sha1nfo *s, const uint8_t* key, int keyLength);
|
||||
/**
|
||||
*/
|
||||
uint8_t* sha1_resultHmac(sha1nfo *s);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
extern char webpages_espfs_start[];
|
||||
extern char webpages_espfs_end[];
|
||||
extern int webpages_espfs_size;
|
||||
Reference in New Issue
Block a user