<?php //Blacklist was retrieved from //http://cri.univ-tlse1.fr/blacklists/index_en.php require_once('config.inc'); require("guiconfig.inc"); include("head.inc"); //set the config as a global variable global $config; $global_usage = '/usr/local/www/packages/dnsblacklist/blacklists/global_usage'; $fh = fopen($global_usage, 'r'); while($line=fgets($fh)) { $line = trim($line); $line_array = explode (":", $line); if (strtolower($line_array[0]) == "name") { $name = trim($line_array[1]); } if (strtolower($line_array[0]) == "name en") { $name_en = trim($line_array[1]); $category[$name]['name_en'] = $name_en; } if (strtolower($line_array[0]) == "desc en") { $desc_en = trim($line_array[1]); $category[$name]['desc_en'] = $desc_en; } } //get line count for domains list function line_number ($file) { $result = trim(exec("wc -l $file")); $result_array = explode (" ", $result); return $result_array[0]; } //print_r($_POST); //$x = 0; //foreach($_POST['blacklist'] as $value) { //$blacklist[$x]['name'] = $val; //$blacklist[$value] = 'zzz'; //echo "\$category[\$x]['name'] = '$val';<br>"; //echo "\$category['$value'] = 'zzz'; <br/>\n"; //$x++; //} //unset($x); //echo "<pre>"; //print_r($_POST["blacklist"]); //echo "</pre>"; //foreach($_POST["blacklist"] as $key => $value) { //echo "name: ".$value."<br />"; //$x++; //} if (count($_POST)>0) { conf_mount_rw(); $dnsmasqfile = "/usr/local/etc/dnsmasq.conf"; $targetfile = "/usr/local/etc/dnsmasq.blacklist.conf"; $includestring = "conf-file=/usr/local/etc/dnsmasq.blacklist.conf"; $dnsmasqconf = "/usr/local/etc/dnsmasq.conf"; //clear previous values $ent = array(); foreach($category as $key => $value) { $ent[$key] = '0'; } $config['installedpackages']['dnsblacklist']['config'][0] = $ent; //write_config(); //truncate the dnsmasq.blacklist.conf file if (file_exists($targetfile)) { $fh = fopen($targetfile, 'w'); fclose($fh); } if ($_POST['enable'] == 1) { //echo "enabled"; $config['installedpackages']['dnsblacklist_settings']['config'][0]['enable'] = 1; } else { //echo "disabled"; $config['installedpackages']['dnsblacklist_settings']['config'][0]['enable'] = 0; } //add the include entry for dnsmasq.blacklist.conf to dnsmasq.conf if (file_exists($dnsmasqfile)) { $getdnsmasq = file_get_contents($dnsmasqfile); if(stristr($getdnsmasq,'conf-file=/usr/local/etc/dnsmasq.blacklist.conf') === TRUE) { //include found no need to add it } else { $myfhandle = fopen($dnsmasqconf, 'r+'); fwrite($myfhandle, $includestring); fclose($myfhandle); } } else { $my2fhandle = fopen($dnsmasqconf, 'x+'); fwrite($my2fhandle, $includestring); fclose($my2fhandle); } //build the dnsmasq.blacklist.conf if (count($_POST["blacklist"]) > 0) { foreach($_POST["blacklist"] as $value) { //set the current selected values $blackfile = "blacklists/$value/domains"; $config['installedpackages']['dnsblacklist']['config'][0][$value] = 1; //if enabled write the selected categories to the dnsmasq.blacklist.conf if ($config['installedpackages']['dnsblacklist_settings']['config'][0]['enable'] == 1) { $fh2 = fopen($targetfile, 'a'); $fh = fopen($blackfile,'r'); while($line=fgets($fh)) { //remove all characters other than alpha numeric period and dash preg_match("/([a-zA-Z0-9.-]*)/i", $line, $arraymatches); $line = $arraymatches[1]; fwrite($fh2, "address=/" .$line. "/74.125.45.100". "\n"); } fclose($fh); fclose($fh2); } } } write_config(); services_dnsmasq_configure(); sleep(1); $savemsg_dnsb = "DNS Blacklist settings have been saved. "; conf_mount_ro(); } ?> <?php include("fbegin.inc"); ?> <p class="pgtitle">Services: DNS Blacklist</p> <form method=POST action=""> <?php if ($config['installedpackages']['dnsblacklist_settings']['config'][0]['enable'] == 1) { echo "<input name='enable' type='checkbox' value='1' checked>\n"; } else { echo "<input name='enable' type='checkbox' value='1'>\n"; } ?> <strong>Enable DNS Blacklist</strong><br><br> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr><td class="tabcont" > <?php if ($savemsg_dnsb) print_info_box($savemsg_dnsb); ?> Below is a scroll-box filled with categories you can select to be added to your blacklist. <br><br> Each category has a list of known domains/sites that will be denied access by users of this network. <br><br><i>(Note: Using all categories at once will require 300Mb of free memory. The <b>adult</b> category is rather memory intensive, requiring 200Mb.)</i> <br><br><br> <div style="height:340px;width:95%;overflow:scroll;"> <?php echo "<table>\n"; foreach($category as $key => $value) { $domain_count = line_number("blacklists/$key/domains"); echo "<tr>\n"; if ($config['installedpackages']['dnsblacklist']['config'][0][$key] == 1) { echo "<td><input type='checkbox' name='blacklist[]' value='$key' checked /></td>\n"; echo "<td><strong>".$value['name_en']."<strong></td>\n"; echo "<td>".$value['desc_en']."</td>\n"; echo "<td><i>($domain_count domains)</i></td>\n"; } else { echo "<td><input type='checkbox' name='blacklist[]' value='$key' /></td>\n"; echo "<td><strong>".$value['name_en']."</strong></td>\n"; echo "<td>".$value['desc_en']."</td>\n"; echo "<td><i>($domain_count domains)</i></td>\n"; } echo "</tr>\n"; $x++; } echo "</table>\n"; ?> </div> <br /> <br /> <!-- Select a category to edit: --> <?php ////$tmp_category = array(1=> "Edit Category", ); ////$tmp_category = str_replace(" ", " ", $category); //echo "<SELECT name=category>\n"; //foreach($category as $key => $value) { // echo "<OPTION value='".$key."'>".$key."</option>\n"; // $x++; //} //echo "</select>\n"; ?> <!-- or <u>Add your own domains</u> <i>(Coming Soon)</i> <br /> <br /> --> <?php //This input guarantees that a POST is sent even if no category is selected. echo "<input type='hidden' name='zzz' value='required'>"; ?> <input type="submit" value="Save"> </td> </tr> </table> </form> <?php include("fend.inc"); ?> </body> </html>