mirror of
https://github.com/cesanta/mongoose.git
synced 2024-12-29 08:19:42 +08:00
bafc30bec6
"#if FOO" still works with simple -DFOO, but gives more flexibility. Specifically, if user expressed no preference (FOO is not defined), we can apply reasonable defaults (this is the legitimate use of ifdef). In short, from now on, please use #if MG_ENABLE_FOO instead of #ifdef MG_ENABLE_FOO Since we are all used to #ifdef, this change also adds a precommit check to police this. Specifically, in *.h and *.c files that are Copyright Cesanta, "ifdef" and "if defined()" are not allowed to be used with macros that contain ENABLE or DISABLE, unless the like also contains "ifdef-ok". Hence, if you are sure you want to use ifdef, use this: #ifdef MG_ENABLE_FOO /* ifdef-ok */ PUBLISHED_FROM=9be829448f53cff575d6cae8b9945fb12531c15a
65 lines
1.6 KiB
C
65 lines
1.6 KiB
C
/*
|
|
* Copyright (c) 2016 Cesanta Software Limited
|
|
* All rights reserved
|
|
*/
|
|
|
|
#if MG_ENABLE_SSL
|
|
/*
|
|
* This example starts an SSL web server on https://localhost:8443/
|
|
*
|
|
* Please note that the certificate used is a self-signed one and will not be
|
|
* recognised as valid. You should expect an SSL error and will need to
|
|
* explicitly allow the browser to proceed.
|
|
*/
|
|
|
|
#include "mongoose.h"
|
|
|
|
static const char *s_http_port = "8443";
|
|
static const char *s_ssl_cert = "server.pem";
|
|
static const char *s_ssl_key = "server.key";
|
|
static struct mg_serve_http_opts s_http_server_opts;
|
|
|
|
static void ev_handler(struct mg_connection *nc, int ev, void *p) {
|
|
if (ev == MG_EV_HTTP_REQUEST) {
|
|
mg_serve_http(nc, (struct http_message *) p, s_http_server_opts);
|
|
}
|
|
}
|
|
|
|
int main(void) {
|
|
struct mg_mgr mgr;
|
|
struct mg_connection *nc;
|
|
struct mg_bind_opts bind_opts;
|
|
const char *err;
|
|
|
|
mg_mgr_init(&mgr, NULL);
|
|
memset(&bind_opts, 0, sizeof(bind_opts));
|
|
bind_opts.ssl_cert = s_ssl_cert;
|
|
bind_opts.ssl_key = s_ssl_key;
|
|
bind_opts.error_string = &err;
|
|
|
|
printf("Starting SSL server on port %s, cert from %s, key from %s\n",
|
|
s_http_port, bind_opts.ssl_cert, bind_opts.ssl_key);
|
|
nc = mg_bind_opt(&mgr, s_http_port, ev_handler, bind_opts);
|
|
if (nc == NULL) {
|
|
printf("Failed to create listener: %s\n", err);
|
|
return 1;
|
|
}
|
|
|
|
// Set up HTTP server parameters
|
|
mg_set_protocol_http_websocket(nc);
|
|
s_http_server_opts.document_root = "."; // Serve current directory
|
|
s_http_server_opts.enable_directory_listing = "yes";
|
|
|
|
for (;;) {
|
|
mg_mgr_poll(&mgr, 1000);
|
|
}
|
|
mg_mgr_free(&mgr);
|
|
|
|
return 0;
|
|
}
|
|
#else
|
|
int main(void) {
|
|
return 0;
|
|
}
|
|
#endif /* MG_ENABLE_SSL */
|