From 1d5147bf3b7a6a0b5a40d651ead2b7d755dfbac6 Mon Sep 17 00:00:00 2001 From: Keith Moyer Date: Thu, 26 Mar 2009 23:12:06 -0500 Subject: [PATCH] Automatic startup --- release/src/router/httpd/tomato.c | 2 ++ release/src/router/nvram/defaults.c | 2 ++ release/src/router/rc/rc.h | 2 ++ release/src/router/rc/services.c | 1 + release/src/router/rc/vpn.c | 22 ++++++++++++++++++++++ release/src/router/www/vpn-client.asp | 9 ++++++++- release/src/router/www/vpn-server.asp | 9 ++++++++- 7 files changed, 45 insertions(+), 2 deletions(-) diff --git a/release/src/router/httpd/tomato.c b/release/src/router/httpd/tomato.c index fbade5e107..6b970b1021 100644 --- a/release/src/router/httpd/tomato.c +++ b/release/src/router/httpd/tomato.c @@ -669,6 +669,7 @@ static const nvset_t nvset_list[] = { // vpn { "vpn_debug", V_01 }, + { "vpn_server_eas", V_NONE }, { "vpn_server1_if", V_TEXT(3, 3) }, // tap, tun { "vpn_server1_proto", V_TEXT(3, 10) }, // udp, tcp-server { "vpn_server1_port", V_PORT }, @@ -719,6 +720,7 @@ static const nvset_t nvset_list[] = { { "vpn_server2_crt", V_NONE }, { "vpn_server2_key", V_NONE }, { "vpn_server2_dh", V_NONE }, + { "vpn_client_eas", V_NONE }, { "vpn_client1_if", V_TEXT(3, 3) }, // tap, tun { "vpn_client1_bridge", V_01 }, { "vpn_client1_nat", V_01 }, diff --git a/release/src/router/nvram/defaults.c b/release/src/router/nvram/defaults.c index 2ac94e4cb8..6bb3f82c43 100644 --- a/release/src/router/nvram/defaults.c +++ b/release/src/router/nvram/defaults.c @@ -474,6 +474,7 @@ const defaults_t defaults[] = { // vpn { "vpn_debug", "0" }, + { "vpn_server_eas", "" }, { "vpn_server1_if", "tap" }, { "vpn_server1_proto", "udp" }, { "vpn_server1_port", "1194" }, @@ -524,6 +525,7 @@ const defaults_t defaults[] = { { "vpn_server2_cert", "" }, { "vpn_server2_key", "" }, { "vpn_server2_dh", "" }, + { "vpn_client_eas", "" }, { "vpn_client1_if", "tap" }, { "vpn_client1_bridge", "1" }, { "vpn_client1_nat", "1" }, diff --git a/release/src/router/rc/rc.h b/release/src/router/rc/rc.h index d5812111e2..1f25636bd2 100644 --- a/release/src/router/rc/rc.h +++ b/release/src/router/rc/rc.h @@ -318,12 +318,14 @@ extern void start_vpnclient(int clientNum); extern void stop_vpnclient(int clientNum); extern void start_vpnserver(int serverNum); extern void stop_vpnserver(int serverNum); +extern void start_vpn_eas(); extern void run_vpn_firewall_scripts(); #else static inline void start_vpnclient(int clientNum) {} static inline void stop_vpnclient(int clientNum) {} static inline void start_vpnserver(int serverNum) {} static inline void stop_vpnserver(int serverNum) {} +static inline void start_vpn_eas() {} static inline void run_vpn_firewall_scripts() {} #endif diff --git a/release/src/router/rc/services.c b/release/src/router/rc/services.c index a12defb70f..b3bcd71402 100644 --- a/release/src/router/rc/services.c +++ b/release/src/router/rc/services.c @@ -705,6 +705,7 @@ void start_services(void) #ifdef TCONFIG_SAMBA start_smbd(); #endif + start_vpn_eas(); } void stop_services(void) diff --git a/release/src/router/rc/vpn.c b/release/src/router/rc/vpn.c index 8597fce430..af5a1a5f9e 100644 --- a/release/src/router/rc/vpn.c +++ b/release/src/router/rc/vpn.c @@ -793,6 +793,28 @@ void stop_vpnserver(int serverNum) vpnlog(VPN_LOG_INFO,"VPN GUI server backend stopped."); } +void start_vpn_eas() +{ + char buffer[16], *cur; + int nums[4], i; + + // Parse and start servers + strlcpy(&buffer[0], nvram_safe_get("vpn_server_eas"), sizeof(buffer)); + if ( strlen(&buffer[0]) != 0 ) vpnlog(VPN_LOG_INFO, "Starting servers (eas): %s", &buffer[0]); + i = 0; + for( cur = strtok(&buffer[0],","); cur != NULL && i < 4; cur = strtok(NULL, ",")) { nums[i++] = atoi(cur); } + nums[i] = 0; + for( i = 0; nums[i] > 0; i++ ) { vpnlog(VPN_LOG_INFO, "Starting server %d (eas)", nums[i]); start_vpnserver(nums[i]); } + + // Parse and start clients + strlcpy(&buffer[0], nvram_safe_get("vpn_client_eas"), sizeof(buffer)); + if ( strlen(&buffer[0]) != 0 ) vpnlog(VPN_LOG_INFO, "Starting clients (eas): %s", &buffer[0]); + i = 0; + for( cur = strtok(&buffer[0],","); cur != NULL && i < 4; cur = strtok(NULL, ",")) { nums[i++] = atoi(cur); } + nums[i] = 0; + for( i = 0; nums[i] > 0; i++ ) { vpnlog(VPN_LOG_INFO, "Starting client %d (eas)", nums[i]); start_vpnclient(nums[i]); } +} + void run_vpn_firewall_scripts() { DIR *dir; diff --git a/release/src/router/www/vpn-client.asp b/release/src/router/www/vpn-client.asp index c779c9f43b..e8918f2993 100644 --- a/release/src/router/www/vpn-client.asp +++ b/release/src/router/www/vpn-client.asp @@ -20,7 +20,7 @@