Rename src/app_args.* to src/model/server.*, use new struct http_settings, provide http status code 401 when not properly authenticated to make logs more useful
parent
a8d7e7f041
commit
36b3cc92ba
@ -1,100 +0,0 @@
|
||||
#include "app_args.h"
|
||||
|
||||
#include "json/layout.h"
|
||||
|
||||
#include "controller/cli.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define OBJ_TYPE struct app_args
|
||||
static struct json_object_field app_args_layout[] = {
|
||||
JSON_FIELD_STRING( domain, true ),
|
||||
JSON_FIELD_STRING( addr, false ),
|
||||
JSON_FIELD_INTEGER( port, false ),
|
||||
JSON_FIELD_BOOL( debug, false ),
|
||||
JSON_FIELD_BOOL( disable_tor, false ),
|
||||
JSON_FIELD_INTEGER( tor_socks_port, false ),
|
||||
|
||||
JSON_FIELD_BOOL( develop, false ),
|
||||
JSON_FIELD_END,
|
||||
};
|
||||
#undef OBJ_TYPE
|
||||
|
||||
struct app_args* g_server = NULL;
|
||||
void app_args_refresh_tor_hidden_service()
|
||||
{
|
||||
if( !g_server ) { return; }
|
||||
|
||||
free( g_server->tor_hidden_service );
|
||||
g_server->tor_hidden_service = NULL;
|
||||
|
||||
FILE* f = fopen("data/tor/hidden_service/hostname","r");
|
||||
size_t n;
|
||||
getline( &g_server->tor_hidden_service, &n, f );
|
||||
n = strlen( g_server->tor_hidden_service );
|
||||
if( g_server->tor_hidden_service[n-1] == '\n' ) {
|
||||
g_server->tor_hidden_service[n-1] = '\0';
|
||||
}
|
||||
fclose(f);
|
||||
}
|
||||
struct app_args* app_args_new( int argc, char** argv )
|
||||
{
|
||||
struct app_args* args = (struct app_args*)malloc( sizeof(struct app_args) );
|
||||
memset(args,0,sizeof(*args));
|
||||
if( !args ) { return NULL; }
|
||||
|
||||
g_server = args;
|
||||
|
||||
args->port = 9053;
|
||||
args->addr = strdup("0.0.0.0");
|
||||
args->tor_socks_port = 9123;
|
||||
args->section = -1;
|
||||
|
||||
json_read_object_layout_from_file( "data/server.json", app_args_layout, args );
|
||||
|
||||
app_args_refresh_tor_hidden_service();
|
||||
|
||||
if( ( argc > 1 ) && ( 0 != strncmp(argv[1],"--",2) ) ) {
|
||||
handle_command( argv, argc );
|
||||
free(args);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for( int i = 1; i < argc; ++i ) {
|
||||
const char* arg = argv[i];
|
||||
|
||||
if( sscanf(arg,"--section=%d",&args->section) ) {
|
||||
} else if( 0 == strcmp(argv[i],"--debug") ) {
|
||||
args->debug = true;
|
||||
} else if( 0 == strcmp(argv[i],"--test") ) {
|
||||
args->section = 3;
|
||||
} else if( 0 == strcmp(argv[i],"--webserver") ) {
|
||||
args->section = 0;
|
||||
} else if( 0 == strcmp(argv[i],"--inbox") ) {
|
||||
args->section = 1;
|
||||
} else if( 0 == strcmp(argv[i],"--outbox") ) {
|
||||
args->section = 2;
|
||||
} else if( 0 == strcmp(argv[i],"--reindex") ) {
|
||||
args->section = 3;
|
||||
} else if( 0 == strcmp(argv[i],"--devel") ) {
|
||||
args->section = 100;
|
||||
} else {
|
||||
printf( "Unknown argument: %s\n", argv[i] );
|
||||
free(args);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return args;
|
||||
}
|
||||
|
||||
void app_args_release( struct app_args* args )
|
||||
{
|
||||
free(args->addr);
|
||||
free(args->domain);
|
||||
free(args->tor_hidden_service);
|
||||
free(args);
|
||||
}
|
||||
|
@ -1,23 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
struct app_args
|
||||
{
|
||||
uint16_t port;
|
||||
char* addr;
|
||||
char* domain;
|
||||
char* tor_hidden_service;
|
||||
bool debug;
|
||||
int section;
|
||||
bool disable_tor;
|
||||
int tor_socks_port;
|
||||
|
||||
bool develop;
|
||||
};
|
||||
|
||||
struct app_args* app_args_new( int argc, char** argv );
|
||||
void app_args_release( struct app_args* args );
|
||||
extern struct app_args* g_server;
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit e7caba38aee79997c147ca718b69bb16795eb827
|
||||
Subproject commit 25265c5f0132646a35c2f0bf21963a079ebee348
|
@ -1,2 +1,110 @@
|
||||
#include "server.h"
|
||||
|
||||
#include "json/layout.h"
|
||||
|
||||
#include "controller/cli.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define OBJ_TYPE struct app_args
|
||||
static struct json_object_field app_args_layout[] = {
|
||||
JSON_FIELD_STRING( domain, true ),
|
||||
{
|
||||
.key = "addr",
|
||||
.offset = offsetof( OBJ_TYPE, http_settings.bind_address ),
|
||||
.type = &json_field_string,
|
||||
},
|
||||
{
|
||||
.key = "port",
|
||||
.offset = offsetof( OBJ_TYPE, http_settings.bind_port ),
|
||||
.type = &json_field_integer,
|
||||
},
|
||||
//JSON_FIELD_STRING( addr, false ),
|
||||
//JSON_FIELD_INTEGER( port, false ),
|
||||
JSON_FIELD_BOOL( debug, false ),
|
||||
JSON_FIELD_BOOL( disable_tor, false ),
|
||||
JSON_FIELD_INTEGER( tor_socks_port, false ),
|
||||
|
||||
JSON_FIELD_BOOL( develop, false ),
|
||||
JSON_FIELD_END,
|
||||
};
|
||||
#undef OBJ_TYPE
|
||||
|
||||
struct app_args* g_server = NULL;
|
||||
void app_args_refresh_tor_hidden_service()
|
||||
{
|
||||
if( !g_server ) { return; }
|
||||
|
||||
free( g_server->tor_hidden_service );
|
||||
g_server->tor_hidden_service = NULL;
|
||||
|
||||
FILE* f = fopen("data/tor/hidden_service/hostname","r");
|
||||
size_t n;
|
||||
getline( &g_server->tor_hidden_service, &n, f );
|
||||
n = strlen( g_server->tor_hidden_service );
|
||||
if( g_server->tor_hidden_service[n-1] == '\n' ) {
|
||||
g_server->tor_hidden_service[n-1] = '\0';
|
||||
}
|
||||
fclose(f);
|
||||
}
|
||||
struct app_args* app_args_new( int argc, char** argv )
|
||||
{
|
||||
struct app_args* args = (struct app_args*)malloc( sizeof(struct app_args) );
|
||||
memset(args,0,sizeof(*args));
|
||||
if( !args ) { return NULL; }
|
||||
|
||||
g_server = args;
|
||||
|
||||
args->http_settings.bind_port = 9053;
|
||||
args->http_settings.bind_address = strdup("0.0.0.0");
|
||||
args->tor_socks_port = 9123;
|
||||
args->section = -1;
|
||||
|
||||
json_read_object_layout_from_file( "data/server.json", app_args_layout, args );
|
||||
|
||||
app_args_refresh_tor_hidden_service();
|
||||
|
||||
if( ( argc > 1 ) && ( 0 != strncmp(argv[1],"--",2) ) ) {
|
||||
handle_command( argv, argc );
|
||||
free(args);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for( int i = 1; i < argc; ++i ) {
|
||||
const char* arg = argv[i];
|
||||
|
||||
if( sscanf(arg,"--section=%d",&args->section) ) {
|
||||
} else if( 0 == strcmp(argv[i],"--debug") ) {
|
||||
args->debug = true;
|
||||
} else if( 0 == strcmp(argv[i],"--test") ) {
|
||||
args->section = 3;
|
||||
} else if( 0 == strcmp(argv[i],"--webserver") ) {
|
||||
args->section = 0;
|
||||
} else if( 0 == strcmp(argv[i],"--inbox") ) {
|
||||
args->section = 1;
|
||||
} else if( 0 == strcmp(argv[i],"--outbox") ) {
|
||||
args->section = 2;
|
||||
} else if( 0 == strcmp(argv[i],"--reindex") ) {
|
||||
args->section = 3;
|
||||
} else if( 0 == strcmp(argv[i],"--devel") ) {
|
||||
args->section = 100;
|
||||
} else {
|
||||
printf( "Unknown argument: %s\n", argv[i] );
|
||||
free(args);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return args;
|
||||
}
|
||||
|
||||
void app_args_release( struct app_args* args )
|
||||
{
|
||||
free(args->http_settings.bind_address);
|
||||
free(args->domain);
|
||||
free(args->tor_hidden_service);
|
||||
free(args);
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include "app_args.h"
|
||||
#include "http/server/server.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
struct app_args
|
||||
{
|
||||
//uint16_t port;
|
||||
struct http_server_args http_settings;
|
||||
//char* addr;
|
||||
char* domain;
|
||||
char* tor_hidden_service;
|
||||
bool debug;
|
||||
int section;
|
||||
bool disable_tor;
|
||||
int tor_socks_port;
|
||||
|
||||
bool develop;
|
||||
};
|
||||
|
||||
struct app_args* app_args_new( int argc, char** argv );
|
||||
void app_args_release( struct app_args* args );
|
||||
extern struct app_args* g_server;
|
||||
|
||||
|
Loading…
Reference in new issue