mirror of
https://github.com/SuperBFG7/ympd
synced 2025-03-04 02:28:19 +00:00
Fix: check if document root exists
Fix: allow websocket connections only to /ws
This commit is contained in:
parent
ebb6a607e9
commit
22fa15deb0
27
src/mympd.c
27
src/mympd.c
@ -60,9 +60,21 @@ static void handle_api(struct mg_connection *nc, struct http_message *hm) {
|
|||||||
|
|
||||||
static void ev_handler(struct mg_connection *nc, int ev, void *ev_data) {
|
static void ev_handler(struct mg_connection *nc, int ev, void *ev_data) {
|
||||||
switch(ev) {
|
switch(ev) {
|
||||||
|
case MG_EV_WEBSOCKET_HANDSHAKE_REQUEST: {
|
||||||
|
struct http_message *hm = (struct http_message *) ev_data;
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "New websocket request: %.*s\n", hm->uri.len, hm->uri.p);
|
||||||
|
#endif
|
||||||
|
if (mg_vcmp(&hm->uri, "/ws") != 0) {
|
||||||
|
printf("Websocket request not to /ws, closing connection\n");
|
||||||
|
mg_printf(nc, "%s", "HTTP/1.1 403 FORBIDDEN\r\n\r\n");
|
||||||
|
nc->flags |= MG_F_SEND_AND_CLOSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case MG_EV_WEBSOCKET_HANDSHAKE_DONE: {
|
case MG_EV_WEBSOCKET_HANDSHAKE_DONE: {
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
fprintf(stderr, "New Websocket connection\n");
|
fprintf(stderr, "New Websocket connection established\n");
|
||||||
#endif
|
#endif
|
||||||
struct mg_str d = mg_mk_str("{\"cmd\": \"MPD_API_WELCOME\"}");
|
struct mg_str d = mg_mk_str("{\"cmd\": \"MPD_API_WELCOME\"}");
|
||||||
callback_mympd(nc, d);
|
callback_mympd(nc, d);
|
||||||
@ -211,6 +223,16 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
printf("Starting myMPD %s\n", MYMPD_VERSION);
|
printf("Starting myMPD %s\n", MYMPD_VERSION);
|
||||||
|
|
||||||
|
DIR* dir = opendir(SRC_PATH);
|
||||||
|
if (dir) {
|
||||||
|
printf("Document root: %s\n", SRC_PATH);
|
||||||
|
closedir(dir);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf("Document root \"%s\" don't exists\n", SRC_PATH);
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
signal(SIGTERM, signal_handler);
|
signal(SIGTERM, signal_handler);
|
||||||
signal(SIGINT, signal_handler);
|
signal(SIGINT, signal_handler);
|
||||||
setvbuf(stdout, NULL, _IOLBF, 0);
|
setvbuf(stdout, NULL, _IOLBF, 0);
|
||||||
@ -279,8 +301,7 @@ int main(int argc, char **argv) {
|
|||||||
mg_set_protocol_http_websocket(nc);
|
mg_set_protocol_http_websocket(nc);
|
||||||
s_http_server_opts.document_root = SRC_PATH;
|
s_http_server_opts.document_root = SRC_PATH;
|
||||||
s_http_server_opts.enable_directory_listing = "no";
|
s_http_server_opts.enable_directory_listing = "no";
|
||||||
|
|
||||||
printf("Document root: %s\n", SRC_PATH);
|
|
||||||
|
|
||||||
printf("Listening on http port %s\n", config.webport);
|
printf("Listening on http port %s\n", config.webport);
|
||||||
if (config.ssl == true)
|
if (config.ssl == true)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user