array('pkg_edit','Antivirus'), 'pics' => array('pkg','Pics'), 'phrase' => array('pkg','Phrase Lists'), 'site' => array('pkg','Site Lists'), 'url' => array('pkg','Url Lists'), 'file' => array('pkg','Extension List'), 'content' => array('pkg','Content Lists'), 'header' => array('pkg','Header'), 'search' => array('pkg','Search Engine')); ?> /*
inicio";
# detect boot process
if (is_array($_POST)) {
if (preg_match("/\w+/", $_POST['__csrf_magic'])) {
unset($boot_process);
} else {
$boot_process = "on";
}
}
if (is_process_running('e2guardian') && isset($boot_process) && $via_rpc == "no") {
log_error("[E2guardian] - Detected boot process pr:" . is_process_running('e2guardian') . " bp:" . isset($boot_process) . " rpc:" . $via_rpc);
return;
} else {
log_error("[E2guardian] - Save settings package call pr:" . is_process_running('e2guardian') . " bp:" . isset($boot_process) . " rpc:" . $via_rpc);
}
/*
// Moved to before form call
if (isset($_POST["apply"])) {
e2guardian_start($via_rpc, $install_process);
clear_subsystem_dirty('e2guardian');
return;
}
*/
#assign xml arrays
if (!is_array($config['installedpackages']['e2guardian'])) {
$config['installedpackages']['e2guardian']['config'][0] = array(
'interface' => 'lo0',
'daemon_options' => 'softrestart');
}
$e2guardian = $config['installedpackages']['e2guardian']['config'][0];
if (!is_array($config['installedpackages']['e2guardianconfig'])) {
$config['installedpackages']['e2guardianconfig']['config'][0] = array(
'auth_plugin' => '',
'scan_options' => 'scancleancache,createlistcachefiles,deletedownloadedtempfiles',
'weightedphrasemode' => '2',
'preservecase' => '0',
'phrasefiltermode' => '2',
'cron' => 'day');
}
$e2guardian_config= $config['installedpackages']['e2guardianconfig']['config'][0];
if (!is_array($config['installedpackages']['e2guardianlog'])) {
$config['installedpackages']['e2guardianlog']['config'][0] = array(
'report_level' => '3',
'report_language' => 'ukenglish',
'report_options' => 'showweightedfound,usecustombannedimage,nonstandarddelimiter',
'logging_options' => 'logconnectionhandlingerrors',
'loglevel' => '3',
'logexceptionhits' => '2',
'logfileformat' => '1');
}
$e2guardian_log = $config['installedpackages']['e2guardianlog']['config'][0];
if (is_array($config['installedpackages']['e2guardianlimits'])) {
$e2guardian_limits = $config['installedpackages']['e2guardianlimits']['config'][0];
}
if (is_array($config['installedpackages']['e2guardianusers'])) {
$e2guardian_users = $config['installedpackages']['e2guardianusers']['config'][0];
}
if (is_array($config['installedpackages']['e2guardianblacklist']['config'])) {
$e2guardian_blacklist = $config['installedpackages']['e2guardianblacklist']['config'][0];
}
#daemon options
$e2guardian_enabled = $e2guardian['enable_dg'];
$filterport = ($e2guardian['filterports'] ? $e2guardian['filterports'] : "8080");
$softrestart = (preg_match('/softrestart/', $e2guardian['daemon_options']) ? "on" : "off");
$nodaemon = (preg_match('/nodaemon/', $e2guardian['daemon_options']) ? "yes" : "off");
if (preg_match("/(\d+)\/(\d+)/", $e2guardian['children'], $matches)) {
$minchildren = $matches[1];
$maxchildren = $matches[2];
} else {
$minchildren = 8;
$maxchildren = 120;
}
if (preg_match("/(\d+)\/(\d+)/", $e2guardian['sparechildren'], $matches)) {
$minsparechildren = $matches[1];
$maxsparechildren = $matches[2];
} else {
$minsparechildren = 8;
$maxsparechildren = 64;
}
$maxagechildren = ($e2guardian['maxagechildren'] ? $e2guardian['maxagechildren'] : "500");
$maxips = ($e2guardian['maxips'] ? $e2guardian['maxips'] : "0");
$preforkchildren = ($e2guardian['preforkchildren']? $e2guardian['preforkchildren'] : "10");
$proxyip = ($e2guardian['proxyip'] ? $e2guardian['proxyip'] : "127.0.0.1");
$proxyport = ($e2guardian['proxyport']?$e2guardian['proxyport'] : "3128");
$proxytimeout = ($e2guardian['proxytimeout'] ? $e2guardian['proxytimeout'] : "30");
#general options
$urlcachenumber = ($e2guardian_config['urlcachenumber'] ? $e2guardian_config['urlcachenumber'] : "1000");
$urlcacheage = ($e2guardian_config['urlcacheage'] ? $e2guardian_config['urlcacheage'] : "900");
$scancleancache = (preg_match('/scancleancache/', $e2guardian_config['scan_options']) ? "on" : "off");
$hexdecodecontent = (preg_match('/hexdecodecontent/', $e2guardian_config['scan_options']) ? "on" : "off");
$forcequicksearch = (preg_match('/forcequicksearch/', $e2guardian_config['scan_options']) ? "on" : "off");
$reverseaddresslookups = (preg_match('/reverseaddresslookups/', $e2guardian_config['scan_options']) ? "on" : "off");
$reverseclientiplookups = (preg_match('/reverseclientiplookups/', $e2guardian_config['scan_options']) ? "on" : "off");
$logclienthostnames = (preg_match('/logclienthostnames/', $e2guardian_config['scan_options']) ? "on" : "off");
$createlistcachefiles = (preg_match('/createlistcachefiles/', $e2guardian_config['scan_options']) ? "on" : "off");
$prefercachedlists = (preg_match('/prefercachedlists/', $e2guardian_config['scan_options']) ? "on" : "off");
$deletedownloadedtempfiles = (preg_match('/deletedownloadedtempfiles/', $e2guardian_config['scan_options']) ? "on" : "off");
$weightedphrasemode = ($e2guardian_config['weightedphrasemode'] ? $e2guardian_config['weightedphrasemode'] : "2");
$phrasefiltermode = ($e2guardian_config['phrasefiltermode'] ? $e2guardian_config['phrasefiltermode'] : "2");
$preservecase = ($e2guardian_config['preservecase'] ? $e2guardian_config['preservecase'] : "0");
$clamdscan = (preg_match('/clamdscan/', $e2guardian_config['content_scanners']) ? "on" : "off");
$icapscan = (preg_match('/icapscan/', $e2guardian_config['content_scanners']) ? "on" : "off");
$contentscannertimeout = ($e2guardian_config['contentscannertimeout'] ? $e2guardian_config['contentscannertimeout'] : "60");
$contentscanexceptions = ($e2guardian_config['contentscanexceptions'] ? "on" : "off");
$recheckreplacedurls = (preg_match('/recheckreplacedurls/', $e2guardian_config['misc_options']) ? "on" : "off");
$forwardedfor = (preg_match('/forwardedfor/', $e2guardian_config['misc_options']) ? "on" : "off");
$recheckreplacedurls = (preg_match('/icapscan/', $e2guardian_config['misc_options']) ? "on" : "off");
$usexforwardedfor = (preg_match('/usexforwardedfor/', $e2guardian_config['misc_options']) ? "on" : "off");
$authplugin = (preg_match('/usr/', $e2guardian_config['auth_plugin']) ? "authplugin = '" . $e2guardian_config['auth_plugin'] . "'" : "");
if ($e2guardian_config['auth_plugin'] != "") {
$auth_plugins = explode(",", $e2guardian_config['auth_plugin']);
$authplugin = "";
foreach ($auth_plugins as $auth_selected) {
if ($auth_selected != "none") {
$authplugin .= "authplugin = '" . preg_replace("@/usr/local@", E2GUARDIAN_DIR, $auth_selected) . "'\n";
}
}
}
$xforwardedforfilterip = "";
if ($e2guardian_config['xforwardedforfilterip'] != "") {
$xforwardip_list= preg_replace("/\s+/",",",base64_decode($e2guardian_config['xforwardedforfilterip']));
if (preg_match("/\w+/",$xforwardip_list)) {
$xforwardip_array= explode(",",$xforwardip_list);
foreach ($xforwardip_array as $xforwardip) {
$xforwardedforfilterip .= "xforwardedforfilterip={$xforwardip}\n";
}
}
}
if ($e2guardian_config['contentscannericapurl'] != "") {
include("/usr/local/pkg/icapscan.conf.template");
file_put_contents(E2GUARDIAN_DIR . "/etc/e2guardian/contentscanners/icapscan.conf", $icap_conf_file , LOCK_EX);
}
#limits
// moved to groups
//$maxuploadsize = ($e2guardian_limits['maxuploadsize'] ? $e2guardian_limits['maxuploadsize'] : "-1");
$maxcontentfiltersize = ($e2guardian_limits['maxcontentfiltersize'] ? $e2guardian_limits['maxcontentfiltersize'] : "256");
$maxcontentramcachescansize = ($e2guardian_limits['maxcontentramcachescansize'] ? $e2guardian_limits['maxcontentramcachescansize'] : "1000");
$maxcontentfilecachescansize = ($e2guardian_limits['maxcontentfilecachescansize'] ? $e2guardian_limits['maxcontentfilecachescansize'] : "2000");
$initialtrickledelay = ($e2guardian_limits['initialtrickledelay'] ? $e2guardian_limits['initialtrickledelay'] : "20");
$trickledelay = ($e2guardian_limits['trickledelay'] ? $e2guardian_limits['trickledelay'] : "20");
#report and log
$reportlevel = ($e2guardian_log['report_level'] ? $e2guardian_log['report_level'] : "3");
if ($reportlevel == 1 || $reportlevel == 2) {
if (preg_match("@(\w+://[a-zA-Z0-9.:/\-]+)@", $e2guardian_log['reportingcgi'], $cgimatches)) {
$accessdeniedaddress = "accessdeniedaddress = '" . $cgimatches[1] . "'";
} else {
log_error("e2guardian - " . $e2guardian_log['reportingcgi'] . " is not a valid access denied cgi url");
file_notice("e2guardian",$error,"E2guardian - " . $e2guardian_log['reportingcgi'] . gettext(" is not a valid access denied cgi url"), "");
}
}
$accessdenied = ($e2guardian_log['reportingcgi'] ? $e2guardian_log['report_level'] : "3");
$reportlanguage = ($e2guardian_log['report_language'] ? $e2guardian_log['report_language'] : "ukenglish");
$showweightedfound = (preg_match('/showweightedfound/', $e2guardian_log['report_options']) ? "on" : "off");
$usecustombannedflash = (preg_match('/usecustombannedflash/', $e2guardian_log['report_options']) ? "on" : "off");
if (file_exists(E2GUARDIAN_DIR . '/share/e2guardian/blockedflash.swf')) {
$custombannedflashfile = "custombannedflashfile = '" . E2GUARDIAN_DIR . "/share/e2guardian/blockedflash.swf'";
}
$usecustombannedimage = (preg_match('/usecustombannedimage/', $e2guardian_log['report_options'])? "on" : "off");
$nonstandarddelimiter = (preg_match('/nonstandarddelimiter/', $e2guardian_log['report_options'])? "on" : "off");
$logchildprocesshandling = (preg_match('/logchildprocesshandling/', $e2guardian_log['logging_options']) ? "on" : "off");
$logconnectionhandlingerrors = (preg_match('/logconnectionhandlingerrors/', $e2guardian_log['logging_options']) ? "on" : "off");
$nologger = (preg_match('/nologger/', $e2guardian_log['logging_options']) ? "on" : "off");
$logadblocks = (preg_match('/logadblocks/', $e2guardian_log['logging_options']) ? "on" : "off");
$anonymizelogs = (preg_match('/anonymizelogs/', $e2guardian_log['logging_options']) ? "on" : "off");
$logsslerrors = (preg_match('/logsslerrors/', $e2guardian_log['logging_options']) ? "on" : "off");
$loglevel = ($e2guardian_log['loglevel'] ? $e2guardian_log['loglevel'] : "2");
$logexceptionhits = ($e2guardian_log['logexceptionhits'] ? $e2guardian_log['logexceptionhits'] : "2");
$logfileformat = ($e2guardian_log['logfileformat'] ? $e2guardian_log['logfileformat'] : "1");
#check files
#create sample files
$files = array(
"/e2guardianf1.conf",
"/lists/filtergroupslist",
"/lists/bannedphraselist",
"/lists/exceptionphraselist",
"/lists/weightedphraselist",
"/lists/exceptionsitelist",
"/lists/bannedsitelist",
"/lists/greysitelist",
"/lists/logsitelist",
"/lists/bannedregexpurllist",
"/lists/bannedurllist",
"/lists/exceptionregexpurllist",
"/lists/exceptionurllist",
"/lists/greyurllist",
"/lists/logregexpurllist",
"/lists/logurllist",
"/lists/urlregexplist",
"/lists/exceptionfilesitelist",
"/lists/exceptionfileurllist",
"/lists/searchengineregexplist",
"/lists/bannedsearchtermlist",
"/lists/weightedsearchtermlist",
"/lists/exceptionsearchtermlist",
"/lists/contentregexplist",
"/lists/exceptionextensionlist",
"/lists/bannedextensionlist",
"/lists/exceptionmimetypelist",
"/lists/bannedmimetypelist",
"/lists/headerregexplist",
"/lists/bannedregexpheaderlist",
"/lists/authplugins/ipgroups",
"/lists/contentscanners/exceptionvirusextensionlist",
"/lists/contentscanners/exceptionvirusmimetypelist",
"/lists/contentscanners/exceptionvirussitelist",
"/lists/contentscanners/exceptionvirusurllist",
"/lists/exceptioniplist",
"/lists/pics");
$e2guardian_dir = E2GUARDIAN_DIR . "/etc/e2guardian";
foreach ($files as $file) {
if (!file_exists($e2guardian_dir . $file.'.sample')) {
$new_file = "";
$install_file = file($e2guardian_dir . $file);
foreach ($install_file as $line) {
if (!preg_match("/Include/", $line)) {
$new_file .= $line;
}
}
file_put_contents($e2guardian_dir . $file.'.sample', $new_file, LOCK_EX);
}
}
$load_samples = 0;
#ssl men-in-the-middle feature
$dirs = array("/var/log/e2guardian/stats", "/etc/ssl/demoCA", "/etc/ssl/demoCA/private", "/etc/ssl/demoCA/crl", "/etc/ssl/demoCA/certs", $e2guardian_dir . "/ssl/generatedcerts", $e2guardian_dir . "/ssl/generatedlinks");
foreach ($dirs as $dir) {
if (!is_dir($dir)) {
mkdir ($dir, 0755, true);
}
}
$ca_cert = lookup_ca($e2guardian_config["dca"]);
if ($ca_cert != false) {
if (base64_decode($ca_cert['prv'])) {
file_put_contents("/etc/ssl/demoCA/private/cakey.pem", base64_decode($ca_cert['prv']));
$ca_pk = "caprivatekeypath = '/etc/ssl/demoCA/private/cakey.pem'";
}
if (base64_decode($ca_cert['crt'])) {
$cert_hash = array();
file_put_contents("/etc/ssl/demoCA/cacert.pem", base64_decode($ca_cert['crt']));
exec("/usr/bin/openssl x509 -hash -noout -in /etc/ssl/demoCA/cacert.pem", $cert_hash);
file_put_contents("/usr/local/share/certs/" . $cert_hash[0] . ".0", base64_decode($ca_cert['crt']));
$ca_pem = "cacertificatepath = '/etc/ssl/demoCA/cacert.pem'";
$generatedcertpath= "generatedcertpath = '" . $e2guardian_dir . "/ssl/generatedcerts'";
}
$certprivatekeypath='/etc/ssl/demoCA/private/serverkey.pem';
if (! file_exists($certprivatekeypath)) {
system("openssl genrsa 4096 > $certprivatekeypath");
}
$cert_key = "certprivatekeypath = '{$certprivatekeypath}' ";
/*
$svr_cert = lookup_cert($e2guardian_config["dcert"]);
if ($svr_cert != false) {
if (base64_decode($svr_cert['prv'])) {
file_put_contents("/etc/ssl/demoCA/private/serverkey.pem", base64_decode($svr_cert['prv']) . base64_decode($svr_cert['crt']));
$cert_key = "certprivatekeypath = '/etc/ssl/demoCA/private/serverkey.pem' ";
}
}
*/
}
//contentscanners preg_replace patterns
$match[0] = "/(conf)/";
$match[1] = "/(\/usr.local)/";
$match[2] = "/,/";
$replace[0] = "$1'";
$replace[1] = "contentscanner = '" . E2GUARDIAN_DIR;
$replace[2] = "\n";
$contentscanners = preg_replace($match, $replace, $e2guardian_config['content_scanners']);
//includes preg_replace patterns
$match[0] = "/(.)$/";
$match[1] = "/\/usr.local/";
$match[2] = "/,/";
$replace[0] = "$1>\n";
$replace[1] = "\n.Include<" . E2GUARDIAN_DIR;
$replace[2] = ">";
//phrase ACL
//create a default setup if not exists
if (!is_array($config['installedpackages']['e2guardianphraseacl']['config'])) {
$banned_file = file(E2GUARDIAN_DIR . "/etc/e2guardian/lists/bannedphraselist");
foreach ($banned_file as $file_line) {
if (preg_match ("/^.Include<(\S+)>/", $file_line, $matches)) {
$banned_includes .= $matches[1] . ",";
}
}
$weighted_file = file(E2GUARDIAN_DIR . "/etc/e2guardian/lists/weightedphraselist");
foreach ($weighted_file as $file_line) {
if (preg_match ("/^.Include<(\S+)>/", $file_line, $matches)) {
$weighted_includes .= $matches[1] . ",";
}
}
$config['installedpackages']['e2guardianphraseacl']['config'][0] = array(
'name' => 'Default',
'description' => 'Default Phrase access list setup',
'banned_enabled' => "on",
'weighted_enabled' => "on",
'exception_enabled' => "on",
'banned_includes' => substr($banned_includes, 0, -1),
'weighted_includes' => substr($weighted_includes, 0, -1));
}
//loop on array
$count = 0;
if (is_array($config['installedpackages']['e2guardianphraseacl']['config'])) {
foreach ($config['installedpackages']['e2guardianphraseacl']['config'] as $e2guardian_phrase) {
//bannedphraselist
if ($e2guardian_phrase['banned_phraselist'] == "" && file_exists($e2guardian_dir . '/lists/bannedphraselist.sample')) {
$config['installedpackages']['e2guardianphraseacl']['config'][$count]['banned_phraselist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/bannedphraselist.sample'));
$load_samples++;
}
$includes = preg_replace($match, $replace, $e2guardian_phrase['banned_includes']);
file_put_contents($e2guardian_dir . "/lists/bannedphraselist." . $e2guardian_phrase['name'], ($e2guardian_phrase['banned_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianphraseacl']['config'][$count]['banned_phraselist']) . $includes : ""), LOCK_EX);
//weightedphraselist
if ($e2guardian_phrase['weighted_phraselist'] == "" && file_exists($e2guardian_dir . '/lists/weightedphraselist.sample')) {
$config['installedpackages']['e2guardianphraseacl']['config'][$count]['weighted_phraselist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/weightedphraselist.sample'));
$load_samples++;
}
$includes = preg_replace($match, $replace, $e2guardian_phrase['weighted_includes']);
file_put_contents($e2guardian_dir . "/lists/weightedphraselist." . $e2guardian_phrase['name'], ($e2guardian_phrase['weighted_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianphraseacl']['config'][$count]['weighted_phraselist']) . $includes : ""), LOCK_EX);
//exceptionphraselist
if ($e2guardian_phrase['exception_phraselist'] == "" && file_exists($e2guardian_dir . '/lists/exceptionphraselist.sample')) {
$config['installedpackages']['e2guardianphraseacl']['config'][$count]['exception_phraselist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/exceptionphraselist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/exceptionphraselist." . $e2guardian_phrase['name'], ($e2guardian_phrase['exception_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianphraseacl']['config'][$count]['exception_phraselist']) : ""), LOCK_EX);
$count++;
}
}
//site ACL
//create a default setup if not exists
if (!is_array($config['installedpackages']['e2guardiansiteacl']['config'])) {
$config['installedpackages']['e2guardiansiteacl']['config'][0] = array(
'name' => 'Default',
'description' => 'Default Site access list setup',
'exceptionsite_enabled' => "on",
'bannedsite_enabled' => "on",
'greysite_enabled' => "on",
'urlsite_enabled' => "on");
}
//loop on array
$count = 0;
foreach ($config['installedpackages']['e2guardiansiteacl']['config'] as $e2guardian_site) {
//exceptionsitelist
if ($e2guardian_site['exception_sitelist'] == "" && file_exists($e2guardian_dir . '/lists/exceptionsitelist.sample')) {
$config['installedpackages']['e2guardiansiteacl']['config'][$count]['exception_sitelist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/exceptionsitelist.sample'));
$load_samples++;
}
$includes = preg_replace($match, $replace, $e2guardian_site['exception_includes']);
file_put_contents($e2guardian_dir . "/lists/exceptionsitelist." . $e2guardian_site['name'], ($e2guardian_site['exceptionsite_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardiansiteacl']['config'][$count]['exception_sitelist']) . $includes : ""), LOCK_EX);
//exceptionfilesitelist
if ($e2guardian_site['exceptionfile_sitelist'] == "" && file_exists($e2guardian_dir . '/lists/exceptionfilesitelist.sample')) {
$config['installedpackages']['e2guardiansiteacl']['config'][$count]['exceptionfile_sitelist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/exceptionfilesitelist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/exceptionfilesitelist." . $e2guardian_site['name'], ($e2guardian_site['exceptionsite_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardiansiteacl']['config'][$count]['exceptionfile_sitelist']) : ""), LOCK_EX);
//bannedsitelist
if ($e2guardian_site['banned_sitelist'] == "" && file_exists($e2guardian_dir . '/lists/bannedsitelist.sample')) {
$config['installedpackages']['e2guardiansiteacl']['config'][$count]['banned_sitelist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/bannedsitelist.sample'));
$load_samples++;
}
$includes = preg_replace($match, $replace, $e2guardian_site['banned_includes']);
file_put_contents($e2guardian_dir . "/lists/bannedsitelist." . $e2guardian_site['name'], ($e2guardian_site['bannedsite_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardiansiteacl']['config'][$count]['banned_sitelist']) . $includes : ""), LOCK_EX);
#greysitelist
if ($e2guardian_site['grey_sitelist'] == "" && file_exists($e2guardian_dir . '/lists/greysitelist.sample')) {
$config['installedpackages']['e2guardiansiteacl']['config'][$count]['grey_sitelist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/greysitelist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/greysitelist." . $e2guardian_site['name'], ($e2guardian_site['greysite_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardiansiteacl']['config'][$count]['grey_sitelist']) : ""), LOCK_EX);
//sslregex_sitelist
if ($e2guardian_site['sslregex_sitelist'] == "" && file_exists($e2guardian_dir . '/lists/sslsiteregexplist.sample')) {
$config['installedpackages']['e2guardiansiteacl']['config'][$count]['sslregex_sitelist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/sslsiteregexplist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/sslsiteregexplist." . $e2guardian_site['name'], ($e2guardian_site['sslregex_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardiansiteacl']['config'][$count]['sslregex_sitelist']) : ""), LOCK_EX);
//logsitelist
if ($e2guardian_site['log_sitelist'] == "" && file_exists($e2guardian_dir . '/lists/logsitelist.sample')) {
$config['installedpackages']['e2guardiansiteacl']['config'][$count]['log_sitelist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/logsitelist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/logsitelist." . $e2guardian_site['name'], ($e2guardian_site['urlsite_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardiansiteacl']['config'][$count]['log_sitelist']) : ""), LOCK_EX);
$count++;
}
//URL ACL
//create a default setup if not exists
if (!is_array($config['installedpackages']['e2guardianurlacl']['config'])) {
$config['installedpackages']['e2guardianurlacl']['config'][0] = array(
'name' => 'Default',
'description' => 'Default Url access list setup',
'bannedurl_enabled' => "on",
'exceptionurl_enabled' => "on",
'contenturl_enabled' => "on",
'greyurl_enabled' => "on");
}
//loop on array
$count = 0;
foreach ($config['installedpackages']['e2guardianurlacl']['config'] as $e2guardian_url) {
//bannedurllist
if ($e2guardian_url['banned_urllist'] == "" && file_exists($e2guardian_dir . '/lists/bannedurllist.sample')) {
$config['installedpackages']['e2guardianurlacl']['config'][$count]['banned_urllist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/bannedurllist.sample'));
$load_samples++;
}
$includes = preg_replace($match, $replace, $e2guardian_url['banned_includes']);
file_put_contents($e2guardian_dir . "/lists/bannedurllist." . $e2guardian_url['name'], ($e2guardian_url['bannedurl_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianurlacl']['config'][$count]['banned_urllist']) . $includes : ""), LOCK_EX);
//bannedregexpurllist
if ($e2guardian_url['bannedregexp_urllist'] == "" && file_exists($e2guardian_dir . '/lists/bannedregexpurllist.sample')) {
$config['installedpackages']['e2guardianurlacl']['config'][$count]['bannedregexp_urllist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/bannedregexpurllist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/bannedregexpurllist." . $e2guardian_url['name'], ($e2guardian_url['bannedurl_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianurlacl']['config'][$count]['bannedregexp_urllist']) : ""), LOCK_EX);
//greyurllist
if ($e2guardian_url['grey_urllist'] == "" && file_exists($e2guardian_dir . '/lists/greyurllist.sample')) {
$config['installedpackages']['e2guardianurlacl']['config'][$count]['grey_urllist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/greyurllist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/greyurllist." . $e2guardian_url['name'], ($e2guardian_url['greyurl_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianurlacl']['config'][$count]['grey_urllist']) : ""), LOCK_EX);
//exceptionfileurllist
if ($e2guardian_url['exceptionfile_urllist'] == "" && file_exists($e2guardian_dir . '/lists/exceptionfileurllist.sample')) {
$config['installedpackages']['e2guardianurlacl']['config'][$count]['exceptionfile_urllist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/exceptionfileurllist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/exceptionfileurllist." . $e2guardian_url['name'], ($e2guardian_url['exceptionurl_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianurlacl']['config'][$count]['exceptionfile_urllist']) : ""), LOCK_EX);
//exceptionregexpurllist
if ($e2guardian_url['exceptionregexp_urllist'] == "" && file_exists($e2guardian_dir . '/lists/exceptionregexpurllist.sample')) {
$config['installedpackages']['e2guardianurlacl']['config'][$count]['exceptionregexp_urllist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/exceptionregexpurllist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/exceptionregexpurllist." . $e2guardian_url['name'], ($e2guardian_url['exceptionurl_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianurlacl']['config'][$count]['exceptionregexp_urllist']) : ""), LOCK_EX);
//exceptionurllist
if ($e2guardian_url['exception_urllist'] == "" && file_exists($e2guardian_dir . '/lists/exceptionurllist.sample')) {
$config['installedpackages']['e2guardianurlacl']['config'][$count]['exception_urllist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/exceptionurllist.sample'));
$load_samples++;
}
$includes = preg_replace($match, $replace, $e2guardian_url['exception_includes']);
file_put_contents($e2guardian_dir . "/lists/exceptionurllist." . $e2guardian_url['name'], ($e2guardian_url['exceptionurl_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianurlacl']['config'][$count]['exception_urllist']) . $includes : ""), LOCK_EX);
//urlregexplist
if ($e2guardian_url['modify_urllist'] == "" && file_exists($e2guardian_dir . '/lists/urlregexplist.sample')) {
$config['installedpackages']['e2guardianurlacl']['config'][$count]['modify_urllist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/urlregexplist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/urlregexplist." . $e2guardian_url['name'], ($e2guardian_url['contenturl_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianurlacl']['config'][$count]['modify_urllist']) : ""), LOCK_EX);
//logurllist
if ($e2guardian_url['log_urllist'] == "" && file_exists($e2guardian_dir . '/lists/logurllist.sample')) {
$config['installedpackages']['e2guardianurlacl']['config'][$count]['log_urllist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/logurllist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/logurllist." . $e2guardian_url['name'], ($e2guardian_url['logurl_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianurlacl']['config'][$count]['log_urllist']) : ""), LOCK_EX);
#logregexpurllist
if ($e2guardian_url['logregexp_urllist'] == "" && file_exists($e2guardian_dir . '/lists/logregexpurllist.sample')) {
$config['installedpackages']['e2guardianurlacl']['config'][$count]['logregexp_urllist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/logregexpurllist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/logregexpurllist." . $e2guardian_url['name'], ($e2guardian_url['logurl_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianurlacl']['config'][$count]['logregexp_urllist']) : ""), LOCK_EX);
$count++;
}
//Pics ACL
//create a default setup if not exists
if (!is_array($config['installedpackages']['e2guardianpicsacl']['config'])) {
$config['installedpackages']['e2guardianpicsacl']['config'][0] = array(
'name' => 'Default',
'description' => 'Default file access list setup');
}
//loop on array
$count = 0;
foreach ($config['installedpackages']['e2guardianpicsacl']['config'] as $e2guardian_pics) {
//pics
if ($e2guardian_pics['pics'] == "" && file_exists($e2guardian_dir . '/lists/pics.sample')) {
$config['installedpackages']['e2guardianpicsacl']['config'][$count]['pics'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/pics.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/pics." . $e2guardian_pics['name'], ($e2guardian_pics['pics_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianpicsacl']['config'][$count]['pics']) : ""), LOCK_EX);
$count++;
}
//Search ACL
//create a default setup if not exists
if (!is_array($config['installedpackages']['e2guardiansearchacl']['config'])) {
$config['installedpackages']['e2guardiansearchacl']['config'][0] = array(
'name' => 'Default',
'description' => 'Default search engine list setup');
}
//loop on array
$count = 0;
foreach ($config['installedpackages']['e2guardiansearchacl']['config'] as $e2guardian_search) {
//searchengineregexplist
if ($e2guardian_search['searchengineregexplist'] == "" && file_exists($e2guardian_dir . '/lists/searchengineregexplist.sample')) {
$config['installedpackages']['e2guardiansearchacl']['config'][$count]['searchengineregexplist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/searchengineregexplist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/searchengineregexplist." . $e2guardian_search['name'], ($e2guardian_search['regexp_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardiansearchacl']['config'][$count]['searchengineregexplist']) : ""), LOCK_EX);
//bannedsearchtermlist
if ($e2guardian_search['banned_searchtermlist'] == "" && file_exists($e2guardian_dir . '/lists/bannedsearchtermlist.sample')) {
$config['installedpackages']['e2guardiansearchacl']['config'][$count]['banned_searchtermlist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/bannedsearchtermlist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/bannedsearchtermlist." . $e2guardian_search['name'], ($e2guardian_search['banned_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardiansearchacl']['config'][$count]['banned_searchtermlist']) : ""), LOCK_EX);
//weightedsearchtermlist
if ($e2guardian_search['weighted_searchtermlist'] == "" && file_exists($e2guardian_dir . '/lists/weightedsearchtermlist.sample')) {
$config['installedpackages']['e2guardiansearchacl']['config'][$count]['weighted_searchtermlist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/weightedsearchtermlist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/weightedsearchtermlist." . $e2guardian_search['name'], ($e2guardian_search['weighted_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardiansearchacl']['config'][$count]['weighted_searchtermlist']) : ""), LOCK_EX);
//exceptionsearchtermlist
if ($e2guardian_search['exception_searchtermlist'] == "" && file_exists($e2guardian_dir . '/lists/exceptionsearchtermlist.sample')) {
$config['installedpackages']['e2guardiansearchacl']['config'][$count]['exception_searchtermlist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/exceptionsearchtermlist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/exceptionsearchtermlist." . $e2guardian_search['name'], ($e2guardian_search['exception_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardiansearchacl']['config'][$count]['exception_searchtermlist']) : ""), LOCK_EX);
$count++;
}
//File ACL
//create a default setup if not exists
if (!is_array($config['installedpackages']['e2guardianfileacl']['config'])) {
$config['installedpackages']['e2guardianfileacl']['config'][0] = array(
'name' => 'Default',
'description' => 'Default file access list setup',
'exception_enabled' => "on",
'banned_enabled' => "on");
}
//loop on array
$count = 0;
foreach ($config['installedpackages']['e2guardianfileacl']['config'] as $e2guardian_file) {
//exceptionextensionlist
if ($e2guardian_file['exception_extensionlist'] == "" && file_exists($e2guardian_dir . '/lists/exceptionextensionlist.sample')) {
$config['installedpackages']['e2guardianfileacl']['config'][$count]['exception_extensionlist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/exceptionextensionlist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/exceptionextensionlist." . $e2guardian_file['name'], ($e2guardian_file['exception_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianfileacl']['config'][$count]['exception_extensionlist']) : ""), LOCK_EX);
//exceptionmimetypelist
if ($e2guardian_file['exception_mimetypelist'] == "" && file_exists($e2guardian_dir . '/lists/exceptionmimetypelist.sample')) {
$config['installedpackages']['e2guardianfileacl']['config'][$count]['exception_mimetypelist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/exceptionmimetypelist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/exceptionmimetypelist." . $e2guardian_file['name'], ($e2guardian_file['exception_enabled'] ? e2_text_area_decode($config['installedpackages']['exception_mimetypelist']) : ""), LOCK_EX);
//bannedextensionlist
if ($e2guardian_file['banned_extensionlist'] == "" && file_exists($e2guardian_dir . '/lists/bannedextensionlist.sample')) {
$config['installedpackages']['e2guardianfileacl']['config'][$count]['banned_extensionlist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/bannedextensionlist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/bannedextensionlist." . $e2guardian_file['name'], ($e2guardian_file['banned_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianfileacl']['config'][$count]['banned_extensionlist']) : ""), LOCK_EX);
//bannedmimetypelist
if ($e2guardian_file['banned_mimetypelist'] == "" && file_exists($e2guardian_dir . '/lists/bannedmimetypelist.sample')) {
$config['installedpackages']['e2guardianfileacl']['config'][$count]['banned_mimetypelist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/bannedmimetypelist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/bannedmimetypelist." . $e2guardian_file['name'], ($e2guardian_file['banned_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianfileacl']['config'][$count]['banned_mimetypelist']) : ""), LOCK_EX);
$count++;
}
//header ACL
//create a default setup if not exists
if (!is_array($config['installedpackages']['e2guardianheaderacl']['config'])) {
$config['installedpackages']['e2guardianheaderacl']['config'][0] = array(
'name' => 'Default',
'description' => 'Default header access list setup');
}
//loop on array
$count = 0;
foreach ($config['installedpackages']['e2guardianheaderacl']['config'] as $e2guardian_header) {
//headerregexplist
if ($e2guardian_header['header_regexplist'] == "" && file_exists($e2guardian_dir . '/lists/headerregexplist.sample')) {
$config['installedpackages']['e2guardianheaderacl']['config'][$count]['header_regexplist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/headerregexplist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/headerregexplist." . $e2guardian_header['name'], ($e2guardian_header['regexp_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianheaderacl']['config'][$count]['header_regexplist']) : ""), LOCK_EX);
//bannedregexpheaderlist
if ($e2guardian_header['banned_regexpheaderlist'] == "" && file_exists($e2guardian_dir . '/lists/bannedregexpheaderlist.sample')) {
$config['installedpackages']['e2guardianheaderacl']['config'][$count]['banned_regexpheaderlist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/bannedregexpheaderlist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/bannedregexpheaderlist." . $e2guardian_header['name'], ($e2guardian_header['banned_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianheaderacl']['config'][$count]['banned_regexpheaderlist']) : ""), LOCK_EX);
$count++;
}
#Content ACL
#create a default setup if not exists
if (!is_array($config['installedpackages']['e2guardiancontentacl']['config'])) {
$config['installedpackages']['e2guardiancontentacl']['config'][0] = array(
'name' => 'Default',
'description' => 'Default content setup');
}
//loop on array
$count = 0;
foreach ($config['installedpackages']['e2guardiancontentacl']['config'] as $e2guardian_content) {
//content_regexplist
if ($e2guardian_content['content_regexplist'] == "" && file_exists($e2guardian_dir . '/lists/contentregexplist.sample')) {
$config['installedpackages']['e2guardiancontentacl']['config'][$count]['content_regexplist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/contentregexplist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/contentregexplist." . $e2guardian_content['name'], ($e2guardian_content['content_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardiancontentacl']['config'][$count]['content_regexplist']) : ""), LOCK_EX);
$count++;
}
//Antivirus ACL
//create a default setup if not exists
if (!is_array($config['installedpackages']['e2guardianantivirusacl']['config'])) {
$config['installedpackages']['e2guardianantivirusacl']['config'][0] = array();
}
$e2guardian_antivirus = $config['installedpackages']['e2guardianantivirusacl']['config'][0];
//exceptionvirusmimetypelist
if ($e2guardian_antivirus['mime_list'] == "" && file_exists($e2guardian_dir . '/lists/contentscanners/exceptionvirusmimetypelist.sample')) {
$config['installedpackages']['e2guardianantivirusacl']['config'][0]['mime_list'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/contentscanners/exceptionvirusmimetypelist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/contentscanners/exceptionvirusmimetypelist", ($e2guardian_antivirus['mime_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianantivirusacl']['config'][0]['mime_list']) : ""), LOCK_EX);
//exceptionvirussitelist
if ($e2guardian_antivirus['site_list'] == "" && file_exists($e2guardian_dir . '/lists/contentscanners/exceptionvirussitelist.sample')) {
$config['installedpackages']['e2guardianantivirusacl']['config'][0]['site_list'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/contentscanners/exceptionvirussitelist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/contentscanners/exceptionvirussitelist", ($e2guardian_antivirus['site_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianantivirusacl']['config'][0]['site_list']) : ""), LOCK_EX);
//exceptionvirusurllist
if ($e2guardian_antivirus['url_list'] == "" && file_exists($e2guardian_dir . '/lists/contentscanners/exceptionvirusurllist.sample')) {
$config['installedpackages']['e2guardianantivirusacl']['config'][0]['url_list'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/contentscanners/exceptionvirusurllist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/contentscanners/exceptionvirusurllist", ($e2guardian_antivirus['url_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianantivirusacl']['config'][0]['url_list']) : ""), LOCK_EX);
//exceptionvirusextensionlist
if ($e2guardian_antivirus['extension_list'] == "" && file_exists($e2guardian_dir . '/lists/contentscanners/exceptionvirusextensionlist.sample')) {
$config['installedpackages']['e2guardianantivirusacl']['config'][0]['extension_list'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/contentscanners/exceptionvirusextensionlist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/contentscanners/exceptionvirusextensionlist", ($e2guardian_antivirus['extension_enabled'] ? e2_text_area_decode($config['installedpackages']['e2guardianantivirusacl']['config'][0]['extension_list']):""), LOCK_EX);
//log report
if ($e2guardian_log['report_file'] == "" && file_exists("/usr/local/share/e2guardian/languages/" . $reportlanguage . "/template.html")) {
$report_file = file_get_contents("/usr/local/share/e2guardian/languages/" . $reportlanguage . "/template.html");
$report_file = preg_replace('/<.*(html|head)>/', '', $report_file);
$config['installedpackages']['e2guardianlog']['config'][0]['report_file'] = base64_encode($report_file);
$e2guardian_log['report_file'] = base64_encode($report_file);
$load_samples++;
}
//exception ip list
//create a default setup if not exists
if (!is_array($config['installedpackages']['e2guardianips']['config'])) {
$config['installedpackages']['e2guardianips']['config'][0] = array("exceptioniplist" => "");
}
if ($config['installedpackages']['e2guardianips']['config'][0]['exceptioniplist'] == "" && file_exists($e2guardian_dir . '/lists/exceptioniplist.sample')) {
$config['installedpackages']['e2guardianips']['config'][0]['exceptioniplist'] = base64_encode(file_get_contents($e2guardian_dir . '/lists/exceptioniplist.sample'));
$load_samples++;
}
file_put_contents($e2guardian_dir . "/lists/exceptioniplist", e2_text_area_decode($config['installedpackages']['e2guardianips']['config'][0]['exceptioniplist']), LOCK_EX);
if ($load_samples > 0) {
write_config();
}
//Filtergroups
if (!is_array($config['installedpackages']['e2guardiangroups']['config'])) {
$config['installedpackages']['e2guardiangroups']['config'][0] = array(
'name' => 'Default',
'description' => 'Default e2guardian filtergroup',
'picsacl' => "Default",
'phraseacl' => "Default",
'siteacl' => "Default",
'extensionacl' => "Default",
'headeracl' => "Default",
'contentacl' => "Default",
'searchacl' => "Default",
'urlacl' => "Default",
'group_options' => "scancleancache,infectionbypasserrorsonly",
'reportinglevel' => '3',
'group_name_source' => 'name',
'mode' => "1",
'report_level' =>"global");
}
$groups = array("scancleancache", "hexdecodecontent", "blockdownloads", "enablepics", "deepurlanalysis", "infectionbypasserrorsonly", "disablecontentscan", "sslcheckcert", "sslmitm");
//loop on array
$count = 1;
$user_xml = "";
$filtergroupslist = "";
foreach ($config['installedpackages']['e2guardiangroups']['config'] as $e2guardian_groups) {
$e2guardian_group_name = strtolower($e2guardian_groups['name']);
$dgfg[$count] = $e2guardian_group_name;
$e2guardian_groups['blockdownloads'] = ($e2guardian_groups['blockdownloads'] ? $e2guardian_groups['blockdownloads'] : "off");
$e2guardian_groups['weightedphrasemode'] = (preg_match("/\d/", $e2guardian_groups['weightedphrasemode']) ? $e2guardian_groups['weightedphrasemode'] : $e2guardian_config['weightedphrasemode']);
$e2guardian_groups['naughtynesslimit'] = ($e2guardian_groups['naughtynesslimit'] ? $e2guardian_groups['naughtynesslimit'] : "50");
$e2guardian_groups['searchtermlimit'] = ($e2guardian_groups['searchtermlimit'] ? $e2guardian_groups['searchtermlimit'] : "30");
$e2guardian_groups['categorydisplaythreshold'] = ($e2guardian_groups['categorydisplaythreshold'] ? $e2guardian_groups['categorydisplaythreshold'] : "0");
$e2guardian_groups['embeddedurlweight'] = ($e2guardian_groups['embeddedurlweight'] ? $e2guardian_groups['embeddedurlweight'] : "0");
$e2guardian_groups['bypass'] = ($e2guardian_groups['bypass'] ? $e2guardian_groups['bypass'] : "0");
$e2guardian_groups['infectionbypass'] = ($e2guardian_groups['infectionbypass'] ? $e2guardian_groups['infectionbypass'] : "0");
$e2guardian_groups['maxuploadsize'] = (is_numeric($e2guardian_groups['maxuploadsize']) ? $e2guardian_groups['maxuploadsize'] : "-1");
switch ($e2guardian_groups['reportinglevel']) {
case "1":
case "2":
$groupreportinglevel = "reportinglevel = " . $e2guardian_groups['reportinglevel'];
if (preg_match("@(\w+://[a-zA-Z0-9.:/\-]+)@", $e2guardian_groups['reportingcgi'], $cgimatches)) {
$groupaccessdeniedaddress = "accessdeniedaddress = '" . $cgimatches[1] . "'";
} else {
log_error('E2guardian - Group ' . $e2guardian_groups['name'] . ' does not have a valid access denied cgi url.');
file_notice("E2guardian - Group ",$error,"E2guardian - " . $e2guardian_groups['name'] . gettext(" does not have a valid access denied cgi url."), "");
}
break;
case "-1":
case "0":
case "3":
$groupreportinglevel = "reportinglevel = " . $e2guardian_groups['reportinglevel'];
$groupaccessdeniedaddress = "";
$htmltemplate = "htmltemplate='template.html'";
break;
default:
$groupreportinglevel = "";
$groupaccessdeniedaddress = "";
}
foreach ($groups as $group) {
$e2guardian_groups[$group] = (preg_match("/$group/", $e2guardian_groups['group_options']) ? "on" : "off");
}
//create group list files
$lists = array(
"phraseacl" => array("bannedphrase", "weightedphrase", "exceptionphrase"),
"siteacl" => array("bannedsite", "greysite", "exceptionsite", "exceptionfilesite", "logsite"),
"urlacl" => array("bannedurl", "greyurl", "exceptionurl", "exceptionregexpurl", "bannedregexpurl", "urlregexp", "exceptionfileurl", "logurl", "logregexpurl"),
"contentacl" => array("contentregexp"),
"extensionacl" => array("exceptionextension", "exceptionmimetype", "bannedextension", "bannedmimetype"),
"headeracl" => array("headerregexp", "bannedregexpheader"),
"searchacl" => array("searchengineregexp", "bannedsearchterm", "weightedsearchterm", "exceptionsearchterm")
);
foreach ($lists as $list_key => $list_array) {
// verify groups acls to avoid errors on empty acl group options
if (!preg_match("/\w+/", $e2guardian_groups[$list_key])) {
log_error("e2guardian - Config warning, Group {$e2guardian_group_name} {$list_key} cannot be empty! Trying to load sample values");
}
foreach ($list_array as $list_value) {
//read all access lists applied to this group option
foreach (explode(",", $e2guardian_groups[$list_key]) as $dacl) {
if (!is_array(${$list_value})) {
${$list_value} = array();
}
$dacl = (preg_match("/\w+/", $dacl)? $dacl : "sample");
$file_temp = file_get_contents(E2GUARDIAN_DIR . "/etc/e2guardian/lists/{$list_value}list.{$dacl}") . "\n";
${$list_value} = array_merge(explode("\n", $file_temp), ${$list_value});
}
//add a package warning
array_unshift(${$list_value}, "#Do not edit this file.", "#It's created by e2guardian package and overwritten every config save.");
//save group file and unset array
file_put_contents(E2GUARDIAN_DIR . "/etc/e2guardian/lists/{$list_value}list.g_{$e2guardian_groups['name']}", implode("\n", array_unique(${$list_value})) . "\n", LOCK_EX);
unset(${$list_value});
}
}
$e2_dir = E2GUARDIAN_DIR;
include("/usr/local/pkg/e2guardianfx.conf.template");
file_put_contents($e2guardian_dir . "/e2guardianf" . $count . ".conf", $dgf, LOCK_EX);
if ($config['installedpackages']['e2guardianusers']['config'][0][$e2guardian_group_name] != "") {
$import_users = explode("\n", base64_decode($config['installedpackages']['e2guardianusers']['config'][0][$e2guardian_group_name]));
asort($import_users);
$config['installedpackages']['e2guardianusers']['config'][0][$e2guardian_group_name] = base64_encode(implode("\n", $import_users));
foreach ($import_users as $new_user) {
if (preg_match("/(\S+)\s+(\S+)/", $new_user, $matches)) {
$filtergroupslist .= $matches[1] . "=filter" . $count . " #" . $matches[2] . "\n";
} elseif (preg_match("/(\S+)/", $new_user, $matches)) {
$filtergroupslist .= $matches[1] . "=filter" . $count . "\n";
}
}
}
if ($config['installedpackages']['e2guardianips']['config'][0][$e2guardian_group_name] != "") {
$import_ips = explode("\n", base64_decode($config['installedpackages']['e2guardianips']['config'][0][$e2guardian_group_name]));
asort($import_ips);
$config['installedpackages']['e2guardianips']['config'][0][$e2guardian_group_name] = base64_encode(implode("\n", $import_ips));
foreach ($import_ips as $new_ip) {
if (preg_match("/(\S+)\s+(.*)/", $new_ip, $matches)) {
$filtergroupsiplist .= $matches[1] . " = filter" . $count . " #" . $matches[2] . "\n";
} elseif (preg_match("/(\S+)/", $new_ip, $matches)) {
$filtergroupsiplist .= $matches[1] . " = filter" . $count . "\n";
}
}
}
$filtergroup_count = count($import_users);
$filtergroupip_count = count($import_ips);
//Default group catch all unauth groups as well non listed users
if ($count > 1)
$user_xml .=<<
{$e2guardian_groups['description']} ({$filtergroup_count})
listtopic
{$e2guardian_group_name}
{$e2guardian_groups['name']}
Hint:PFSENSE\marcelloc #Marcello Coutinho]]>
textarea
80 12
base64
EOF;
$ips_xml .=<<
{$e2guardian_groups['description']} ({$filtergroupip_count})
listtopic
{$e2guardian_group_name}
{$e2guardian_groups['name']}
Hint:192.168.1.0/255.255.255.0
192.168.1.5]]>
textarea
80 12
base64
EOF;
$count++;
}
if ($user_xml == "") {
$user_xml .=<<
Users
listtopic
Users
info_checkbox
checkbox
All unauthenticated users or unlisted users will match first filter group.]]>
EOF;
}
//Create/update filtergroupslist
file_put_contents($e2guardian_dir . "/lists/filtergroupslist", $filtergroupslist, LOCK_EX);
//Create/update filtergroupsiplist
file_put_contents($e2guardian_dir . "/lists/authplugins/ipgroups", $filtergroupsiplist, LOCK_EX);
//Create/update userlist xml file
$ips_xml_header = file_get_contents("/usr/local/pkg/e2guardian_ips_header.template");
$user_xml_header = file_get_contents("/usr/local/pkg/e2guardian_users_header.template");
$user_xml_footer = file_get_contents("/usr/local/pkg/e2guardian_users_footer.template");
file_put_contents("/usr/local/pkg/e2guardian_users.xml", $user_xml_header . $user_xml . $user_xml_footer, LOCK_EX);
file_put_contents("/usr/local/pkg/e2guardian_ips.xml", $ips_xml_header . $ips_xml . $user_xml_footer, LOCK_EX);
//Create report template
if (is_dir("/usr/local/share/e2guardian/languages/" . $reportlanguage)) {
file_put_contents("/usr/local/share/e2guardian/languages/" . $reportlanguage . "/template.html", e2_text_area_decode($e2guardian_log['report_file']), LOCK_EX);
}
//check blacklist download files
if ($install_process == true) {
require_once("/usr/local/www/e2guardian.php");
fetch_blacklist(false, true);
update_output_window("Blacklist check done, continuing package config sync.");
} else {
file_put_contents("/root/e2guardian_custom.script", base64_decode($e2guardian_blacklist['custom_script']), LOCK_EX);
if ($_POST["force_download"]) {
log_error("Blacklist update process started");
file_notice("E2guardian",$error,"E2guardian - " . gettext("Blacklist update process started"), "");
if ($e2guardian_blacklist['enable_custom_script']) {
mwexec_bg("/root/e2guardian_custom.script");
} else {
mwexec_bg("/usr/local/bin/php /usr/local/www/e2guardian.php fetch_blacklist");
}
}
//update xml categories from downloaded file
if ($_POST["force_update"]) {
$config['installedpackages']['e2guardianblacklist']['config'][0]['cron'] = "never";
mwexec_bg("/usr/local/bin/php /usr/local/www/e2guardian.php update_lists");
}
//Import default blacklists
if (!is_array($config['installedpackages']['e2guardianblacklistsurls']['config'])) {
mwexec_bg("/usr/local/bin/php /usr/local/www/e2guardian.php update_lists");
}
}
//get clamav user
$cconf = E2GUARDIAN_DIR . "/etc/clamd.conf";
$cconf_file = file_get_contents($cconf);
if (preg_match("/User (\w+)/", $cconf_file, $matches)) {
mwexec("/usr/sbin/pw user show {$matches[1]} || /usr/sbin/pw user add -n {$matches[1]} -s /usr/sbin/nologin");
$daemonuser = $matches[1];
$daemongroup = 'nobody';
} else {
$daemonuser = 'nobody';
$daemongroup = 'nobody';
}
$filtergroups = ($count > 1?($count -1):1);
$filterip = "";
$filterports = "";
foreach (explode(",", $e2guardian['interface']) as $i => $iface) {
$real_ifaces[] = dg_get_real_interface_address($iface);
if ($real_ifaces[$i][0]) {
$filterip .= "filterip = " . $real_ifaces[$i][0] . "\n";
}
$filterports .= "filterports = " . $filterport . "\n";
}
$filterip = ($filterip == "" ? "filterip = " : $filterip);
$filterports = ($filterports == "" ? "filterports = $filterport" : $filterports);
include("/usr/local/pkg/e2guardian.conf.template");
//check cron_tab
$new_cron = array();
$cron_found = 0;
if (is_array($config['cron']['item'])) {
foreach ($config['cron']['item'] as $cron) {
if (preg_match("@(" . E2GUARDIAN_DIR . "|/usr/local)/(bin.freshclam|www/e2guardian)@", $cron["command"])) {
$cron_found++;
} else {
$new_cron['item'][] = $cron;
}
}
}
$cron_cmd = E2GUARDIAN_DIR . "/bin/freshclam";
if ($e2guardian_config['cron'] && preg_match("/clamd/", $e2guardian_config['content_scanners'])) {
switch ($e2guardian_config['cron']) {
case "day":
$new_cron['item'][] = array(
"minute" => "0",
"hour" => "0",
"mday" => "*",
"month" => "*",
"wday" => "*",
"who" => "root",
"command" => $cron_cmd);
$config['cron'] = $new_cron;
$cron_found++;
break;
case "02days":
$new_cron['item'][] = array(
"minute" => "0",
"hour" => "0",
"mday" => "*/2",
"month" => "*",
"wday" => "*",
"who" => "root",
"command" => $cron_cmd);
$config['cron'] = $new_cron;
$cron_found++;
break;
case "week":
$new_cron['item'][] = array(
"minute" => "0",
"hour" => "0",
"mday" => "*/7",
"month" => "*",
"wday" => "*",
"who" => "root",
"command" => $cron_cmd);
$config['cron'] = $new_cron;
$cron_found++;
break;
}
}
$cron_cmd = "/usr/local/bin/php /usr/local/www/e2guardian.php fetch_blacklist";
if ($e2guardian_blacklist['cron']) {
switch ($e2guardian_blacklist['cron']) {
case "day":
$new_cron['item'][] = array(
"minute" => "0",
"hour" => "0",
"mday" => "*",
"month" => "*",
"wday" => "*",
"who" => "root",
"command" => $cron_cmd);
$config['cron'] = $new_cron;
$cron_found++;
break;
case "02days":
$new_cron['item'][] = array(
"minute" => "0",
"hour" => "0",
"mday" => "*/2",
"month" => "*",
"wday" => "*",
"who" => "root",
"command" => $cron_cmd);
$config['cron'] = $new_cron;
$cron_found++;
break;
case "week":
$new_cron['item'][] = array(
"minute" => "0",
"hour" => "0",
"mday" => "*/7",
"month" => "*",
"wday" => "*",
"who" => "root",
"command" => $cron_cmd);
$config['cron'] = $new_cron;
$cron_found++;
break;
}
}
$cron_cmd = "/usr/local/bin/php /usr/local/www/e2guardian_ldap.php";
if (is_array($config['installedpackages']['e2guardiangroups']['config'])) {
foreach ($config['installedpackages']['e2guardiangroups']['config'] as $e2guardian_groups) {
$e2_group_source = ($e2guardian_groups['groupnamesource'] != "" ? $e2guardian_groups['groupnamesource'] : "name");
if (preg_match('/(\d+)m/', $e2guardian_groups['freq'], $matches)) {
$new_cron['item'][] = array(
"minute" => "*/". $matches[1],
"hour" => "*",
"mday" => "*",
"month" => "*",
"wday" => "*",
"who" => "root",
"command" => "{$cron_cmd} $e2_group_source '{$e2guardian_groups[$e2_group_source]}'");
$config['cron'] = $new_cron;
$cron_found++;
}
if (preg_match('/(\d+)h/', $e2guardian_groups['freq'], $matches)) {
$new_cron['item'][] = array(
"minute" => "0",
"hour" => "*/". $matches[1],
"mday" => "*",
"month" => "*",
"wday" => "*",
"who" => "root",
"command" => "{$cron_cmd} $e2_group_source '{$e2guardian_groups[$e2_group_source]}'");
$config['cron'] = $new_cron;
$cron_found++;
}
}
}
//write files
conf_mount_rw();
write_config();
//update cron
if ($cron_found > 0) {
$config['cron'] = $new_cron;
write_config();
configure_cron();
}
$dirs = array(
E2GUARDIAN_DIR . '/etc/e2guardian/lists/bannedrooms/',
'/var/log/e2guardian');
foreach ($dirs as $dir) {
if (!is_dir($dir)) {
mkdir ($dir, 0755, true);
}
}
//update file owner
mwexec("chown -R $daemonuser:$daemongroup " . E2GUARDIAN_DIR . "/etc/e2guardian");
mwexec("chown -R $daemonuser:$daemongroup /var/log/e2guardian");
//create config files
file_put_contents($e2guardian_dir . "/e2guardian.conf", $dg, LOCK_EX);
//configure local proxy server
sync_tinyproxy();
//check virus_scanner options
$libexec_dir = E2GUARDIAN_DIR . "/libexec/e2guardian/";
if ($install_process == true) {
update_output_window("Skipping clamav check during package install.");
}
if (preg_match("/clamd/", $e2guardian_config['content_scanners']) && $install_process == false) {
if (!(file_exists('/var/db/clamav/main.cvd') || file_exists('/var/db/clamav/main.cld'))) {
file_notice("E2guardian",$error,"E2guardian - " . gettext("No antivirus database found for clamav, running freshclam in background."), "");
log_error('No antivirus database found for clamav, running freshclam in background. Content-scanner may not work until freshclam finishes.');
mwexec_bg(E2GUARDIAN_DIR . '/bin/freshclam && /usr/local/etc/rc.d/clamav-clamd');
}
//clamdscan.conf e2guardian file
$cconf = E2GUARDIAN_DIR . "/etc/e2guardian/contentscanners/clamdscan.conf";
$cconf_file = file_get_contents($cconf);
if (preg_match('/#clamdudsfile/', $cconf_file)) {
$cconf_file = preg_replace('/#clamdudsfile/', 'clamdudsfile', $cconf_file);
file_put_contents($cconf, $cconf_file, LOCK_EX);
}
//clamd conf file
$cconf = E2GUARDIAN_DIR . "/etc/clamd.conf";
$cconf_file = file_get_contents($cconf);
if (preg_match("/User (\w+)/", $cconf_file, $matches)) {
#clamd script file
$script = '/usr/local/etc/rc.d/clamav-clamd';
$script_file = file($script);
$new_clamav_startup = "";
$cpreg_m[0] = "@NO@";
$cpreg_m[1] = "@/usr/local@";
$cpreg_r[0] = "YES";
$cpreg_r[1] = E2GUARDIAN_DIR;
foreach ($script_file as $script_line) {
if (preg_match("/command=/", $script_line)) {
$new_clamav_startup .= 'if [ ! -d /var/run/clamav ];then /bin/mkdir /var/run/clamav;fi' . "\n";
$new_clamav_startup .= 'if [ ! -d /var/db/clamav ];then /bin/mkdir /var/db/clamav;fi' . "\n";
$new_clamav_startup .= 'if [ ! -d /var/log/clamav ];then /bin/mkdir -p /var/log/clamav;fi' . "\n";
$new_clamav_startup .= "chown -R " . $matches[1] . " /var/run/clamav\n";
$new_clamav_startup .= "chown -R " . $matches[1] . " /var/db/clamav\n";
$new_clamav_startup .= "chown -R " . $matches[1] . " /var/log/clamav\n";
$new_clamav_startup .= $script_line;
} elseif (!preg_match("/(mkdir|chown|sleep|mailscanner)/", $script_line)) {
$new_clamav_startup .= preg_replace($cpreg_m, $cpreg_r, $script_line);
}
}
file_put_contents($script, $new_clamav_startup, LOCK_EX);
chmod ($script, 0755);
if (file_exists('/var/run/e2guardian.pid') && is_process_running('clamd')) {
log_error('Stopping clamav-clamd');
mwexec("$script stop");
}
unlink_if_exists("/tmp/.dguardianipc");
unlink_if_exists("/tmp/.dguardianurlipc");
if (!is_process_running('clamd')) {
log_error('Starting clamav-clamd');
mwexec_bg("$script start");
}
}
}
//mark config changes
if (!$_POST["force_update"] && !$_POST["force_download"]) {
mark_subsystem_dirty('e2guardian');
}
}
function e2guardian_check_config() {
global $savemsg, $config;
if (!isset($config['installedpackages']['e2guardian']['config'][0]['enable'])) {
return 1;
}
if (isset($_REQUEST['apply'])) {
e2guardian_start("no", false, true);
return;
}
if (is_subsystem_dirty('e2guardian')) {
$savemsg = gettext("E2guardian configuration has been changed.") . "
" . gettext("The changes must be applied for them to take effect.");
$savemsg .= " ";
}
return 0;
}
function e2guardian_start($via_rpc = "no", $install_process = false, $force_start = false) {
global $g, $config, $savemsg;
clear_subsystem_dirty('e2guardian');
if (!$force_start) {
if (e2guardian_check_config() <> 0) {
return;
}
}
$script = '/usr/local/etc/rc.d/e2guardian.sh';
unlink_if_exists('/usr/local/etc/rc.d/e2guardian');
if ($config['installedpackages']['e2guardian']['config'][0]['enable'] == "on") {
copy('/usr/local/pkg/e2guardian_rc.template', $script);
chmod ($script, 0755);
start_tinyproxy();
if (is_process_running('e2guardian')) {
log_error('Reloading E2guardian');
exec("/usr/local/sbin/e2guardian -r");
} else {
log_error('Starting E2guardian');
mwexec("$script start");
}
} else {
stop_tinyproxy();
if (is_process_running('e2guardian')) {
log_error('E2guardian is disabled, stopping process...');
mwexec("$script stop");
}
if (file_exists($script)) {
chmod ($script, 444);
}
}
if (!file_exists(E2GUARDIAN_DIR . '/etc/e2guardian/lists/phraselists/pornography/weighted_russian_utf8')) {
file_put_contents(E2GUARDIAN_DIR . '/etc/e2guardian/lists/phraselists/pornography/weighted_russian_utf8', "", LOCK_EX);
}
//check ca certs hashes
check_ca_hashes();
//mount read only
conf_mount_ro();
//avoid sync during boot process
if (!isset($boot_process) || $via_rpc == "yes") {
/* Uses XMLRPC to synchronize the changes to a remote node */
if (is_array($config['installedpackages']['e2guardiansync']['config'])) {
$e2_sync = $config['installedpackages']['e2guardiansync']['config'][0];
$synconchanges = $e2_sync['synconchanges'];
$synctimeout = $e2_sync['synctimeout'];
switch ($synconchanges) {
case "manual":
if (is_array($e2_sync[row])) {
$rs = $e2_sync[row];
} else {
log_error("[E2guardian] xmlrpc sync is enabled but there is no hosts to push on e2guardian config.");
return;
}
break;
case "auto":
if (is_array($config['hasync'])) {
$system_carp = $config['hasync'];
$rs[0]['ipaddress'] = $system_carp['synchronizetoip'];
$rs[0]['username'] = $system_carp['username'];
$rs[0]['password'] = $system_carp['password'];
$rs[0]['sync_type'] = "xmlrpc";
if (!is_ipaddr($system_carp['synchronizetoip'])) {
log_error("[E2guardian] xmlrpc sync is enabled but there is no system backup hosts to push squid config.");
return;
}
} else {
log_error("[E2guardian] xmlrpc sync is enabled but there is no system backup hosts to push squid config.");
return;
}
break;
default:
return;
break;
}
if (is_array($rs)) {
log_error("[E2guardian] xmlrpc sync is starting.");
foreach ($rs as $sh) {
$sync_to_ip = $sh['ipaddress'];
$password = $sh['password'];
$username = ($sh['username']?$sh['username']:"admin");
if ($password && $sync_to_ip) {
e2guardian_do_xmlrpc_sync($sync_to_ip, $username, $password, $sync_type, $synctimeout);
}
}
log_error("[E2guardian] xmlrpc sync is ending.");
}
}
}
}
function e2guardian_validate_input($post, &$input_errors) {
/* Manual update blacklist */
if ($post['update_av'] == 'Update Blacklist') {
//parei aqui
squid_update_clamav();
return;
}
foreach ($post as $key => $value) {
if (preg_match("/^(name|description)$/", $key) && $value == "") {
$input_errors[] = "{$key} could not be empty.";
} else if ($key == "name" && $value == "sample") {
$input_errors[] = "{$value} cannot be used as name.";
} else if ($key == "name" && preg_match("/\W/", $value)) {
$input_errors[] = "{$value} cannot be used as name. Use only a-z 0-9 characters";
} else if ($key == "group_options") {
$acls = array("pics", "phrase", "site", "url", "extension", "header", "content", "search");
foreach ($acls as $gacl) {
if (!array_key_exists($gacl . "acl", $post)) {
$input_errors[] = ucfirst($gacl) . " must has at least one acl assigned.";
}
}
} else if (empty($value)) {
continue;
} else if ($key == "freq" && (!preg_match("/^\d+(h|m|d)$/", $value) || $value == 0)) {
$input_errors[] = "A valid number with a time reference is required for the field 'Update Frequency'";
}
}
}
function e2guardian_php_install_command() {
sync_package_e2guardian("no", true);
}
function e2guardian_php_deinstall_command() {
global $config, $g;
if (is_process_running('e2guardian')) {
log_error("stopping e2guardian..");
mwexec("/usr/local/etc/rc.d/e2guardian.sh stop");
sleep(1);
}
if (file_exists("/usr/local/etc/rc.d/e2guardian.sh")) {
conf_mount_rw();
chmod ("/usr/local/etc/rc.d/e2guardian.sh", 0444);
conf_mount_ro();
}
}
function e2guardian_do_xmlrpc_sync($sync_to_ip, $username, $password, $sync_type, $synctimeout) {
global $config, $g;
if (!$username) {
return;
}
if (!$password) {
return;
}
if (!$sync_to_ip) {
return;
}
if (!$synctimeout) {
$synctimeout = 30;
}
$xmlrpc_sync_neighbor = $sync_to_ip;
if ($config['system']['webgui']['protocol'] != "") {
$synchronizetoip = $config['system']['webgui']['protocol'];
$synchronizetoip .= "://";
}
$port = $config['system']['webgui']['port'];
/* if port is empty lets rely on the protocol selection */
if ($port == "") {
if ($config['system']['webgui']['protocol'] == "http") {
$port = "80";
} else {
$port = "443";
}
}
$synchronizetoip .= $sync_to_ip;
/* xml will hold the sections to sync */
$xml = array();
log_error("Include e2guardian config");
$xml['e2guardian'] = $config['installedpackages']['e2guardian'];
$xml['e2guardianantivirusacl'] = $config['installedpackages']['e2guardianantivirusacl'];
$xml['e2guardianconfig'] = $config['installedpackages']['e2guardianconfig'];
$xml['e2guardianblacklist'] = $config['installedpackages']['e2guardianblacklist'];
$xml['e2guardianldap'] = $config['installedpackages']['e2guardianldap'];
$xml['e2guardiancontentacl'] = $config['installedpackages']['e2guardiancontentacl'];
$xml['e2guardianfileacl'] = $config['installedpackages']['e2guardianfileacl'];
$xml['e2guardiangroups'] = $config['installedpackages']['e2guardiangroups'];
$xml['e2guardianheaderacl'] = $config['installedpackages']['e2guardianheaderacl'];
$xml['e2guardianlimits'] = $config['installedpackages']['e2guardianlimits'];
$xml['e2guardianlog'] = $config['installedpackages']['e2guardianlog'];
$xml['e2guardianphraseacl'] = $config['installedpackages']['e2guardianphraseacl'];
$xml['e2guardianpicsacl'] = $config['installedpackages']['e2guardianpicsacl'];
$xml['e2guardiansearchacl'] = $config['installedpackages']['e2guardiansearchacl'];
$xml['e2guardiansiteacl'] = $config['installedpackages']['e2guardiansiteacl'];
$xml['e2guardianurlacl'] = $config['installedpackages']['e2guardianurlacl'];
$xml['e2guardianusers'] = $config['installedpackages']['e2guardianusers'];
$xml['e2guardianips'] = $config['installedpackages']['e2guardianips'];
if (count($xml) > 0) {
/* assemble xmlrpc payload */
$params = array(
XML_RPC_encode($password),
XML_RPC_encode($xml)
);
/* set a few variables needed for sync code borrowed from filter.inc */
$url = $synchronizetoip;
log_error("Beginning e2guardian XMLRPC sync to {$url}:{$port}.");
$method = 'pfsense.merge_installedpackages_section_xmlrpc';
$msg = new XML_RPC_Message($method, $params);
$cli = new XML_RPC_Client('/xmlrpc.php', $url, $port);
$cli->setCredentials($username, $password);
if ($g['debug']) {
$cli->setDebug(1);
}
/* send our XMLRPC message and timeout after $synctimeout seconds */
$resp = $cli->send($msg, $synctimeout);
if (!$resp) {
$error = "A communications error occurred while attempting e2guardian XMLRPC sync with {$url}:{$port}.";
log_error($error);
file_notice("sync_settings", $error, gettext("e2guardian Settings Sync"), "");
} elseif ($resp->faultCode()) {
$cli->setDebug(1);
$resp = $cli->send($msg, $synctimeout);
$error = "An error code was received while attempting e2guardian XMLRPC sync with {$url}:{$port} - Code " . $resp->faultCode() . ": " . $resp->faultString();
log_error($error);
file_notice("sync_settings", $error, gettext("e2guardian Settings Sync"), "");
} else {
log_error("e2guardian XMLRPC sync successfully completed with {$url}:{$port}.");
}
/* tell e2guardian to reload our settings on the destination sync host. */
$method = 'pfsense.exec_php';
$execcmd = "require_once('/usr/local/pkg/e2guardian.inc');\n";
$execcmd .= "sync_package_e2guardian('yes');";
/* assemble xmlrpc payload */
$params = array(
XML_RPC_encode($password),
XML_RPC_encode($execcmd)
);
log_error("e2guardian XMLRPC reload data {$url}:{$port}.");
$msg = new XML_RPC_Message($method, $params);
$cli = new XML_RPC_Client('/xmlrpc.php', $url, $port);
$cli->setCredentials($username, $password);
$resp = $cli->send($msg, $synctimeout);
if (!$resp) {
$error = "A communications error occurred while attempting e2guardian XMLRPC sync with {$url}:{$port} (pfsense.exec_php).";
log_error($error);
file_notice("sync_settings", $error, gettext("e2guardian Settings Sync"), "");
} elseif ($resp->faultCode()) {
$cli->setDebug(1);
$resp = $cli->send($msg, $synctimeout);
$error = "An error code was received while attempting e2guardian XMLRPC sync with {$url}:{$port} - Code " . $resp->faultCode() . ": " . $resp->faultString();
log_error($error);
file_notice("sync_settings", $error, gettext("e2guardian Settings Sync"), "");
} else {
log_error("e2guardian XMLRPC reload data success with {$url}:{$port} (pfsense.exec_php).");
}
}
}
?>