parent
769b6d2dbd
commit
33e2f8e272
52
README.md
52
README.md
|
@ -74,13 +74,10 @@ Select package libuhttpd in menuconfig and compile new image.
|
|||
```
|
||||
#include <uhttpd.h>
|
||||
|
||||
//#define EXAMPLE_SSL
|
||||
|
||||
#define port 8000
|
||||
|
||||
static void hello_action(struct uh_client *cl)
|
||||
{
|
||||
int body_len = 0;
|
||||
|
||||
cl->send_header(cl, 200, "OK", -1);
|
||||
cl->append_header(cl, "Myheader", "Hello");
|
||||
cl->header_end(cl);
|
||||
|
@ -95,9 +92,42 @@ static void hello_action(struct uh_client *cl)
|
|||
cl->request_done(cl);
|
||||
}
|
||||
|
||||
static void usage(const char *prog)
|
||||
{
|
||||
fprintf(stderr, "Usage: %s [option]\n"
|
||||
" -p port # Default port is 8080\n"
|
||||
" -s # SSl on\n"
|
||||
" -v # verbose\n", prog);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct uh_server *srv = NULL;
|
||||
int verbose = false;
|
||||
int ssl = false;
|
||||
int port = 8080;
|
||||
int opt;
|
||||
|
||||
while ((opt = getopt(argc, argv, "p:vs")) != -1) {
|
||||
switch (opt)
|
||||
{
|
||||
case 'p':
|
||||
port = atoi(optarg);
|
||||
break;
|
||||
case 's':
|
||||
ssl = true;
|
||||
break;
|
||||
case 'v':
|
||||
verbose = true;
|
||||
break;
|
||||
default: /* '?' */
|
||||
usage(argv[0]);
|
||||
}
|
||||
}
|
||||
|
||||
if (!verbose)
|
||||
ulog_threshold(LOG_ERR);
|
||||
|
||||
uh_log_debug("libuhttpd version: %s", UHTTPD_VERSION_STRING);
|
||||
|
||||
|
@ -107,14 +137,16 @@ int main(int argc, char **argv)
|
|||
if (!srv)
|
||||
goto done;
|
||||
|
||||
uh_log_debug("Listen on: *:%d", port);
|
||||
|
||||
#ifdef EXAMPLE_SSL
|
||||
#if (UHTTPD_SSL_SUPPORT)
|
||||
if (srv->ssl_init(srv, "server-key.pem", "server-cert.pem") < 0)
|
||||
#if (!UHTTPD_SSL_SUPPORT)
|
||||
if (ssl)
|
||||
uh_log_debug("SSl is not compiled in");
|
||||
#else
|
||||
if (ssl && srv->ssl_init(srv, "server-key.pem", "server-cert.pem") < 0)
|
||||
goto done;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
uh_log_debug("Listen on: %s *:%d", srv->ssl ? "https" : "http", port);
|
||||
|
||||
srv->add_action(srv, "/hello", hello_action);
|
||||
|
||||
uloop_run();
|
||||
|
|
52
README_ZH.md
52
README_ZH.md
|
@ -75,13 +75,10 @@ Select package libuhttpd in menuconfig and compile new image.
|
|||
```
|
||||
#include <uhttpd.h>
|
||||
|
||||
//#define EXAMPLE_SSL
|
||||
|
||||
#define port 8000
|
||||
|
||||
static void hello_action(struct uh_client *cl)
|
||||
{
|
||||
int body_len = 0;
|
||||
|
||||
cl->send_header(cl, 200, "OK", -1);
|
||||
cl->append_header(cl, "Myheader", "Hello");
|
||||
cl->header_end(cl);
|
||||
|
@ -96,9 +93,42 @@ static void hello_action(struct uh_client *cl)
|
|||
cl->request_done(cl);
|
||||
}
|
||||
|
||||
static void usage(const char *prog)
|
||||
{
|
||||
fprintf(stderr, "Usage: %s [option]\n"
|
||||
" -p port # Default port is 8080\n"
|
||||
" -s # SSl on\n"
|
||||
" -v # verbose\n", prog);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct uh_server *srv = NULL;
|
||||
int verbose = false;
|
||||
int ssl = false;
|
||||
int port = 8080;
|
||||
int opt;
|
||||
|
||||
while ((opt = getopt(argc, argv, "p:vs")) != -1) {
|
||||
switch (opt)
|
||||
{
|
||||
case 'p':
|
||||
port = atoi(optarg);
|
||||
break;
|
||||
case 's':
|
||||
ssl = true;
|
||||
break;
|
||||
case 'v':
|
||||
verbose = true;
|
||||
break;
|
||||
default: /* '?' */
|
||||
usage(argv[0]);
|
||||
}
|
||||
}
|
||||
|
||||
if (!verbose)
|
||||
ulog_threshold(LOG_ERR);
|
||||
|
||||
uh_log_debug("libuhttpd version: %s", UHTTPD_VERSION_STRING);
|
||||
|
||||
|
@ -108,14 +138,16 @@ int main(int argc, char **argv)
|
|||
if (!srv)
|
||||
goto done;
|
||||
|
||||
uh_log_debug("Listen on: *:%d", port);
|
||||
|
||||
#ifdef EXAMPLE_SSL
|
||||
#if (UHTTPD_SSL_SUPPORT)
|
||||
if (srv->ssl_init(srv, "server-key.pem", "server-cert.pem") < 0)
|
||||
#if (!UHTTPD_SSL_SUPPORT)
|
||||
if (ssl)
|
||||
uh_log_debug("SSl is not compiled in");
|
||||
#else
|
||||
if (ssl && srv->ssl_init(srv, "server-key.pem", "server-cert.pem") < 0)
|
||||
goto done;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
uh_log_debug("Listen on: %s *:%d", srv->ssl ? "https" : "http", port);
|
||||
|
||||
srv->add_action(srv, "/hello", hello_action);
|
||||
|
||||
uloop_run();
|
||||
|
|
|
@ -17,10 +17,6 @@
|
|||
|
||||
#include <uhttpd.h>
|
||||
|
||||
//#define EXAMPLE_SSL
|
||||
|
||||
#define port 8000
|
||||
|
||||
static void hello_action(struct uh_client *cl)
|
||||
{
|
||||
int body_len = 0;
|
||||
|
@ -39,9 +35,42 @@ static void hello_action(struct uh_client *cl)
|
|||
cl->request_done(cl);
|
||||
}
|
||||
|
||||
static void usage(const char *prog)
|
||||
{
|
||||
fprintf(stderr, "Usage: %s [option]\n"
|
||||
" -p port # Default port is 8080\n"
|
||||
" -s # SSl on\n"
|
||||
" -v # verbose\n", prog);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct uh_server *srv = NULL;
|
||||
int verbose = false;
|
||||
int ssl = false;
|
||||
int port = 8080;
|
||||
int opt;
|
||||
|
||||
while ((opt = getopt(argc, argv, "p:vs")) != -1) {
|
||||
switch (opt)
|
||||
{
|
||||
case 'p':
|
||||
port = atoi(optarg);
|
||||
break;
|
||||
case 's':
|
||||
ssl = true;
|
||||
break;
|
||||
case 'v':
|
||||
verbose = true;
|
||||
break;
|
||||
default: /* '?' */
|
||||
usage(argv[0]);
|
||||
}
|
||||
}
|
||||
|
||||
if (!verbose)
|
||||
ulog_threshold(LOG_ERR);
|
||||
|
||||
uh_log_debug("libuhttpd version: %s", UHTTPD_VERSION_STRING);
|
||||
|
||||
|
@ -51,14 +80,15 @@ int main(int argc, char **argv)
|
|||
if (!srv)
|
||||
goto done;
|
||||
|
||||
uh_log_debug("Listen on: *:%d", port);
|
||||
|
||||
#ifdef EXAMPLE_SSL
|
||||
#if (UHTTPD_SSL_SUPPORT)
|
||||
if (srv->ssl_init(srv, "server-key.pem", "server-cert.pem") < 0)
|
||||
#if (!UHTTPD_SSL_SUPPORT)
|
||||
if (ssl)
|
||||
uh_log_debug("SSl is not compiled in");
|
||||
#else
|
||||
if (ssl && srv->ssl_init(srv, "server-key.pem", "server-cert.pem") < 0)
|
||||
goto done;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
uh_log_debug("Listen on: %s *:%d", srv->ssl ? "https" : "http", port);
|
||||
|
||||
srv->add_action(srv, "/hello", hello_action);
|
||||
|
||||
|
|
|
@ -14,16 +14,9 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR} ${LIBUBOX_INCLUDE_DIR})
|
|||
set(EXTRA_LIBS ${LIBUBOX_LIBRARY} dl)
|
||||
set(SOURCE_FILES uhttpd.c client.c log.c utils.c file.c action.c)
|
||||
|
||||
set(UHTTPD_DEBUG_CONFIG 0)
|
||||
option(UHTTPD_DEBUG "Turn on debug" OFF)
|
||||
if(UHTTPD_DEBUG)
|
||||
set(UHTTPD_DEBUG_CONFIG 1)
|
||||
endif()
|
||||
|
||||
set(UHTTPD_SSL_SUPPORT_CONFIG 1)
|
||||
option(UHTTPD_SSL_SUPPORT "SSL support" ON)
|
||||
|
||||
|
||||
if(UHTTPD_SSL_SUPPORT)
|
||||
list(APPEND SOURCE_FILES uh_ssl.c)
|
||||
else()
|
||||
|
@ -57,5 +50,4 @@ install(
|
|||
message("")
|
||||
message(STATUS "UHTTPD_VERSION: ${UHTTPD_VERSION_MAJOR}.${UHTTPD_VERSION_MINOR}.${UHTTPD_VERSION_PATCH}")
|
||||
message(STATUS "UHTTPD_SSL_SUPPORT: ${UHTTPD_SSL_SUPPORT}")
|
||||
message(STATUS "UHTTPD_DEBUG: ${UHTTPD_DEBUG}")
|
||||
message("")
|
||||
|
|
|
@ -213,8 +213,6 @@ static void client_free(struct uh_client *cl)
|
|||
kvlist_free(&cl->request.var);
|
||||
kvlist_free(&cl->request.header);
|
||||
cl->srv->nclients--;
|
||||
|
||||
uh_log_debug("client_free: %s:%d", inet_ntoa(cl->peer_addr.sin_addr), cl->peer_addr.sin_port);
|
||||
free(cl);
|
||||
}
|
||||
}
|
||||
|
@ -280,11 +278,6 @@ static int client_parse_request(struct uh_client *cl, char *data)
|
|||
if (req->version < UH_HTTP_VER_1_1)
|
||||
cl->connection_close = true;
|
||||
|
||||
uh_log_debug("http path: %s", kvlist_get(&req->url, "path"));
|
||||
uh_log_debug("http query: %s", kvlist_get(&req->url, "query"));
|
||||
uh_log_debug("http method: %s", http_methods[h_method]);
|
||||
uh_log_debug("http version: %s", http_versions[h_version]);
|
||||
|
||||
return CLIENT_STATE_HEADER;
|
||||
}
|
||||
|
||||
|
|
|
@ -23,8 +23,6 @@
|
|||
#define UHTTPD_VERSION_PATCH @UHTTPD_VERSION_PATCH@
|
||||
#define UHTTPD_VERSION_STRING "@UHTTPD_VERSION_MAJOR@.@UHTTPD_VERSION_MINOR@.@UHTTPD_VERSION_PATCH@"
|
||||
|
||||
#define UHTTPD_DEBUG @UHTTPD_DEBUG_CONFIG@
|
||||
|
||||
#define UHTTPD_SSL_SUPPORT @UHTTPD_SSL_SUPPORT_CONFIG@
|
||||
|
||||
#endif
|
||||
|
|
|
@ -398,12 +398,6 @@ bool handle_file_request(struct uh_client *cl, const char *path)
|
|||
if (!pi)
|
||||
return false;
|
||||
|
||||
uh_log_debug("pi->root: %s", pi->root);
|
||||
uh_log_debug("pi->phys: %s", pi->phys);
|
||||
uh_log_debug("pi->name: %s", pi->name);
|
||||
uh_log_debug("pi->info: %s", pi->info);
|
||||
uh_log_debug("pi->redirected: %d", pi->redirected);
|
||||
|
||||
if (pi->redirected)
|
||||
return true;
|
||||
|
||||
|
|
15
src/log.c
15
src/log.c
|
@ -17,29 +17,22 @@
|
|||
|
||||
#include "log.h"
|
||||
|
||||
void __uh_log(const char *filename, int line, int priority, const char *format, ...)
|
||||
void __uh_log(const char *filename, int line, int priority, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
static char buf[128];
|
||||
|
||||
snprintf(buf, sizeof(buf), "(%s:%d) ", filename, line);
|
||||
|
||||
va_start(ap, format);
|
||||
vsnprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), format, ap);
|
||||
va_start(ap, fmt);
|
||||
vsnprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
if (priority == LOG_ERR && errno > 0) {
|
||||
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), ":%s", strerror(errno));
|
||||
errno = 0;
|
||||
}
|
||||
|
||||
syslog(priority, "%s", buf);
|
||||
|
||||
#if (UHTTPD_DEBUG)
|
||||
fprintf(stderr, "%s\n", buf);
|
||||
#else
|
||||
if (priority == LOG_ERR)
|
||||
fprintf(stderr, "%s\n", buf);
|
||||
#endif
|
||||
ulog(priority, "%s\n", buf);
|
||||
}
|
||||
|
||||
|
|
18
src/log.h
18
src/log.h
|
@ -18,25 +18,21 @@
|
|||
#ifndef _LOG_H
|
||||
#define _LOG_H
|
||||
|
||||
#include <syslog.h>
|
||||
#include "common.h"
|
||||
|
||||
#include <libubox/ulog.h>
|
||||
|
||||
#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
|
||||
|
||||
/*
|
||||
* Use the syslog output log and include the name and number of rows at the call
|
||||
*/
|
||||
#define uh_log(priority, format...) __uh_log(__FILENAME__, __LINE__, priority, format)
|
||||
#define uh_log(priority, fmt...) __uh_log(__FILENAME__, __LINE__, priority, fmt)
|
||||
|
||||
#if (UHTTPD_DEBUG)
|
||||
#define uh_log_debug(format...) uh_log(LOG_DEBUG, format)
|
||||
#else
|
||||
#define uh_log_debug(format...)
|
||||
#endif
|
||||
#define uh_log_debug(fmt...) uh_log(LOG_DEBUG, fmt)
|
||||
#define uh_log_info(fmt...) uh_log(LOG_INFO, fmt)
|
||||
#define uh_log_err(fmt...) uh_log(LOG_ERR, fmt)
|
||||
|
||||
#define uh_log_info(format...) uh_log(LOG_INFO, format)
|
||||
#define uh_log_err(format...) uh_log(LOG_ERR, format)
|
||||
|
||||
void __uh_log(const char *filename, int line, int priority, const char *format, ...);
|
||||
void __uh_log(const char *filename, int line, int priority, const char *fmt, ...);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue