Revision: 7884 http://sourceforge.net/p/ipcop/svn/7884 Author: owes Date: 2015-02-09 16:54:04 +0000 (Mon, 09 Feb 2015) Log Message: ----------- Rename the start/stop SUID helper for openvpn
Modified Paths: -------------- ipcop/trunk/config/rootfiles/common/ipcop-progs ipcop/trunk/html/cgi-bin/openvpn.cgi ipcop/trunk/html/cgi-bin/vpnca.cgi ipcop/trunk/src/progs/Makefile ipcop/trunk/src/rc.d/rc.sysinit ipcop/trunk/src/scripts/scheduler.pl ipcop/trunk/updates/2.2.0/ROOTFILES.i486-2.2.0 ipcop/trunk/updates/2.2.0/setup Added Paths: ----------- ipcop/trunk/src/progs/restartopenvpn.c Removed Paths: ------------- ipcop/trunk/src/progs/openvpnctrl.c Modified: ipcop/trunk/config/rootfiles/common/ipcop-progs =================================================================== --- ipcop/trunk/config/rootfiles/common/ipcop-progs 2015-02-09 16:35:24 UTC (rev 7883) +++ ipcop/trunk/config/rootfiles/common/ipcop-progs 2015-02-09 16:54:04 UTC (rev 7884) @@ -67,7 +67,6 @@ usr/local/bin/makesquidconf.pl usr/local/bin/monitorTraffic.pl usr/local/bin/openvpn.sh -usr/local/bin/openvpnctrl usr/local/bin/openvpnverify usr/local/bin/puzzleFwRules.pl usr/local/bin/readhash @@ -79,6 +78,7 @@ usr/local/bin/restartdhcp usr/local/bin/restarthttpd usr/local/bin/restartntpd +usr/local/bin/restartopenvpn usr/local/bin/restartshaping usr/local/bin/restartsquid usr/local/bin/restartssh Modified: ipcop/trunk/html/cgi-bin/openvpn.cgi =================================================================== --- ipcop/trunk/html/cgi-bin/openvpn.cgi 2015-02-09 16:35:24 UTC (rev 7883) +++ ipcop/trunk/html/cgi-bin/openvpn.cgi 2015-02-09 16:54:04 UTC (rev 7884) @@ -203,18 +203,18 @@ #start openvpn server if ($cgiparams{'ACTION'} eq $Lang::tr{'start openvpn server'}) { &emptyserverlog(); - system('/usr/local/bin/openvpnctrl', '--start'); + system('/usr/local/bin/restartopenvpn', '--start'); } #stop openvpn server if ($cgiparams{'ACTION'} eq $Lang::tr{'stop openvpn server'}) { - system('/usr/local/bin/openvpnctrl', '--stop'); + system('/usr/local/bin/restartopenvpn', '--stop'); &emptyserverlog(); } #restart openvpn server if ($cgiparams{'ACTION'} eq $Lang::tr{'restart openvpn server'}) { - system('/usr/local/bin/openvpnctrl', '--restart'); + system('/usr/local/bin/restartopenvpn', '--restart'); &emptyserverlog(); } } Modified: ipcop/trunk/html/cgi-bin/vpnca.cgi =================================================================== --- ipcop/trunk/html/cgi-bin/vpnca.cgi 2015-02-09 16:35:24 UTC (rev 7883) +++ ipcop/trunk/html/cgi-bin/vpnca.cgi 2015-02-09 16:54:04 UTC (rev 7884) @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License # along with IPCop. If not, see <http://www.gnu.org/licenses/>. # -# (c) 2001-2014 The IPCop Team +# (c) 2001-2015 The IPCop Team # # $Id$ # @@ -114,7 +114,7 @@ &General::log("ipsec", "Reload certificates and secrets"); system('/usr/local/bin/ipsecctrl', '--reload'); - system('/usr/local/bin/openvpnctrl', '--restart'); + system('/usr/local/bin/restartopenvpn', '--restart'); sleep $sleepDelay; ### @@ -297,7 +297,7 @@ &General::log("ipsec", "Reload certificates and secrets"); system('/usr/local/bin/ipsecctrl', '--reload'); - system('/usr/local/bin/openvpnctrl', '--restart'); + system('/usr/local/bin/restartopenvpn', '--restart'); sleep $sleepDelay; } else { Modified: ipcop/trunk/src/progs/Makefile =================================================================== --- ipcop/trunk/src/progs/Makefile 2015-02-09 16:35:24 UTC (rev 7883) +++ ipcop/trunk/src/progs/Makefile 2015-02-09 16:54:04 UTC (rev 7884) @@ -11,7 +11,7 @@ ipcopbkcfg installpackage installfcdsl ipsecctrl \ red setaliases ipcopbackup restartshaping restartntpd \ setdate rebuildhosts rebuildlangtexts conntrack_helper \ - restartsyslogd sysinfo openvpnctrl iptableswrapper + restartsyslogd sysinfo restartopenvpn iptableswrapper BACKUP_PROGS = ipcoprestore all : helper.o helper_backup.o $(PROGS) $(SUID_PROGS) $(BACKUP_PROGS) Deleted: ipcop/trunk/src/progs/openvpnctrl.c =================================================================== --- ipcop/trunk/src/progs/openvpnctrl.c 2015-02-09 16:35:24 UTC (rev 7883) +++ ipcop/trunk/src/progs/openvpnctrl.c 2015-02-09 16:54:04 UTC (rev 7884) @@ -1,160 +0,0 @@ -/* - * This file is part of the IPCop Firewall. - * - * IPCop is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * IPCop is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with IPCop; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * $Id$ - * - */ - - -#include <getopt.h> -#include <stdio.h> -#include <string.h> -#include <signal.h> -#include <unistd.h> -#include "common.h" -#include "setuid.h" - - -static int flag_start = 0; -static int flag_stop = 0; -static int flag_restart = 0; -static int enabled_count; - - -void usage(char *prg, int exit_code) -{ - printf("Usage: %s [OPTION]\n\n", prg); - printf("Options:\n"); - printf(" --start .\n"); - printf(" --stop .\n"); - printf(" --restart .\n"); - printf(" -v, --verbose be verbose\n"); - printf(" --help display this help and exit\n"); - exit(exit_code); -} - - -int main(int argc, char *argv[]) -{ - int i, j; - char buffer[STRING_SIZE]; - NODEKV *openvpn_kv = NULL; - - static struct option long_options[] = - { - { "start", no_argument, &flag_start, 1 }, - { "stop", no_argument, &flag_stop, 1 }, - { "restart", no_argument, &flag_restart, 1 }, - { "verbose", no_argument, 0, 'v' }, - { "help", no_argument, 0, 'h' }, - { 0, 0, 0, 0} - }; - int c; - int option_index = 0; - - while ((c = getopt_long(argc, argv, "v", long_options, &option_index)) != -1) { - switch (c) { - case 0: - break; - case 'v': /* verbose */ - flag_verbose++; - break; - case 'h': - usage(argv[0], 0); - default: - fprintf(stderr, "unknown option\n"); - usage(argv[0], 1); - } - } - - if (!flag_start && !flag_stop && !flag_restart) { - /* need at least one of start, stop, restart */ - usage(argv[0], 1); - } - - if ( !(initsetuid()) ) - exit(1); - - /* Terminate running OpenVPN server */ - if (access("/var/run/openvpn.pid", 0) != -1) { - verbose_printf(2, "Stopping OpenVPN server ... \n"); - if (mysignalpidfile("/var/run/openvpn.pid", SIGTERM) != SUCCESS ) { - exit(0); - } - safe_system("/bin/rm -f /var/run/openvpn.pid"); - - if (flag_start || flag_restart) { - sleep(1); - } - } - - /* Fetch ethernet/settings, exit on error */ - read_ethernet_settings(1); - - /* Fetch openvpn/settings */ - verbose_printf(1, "Reading OpenVPN settings ... \n"); - if (read_kv_from_file(&openvpn_kv, "/var/ipcop/openvpn/settings") != SUCCESS) { - fprintf(stderr, "Cannot read OpenVPN settings\n"); - exit(1); - } - - enabled_count = 0; - for (i = 0; i < CFG_COLOURS_COUNT; i++) { - /* filter GREEN, no OpenVPN daemon there */ - if (i == GREEN) { - continue; - } - - for (j = 1; j <= MAX_NETWORK_COLOUR; j++) { - snprintf(buffer, STRING_SIZE, "ENABLED_%s_%d", ipcop_colours_text[i], j); - - if (test_kv(openvpn_kv, buffer, "on") == SUCCESS) { - /* this card is enabled in openvpn/settings */ - if (j > ipcop_ethernet.count[i]) { - /* card is missing in ethernet/settings */ - if (i == RED) { - /* RED could be Modem/ISDN */ - verbose_printf(2, "RED is enabled and is not in ethernet/settings ... \n"); - } - else { - fprintf(stderr, "%s_%d enabled but no device defined\n", ipcop_colours_text[i], j); - exit(1); - } - } - - enabled_count++; - } - } - } - verbose_printf(2, " %d enabled interface(s)\n", enabled_count); - - if (enabled_count == 0) { - verbose_printf(1, "OpenVPN not enabled ... \n"); - } - - if (enabled_count && (flag_start || flag_restart)) { - safe_system("/sbin/modprobe tun"); - verbose_printf(1, "Starting OpenVPN server ... \n"); - safe_system("/usr/sbin/openvpn --config /var/ipcop/openvpn/server.conf"); - } - - /* rebuild rules, maybe server is now disabled, or some other change */ - verbose_printf(1, "Rebuild firewall rules ... \n"); - safe_system("/usr/local/bin/setfwrules --ipcop"); - - return(0); -} Copied: ipcop/trunk/src/progs/restartopenvpn.c (from rev 7882, ipcop/trunk/src/progs/openvpnctrl.c) =================================================================== --- ipcop/trunk/src/progs/restartopenvpn.c (rev 0) +++ ipcop/trunk/src/progs/restartopenvpn.c 2015-02-09 16:54:04 UTC (rev 7884) @@ -0,0 +1,160 @@ +/* + * This file is part of the IPCop Firewall. + * + * IPCop is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * IPCop is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with IPCop; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * $Id$ + * + */ + + +#include <getopt.h> +#include <stdio.h> +#include <string.h> +#include <signal.h> +#include <unistd.h> +#include "common.h" +#include "setuid.h" + + +static int flag_start = 0; +static int flag_stop = 0; +static int flag_restart = 0; +static int enabled_count; + + +void usage(char *prg, int exit_code) +{ + printf("Usage: %s [OPTION]\n\n", prg); + printf("Options:\n"); + printf(" --start .\n"); + printf(" --stop .\n"); + printf(" --restart .\n"); + printf(" -v, --verbose be verbose\n"); + printf(" --help display this help and exit\n"); + exit(exit_code); +} + + +int main(int argc, char *argv[]) +{ + int i, j; + char buffer[STRING_SIZE]; + NODEKV *openvpn_kv = NULL; + + static struct option long_options[] = + { + { "start", no_argument, &flag_start, 1 }, + { "stop", no_argument, &flag_stop, 1 }, + { "restart", no_argument, &flag_restart, 1 }, + { "verbose", no_argument, 0, 'v' }, + { "help", no_argument, 0, 'h' }, + { 0, 0, 0, 0} + }; + int c; + int option_index = 0; + + while ((c = getopt_long(argc, argv, "v", long_options, &option_index)) != -1) { + switch (c) { + case 0: + break; + case 'v': /* verbose */ + flag_verbose++; + break; + case 'h': + usage(argv[0], 0); + default: + fprintf(stderr, "unknown option\n"); + usage(argv[0], 1); + } + } + + if (!flag_start && !flag_stop && !flag_restart) { + /* need at least one of start, stop, restart */ + usage(argv[0], 1); + } + + if ( !(initsetuid()) ) + exit(1); + + /* Terminate running OpenVPN server */ + if (access("/var/run/openvpn.pid", 0) != -1) { + verbose_printf(2, "Stopping OpenVPN server ... \n"); + if (mysignalpidfile("/var/run/openvpn.pid", SIGTERM) != SUCCESS ) { + exit(0); + } + safe_system("/bin/rm -f /var/run/openvpn.pid"); + + if (flag_start || flag_restart) { + sleep(1); + } + } + + /* Fetch ethernet/settings, exit on error */ + read_ethernet_settings(1); + + /* Fetch openvpn/settings */ + verbose_printf(1, "Reading OpenVPN settings ... \n"); + if (read_kv_from_file(&openvpn_kv, "/var/ipcop/openvpn/settings") != SUCCESS) { + fprintf(stderr, "Cannot read OpenVPN settings\n"); + exit(1); + } + + enabled_count = 0; + for (i = 0; i < CFG_COLOURS_COUNT; i++) { + /* filter GREEN, no OpenVPN daemon there */ + if (i == GREEN) { + continue; + } + + for (j = 1; j <= MAX_NETWORK_COLOUR; j++) { + snprintf(buffer, STRING_SIZE, "ENABLED_%s_%d", ipcop_colours_text[i], j); + + if (test_kv(openvpn_kv, buffer, "on") == SUCCESS) { + /* this card is enabled in openvpn/settings */ + if (j > ipcop_ethernet.count[i]) { + /* card is missing in ethernet/settings */ + if (i == RED) { + /* RED could be Modem/ISDN */ + verbose_printf(2, "RED is enabled and is not in ethernet/settings ... \n"); + } + else { + fprintf(stderr, "%s_%d enabled but no device defined\n", ipcop_colours_text[i], j); + exit(1); + } + } + + enabled_count++; + } + } + } + verbose_printf(2, " %d enabled interface(s)\n", enabled_count); + + if (enabled_count == 0) { + verbose_printf(1, "OpenVPN not enabled ... \n"); + } + + if (enabled_count && (flag_start || flag_restart)) { + safe_system("/sbin/modprobe tun"); + verbose_printf(1, "Starting OpenVPN server ... \n"); + safe_system("/usr/sbin/openvpn --config /var/ipcop/openvpn/server.conf"); + } + + /* rebuild rules, maybe server is now disabled, or some other change */ + verbose_printf(1, "Rebuild firewall rules ... \n"); + safe_system("/usr/local/bin/setfwrules --ipcop"); + + return(0); +} Modified: ipcop/trunk/src/rc.d/rc.sysinit =================================================================== --- ipcop/trunk/src/rc.d/rc.sysinit 2015-02-09 16:35:24 UTC (rev 7883) +++ ipcop/trunk/src/rc.d/rc.sysinit 2015-02-09 16:54:04 UTC (rev 7884) @@ -418,7 +418,7 @@ /usr/local/bin/restartsquid test_ok echo -ne "Starting OpenVPN (if enabled) ... " -/usr/local/bin/openvpnctrl --start +/usr/local/bin/restartopenvpn --start test_ok echo -ne "Setting post-init kernel settings ... " Modified: ipcop/trunk/src/scripts/scheduler.pl =================================================================== --- ipcop/trunk/src/scripts/scheduler.pl 2015-02-09 16:35:24 UTC (rev 7883) +++ ipcop/trunk/src/scripts/scheduler.pl 2015-02-09 16:54:04 UTC (rev 7884) @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License # along with IPCop. If not, see <http://www.gnu.org/licenses/>. # -# (c) 2009-2014, the IPCop team +# (c) 2009-2015, the IPCop team # # $Id$ # @@ -192,7 +192,7 @@ my $parameter = shift; &General::log("Scheduler OpenVPN ${parameter}"); - system("/usr/local/bin/openvpnctrl --${parameter}"); + system("/usr/local/bin/restartopenvpn --${parameter}"); } sub fcron Modified: ipcop/trunk/updates/2.2.0/ROOTFILES.i486-2.2.0 =================================================================== --- ipcop/trunk/updates/2.2.0/ROOTFILES.i486-2.2.0 2015-02-09 16:35:24 UTC (rev 7883) +++ ipcop/trunk/updates/2.2.0/ROOTFILES.i486-2.2.0 2015-02-09 16:54:04 UTC (rev 7884) @@ -5,6 +5,7 @@ /home/httpd/cgi-bin/logsystem.cgi /home/httpd/cgi-bin/openvpn.cgi /home/httpd/cgi-bin/updates.cgi +/home/httpd/cgi-bin/vpnca.cgi /usr/lib/ipcop/vpn-functions.pl /usr/local/bin/accountingctrl /usr/local/bin/conntrack_helper @@ -19,16 +20,17 @@ /usr/local/bin/ipsecctrl /usr/local/bin/iptableswrapper /usr/local/bin/logwatch -/usr/local/bin/openvpnctrl /usr/local/bin/rebuildhosts /usr/local/bin/rebuildlangtexts /usr/local/bin/red /usr/local/bin/restartdhcp /usr/local/bin/restartntpd +/usr/local/bin/restartopenvpn /usr/local/bin/restartshaping /usr/local/bin/restartsquid /usr/local/bin/restartssh /usr/local/bin/restartsyslogd +/usr/local/bin/scheduler.pl /usr/local/bin/setaliases /usr/local/bin/setdate /usr/local/bin/setfwrules Modified: ipcop/trunk/updates/2.2.0/setup =================================================================== --- ipcop/trunk/updates/2.2.0/setup 2015-02-09 16:35:24 UTC (rev 7883) +++ ipcop/trunk/updates/2.2.0/setup 2015-02-09 16:54:04 UTC (rev 7884) @@ -77,6 +77,9 @@ # Adjust the changed config files /usr/local/bin/upgrade.sh +# Remove renamed program +/bin/rm -f /usr/local/bin/openvpnctrl + # Remove old libraries (version specific) /bin/rm -f /usr/lib/libglib-2.0.so.0.4000.0 /bin/rm -f /usr/lib/libgmodule-2.0.so.0.4000.0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ Ipcop-svn mailing list Ipcop-svn@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ipcop-svn