Add code to start tor hidden service, start process controller

master
teknomunk 11 months ago
parent d196719c63
commit 563d1ee2ea

@ -1,4 +1,4 @@
#!/bin/bash
[[ -f src.a ]] && rm src.a
find ./ -type f | grep -E '\.o$' | xargs -I'{}' rm '{}'
find ./obj -type f | grep -E '\.o$' | xargs -I'{}' rm '{}'

@ -14,6 +14,9 @@ static struct json_object_field app_args_layout[] = {
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
@ -28,6 +31,7 @@ struct app_args* app_args_new( int argc, char** argv )
args->port = 9053;
args->addr = strdup("0.0.0.0");
args->tor_socks_port = 9123;
json_read_object_layout_from_file( "data/server.json", app_args_layout, args );

@ -10,8 +10,11 @@ struct app_args
char* domain;
bool debug;
int section;
bool disable_tor;
int tor_socks_port;
};
struct app_args* app_args_new( int argc, char** argv );
void app_args_release( struct app_args* args );
extern struct app_args* g_server;

@ -18,6 +18,8 @@
#include "controller/test.h"
#include "controller/indexer.h"
#include "controller/fetch.h"
#include "tor.h"
#include "process.h"
#include <curl/curl.h>
@ -110,6 +112,7 @@ int main( int argc, char* argv[] )
case 3: built_in_test(); break;
case 4: reindex(); break;
case 5: process_fetch(); break;
case 6: start_tor(); break;
case 100: develop(); break;
default: code = !run_everything(g_server); break;

@ -1,7 +1,4 @@
#pragma once
//extern const char* g_server_name;
#include "app_args.h"
extern struct app_args* g_server;

@ -0,0 +1,20 @@
#include "process.h"
struct process
{
int pid;
int section;
};
void process_start_section( int id )
{
}
void process_stop()
{
}
void process_wait_for_finished()
{
}

@ -0,0 +1,6 @@
#pragma once
void process_start_section( int id );
void process_stop();
void process_wait_for_finished();

@ -0,0 +1,53 @@
#include "tor.h"
#include "model/server.h"
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
int start_tor()
{
if( g_server->disable_tor ) {
return 1;
}
// Replace stdout and stderr with log file
int log = open( "data/logs/tor.log", O_CREAT | O_RDWR | O_SYNC, 0644 );
dup2( log, 1 );
dup2( log, 2 );
close(log);
mkdir( "data/tor", 0755 );
chdir( "data/tor" );
char wd[512];
getcwd( wd, sizeof(wd) );
FILE* f = fopen( "torrc", "w" );
fprintf( f, "SOCKSPort %d\n", g_server->tor_socks_port );
fprintf( f, "SOCKSPolicy accept 127.0.0.1/8\n" );
fprintf( f, "SOCKSPolicy reject *\n" );
fprintf( f, "Log notice stdout\n" );
fprintf( f, "DataDirectory %s\n", wd );
fprintf( f, "HiddenServiceDir %s/hidden_service\n", wd );
fprintf( f, "HiddenServicePort 80 127.0.0.1:%d\n", g_server->port );
fclose(f);
printf( "Starting tor...\n" );
fflush(stdout);
static char *argv[] = {
"/usr/bin/tor",
"-f",
"torrc"
};
execve( "/usr/bin/tor", argv, NULL );
printf( "Failed to start tor: %s\n", strerror(errno) );
return 0;
}

@ -0,0 +1,4 @@
#pragma once
int start_tor();
Loading…
Cancel
Save