&1',$output,$return); if (preg_match("/x\W+(\w+)/",$output[1],$matches)) { if ($matches[1] != "blacklists") rename("./".$matches[1],"blacklists"); read_lists($log_notice); } else { file_notice("Dansguardian - Could not determine Blacklist extract dir. Categories not updated",""); } } else { file_notice("Dansguardian - Could not fetch blacklists from url",""); } } else { if ($install_process==true) read_lists(false,$uw); elseif (!empty($url)) file_notice("Dansguardian - Blacklist url is invalid.",""); } } function read_lists($log_notice=true,$uw=""){ global $config,$g; $group_type=array(); $dir=DANSGUARDIAN_DIR . "/etc/dansguardian/lists"; #read dansguardian lists dirs $groups= array("phraselists", "blacklists", "whitelists"); #assigns know list files $types=array('domains','urls','banned','weighted','exception','expression'); #clean previous xml config for dansguardian lists foreach($config['installedpackages'] as $key => $values) if (preg_match("/dansguardian(phrase|black|white)lists/",$key)) unset ($config['installedpackages'][$key]); #find lists foreach ($groups as $group) if (is_dir("$dir/$group/")){ #read dir content and find lists $lists= scandir("$dir/$group/"); foreach ($lists as $list) if (!preg_match ("/^\./",$list) && is_dir("$dir/$group/$list/")) { $category= scandir("$dir/$group/$list/"); foreach ($category as $file) if (!preg_match ("/^\./",$file)) { if (is_dir("$dir/$group/$list/$file")) { $subdir=$file; $subcategory= scandir("$dir/$group/$list/$subdir/"); foreach ($subcategory as $file) if (!preg_match ("/^\./",$file)){ #assign list to array $type=split("_",$file); if (preg_match("/(\w+)/",$type[0],$matches)); $xml_type=$matches[1]; if ($config['installedpackages']['dansguardianblacklist']['config'][0]["liston"]=="both" && $group=="blacklists") $config['installedpackages']['dansguardianwhitelists'.$xml_type]['config'][]=array("descr"=> "{$list}_{$subdir} {$file}","list" => "{$list}_{$subdir}","file" => "$dir/$group/$list/$subdir/$file"); $config['installedpackages']['dansguardian'.$group.$xml_type]['config'][]=array("descr"=> "{$list}_{$subdir} {$file}","list" => "{$list}_{$subdir}","file" => "$dir/$group/$list/$subdir/$file"); } } else { #assign list to array $type=split("_",$file); if (preg_match("/(\w+)/",$type[0],$matches)); $xml_type=$matches[1]; if ($config['installedpackages']['dansguardianblacklist']['config'][0]["liston"]=="both" && $group=="blacklists") $config['installedpackages']['dansguardianwhitelists'.$xml_type]['config'][]=array("descr"=> "$list $file","list" => $list,"file" => "$dir/$group/$list/$file"); $config['installedpackages']['dansguardian'.$group.$xml_type]['config'][]=array("descr"=> "$list $file","list" => $list,"file" => "$dir/$group/$list/$file"); } } } } conf_mount_rw(); $files=array("site","url"); foreach ($files as $edit_xml){ $edit_file=file_get_contents("/usr/local/pkg/dansguardian_".$edit_xml."_acl.xml"); if(count($config['installedpackages']['dansguardianblacklistsdomains']['config']) > 18){ $edit_file=preg_replace('/size.6/','size>20',$edit_file); if ($config['installedpackages']['dansguardianblacklist']['config'][0]["liston"]=="both") $edit_file=preg_replace('/size.5/','size>19',$edit_file); } else{ $edit_file=preg_replace('/size.20/','size>6',$edit_file); } if ($config['installedpackages']['dansguardianblacklist']['config'][0]["liston"]!="both") $edit_file=preg_replace('/size.19/','size>5',$edit_file); file_put_contents("/usr/local/pkg/dansguardian_".$edit_xml."_acl.xml",$edit_file,LOCK_EX); } write_config(); if($log_notice==true && $uw==""){ file_notice("Dansguardian - Blacklist applied, check site and URL access lists for categories",""); } else{ $uw.="done\n"; update_output_window($uw); } } if ($argv[1]=="update_lists") read_lists(); if ($argv[1]=="fetch_blacklist") fetch_blacklist(); ?>