Skip to content

Commit 4ef3d2b

Browse files
committed
Getting started with WebServerSecure
1 parent f09784b commit 4ef3d2b

File tree

4 files changed

+85
-10
lines changed

4 files changed

+85
-10
lines changed

src/ESPWebServer.cpp

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,22 @@ struct {
2020
{HTTP_OPTIONS, "OPTIONS"},
2121
};
2222

23+
ESPWebServer::ESPWebServer(HTTPServer *server) :
24+
_server(server),
25+
_contentLength(0)
26+
{
27+
_notFoundNode = nullptr;
28+
}
29+
2330
ESPWebServer::ESPWebServer(IPAddress addr, int port) :
24-
_server(HTTPServer(port, 4, addr)),
31+
_server(new HTTPServer(port, 4, addr)),
2532
_contentLength(0)
2633
{
2734
_notFoundNode = nullptr;
2835
}
2936

3037
ESPWebServer::ESPWebServer(int port) :
31-
_server(HTTPServer(port, 4)) {
38+
_server(new HTTPServer(port, 4)) {
3239
_notFoundNode = nullptr;
3340
}
3441

@@ -39,19 +46,19 @@ ESPWebServer::~ESPWebServer() {
3946
}
4047

4148
void ESPWebServer::begin() {
42-
_server.start();
49+
_server->start();
4350
}
4451

4552
void ESPWebServer::handleClient() {
46-
_server.loop();
53+
_server->loop();
4754
}
4855

4956
void ESPWebServer::close() {
50-
_server.stop();
57+
_server->stop();
5158
}
5259

5360
void ESPWebServer::stop() {
54-
_server.stop();
61+
_server->stop();
5562
}
5663

5764
bool ESPWebServer::authenticate(const char * username, const char * password) {
@@ -91,7 +98,7 @@ void ESPWebServer::on(const String &uri, HTTPMethod method, THandlerFunction fn,
9198
}
9299
}
93100
ESPWebServerNode *node = new ESPWebServerNode(this,std::string(uri.c_str()), std::string(methodname),fn, ufn);
94-
_server.registerNode(node);
101+
_server->registerNode(node);
95102
}
96103

97104
void ESPWebServer::serveStatic(const char* uri, fs::FS& fs, const char* path, const char* cache_header) {
@@ -103,7 +110,7 @@ void ESPWebServer::onNotFound(THandlerFunction fn) {
103110
delete _notFoundNode;
104111
}
105112
_notFoundNode = new ESPWebServerNode(this, "", "", fn, THandlerFunction());
106-
_server.setDefaultNode(_notFoundNode);
113+
_server->setDefaultNode(_notFoundNode);
107114
}
108115

109116
void ESPWebServer::onFileUpload(THandlerFunction fn) {
@@ -270,7 +277,7 @@ void ESPWebServer::_standardHeaders() {
270277
}
271278

272279
void ESPWebServer::enableCORS(boolean value) {
273-
if (value) _server.setDefaultHeader("Access-Control-Allow-Origin", "*");
280+
if (value) _server->setDefaultHeader("Access-Control-Allow-Origin", "*");
274281
}
275282

276283
void ESPWebServer::enableCrossOrigin(boolean value) {

src/ESPWebServer.hpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <HTTPRequest.hpp>
1212
#include <HTTPResponse.hpp>
1313
#include <HTTPSCallbackFunction.hpp>
14+
#include <SSLCert.hpp>
1415

1516
#include "HTTP_Method.h"
1617

@@ -46,6 +47,9 @@ class ESPWebServerNode;
4647

4748
class ESPWebServer
4849
{
50+
friend class ESPWebServerSecure;
51+
protected:
52+
ESPWebServer(httpsserver::HTTPServer* _server);
4953
public:
5054
ESPWebServer(IPAddress addr, int port = 80);
5155
ESPWebServer(int port = 80);
@@ -135,7 +139,7 @@ class ESPWebServer
135139
void _prepareStreamFile(size_t fileSize, const String& contentType);
136140

137141
/** The backing server instance */
138-
httpsserver::HTTPServer _server;
142+
httpsserver::HTTPServer* _server;
139143

140144
/** The currently active request */
141145
httpsserver::HTTPRequest *_activeRequest;

src/ESPWebServerSecure.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#include "ESPWebServerSecure.hpp"
2+
3+
4+
ESPWebServerSecure::ESPWebServerSecure(IPAddress addr, int port)
5+
: ESPWebServer(new httpsserver::HTTPSServer(&_sslCert, port, 4, addr)),
6+
_underlyingServer(this),
7+
_sslCert()
8+
{}
9+
10+
ESPWebServerSecure::ESPWebServerSecure(int port)
11+
: ESPWebServer(new httpsserver::HTTPSServer(&_sslCert, port, 4)),
12+
_underlyingServer(this),
13+
_sslCert()
14+
{}
15+
16+
void ESPWebServerSecure::setServerKeyAndCert(const uint8_t *key, int keyLen, const uint8_t *cert, int certLen) {
17+
_sslCert.setPK((unsigned char *)key, keyLen);
18+
_sslCert.setCert((unsigned char *)cert, certLen);
19+
}
20+
21+
void ESPWebServerSecure::setServerKeyAndCert_P(const uint8_t *key, int keyLen, const uint8_t *cert, int certLen) {
22+
setServerKeyAndCert(key, keyLen, cert, certLen);
23+
}
24+
25+
void ESPWebServerUnderlyingServer::setServerKeyAndCert(const uint8_t *key, int keyLen, const uint8_t *cert, int certLen) {
26+
_webserver->setServerKeyAndCert(key, keyLen, cert, certLen);
27+
}
28+
void ESPWebServerUnderlyingServer::setServerKeyAndCert_P(const uint8_t *key, int keyLen, const uint8_t *cert, int certLen) {
29+
_webserver->setServerKeyAndCert_P(key, keyLen, cert, certLen);
30+
}

src/ESPWebServerSecure.hpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#ifndef ESPWEBSERVERSECURE_H
2+
#define ESPWEBSERVERSECURE_H
3+
4+
#include "ESPWebServer.hpp"
5+
#include <HTTPSServer.hpp>
6+
#include <SSLCert.hpp>
7+
8+
class ESPWebServerSecure;
9+
10+
class ESPWebServerUnderlyingServer {
11+
friend class ESPWebServerSecure;
12+
protected:
13+
ESPWebServerUnderlyingServer(ESPWebServerSecure *webserver)
14+
: _webserver(webserver)
15+
{}
16+
ESPWebServerSecure* _webserver;
17+
public:
18+
void setServerKeyAndCert(const uint8_t *key, int keyLen, const uint8_t *cert, int certLen);
19+
void setServerKeyAndCert_P(const uint8_t *key, int keyLen, const uint8_t *cert, int certLen);
20+
};
21+
22+
class ESPWebServerSecure : public ESPWebServer {
23+
friend class ESPWebServerUnderlyingServer;
24+
public:
25+
ESPWebServerSecure(IPAddress addr, int port = 442);
26+
ESPWebServerSecure(int port = 442);
27+
void setServerKeyAndCert(const uint8_t *key, int keyLen, const uint8_t *cert, int certLen);
28+
void setServerKeyAndCert_P(const uint8_t *key, int keyLen, const uint8_t *cert, int certLen);
29+
protected:
30+
ESPWebServerUnderlyingServer _underlyingServer;
31+
httpsserver::SSLCert _sslCert;
32+
};
33+
34+
#endif //ESPWEBSERVERSECURE_H

0 commit comments

Comments
 (0)