Revision: 6433
http://ipcop.svn.sourceforge.net/ipcop/?rev=6433&view=rev
Author: owes
Date: 2012-02-29 07:21:24 +0000 (Wed, 29 Feb 2012)
Log Message:
-----------
Instead of waiting x seconds in CGI, better to wait in SUID helper.
Modified Paths:
--------------
ipcop/trunk/html/cgi-bin/proxy.cgi
ipcop/trunk/src/misc-progs/restartsquid.c
ipcop/trunk/updates/2.1.0/ROOTFILES.i486-2.1.0
Modified: ipcop/trunk/html/cgi-bin/proxy.cgi
===================================================================
--- ipcop/trunk/html/cgi-bin/proxy.cgi 2012-02-29 07:02:37 UTC (rev 6432)
+++ ipcop/trunk/html/cgi-bin/proxy.cgi 2012-02-29 07:21:24 UTC (rev 6433)
@@ -704,17 +704,12 @@
system('/usr/local/bin/restartsquid --config');
- system('/usr/local/bin/restartsquid');
- if (($proxysettings{'ENABLED_GREEN_1'} eq 'on') ||
($proxysettings{'ENABLED_BLUE_1'} eq 'on') || ($proxysettings{'ENABLED_OVPN'}
eq 'on')) {
- # wait a bit so proxy can start and we can display proper
running state
- sleep(5);
- }
+ system('/usr/local/bin/restartsquid --waitpid');
}
}
- if ($proxysettings{'ACTION'} eq $Lang::tr{'clear cache'})
- {
- system('/usr/local/bin/restartsquid','-f');
+ if ($proxysettings{'ACTION'} eq $Lang::tr{'clear cache'}) {
+ system('/usr/local/bin/restartsquid --flush --waitpid');
}
} # end of ACTION
Modified: ipcop/trunk/src/misc-progs/restartsquid.c
===================================================================
--- ipcop/trunk/src/misc-progs/restartsquid.c 2012-02-29 07:02:37 UTC (rev
6432)
+++ ipcop/trunk/src/misc-progs/restartsquid.c 2012-02-29 07:21:24 UTC (rev
6433)
@@ -33,6 +33,7 @@
#include <getopt.h>
#include <pwd.h>
#include <stdio.h>
+#include <stdio_ext.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@@ -50,6 +51,7 @@
printf(" -r, --repair repair proxy cache\n");
printf(" -t, --test test first, do not start if not
running\n");
// printf(" --config re-generate squid.conf from proxy
settings\n");
+ printf(" -w, --waitpid wait for squid started\n");
printf(" -v, --verbose be verbose\n");
printf(" --help display this help and exit\n");
exit(exit_code);
@@ -207,12 +209,14 @@
int flag_test = 0;
int flag_flush = 0;
int flag_repair = 0;
+ int flag_waitpid = 0;
int enabled_green = 0;
int transparent_green = 0;
int enabled_blue = 0;
int transparent_blue = 0;
int enabled_ovpn = 0;
int transparent_ovpn = 0;
+ int enabled = 0;
struct stat st;
NODEKV *squid_kv = NULL;
char buffer[STRING_SIZE];
@@ -226,6 +230,7 @@
{ "repair", no_argument, 0, 'r' },
{ "test", no_argument, 0, 't' },
{ "config", no_argument, 0, 'c' },
+ { "waitpid", no_argument, 0, 'w' },
{ "verbose", no_argument, 0, 'v' },
{ "help", no_argument, 0, 'h' },
{ 0, 0, 0, 0}
@@ -236,7 +241,7 @@
if (!(initsetuid()))
exit(1);
- while ((c = getopt_long(argc, argv, "frtv", long_options, &option_index))
!= -1) {
+ while ((c = getopt_long(argc, argv, "frtvw", long_options, &option_index))
!= -1) {
switch (c) {
case 't': /* test first */
flag_test = 1;
@@ -250,6 +255,9 @@
case 'v': /* verbose */
flag_verbose++;
break;
+ case 'w': /* wait for PID file */
+ flag_waitpid = 1;
+ break;
case 'c':
config();
case 'h':
@@ -271,12 +279,15 @@
/* Kill running squid */
verbose_printf(1, "Flush squid iptables chain ... \n");
safe_system("/sbin/iptables -t nat -F SQUID");
- verbose_printf(1, "Shutdown squid ... \n");
+ verbose_printf(1, "Shutdown squid ");
safe_system("/usr/sbin/squid -k shutdown >/dev/null 2>/dev/null");
c = 0;
while ((c++ < 15) && (access("/var/run/squid.pid", F_OK) != -1)) {
+ verbose_printf(1, ".");
+ _flushlbf();
sleep(1);
}
+ verbose_printf(1, "\n");
if (access("/var/run/squid.pid", F_OK) != -1) {
verbose_printf(1, "Really shutdown squid ... \n");
@@ -375,6 +386,7 @@
if (enabled_green || enabled_blue || enabled_ovpn) {
+ enabled = 1;
/* rebuild firewall rules, proxy port may be different now */
verbose_printf(1, "Rebuild firewall rules ... \n");
safe_system("/usr/local/bin/setfwrules --ipcop");
@@ -510,6 +522,27 @@
}
safe_system(buffer);
}
+
+ if (enabled && flag_waitpid) {
+ c = 0;
+ while ((access("/var/run/squid.pid", F_OK) == -1) && (c < 15)) {
+ if (!c) {
+ verbose_printf(1, "Waiting for squid to start ");
+ }
+ verbose_printf(1, ".");
+ _flushlbf();
+ c++;
+ sleep(1);
+ }
+
+ if (c == 15) {
+ verbose_printf(1, " [TIMEOUT]\n");
+ }
+ else if (c) {
+ verbose_printf(1, "\n");
+ }
+ }
+
return 0;
}
Modified: ipcop/trunk/updates/2.1.0/ROOTFILES.i486-2.1.0
===================================================================
--- ipcop/trunk/updates/2.1.0/ROOTFILES.i486-2.1.0 2012-02-29 07:02:37 UTC
(rev 6432)
+++ ipcop/trunk/updates/2.1.0/ROOTFILES.i486-2.1.0 2012-02-29 07:21:24 UTC
(rev 6433)
@@ -18,6 +18,7 @@
/usr/lib/ipcop/scheduler-lib.pl
/usr/local/bin/blacklistupdate.pl
/usr/local/bin/puzzleFwRules.pl
+/usr/local/bin/restartsquid
/usr/local/bin/scheduler.pl
/usr/share/locale/af_ZA/LC_MESSAGES/ipcop.mo
/usr/share/locale/bg_BG/LC_MESSAGES/ipcop.mo
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Ipcop-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ipcop-svn