You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.8 KiB
C
79 lines
1.8 KiB
C
#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_END,
|
|
};
|
|
#undef OBJ_TYPE
|
|
|
|
struct app_args* g_server = NULL;
|
|
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 );
|
|
|
|
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);
|
|
}
|
|
|