/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set et sw=2 ts=2: */ /*************************************************************************** * http.cc * * Fri Feb 24 07:58:48 CET 2012 * Copyright 2012 Bent Bisballe Nyeng * deva@aasimon.org ****************************************************************************/ /* * This file is part of Munia. * * Munia is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Munia is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Munia; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #include "http.h" #include #include #include "hugin.hpp" int callback_http(struct libwebsocket_context * context, struct libwebsocket *wsi, enum libwebsocket_callback_reasons reason, void *user, void *i, size_t len) { char *in = (char*)i; // char client_name[128]; // char client_ip[128]; switch(reason) { case LWS_CALLBACK_HTTP: DEBUG(httpd,"serving HTTP URI %s\n", (char *)in); while(*in == '/') in++; // skip trailing slashes // add favicon later if(in && strcmp((const char *)in, "favicon.ico") == 0) { if(libwebsockets_serve_http_file(context, wsi, LOCAL_RESOURCE_PATH"/favicon.ico", "image/x-icon")) DEBUG(httpd,"Failed to send favicon\n"); break; } // css if(in && strcmp((const char *)in, "munia.css") == 0) { if(libwebsockets_serve_http_file(context, wsi, LOCAL_RESOURCE_PATH"/munia.css", "text/css")) DEBUG(httpd,"Failed to send css\n"); break; } // script if(in && strcmp((const char *)in, "proto.js") == 0) { if(libwebsockets_serve_http_file(context, wsi, LOCAL_RESOURCE_PATH"/proto.js", "text/javascript")) DEBUG(httpd,"Failed to send javascript\n"); break; } if(in && strcmp((const char *)in, "handler.js") == 0) { if(libwebsockets_serve_http_file(context, wsi, LOCAL_RESOURCE_PATH"/handler.js", "text/javascript")) DEBUG(httpd,"Failed to send javascript\n"); break; } if(in && strcmp((const char *)in, "view.js") == 0) { if(libwebsockets_serve_http_file(context, wsi, LOCAL_RESOURCE_PATH"/view.js", "text/javascript")) DEBUG(httpd,"Failed to send javascript\n"); break; } if(in && strcmp((const char *)in, "task.js") == 0) { if(libwebsockets_serve_http_file(context, wsi, LOCAL_RESOURCE_PATH"/task.js", "text/javascript")) DEBUG(httpd,"Failed to send javascript\n"); break; } /* send the script... when it runs it'll start websockets */ if(libwebsockets_serve_http_file(context, wsi, LOCAL_RESOURCE_PATH"/munia.html", "text/html")) DEBUG(httpd,"Failed to send HTTP file\n"); break; /* * callback for confirming to continue with client IP appear in * protocol 0 callback since no websocket protocol has been agreed * yet. You can just ignore this if you won't filter on client IP * since the default uhandled callback return is 0 meaning let the * connection continue. */ case LWS_CALLBACK_FILTER_NETWORK_CONNECTION: /* libwebsockets_get_peer_addresses((int)(long)user, client_name, sizeof(client_name), client_ip, sizeof(client_ip)); DEBUG(httpd,"Received network connect from %s (%s)\n", client_name, client_ip); */ /* if we returned non-zero from here, we kill the connection */ break; default: break; } return 0; }