copied from https server example, changed wifi info and certs
This commit is contained in:
4
main/CMakeLists.txt
Normal file
4
main/CMakeLists.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
idf_component_register(SRCS "main.c"
|
||||
INCLUDE_DIRS "."
|
||||
EMBED_TXTFILES "certs/cacert.pem"
|
||||
"certs/prvtkey.pem")
|
||||
23
main/certs/cacert.pem
Normal file
23
main/certs/cacert.pem
Normal file
@@ -0,0 +1,23 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDvTCCAqWgAwIBAgIUVxPiiPnOj/z8TyrXxhHaa4V4Yi0wDQYJKoZIhvcNAQEL
|
||||
BQAwbjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAklMMQwwCgYDVQQHDANOL0ExITAf
|
||||
BgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEhMB8GCSqGSIb3DQEJARYS
|
||||
dGhuYW0ubWVAZ21haWwuY29tMB4XDTIwMDkxMzE2NDk0NVoXDTMwMDkxMTE2NDk0
|
||||
NVowbjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAklMMQwwCgYDVQQHDANOL0ExITAf
|
||||
BgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEhMB8GCSqGSIb3DQEJARYS
|
||||
dGhuYW0ubWVAZ21haWwuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
||||
AQEAzlOmB9ioTyA4U2J9rxfTDzgizhF6UtB6p9sbmvG2lakTPhXSHfPYQAzZNT6J
|
||||
oKvXWHQZ2zf8QtBXsz08nJsamblXfcBw9NVnnUHYMaP9PI+DyR9pzPv3JZVtdIpp
|
||||
wrjAzvfh3oP6Uh2LwNUgTwwFlVGwut2rFISRSfiWBC5Q1DZyHgNJXxsFxRFQ61xl
|
||||
EhUsatD4dF49mLjLo2jCRpCB5P/oSzJYqP5Ix9p5Ol0HDg/3R5Ltw8ZvVDcmbRRU
|
||||
Gw76Mb4zt/89oCOTNI7XCsJ5Q5FTCz2FZ/m/IzDb4m4POYuIHDjnGVSZdfeZ6D1z
|
||||
OpsfKjiUyrpo5I9KDccqQ2TrqQIDAQABo1MwUTAdBgNVHQ4EFgQU/Ytzpowejmfk
|
||||
a/KcYxeRRjB5nF4wHwYDVR0jBBgwFoAU/Ytzpowejmfka/KcYxeRRjB5nF4wDwYD
|
||||
VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAcJ4463CUefQZ6JwI3UPN
|
||||
TjgSrX/Swe3AxpnYy6J+LnC1qUXJdUrQSp8hG1Qi82xy6x380usR7ZC7SSu3z6O2
|
||||
JGhg0/eB7v+sArmXO4K2uelkMWTuPdBkA7eTP5EUT7uFhyrQQxcy0l94aK+y6rHx
|
||||
JYxe4dyvwHP9t0WUYVVIHvdtd6+7PfLV8nWEDhPBP+Wv8mhvIX4k9ZVZQVfoYxmw
|
||||
odK2ylBkLeP3uC9GNp2DOVxiDEvBjWC4ZUYGsi8lycQibY05+suRhNslDc/dTd3T
|
||||
xLP24dbQ/VeeTXudJRjoHh19A7pCZ64ihJKWPT6n10ws8ju5tb8uGKTDh9TZXtJV
|
||||
Xw==
|
||||
-----END CERTIFICATE-----
|
||||
28
main/certs/prvtkey.pem
Normal file
28
main/certs/prvtkey.pem
Normal file
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDOU6YH2KhPIDhT
|
||||
Yn2vF9MPOCLOEXpS0Hqn2xua8baVqRM+FdId89hADNk1Pomgq9dYdBnbN/xC0Fez
|
||||
PTycmxqZuVd9wHD01WedQdgxo/08j4PJH2nM+/cllW10imnCuMDO9+Heg/pSHYvA
|
||||
1SBPDAWVUbC63asUhJFJ+JYELlDUNnIeA0lfGwXFEVDrXGUSFSxq0Ph0Xj2YuMuj
|
||||
aMJGkIHk/+hLMlio/kjH2nk6XQcOD/dHku3Dxm9UNyZtFFQbDvoxvjO3/z2gI5M0
|
||||
jtcKwnlDkVMLPYVn+b8jMNvibg85i4gcOOcZVJl195noPXM6mx8qOJTKumjkj0oN
|
||||
xypDZOupAgMBAAECggEBAMLHaw0rNrEEHMhzSW17U0+h0hGxpEX79F70VRowKAsf
|
||||
Q0AwP1zxb2v/9SnzsN+SekhRynsOXkIBB1n5bHf3YORQeU0I2Fn6AMgPefZa9t0u
|
||||
Kt46npnaIBZF+7+yT2d5HOQGVR/Ifg75P466ZLbbBYZSSUIPs8s53yLy30RxKPM8
|
||||
BP5KQ+u6s2TpKX5xk9i72wPmx9ZAMbzBXb+Q6yAJRs9ncp54zm6HxNEjGsa2cdKZ
|
||||
UG3aMgrkVMFP6Qd0gQbJLzcu07cKpMUxx0X8ZaLZfIoiOuuWLo/6vAkcD+aoYMew
|
||||
R8Ntruvb0+2CRI/pe+CmZtRLrSg94i9GxDn4iP1zVFECgYEA6ddIjOfmJYAOuke7
|
||||
jqzR7iDMkpnbr0NETOGz591vdqTxOD65ZKIPAPLsNziVpO+42GPxsIP8lrRBk/9b
|
||||
+suI7ciqGyvWyT4aMnEFjDmmzTKrTopCXfGriDrrkJ/kwiO04nX30vxr4fiO1cTo
|
||||
R4be6b9XVmD23WYSR52KZqFy5h0CgYEA4eDm4InuebZYeXxtO+1PT2MuCZGRtFXZ
|
||||
BCNb/MmYcsdXQpFSf0UlMtD++Y0WqjtCN2ztSbDsBYNNa2/UAxUUsKMhnUrAMAcP
|
||||
rYl9IxSsXlboDqq+QxTDuA1S9PWhZ+5Qbq0Yo34sMT0GT8h1bPAM5b3jynGt4tI4
|
||||
dPkevZuptf0CgYEAxqRSxR/ZqdF2sVduRG0aiCbkoUSCEggaZRT2NuksXqUPJLBj
|
||||
3NCt3ih98QroVAwwAeIk1cXJNFw7uPUbtZhg4V2s4xgChUF0D5VjGROAVp/MVhOs
|
||||
/RDmnfsvUNQDB8g9SILd2yUCoBr9eyqiBuDTS81267HDA6BJtvxlLXnImSECgYAc
|
||||
e4eheMMhheTSLOZ5UAtYL2F2w2xkGQ8sfmjzD1ix4IEYW8rTUZzHM6NzRF8/SAmp
|
||||
g4rIaA7bAxuYGJnbaaUaQPfUJcDmTX2knFmzOsAhhUPt1Yn4W33yj3uOeArKWDq8
|
||||
OgeJVjesXc2V8ekcu4hkz/URahRLLccAuQkvT5mu4QKBgEQdwTaSP+nY36aw+/aj
|
||||
7bu/GTgfusV9tHTFo5+/WuxM5hFSh+N8oTeEK1j9zBYo2QtTFxG83xKGZuKUJlzB
|
||||
0zcC7F9af8xoRxfYF5fu7KOj8OHyoP5VATuU5/1THwk74H0lnYPgUG4dbsQhHP48
|
||||
VMJof+bmDAu36d8dFAyiHolS
|
||||
-----END PRIVATE KEY-----
|
||||
7
main/component.mk
Normal file
7
main/component.mk
Normal file
@@ -0,0 +1,7 @@
|
||||
#
|
||||
# "main" pseudo-component makefile.
|
||||
#
|
||||
# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.)
|
||||
|
||||
COMPONENT_EMBED_TXTFILES := certs/cacert.pem
|
||||
COMPONENT_EMBED_TXTFILES += certs/prvtkey.pem
|
||||
127
main/main.c
Normal file
127
main/main.c
Normal file
@@ -0,0 +1,127 @@
|
||||
/* Simple HTTP + SSL Server Example
|
||||
|
||||
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
||||
|
||||
Unless required by applicable law or agreed to in writing, this
|
||||
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
CONDITIONS OF ANY KIND, either express or implied.
|
||||
*/
|
||||
|
||||
#include <esp_wifi.h>
|
||||
#include <esp_event.h>
|
||||
#include <esp_log.h>
|
||||
#include <esp_system.h>
|
||||
#include <nvs_flash.h>
|
||||
#include <sys/param.h>
|
||||
#include "esp_netif.h"
|
||||
#include "esp_eth.h"
|
||||
#include "protocol_examples_common.h"
|
||||
|
||||
#include <esp_https_server.h>
|
||||
|
||||
/* A simple example that demonstrates how to create GET and POST
|
||||
* handlers and start an HTTPS server.
|
||||
*/
|
||||
|
||||
static const char *TAG = "example";
|
||||
|
||||
|
||||
/* An HTTP GET handler */
|
||||
static esp_err_t root_get_handler(httpd_req_t *req)
|
||||
{
|
||||
httpd_resp_set_type(req, "text/html");
|
||||
httpd_resp_send(req, "<h1>Hello Secure World!</h1>", -1); // -1 = use strlen()
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
static const httpd_uri_t root = {
|
||||
.uri = "/",
|
||||
.method = HTTP_GET,
|
||||
.handler = root_get_handler
|
||||
};
|
||||
|
||||
|
||||
static httpd_handle_t start_webserver(void)
|
||||
{
|
||||
httpd_handle_t server = NULL;
|
||||
|
||||
// Start the httpd server
|
||||
ESP_LOGI(TAG, "Starting server");
|
||||
|
||||
httpd_ssl_config_t conf = HTTPD_SSL_CONFIG_DEFAULT();
|
||||
|
||||
extern const unsigned char cacert_pem_start[] asm("_binary_cacert_pem_start");
|
||||
extern const unsigned char cacert_pem_end[] asm("_binary_cacert_pem_end");
|
||||
conf.cacert_pem = cacert_pem_start;
|
||||
conf.cacert_len = cacert_pem_end - cacert_pem_start;
|
||||
|
||||
extern const unsigned char prvtkey_pem_start[] asm("_binary_prvtkey_pem_start");
|
||||
extern const unsigned char prvtkey_pem_end[] asm("_binary_prvtkey_pem_end");
|
||||
conf.prvtkey_pem = prvtkey_pem_start;
|
||||
conf.prvtkey_len = prvtkey_pem_end - prvtkey_pem_start;
|
||||
|
||||
esp_err_t ret = httpd_ssl_start(&server, &conf);
|
||||
if (ESP_OK != ret) {
|
||||
ESP_LOGI(TAG, "Error starting server!");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Set URI handlers
|
||||
ESP_LOGI(TAG, "Registering URI handlers");
|
||||
httpd_register_uri_handler(server, &root);
|
||||
return server;
|
||||
}
|
||||
|
||||
static void stop_webserver(httpd_handle_t server)
|
||||
{
|
||||
// Stop the httpd server
|
||||
httpd_ssl_stop(server);
|
||||
}
|
||||
|
||||
static void disconnect_handler(void* arg, esp_event_base_t event_base,
|
||||
int32_t event_id, void* event_data)
|
||||
{
|
||||
httpd_handle_t* server = (httpd_handle_t*) arg;
|
||||
if (*server) {
|
||||
stop_webserver(*server);
|
||||
*server = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void connect_handler(void* arg, esp_event_base_t event_base,
|
||||
int32_t event_id, void* event_data)
|
||||
{
|
||||
httpd_handle_t* server = (httpd_handle_t*) arg;
|
||||
if (*server == NULL) {
|
||||
*server = start_webserver();
|
||||
}
|
||||
}
|
||||
|
||||
void app_main(void)
|
||||
{
|
||||
static httpd_handle_t server = NULL;
|
||||
|
||||
ESP_ERROR_CHECK(nvs_flash_init());
|
||||
ESP_ERROR_CHECK(esp_netif_init());
|
||||
ESP_ERROR_CHECK(esp_event_loop_create_default());
|
||||
|
||||
/* Register event handlers to start server when Wi-Fi or Ethernet is connected,
|
||||
* and stop server when disconnection happens.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_EXAMPLE_CONNECT_WIFI
|
||||
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &connect_handler, &server));
|
||||
ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, &disconnect_handler, &server));
|
||||
#endif // CONFIG_EXAMPLE_CONNECT_WIFI
|
||||
#ifdef CONFIG_EXAMPLE_CONNECT_ETHERNET
|
||||
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_ETH_GOT_IP, &connect_handler, &server));
|
||||
ESP_ERROR_CHECK(esp_event_handler_register(ETH_EVENT, ETHERNET_EVENT_DISCONNECTED, &disconnect_handler, &server));
|
||||
#endif // CONFIG_EXAMPLE_CONNECT_ETHERNET
|
||||
|
||||
/* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig.
|
||||
* Read "Establishing Wi-Fi or Ethernet Connection" section in
|
||||
* examples/protocols/README.md for more information about this function.
|
||||
*/
|
||||
ESP_ERROR_CHECK(example_connect());
|
||||
}
|
||||
Reference in New Issue
Block a user