<?php
//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;

	//create a category blacklist array
	$category['abortion'] = 'Abortion information excluding when related to religion';
	$category['ads'] = 'Advert servers and banned URLs';
	$category['adult'] = 'Sites containing adult material such as swearing but not porn';
	$category['aggressive'] = 'Similar to violence but more promoting than depicting';
	$category['antispyware'] = 'Sites that remove spyware';
	$category['artnudes'] = 'Art sites containing artistic nudity';
	$category['astrology'] = 'Astrology websites';
	$category['audio-video'] = 'Sites with audio or video downloads';
	$category['banking'] = 'Banking websites';
	$category['beer'] = 'Sites with information on beer or liquors';
	$category['blog'] = 'Journal/Diary websites';
	$category['cellphones'] = 'Stuff for mobile/cell phones';
	$category['chat'] = 'Sites with chat rooms etc';
	$category['childcare'] = 'Sites to do with childcare';
	//$category['cleaning'] = 'Sites to do with cleaning';
	//$category['clothing'] = 'Sites about and selling clothing';
	$category['contraception'] = 'Information about contraception';
	//$category['culinary'] = 'Sites about cooking et al';
	$category['dating'] = 'Sites about dating';
	$category['desktopsillies'] = 'Sites containing screen savers, backgrounds, cursers, pointers, and themes';
	$category['dialers'] = 'Sites with dialers such as those for pornography or trojans';
	$category['drugs'] = 'Drug related sites';
	$category['ecommerce'] = 'Sites that provide online shopping';
	$category['entertainment'] = 'Sites that promote movies, books, magazine, humor';
	$category['filehosting'] = 'Sites to do with filehosting';
	//$category['frencheducation'] = 'Sites to do with french education';
	$category['gambling'] = 'Gambling sites including stocks and shares';
	$category['games'] = 'Game related sites';
	//$category['gardening'] = 'Gardening sites';
	$category['government'] = 'Military and schools etc';
	//$category['guns'] = 'Sites with guns';
	$category['hacking'] = 'Hacking/cracking information';
	//$category['homerepair'] = 'Sites about home repair';
	//$category['hygiene'] = 'Sites about hygiene and other personal grooming related stuff';
	$category['instantmessaging'] = 'Sites that contain messenger client download and web-based messaging sites';
	//$category['jewelry'] = 'Sites about and selling jewelry';
	$category['jobsearch'] = 'Sites for finding jobs';
	$category['kidstimewasting'] = 'Sites kids often waste time on';
	$category['mail'] = 'Webmail and email sites';
	$category['marketingware'] = 'Sites about marketing products';
	$category['medical'] = 'Medical websites';
	$category['mixed_adult'] = 'Mixed adult content sites';
	$category['mobile-phone'] = 'Sites to do with mobile phones';
	$category['naturism'] = 'Sites that contain nude pictures and/or promote a nude lifestyle';
	$category['news'] = 'News sites';
	$category['onlineauctions'] = 'Online auctions';
	$category['onlinegames'] = 'Online gaming sites';
	$category['onlinepayment'] = 'Online payment sites';
	$category['personalfinance'] = 'Personal finance sites';
	//$category['pets'] = 'Pet sites';
	$category['phishing'] = 'Sites attempting to trick people into giving out private information.';
	$category['porn'] = 'Pornography';
	$category['proxy'] = 'Sites with proxies to bypass filters';
	$category['radio'] = 'non-news related radio and television';
	$category['ringtones'] = 'Sites containing ring tones, games, pictures and other';
	$category['searchengines'] = 'Search engines such as google';
	$category['sect'] = 'Sites about religious groups';
	$category['sexuality'] = 'Sites dedicated to sexuality, possibly including adult material';
	$category['shopping'] = 'Shopping sites';
	$category['socialnetworking'] = 'Social networking websites';
	$category['sportnews'] = 'Sport news sites';
	$category['sports'] = 'All sport sites';
	$category['spyware'] = 'Sites who run or have spyware software to download';
	$category['updatesites'] = 'Sites where software updates are downloaded from including virus sigs';
	$category['vacation'] = 'Sites about going on holiday';
	$category['violence'] = 'Sites containing violence';
	$category['virusinfected'] = 'Sites who host virus infected files';
	$category['warez'] = 'Sites with illegal pirate software';
	$category['weather'] = 'Weather news sites and weather related';
	//$category['weapons'] = 'Sites detailing or selling weapons';
	$category['webmail'] = 'Just webmail sites'; 

	//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) {
	$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
	foreach($category as $key => $value) {
		$config['installedpackages']['dnsblacklist']['config'][0][$key] = '';
	}
	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);
	}
	//truncate the dnsmasq.blacklist.conf file
	if (file_exists($targetfile)) {
		$fh = fopen($targetfile, 'w');
		fclose($fh);
	}
	//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)) {
					fwrite($fh2, "address=/" .trim($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.";
}
?>

<?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> and <b>porn</b> categories are rather memory intensive, requiring 200Mb together.)</i>
<br><br><br>

function ListFiles($dir) {

	if($dh = opendir($dir)) {

		$files = Array();
		$inner_files = Array();

		while($file = readdir($dh)) {
			if($file != "." && $file != ".." && $file[0] != '.') {
				if(is_dir($dir . "/" . $file)) {
					array_push($files, $dir);
					//$inner_files = ListFiles($dir . "/" . $file);
					//if(is_array($inner_files)) $files = array_merge($files, $inner_files); 
				} else {
					//array_push($files, $dir . "/" . $file);
				}
			}
		}

		closedir($dh);
		return $files;
	}
}


foreach (ListFiles('/usr/local/www/packages/dnsblacklist/') as $key=>$file){
    echo $file ."<br />\n";
} 



<div style="height:340px;width:680px;overflow:scroll;">
<?php
/*
echo "<table>\n";
foreach($category as $key => $value) {
	$domain_count = line_number("blacklists/$key/domains");
	//echo "name: ".$key."<br />";
	echo "<tr>\n";
	if ($config['installedpackages']['dnsblacklist']['config'][0][$key] == 1) {
	//	echo "<td><input type='checkbox' name='blacklist[]' value='$key' checked /></td><td><strong>$key<strong></td><td>$value</td><td><i>($domain_count domains)</i></td>\n";
	}
	else {
	//	echo "	<td><input type='checkbox' name='blacklist[]' value='$key' /></td><td><strong>$key</strong></td><td>$value</td><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 />
-->

<input type="submit" value="Save">
</td>
</tr>
</table>
</form>

<?php include("fend.inc"); ?>

</body>
</html>