allow coexistance of N build and AC build.
[tomato.git] / release / src / router / rc / tor.c
blobed4aef478afc4d1894c10cc0289d2f8dc0824475
1 /*
2 * tor.c
4 * Copyright (C) 2011 shibby
6 */
7 #include <rc.h>
8 #include <sys/stat.h>
10 void start_tor(void)
12 FILE *fp;
13 char *ip;
15 // only if enable...
16 if( nvram_match( "tor_enable", "1" ) )
19 if (nvram_match( "tor_iface", "br0" ) ) { ip = nvram_safe_get( "lan_ipaddr" ); }
20 else if (nvram_match( "tor_iface", "br1" ) ) { ip = nvram_safe_get( "lan1_ipaddr" ); }
21 else if (nvram_match( "tor_iface", "br2" ) ) { ip = nvram_safe_get( "lan2_ipaddr" ); }
22 else if (nvram_match( "tor_iface", "br3" ) ) { ip = nvram_safe_get( "lan3_ipaddr" ); }
23 else { ip = nvram_safe_get( "lan_ipaddr" ); }
26 // writing data to file
27 if( !( fp = fopen( "/etc/tor.conf", "w" ) ) )
29 perror( "/etc/tor.conf" );
30 return;
32 fprintf(fp, "SocksPort %d\n", nvram_get_int( "tor_socksport" ) );
33 fprintf(fp, "SocksBindAddress 127.0.0.1\n");
34 fprintf(fp, "AllowUnverifiedNodes middle,rendezvous\n");
35 fprintf(fp, "RunAsDaemon 1\n");
36 fprintf(fp, "Log notice syslog\n");
37 fprintf(fp, "DataDirectory %s\n", nvram_safe_get( "tor_datadir" ) );
38 fprintf(fp, "TransPort %s\n", nvram_safe_get( "tor_transport" ) );
39 fprintf(fp, "TransListenAddress %s\n", ip );
40 fprintf(fp, "DNSPort %s\n", nvram_safe_get( "tor_dnsport" ) );
41 fprintf(fp, "DNSListenAddress %s\n", ip );
42 fprintf(fp, "User nobody\n");
43 fprintf(fp, "%s\n", nvram_safe_get("tor_custom"));
45 fclose( fp );
46 chmod( "/etc/tor.conf", 0644 );
48 mkdir( nvram_safe_get("tor_datadir"), 0777 );
49 xstart( "chown", "nobody:nobody", nvram_safe_get("tor_datadir") );
51 xstart( "tor", "-f", "/etc/tor.conf" );
54 return;
57 void stop_tor(void)
59 killall("tor", SIGTERM);
60 return;