Line 65... |
Line 65... |
65 |
|
65 |
|
66 |
# Choice of language
|
66 |
# Choice of language
|
67 |
$Language = 'en';
|
67 |
$Language = 'en';
|
68 |
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
|
68 |
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
|
69 |
$Langue = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
69 |
$Langue = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
70 |
$Language = strtolower(substr(chop($Langue[0]),0,2));
|
70 |
$Language = strtolower(substr(chop($Langue[0]),0,2));
|
71 |
}
|
71 |
}
|
72 |
if($Language == 'fr'){
|
72 |
if($Language == 'fr'){
|
73 |
$l_wl="Liste blanche générale";
|
73 |
$l_wl="Liste blanche générale";
|
74 |
$l_load="Chargement...";
|
74 |
$l_load="Chargement...";
|
75 |
$l_list_version="Version de la liste : ";
|
75 |
$l_list_version="Version de la liste : ";
|
Line 77... |
Line 77... |
77 |
$l_specific_filtering="Filtrage special";
|
77 |
$l_specific_filtering="Filtrage special";
|
78 |
$l_add_to_wl="Noms de domaine ou adresses IP à ajouter à la liste blanche";
|
78 |
$l_add_to_wl="Noms de domaine ou adresses IP à ajouter à la liste blanche";
|
79 |
$l_one_dns_ip="Entrez un nom de domaine ou une adresse IP ou une adresse de réseau par ligne<br>exemple (domaine) : .domaine.org - exemple (ip) : 61.54.52.56 - exemple (réseau) : 172.16.0.0/16";
|
79 |
$l_one_dns_ip="Entrez un nom de domaine ou une adresse IP ou une adresse de réseau par ligne<br>exemple (domaine) : .domaine.org - exemple (ip) : 61.54.52.56 - exemple (réseau) : 172.16.0.0/16";
|
80 |
$l_record="Enregistrer les modifications";
|
80 |
$l_record="Enregistrer les modifications";
|
81 |
$l_wait="Une fois validées, 10 secondes sont nécessaires pour traiter vos modifications";
|
81 |
$l_wait="Une fois validées, 10 secondes sont nécessaires pour traiter vos modifications";
|
82 |
$l_ip_filtering="Filtrer les URLs contenant une adresse IP au lieu d'un nom de domaine (ex: http://25.56.58.59/index.htm)";
|
- |
|
83 |
$l_safe_searching="Activer le contrôle scolaire/parental des moteurs de recherche google.";
|
82 |
$l_safe_searching="Activer le contrôle scolaire/parental des moteurs de recherche google.";
|
84 |
$l_safe_youtube="Pour un contrôle parental sur Youtube, suivez les étapes ici : ";
|
83 |
$l_safe_youtube="Pour un contrôle parental sur Youtube, suivez les étapes ici : ";
|
85 |
$l_youtube_id="(<a href='https://support.google.com/youtube/answer/174084?hl=fr' target='cat_help' onclick=window.open('https://support.google.com/youtube/answer/174084?hl=fr','cat_help','width=800,height=600,toolbar=no,scrollbars=yes,resizable=yes') title='Youtube for school'>lien pour créer un identifiant Youtube (Id)</a>)";
|
84 |
$l_youtube_id="(<a href='https://support.google.com/youtube/answer/174084?hl=fr' target='cat_help' onclick=window.open('https://support.google.com/youtube/answer/174084?hl=fr','cat_help','width=800,height=600,toolbar=no,scrollbars=yes,resizable=yes') title='Youtube for school'>lien pour créer un identifiant Youtube (Id)</a>)";
|
86 |
$l_error_open_file="Erreur d'ouverture du fichier";
|
85 |
$l_error_open_file="Erreur d'ouverture du fichier";
|
87 |
$l_additional_file_title="Fichiers de 'listes blanches' additionnels";
|
86 |
$l_additional_file_title="Fichiers de 'listes blanches' additionnels";
|
88 |
$l_file_list="Liste des fichiers";
|
87 |
$l_file_list="Liste des fichiers";
|
89 |
$l_add_file="Ajouter un fichier";
|
88 |
$l_add_file="Ajouter un fichier";
|
90 |
$l_add_file_explain="Chaque ligne du fichier doit être une adresse IP ou un nom de domaine";
|
89 |
$l_add_file_explain="Chaque ligne du fichier doit être une adresse IP ou un nom de domaine";
|
91 |
$l_file_name="Nom du fichier";
|
90 |
$l_file_name="Nom du fichier";
|
92 |
$l_file_action="Action";
|
91 |
$l_file_action="Action";
|
93 |
$l_error_upload="Erreur d'envoi du fichier";
|
92 |
$l_error_upload="Erreur d'envoi du fichier";
|
94 |
$l_remove="Supprimer";
|
93 |
$l_remove="Supprimer";
|
95 |
$l_submit="Envoyer";
|
94 |
$l_submit="Envoyer";
|
Line 111... |
Line 110... |
111 |
$l_allowed_dns="Allowed domain names";
|
110 |
$l_allowed_dns="Allowed domain names";
|
112 |
$l_add_to_wl="Domain names or IP addresses to add to the whitelist";
|
111 |
$l_add_to_wl="Domain names or IP addresses to add to the whitelist";
|
113 |
$l_one_dns_ip="Enter one domain name or one IP address or one network address per row <br>example (domain): .domain.org - example (ip): 61.54.56.52 - example (network) : 172.16.0.0/16";
|
112 |
$l_one_dns_ip="Enter one domain name or one IP address or one network address per row <br>example (domain): .domain.org - example (ip): 61.54.56.52 - example (network) : 172.16.0.0/16";
|
114 |
$l_record="Save changes";
|
113 |
$l_record="Save changes";
|
115 |
$l_wait="Once validated, 10 seconds are necessary to compute your modifications";
|
114 |
$l_wait="Once validated, 10 seconds are necessary to compute your modifications";
|
116 |
$l_ip_filtering="Filtering URLs that contain an IP address instead of a domain name (ie: http://25.56.58.59/index.htm)";
|
- |
|
117 |
$l_safe_searching="Enabling school/parental control for the search engines google";
|
115 |
$l_safe_searching="Enabling school/parental control for the search engines google";
|
118 |
$l_safe_youtube="For a safe Youtube search, follow these steps : ";
|
116 |
$l_safe_youtube="For a safe Youtube search, follow these steps : ";
|
119 |
$l_youtube_id="(<a href='https://support.google.com/youtube/answer/174084?hl=en' target='cat_help' onclick=window.open('https://support.google.com/youtube/answer/174084?hl=en','cat_help','width=800,height=600,toolbar=no,scrollbars=yes,resizable=yes') title='Youtube for school'>link to create a Youtube Id</a>)";
|
117 |
$l_youtube_id="(<a href='https://support.google.com/youtube/answer/174084?hl=en' target='cat_help' onclick=window.open('https://support.google.com/youtube/answer/174084?hl=en','cat_help','width=800,height=600,toolbar=no,scrollbars=yes,resizable=yes') title='Youtube for school'>link to create a Youtube Id</a>)";
|
120 |
$l_error_open_file="Error opening file";
|
118 |
$l_error_open_file="Error opening file";
|
121 |
$l_additional_file_title="Additional WhiteList files";
|
119 |
$l_additional_file_title="Additional WhiteList files";
|
122 |
$l_file_list="Files list";
|
120 |
$l_file_list="Files list";
|
123 |
$l_add_file="Add a file";
|
121 |
$l_add_file="Add a file";
|
124 |
$l_add_file_explain="Each line of the file must be an IP address or a domain name";
|
122 |
$l_add_file_explain="Each line of the file must be an IP address or a domain name";
|
125 |
$l_file_name="Filename";
|
123 |
$l_file_name="Filename";
|
126 |
$l_file_action="Action";
|
124 |
$l_file_action="Action";
|
127 |
$l_error_upload="Error during the upload process";
|
125 |
$l_error_upload="Error during the upload process";
|
128 |
$l_remove="Delete";
|
126 |
$l_remove="Delete";
|
129 |
$l_submit="Submit";
|
127 |
$l_submit="Submit";
|
Line 144... |
Line 142... |
144 |
$dir_wl_domain_names= "/usr/local/share/dnsmasq-wl/";
|
142 |
$dir_wl_domain_names= "/usr/local/share/dnsmasq-wl/";
|
145 |
$dir_wl_domain_names_enabled= "/usr/local/share/dnsmasq-wl-enabled/";
|
143 |
$dir_wl_domain_names_enabled= "/usr/local/share/dnsmasq-wl-enabled/";
|
146 |
$wl_categories=$dir_etc."alcasar-wl-categories";
|
144 |
$wl_categories=$dir_etc."alcasar-wl-categories";
|
147 |
$wl_categories_enabled=$dir_etc."alcasar-wl-categories-enabled";
|
145 |
$wl_categories_enabled=$dir_etc."alcasar-wl-categories-enabled";
|
148 |
$conf_file=$dir_etc."alcasar.conf";
|
146 |
$conf_file=$dir_etc."alcasar.conf";
|
149 |
$urlregex_file=$dir_dg."urlregexplist";
|
147 |
$iptables_safesearch_file=$dir_wl_ip_enabled."ossi-ip-safesearch";
|
150 |
$bannedsite_file=$dir_dg."bannedsitelist";
|
148 |
$bannedsite_file=$dir_dg."bannedsitelist";
|
151 |
$dir_tmp="/tmp/blacklists";
|
149 |
$dir_tmp="/tmp/blacklists";
|
152 |
|
150 |
|
153 |
|
151 |
|
154 |
# default values
|
152 |
# default values
|
Line 166... |
Line 164... |
166 |
$tmp = explode("/",$PRIVATE_IP_MASK);
|
164 |
$tmp = explode("/",$PRIVATE_IP_MASK);
|
167 |
$PRIVATE_IP=$tmp[0];
|
165 |
$PRIVATE_IP=$tmp[0];
|
168 |
}
|
166 |
}
|
169 |
}
|
167 |
}
|
170 |
}
|
168 |
}
|
171 |
}
|
169 |
}
|
172 |
else { echo "$l_error_open_file $conf_file";}
|
170 |
else { echo "$l_error_open_file $conf_file";}
|
173 |
if (isset($_POST['choix'])){ $choix=$_POST['choix']; } else { $choix=""; }
|
171 |
if (isset($_POST['choix'])){ $choix=$_POST['choix']; } else { $choix=""; }
|
174 |
switch ($choix)
|
172 |
switch ($choix)
|
175 |
{
|
173 |
{
|
176 |
case 'Download_list' :
|
174 |
case 'Download_list' :
|
Line 189... |
Line 187... |
189 |
exec("/bin/sed -i \"/^ossi-/!d\" $wl_categories_enabled"); // keep ossi custom categories
|
187 |
exec("/bin/sed -i \"/^ossi-/!d\" $wl_categories_enabled"); // keep ossi custom categories
|
190 |
$pointeur=fopen($wl_categories_enabled, "a+");
|
188 |
$pointeur=fopen($wl_categories_enabled, "a+");
|
191 |
foreach ($_POST as $key => $value)
|
189 |
foreach ($_POST as $key => $value)
|
192 |
{
|
190 |
{
|
193 |
if (strstr($key,'chk-'))
|
191 |
if (strstr($key,'chk-'))
|
194 |
{
|
192 |
{
|
195 |
$line=str_replace('chk-','',$key)."\n";
|
193 |
$line=str_replace('chk-','',$key)."\n";
|
196 |
fwrite($pointeur,$line);
|
194 |
fwrite($pointeur,$line);
|
197 |
}
|
195 |
}
|
198 |
}
|
196 |
}
|
199 |
|
197 |
|
200 |
fclose($pointeur);
|
198 |
fclose($pointeur);
|
201 |
}
|
199 |
}
|
202 |
else {echo "$l_error_open_file $wl_categories_enabled";}
|
200 |
else {echo "$l_error_open_file $wl_categories_enabled";}
|
203 |
$fichier=fopen($dir_blacklist."ossi-wl/domains","w+");
|
201 |
$fichier=fopen($dir_blacklist."ossi-wl/domains","w+");
|
204 |
fputs($fichier, form_filter($_POST['OSSI_wl']));
|
202 |
fputs($fichier, form_filter($_POST['OSSI_wl']));
|
205 |
fclose($fichier);
|
203 |
fclose($fichier);
|
206 |
unset($_POST['OSSI_wl']);
|
204 |
unset($_POST['OSSI_wl']);
|
207 |
exec ("sudo /usr/local/bin/alcasar-bl.sh --reload");
|
205 |
exec ("sudo /usr/local/bin/alcasar-bl.sh --reload");
|
208 |
break;
|
206 |
break;
|
209 |
case 'Specific_filtering' :
|
207 |
case 'Specific_filtering' :
|
210 |
$pureip="-pureip_off"; $safesearch="-safesearch_off"; ;
|
208 |
$safesearch="-safesearch_off"; ;
|
211 |
foreach ($_POST as $key => $value)
|
209 |
foreach ($_POST as $key => $value)
|
212 |
{
|
210 |
{
|
213 |
if (strstr($key,'chk-ip')) $pureip="-pureip_on";
|
- |
|
214 |
if (strstr($key,'chk-safesearch')) $safesearch="-safesearch_on";
|
211 |
if (strstr($key,'chk-safesearch')) $safesearch="-safesearch_on";
|
215 |
}
|
212 |
}
|
216 |
exec ("sudo /usr/local/bin/alcasar-url_filter_bl.sh $safesearch $pureip");
|
213 |
exec ("sudo /usr/local/bin/alcasar-url_filter_wl.sh $safesearch");
|
217 |
break;
|
214 |
break;
|
218 |
case 'MAJ_ossi_file' :
|
215 |
case 'MAJ_ossi_file' :
|
219 |
foreach($_POST as $fichier => $value)
|
216 |
foreach($_POST as $fichier => $value)
|
220 |
{
|
217 |
{
|
221 |
if($fichier != "choix")
|
218 |
if($fichier != "choix")
|
222 |
{
|
219 |
{
|
223 |
$action=$_POST[$fichier];
|
220 |
$action=$_POST[$fichier];
|
224 |
if($action == $l_remove) //delete
|
221 |
if($action == $l_remove) //delete
|
225 |
{
|
222 |
{
|
226 |
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $wl_categories_enabled");
|
223 |
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $wl_categories_enabled");
|
227 |
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $wl_categories");
|
224 |
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $wl_categories");
|
228 |
exec("rm -rf ".escapeshellarg("$dir_blacklist$fichier"));
|
225 |
exec("rm -rf ".escapeshellarg("$dir_blacklist$fichier"));
|
229 |
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
|
226 |
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
|
230 |
}
|
227 |
}
|
231 |
if($action == $l_disable) //disable
|
228 |
if($action == $l_disable) //disable
|
232 |
{
|
229 |
{
|
233 |
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $wl_categories_enabled");
|
230 |
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $wl_categories_enabled");
|
234 |
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
|
231 |
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
|
235 |
}
|
232 |
}
|
236 |
if($action == $l_enable) //enable
|
233 |
if($action == $l_enable) //enable
|
237 |
{
|
234 |
{
|
238 |
file_put_contents($wl_categories_enabled, $fichier."\n", FILE_APPEND);
|
235 |
file_put_contents($wl_categories_enabled, $fichier."\n", FILE_APPEND);
|
Line 242... |
Line 239... |
242 |
}
|
239 |
}
|
243 |
break;
|
240 |
break;
|
244 |
case 'MAJ_ossi_file_upload' :
|
241 |
case 'MAJ_ossi_file_upload' :
|
245 |
$file_name = str_replace (".", "_",basename($_FILES['fichier_ip']['name']));
|
242 |
$file_name = str_replace (".", "_",basename($_FILES['fichier_ip']['name']));
|
246 |
if(!empty($file_name))
|
243 |
if(!empty($file_name))
|
247 |
{
|
244 |
{
|
248 |
$dest_dir = $dir_blacklist."ossi-wl-".$file_name;
|
245 |
$dest_dir = $dir_blacklist."ossi-wl-".$file_name;
|
249 |
exec("mkdir ".escapeshellarg($dest_dir));
|
246 |
exec("mkdir ".escapeshellarg($dest_dir));
|
250 |
$file=$_FILES['fichier_ip']['tmp_name'];
|
247 |
$file=$_FILES['fichier_ip']['tmp_name'];
|
251 |
exec('/usr/bin/dos2unix '.escapeshellarg($file));
|
248 |
exec('/usr/bin/dos2unix '.escapeshellarg($file));
|
252 |
if(move_uploaded_file($_FILES['fichier_ip']['tmp_name'], $dest_dir."/domains"))
|
249 |
if(move_uploaded_file($_FILES['fichier_ip']['tmp_name'], $dest_dir."/domains"))
|
Line 278... |
Line 275... |
278 |
// total number of IP, DNS & URLs
|
275 |
// total number of IP, DNS & URLs
|
279 |
$nbDomainNames = exec("wc -l /usr/local/share/dnsmasq-wl/* | tail -n 1 | awk '{print $1}'");
|
276 |
$nbDomainNames = exec("wc -l /usr/local/share/dnsmasq-wl/* | tail -n 1 | awk '{print $1}'");
|
280 |
$nbUrl = "0";
|
277 |
$nbUrl = "0";
|
281 |
$nbIp = exec("wc -l /usr/local/share/iptables-wl/* | tail -n 1 | awk '{print $1}'");
|
278 |
$nbIp = exec("wc -l /usr/local/share/iptables-wl/* | tail -n 1 | awk '{print $1}'");
|
282 |
echo "<b>$l_nbDomainNames</b> $nbDomainNames, <b>$l_nbUrl</b> $nbUrl, <b>$l_nbIp</b> $nbIp<br/>";
|
279 |
echo "<b>$l_nbDomainNames</b> $nbDomainNames, <b>$l_nbUrl</b> $nbUrl, <b>$l_nbIp</b> $nbIp<br/>";
|
283 |
echo "$l_wl_categories</center></td></tr>";
|
280 |
echo "$l_wl_categories</center></td></tr>";
|
284 |
//read & display all WL categories (checked or not)
|
281 |
//read & display all WL categories (checked or not)
|
285 |
$cols=1;
|
282 |
$cols=1;
|
286 |
if (file_exists($wl_categories))
|
283 |
if (file_exists($wl_categories))
|
287 |
{
|
284 |
{
|
288 |
$wl_files = file($wl_categories);
|
285 |
$wl_files = file($wl_categories);
|
289 |
$wl_files = preg_grep("/ossi-/", $wl_files, 1); // don't display ossi custom categories
|
286 |
$wl_files = preg_grep("/ossi-/", $wl_files, 1); // don't display ossi custom categories
|
290 |
foreach($wl_files as $fichier => $value)
|
287 |
foreach($wl_files as $fichier => $value)
|
Line 355... |
Line 352... |
355 |
</table>
|
352 |
</table>
|
356 |
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1>
|
353 |
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1>
|
357 |
<FORM action='wl_filter.php' method='POST'>
|
354 |
<FORM action='wl_filter.php' method='POST'>
|
358 |
<input type='hidden' name='choix' value='Specific_filtering'>
|
355 |
<input type='hidden' name='choix' value='Specific_filtering'>
|
359 |
<tr><td>
|
356 |
<tr><td>
|
360 |
<input type='checkbox' name='chk-ip'
|
- |
|
361 |
<?php
|
- |
|
362 |
// verify "pureip" filtering state
|
- |
|
363 |
if (file_exists($bannedsite_file))
|
- |
|
364 |
{
|
- |
|
365 |
$pointeur=fopen($bannedsite_file,"r");
|
- |
|
366 |
while (!feof ($pointeur))
|
- |
|
367 |
{
|
- |
|
368 |
$ligne=fgets($pointeur, 4096);
|
- |
|
369 |
if ($ligne)
|
- |
|
370 |
{
|
- |
|
371 |
if (preg_match('/^\*ip$/',$ligne, $r))
|
- |
|
372 |
{
|
- |
|
373 |
echo " checked";
|
- |
|
374 |
break;
|
- |
|
375 |
}
|
- |
|
376 |
}
|
- |
|
377 |
}
|
- |
|
378 |
fclose($pointeur);
|
- |
|
379 |
}
|
- |
|
380 |
else {
|
- |
|
381 |
echo "$l_error_open_file $bannedsite_file";
|
- |
|
382 |
}
|
- |
|
383 |
echo "> $l_ip_filtering";
|
- |
|
384 |
?>
|
- |
|
385 |
</td></tr>
|
- |
|
386 |
<tr><td>
|
- |
|
387 |
<input type='checkbox' name='chk-safesearch'
|
357 |
<input type='checkbox' name='chk-safesearch'
|
388 |
<?php
|
358 |
<?php
|
389 |
// verify "safesearch" filtering state
|
359 |
// verify "safesearch" filtering state
|
390 |
if (file_exists($urlregex_file))
|
360 |
if (file_exists($iptables_safesearch_file))
|
391 |
{
|
361 |
{
|
392 |
$pointeur=fopen($urlregex_file,"r");
|
- |
|
393 |
while (!feof ($pointeur))
|
- |
|
394 |
{
|
- |
|
395 |
$ligne=fgets($pointeur, 4096);
|
- |
|
396 |
if ($ligne)
|
- |
|
397 |
{
|
- |
|
398 |
if (preg_match('/^\"\(\^http\:\/\/\[0\-9a\-z\]\+\\\.google/',$ligne, $r))
|
- |
|
399 |
{
|
- |
|
400 |
echo " checked";
|
362 |
echo " checked";
|
401 |
break;
|
- |
|
402 |
}
|
- |
|
403 |
}
|
- |
|
404 |
}
|
- |
|
405 |
fclose($pointeur);
|
- |
|
406 |
}
|
- |
|
407 |
else {
|
- |
|
408 |
echo "$l_error_open_file $urlregex_file";
|
- |
|
409 |
}
|
363 |
}
|
410 |
echo "> $l_safe_searching";
|
364 |
echo "> $l_safe_searching";
|
411 |
echo "<br>$l_safe_youtube";
|
365 |
echo "<br>$l_safe_youtube";
|
412 |
echo " $l_youtube_id<tr><td>";
|
366 |
echo " $l_youtube_id<tr><td>";
|
413 |
echo "<input type='submit' onClick=\"this.disabled=true; this.value='$l_load';submit();\" value='$l_record'></td></tr>";
|
367 |
echo "<input type='submit' onClick=\"this.disabled=true; this.value='$l_load';submit();\" value='$l_record'></td></tr>";
|
414 |
?>
|
368 |
?>
|
415 |
</FORM>
|
369 |
</FORM>
|
416 |
</TABLE>
|
370 |
</TABLE>
|
417 |
</BODY>
|
371 |
</BODY>
|
418 |
</HTML>
|
372 |
</HTML>
|
419 |
|
- |
|
420 |
|
- |
|