aboutsummaryrefslogtreecommitdiffstats
path: root/config/phpservice/phpservice.inc
diff options
context:
space:
mode:
Diffstat (limited to 'config/phpservice/phpservice.inc')
-rw-r--r--config/phpservice/phpservice.inc228
1 files changed, 63 insertions, 165 deletions
diff --git a/config/phpservice/phpservice.inc b/config/phpservice/phpservice.inc
index 6236d0b6..cffdb09f 100644
--- a/config/phpservice/phpservice.inc
+++ b/config/phpservice/phpservice.inc
@@ -1,14 +1,11 @@
<?php
-/* $Id$ */
-/*
-/* ========================================================================== */
-/*
- phpservice.inc
- Copyright (C) 2008 Mark J Crane
- All rights reserved.
- */
-/* ========================================================================== */
/*
+ phpservice.inc
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2008 Mark J Crane
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
@@ -30,199 +27,100 @@
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
+function phpservice_sync_package() {
+ global $config;
+
+ if ($config['installedpackages']['phpservice']['config'] != "") {
+
+ conf_mount_rw();
+ $tmp = <<<EOF
+<?php
+
+// Set time limit to indefinite execution
+set_time_limit (0);
-if (!function_exists("pkg_is_service_running")) {
- function pkg_is_service_running($servicename)
- {
- exec("/bin/ps ax | awk '{ print $5 }'", $psout);
- array_shift($psout);
- foreach($psout as $line) {
- $ps[] = trim(array_pop(explode(' ', array_pop(explode('/', $line)))));
- }
- if(is_service_running($servicename, $ps) or is_process_running($servicename) ) {
- return true;
- }
- else {
- return false;
- }
+//run this program as long as the pid file exists
+$filename = '/tmp/phpmonitor.pid';
+$fp = fopen($filename, 'w');
+fwrite($fp, "If this file is deleted then phpmonitor will stop.");
+fclose($fp);
+unset($filename);
+
+function send_to_syslog($syslogaddress, $syslogport, $syslogmsg) {
+
+ $syslogaddress = "127.0.0.1";
+ $syslogport = 514;
+
+ $fp = fsockopen("udp://".$syslogaddress, $syslogport, $errno, $errstr);
+ if (!$fp) {
+ return;
+ } else {
+ fwrite($fp, $syslogmsg);
+ fclose($fp);
}
}
-if (!function_exists("byte_convert")) {
- function byte_convert( $bytes ) {
- if ($bytes<=0)
- return '0 Byte';
+$x = 0;
+while ($x == 0) {
- $convention=1000; //[1000->10^x|1024->2^x]
- $s=array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB');
- $e=floor(log($bytes,$convention));
- return round($bytes/pow($convention,$e),2).' '.$s[$e];
- }
+// If the pid file does not exist then close the program.
+if (!file_exists('/tmp/phpmonitor.pid')) {
+ return;
}
-
-function phpservice_sync_package_php()
-{
-
- global $config;
- if($config['installedpackages']['phpservice']['config'] != "") {
-
- conf_mount_rw();
- config_unlock();
-
- $tmp = "<?php\n";
- $tmp .= "\n";
- $tmp .= "// Set time limit to indefinite execution\n";
- $tmp .= "set_time_limit (0);\n";
- $tmp .= "\n";
- $tmp .= "//run this program as long as the pid file exists\n";
- $tmp .= "\$filename = '/tmp/phpmonitor.pid';\n";
- $tmp .= "\$fp = fopen(\$filename, 'w');\n";
- $tmp .= "fwrite(\$fp, \"If this file is deleted then phpmonitor will stop.\");\n";
- $tmp .= "fclose(\$fp);\n";
- $tmp .= "unset(\$filename);\n";
- $tmp .= "\n";
- $tmp .= "//require_once(\"config.inc\");\n";
- $tmp .= "//global \$config;\n";
- $tmp .= "//\$syslogaddress = \$config['syslog']['remoteserver'];\n";
- $tmp .= "\$syslogaddress = \"127.0.0.1\";\n";
- $tmp .= "\$syslogport = 514;\n";
- $tmp .= "echo \"syslog server: \".\$syslogaddress.\"\\n\";\n";
- $tmp .= "\n";
- $tmp .= "\n";
- $tmp .= "\n";
- $tmp .= "function send_to_syslog(\$syslogaddress, \$syslogport, \$syslogmsg) {\n";
- $tmp .= "\n";
- $tmp .= " \$fp = fsockopen(\"udp://\".\$syslogaddress, \$syslogport, \$errno, \$errstr);\n";
- $tmp .= " if (!\$fp) {\n";
- $tmp .= " //echo \"ERROR: \$errno - \$errstr<br />\\n\";\n";
- $tmp .= " } else {\n";
- $tmp .= " fwrite(\$fp, \$syslogmsg);\n";
- $tmp .= " fclose(\$fp);\n";
- $tmp .= " }\n";
- $tmp .= "\n";
- $tmp .= "}\n";
- $tmp .= "\n";
- $tmp .= "\n";
- $tmp .= "//\$msg = \"1.begin loop. \".date('r').\"\\n\";\n";
- $tmp .= "//\$fp = fopen('/tmp/phpmonitor.txt', 'a');\n";
- $tmp .= "//fwrite(\$fp, \$msg.\"\\n\");\n";
- $tmp .= "//fclose(\$fp);\n";
- $tmp .= "\n";
- $tmp .= "\$x = 0;\n";
- $tmp .= "while(\$x == 0) {\n";
- $tmp .= "\n";
- $tmp .= "\n";
- $tmp .= " if(!file_exists('/tmp/phpmonitor.pid')) {\n";
- $tmp .= " //if the file does not exist then close the program.\n";
- $tmp .= " echo \"program closing\\n\";\n";
- $tmp .= " return;\n";
- $tmp .= " }\n";
- $tmp .= "\n";
- $tmp .= "\n";
- $tmp .= "\n";
-
- foreach($config['installedpackages']['phpservice']['config'] as $rowhelper) {
+
+EOF;
+
+ foreach ($config['installedpackages']['phpservice']['config'] as $rowhelper) {
if ($rowhelper['enabled'] != "false") {
$tmp_php = base64_decode($rowhelper['php']);
if (strlen($tmp_php) > 0) {
$tmp .= "// name: ".$rowhelper['name']." \n";
- $tmp .= "// description: ".$rowhelper['description']." \n\n";
+ $tmp .= "// description: ".$rowhelper['description']." \n\n";
$tmp .= base64_decode($rowhelper['php']);
$tmp .= "\n";
}
}
-
}
-
- $tmp .= "\n";
- $tmp .= "\n";
- $tmp .= " //usleep(100000); //micro seconds //2 seconds 2000000\n";
- $tmp .= " sleep(1); //in seconds\n";
- $tmp .= " //if (\$x > 60){ exit; } //exit after 60 seconds for testing\n";
- $tmp .= "} //emd while\n";
- $tmp .= "\n";
- $tmp .= "\n";
- $tmp .= "?>";
-
- $fout = fopen("/usr/local/pkg/phpservice.php","w");
- fwrite($fout, $tmp);
- unset($tmp);
- fclose($fout);
-
- conf_mount_ro();
- }
-}
+ $tmp .= <<< EOF
-
-function phpservice_sync_package()
-{
-
- global $config;
- phpservice_sync_package_php();
+sleep(1);
}
-
+?>
-function phpservice_install_command()
-{
+EOF;
- global $config;
- conf_mount_rw();
- config_lock();
+ $fout = fopen("/usr/local/pkg/phpservice.php", "w");
+ fwrite($fout, $tmp);
+ unset($tmp);
+ fclose($fout);
- if (!is_dir('/usr/local/www/packages/')) {
- exec("mkdir /usr/local/www/packages/");
- }
-
- if (!is_dir('/usr/local/www/packages/phpservice/')) {
- exec("mkdir /usr/local/www/packages/phpservice/");
+ restart_service("phpservice");
+ conf_mount_ro();
+ } else {
+ stop_service("phpservice");
}
+}
-
- //rename PHP files from .tmp to .php
- exec("cp /tmp/phpservice_php.tmp /usr/local/www/packages/phpservice/phpservice_php.php");
- unlink_if_exists("/tmp/phpservice_php.tmp");
-
- exec("cp /tmp/phpservice_php_edit.tmp /usr/local/www/packages/phpservice/phpservice_php_edit.php");
- unlink_if_exists("/tmp/phpservice_php_edit.tmp");
-
- //write_config();
-
+function phpservice_install_command() {
+ conf_mount_rw();
write_rcfile(array(
"file" => "phpservice.sh",
"start" => "/usr/local/bin/php /usr/local/pkg/phpservice.php >> /var/log/phpservice.log &",
- "stop" => "rm /tmp/phpmonitor.pid"
+ "stop" => "/bin/rm -f /tmp/phpmonitor.pid; sleep 3"
)
);
-
phpservice_sync_package();
- //$handle = popen("/usr/local/etc/rc.d/phpservice.sh start", "r");
- //pclose($handle);
-
- //if (pkg_is_service_running('phpservice')) {
- //documentation purposes
- //}
-
conf_mount_ro();
- config_unlock();
-
}
-function phpservice_deinstall_command()
-{
-
+function phpservice_deinstall_command() {
conf_mount_rw();
- config_lock();
- $handle = popen("/usr/local/etc/rc.d/phpservice.sh stop", "r");
- unlink_if_exists("/usr/local/pkg/phpservice.xml");
- unlink_if_exists("/usr/local/pkg/phpservice.inc");
- unlink_if_exists("/usr/local/www/phpservice.inc");
+ stop_service("phpservice");
unlink_if_exists("/usr/local/etc/rc.d/phpservice.sh");
conf_mount_ro();
- config_unlock();
-
}
?>