Subversion Repositories ALCASAR

Compare Revisions

No changes between revisions

Ignore whitespace Rev 3178 → Rev 3179

/web/acc/alcasar-3.6.0-presentation-en.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.0-installation-en.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.0-technique.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.0-presentation-fr.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.0-installation-fr.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.0-exploitation-en.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.0-exploitation-fr.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/web/acc/admin/bl_categories_help.php
10,13 → 10,11
$wl_unbound_dir="/usr/local/share/unbound-wl/";
# Choice of language
$Language = 'en';
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
$Langue = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$Language = strtolower(substr(chop($Langue[0]),0,2));
}
if($Language == 'fr')
{
if($Language == 'fr'){
$l_title = "Catégories de la liste noire";
$l_error_open_file="Erreur d'ouverture du fichier";
$l_close="Fermer";
53,107 → 51,54
$l_error_cat = "Error category";
$l_error_list = "Error listing";
}
if(isset($_GET['cat']))
{
if(isset($_GET['cat'])){
$categorie = $_GET['cat'];
}
else
{
else {
$categorie = $l_error_cat;
}
if(isset($_GET['liste']))
{
$liste = $_GET['liste'];
$bl_categorie_domain_file = $bl_unbound_dir.$categorie.".conf";
$bl_categorie_url_file = $bl_dir.$categorie."/urls";
$bl_categorie_ip_file = $bl_iptables_dir.$categorie;
//don't calc again on reload (click on the number of domain/urls/ip)
if (isset ($_GET['nb_domains']) && isset($_GET['nb_urls']) && isset($_GET['nb_ip'])){
$nb_domains = $_GET['nb_domains'];
$nb_urls = $_GET['nb_urls'];
$nb_ip = $_GET['nb_ip'];
}
else
{
$liste = $l_error_list;
}
if($liste == "bl")
{
$bl_categorie_domain_file = $bl_unbound_dir.$categorie.".conf";
$bl_categorie_url_file = $bl_dir.$categorie."/urls";
$bl_categorie_ip_file = $bl_iptables_dir.$categorie;
//don't calc again on reload (click on the number of domain/urls/ip)
if (isset ($_GET['nb_domains']) && isset($_GET['nb_urls']) && isset($_GET['nb_ip']))
{
$nb_domains = $_GET['nb_domains'];
$nb_urls = $_GET['nb_urls'];
$nb_ip = $_GET['nb_ip'];
}
else
{
if (file_exists($bl_categorie_domain_file))
{
else {
if (file_exists($bl_categorie_domain_file)){
# two lines per domain
$nb_domains = exec("wc -l $bl_categorie_domain_file | cut -d ' ' -f1") / 2;
}
else
{
else {
$nb_domains = $l_error_open_file." ".$bl_categorie_domain_file;
}
 
if (file_exists($bl_categorie_url_file))
{
if (file_exists($bl_categorie_url_file)){
$nb_urls = exec ("wc -l $bl_categorie_url_file | cut -d ' ' -f1");
}
else
{
else {
$nb_urls = $l_error_open_file." ".$bl_categorie_url_file;
}
 
if(file_exists($bl_categorie_ip_file))
{
if(file_exists($bl_categorie_ip_file)){
$nb_ip = exec("wc -l $bl_categorie_ip_file | cut -d ' ' -f1");
}
else
{
else {
$nb_ip = $l_error_open_file." ".$bl_categorie_ip_file;
}
}
}
else
{
$wl_categorie_domain_file = $wl_unbound_dir.$categorie.".conf";
$wl_categorie_ip_file = $wl_iptables_dir.$categorie;
if (file_exists($wl_categorie_domain_file))
{
$nb_domains = exec("wc -l $wl_categorie_domain_file | cut -d ' ' -f1");
}
else
{
$nb_domains = $l_error_open_file." ".$wl_categorie_domain_file;
}
 
if (file_exists($wl_categorie_ip_file))
{
$nb_ip = exec("wc -l $wl_categorie_ip_file | cut -d ' ' -f1");
}
else
{
$nb_ip = 0;
//$nb_ip = $l_error_open_file." ".$wl_categorie_ip_file;
}
 
$nb_urls = 0; //no urls in WL
}
$global_usage = file($bl_dir."global_usage");
$langue = strtoupper($Language);
if(isset($categorie))
{
if(isset($categorie)){
$fin1 = 0; $fin2 = 0;
foreach ($global_usage as $line)
{
if(preg_match("#^NAME:.$categorie$#", $line) == 1)
{
foreach ($global_usage as $line){
if(preg_match("#^NAME:.$categorie$#", $line) == 1){
$fin1 = 1;
}
if($fin1 && preg_match("#^DESC.$langue:.#", $line) == 1)
{
if($fin1 && preg_match("#^DESC.$langue:.#", $line) == 1){
$l_description_cat = preg_replace("#^DESC.$langue:.#", "", $line);
}
if($fin1 && preg_match("#^NAME.$langue:.#", $line) == 1)
{
if($fin1 && preg_match("#^NAME.$langue:.#", $line) == 1){
$l_name_cat = preg_replace("#^NAME.$langue:.#", "", $line);
$fin2 = 1;
}
172,23 → 117,12
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1>
<tr><td valign="middle" align="left">
<?php
if(isset($_GET["filtre"]))
{
$filtre = $_GET["filtre"];
}
else
{
$filtre = $liste == "bl" ? $bl_categorie_domain_file : $wl_categorie_domain_file;
}
$filtre_domain = $liste == "bl" ? $bl_categorie_domain_file : $wl_categorie_domain_file;
$filtre_ip = $liste == "bl" ? $bl_categorie_ip_file : $wl_categorie_ip_file;
$filtre_url = $liste == "bl" ? $bl_categorie_url_file : "";
$compat_categorie=strtr($categorie,"-","_");
echo "<br><center><b>$l_name_cat</b></center>";
echo "<center><b>$l_description_cat</b></center><br>";
echo "$l_nb_domains <b><a href='?liste=$liste&cat=$categorie&filtre=$filtre_domain&titre=domain&nb_domains=$nb_domains&nb_urls=$nb_urls&nb_ip=$nb_ip'>$nb_domains</a></b><br>";
echo "$l_nb_urls <b><a href='?liste=$liste&cat=$categorie&filtre=$filtre_url&titre=url&nb_domains=$nb_domains&nb_urls=$nb_urls&nb_ip=$nb_ip'>$nb_urls</a></b><br>";
echo "$l_nb_ip <b><a href='?liste=$liste&cat=$categorie&filtre=$filtre_ip&titre=ip&nb_domains=$nb_domains&nb_urls=$nb_urls&nb_ip=$nb_ip'>$nb_ip</a></b><br>";
echo "$l_nb_domains <b><a href='?cat=$categorie&filtre=$bl_categorie_domain_file&titre=domain&nb_domains=$nb_domains&nb_urls=$nb_urls&nb_ip=$nb_ip'>$nb_domains</a></b><br>";
echo "$l_nb_urls <b><a href='?cat=$categorie&filtre=$bl_categorie_url_file&titre=url&nb_domains=$nb_domains&nb_urls=$nb_urls&nb_ip=$nb_ip'>$nb_urls</a></b><br>";
echo "$l_nb_ip <b><a href='?cat=$categorie&filtre=$bl_categorie_ip_file&titre=ip&nb_domains=$nb_domains&nb_urls=$nb_urls&nb_ip=$nb_ip'>$nb_ip</a></b><br>";
?>
</td></tr>
</TABLE>
196,12 → 130,10
<TABLE width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><th>
<?php
if(isset($_GET["titre"]))
{
if(isset($_GET["titre"])){
$titre = $_GET["titre"];
}
else
{
else {
$titre = "domain";
}
echo $l_example.$titre;
212,23 → 144,16
<TABLE width="100%" border=1 cellspacing=0 cellpadding=1>
<tr><td valign="middle" align="left">
<?php
if($titre == "domain")
{
 
$filtre = $liste == "bl" ? $bl_categorie_domain_file : $wl_categorie_domain_file;
exec("head -n 15 ".escapeshellarg($filtre)." | grep 'transparent' | awk '{ print $2 }'", $resultat);
if($titre == "domain"){
exec("head -n 15 ".escapeshellarg($bl_categorie_domain_file)." | grep 'transparent' | awk '{ print $2 }'", $resultat);
}
elseif($titre == "ip")
{
$filtre = $liste == "bl" ? $bl_categorie_ip_file : $wl_categorie_ip_file;
exec("head -n 15 ".escapeshellarg($filtre)." | cut -d ' ' -f3", $resultat);
elseif($titre == "ip"){
exec("head -n 15 ".escapeshellarg($bl_categorie_ip_file)." | cut -d ' ' -f3", $resultat);
}
else
{
exec("head -n 15 ".escapeshellarg($filtre), $resultat);
else {
exec("head -n 15 ".escapeshellarg($bl_categorie_ip_file), $resultat);
}
for($i=0; $i<count($resultat); $i++)
{
for($i=0; $i<count($resultat); $i++){
echo $resultat[$i]."<br/>";
}
?>
/web/acc/admin/bl_filter.php
10,41 → 10,34
<div class="lds-spinner" id="spinner"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div>
</div>
<?
function form_filter ($form_content)
{
// réencodage iso + format unix + rc fin de ligne (ouf...)
function form_filter ($form_content){
// Re-encoding : ISO + unix format + end-of-line
$list = str_replace("\r\n", "\n", utf8_decode($form_content));
if (strlen($list) != 0){
if ($list[strlen($list)-1] != "\n") { $list[strlen($list)]="\n";} ;} ;
return $list;
}
function form_filter_ip($form_content, $color)
{
//# reconstruction des ip
 
function form_filter_ip($form_content, $color){
// IP reconstruction
$list = explode("\n", form_filter($form_content));
$new_list = "";
foreach ($list as &$value)
{
if(preg_match('/([0-9]{1,3}.){3}[0-9]{1,3}/', $value))
{
foreach ($list as &$value){
if(preg_match('/([0-9]{1,3}.){3}[0-9]{1,3}/', $value)){
$new_list = $new_list.$value."\n";
}
}
if($color == "white")
{
if($color == "white"){
return preg_replace("/(.*)\n/", "add wl_ip_allowed $1\n", $new_list);
}
else
{
else {
return preg_replace("/(.*)\n/", "add bl_ip_blocked $1\n", $new_list);
}
}
function echo_file ($filename)
{
if (file_exists($filename))
{
if (filesize($filename) != 0)
{
 
function echo_file ($filename){
if (file_exists($filename)){
if (filesize($filename) != 0){
$pointeur=fopen($filename,"r");
$tampon = fread($pointeur, filesize($filename));
fclose($pointeur);
51,17 → 44,14
echo $tampon;
}
}
else
{
else {
echo "$filename doesn't exist";
}
}
function echo_ip_file ($filename)
{
function echo_ip_file ($filename){
$filename = escapeshellarg($filename);
exec("cat $filename | cut -d ' ' -f3", $resultat);
for($i=0; $i<exec("wc -l $filename"); $i++)
{
for($i=0; $i<exec("wc -l $filename"); $i++){
echo $resultat[$i]."\n";
}
}
74,6 → 64,7
}
if($Language == 'fr'){
$l_bl="Liste noire principale";
$l_state="Sont actuellement bloqués : ";
$l_load="Chargement...";
$l_list_version="Version de la liste : ";
$l_bl_categories="Sélectionnez les catégories à filtrer";
110,9 → 101,9
$l_submit="Envoyer";
$l_nb_ip="Nombre d'IP";
$l_nb_domain_names="Nombre de noms de domaine";
$l_nbDomainNames="Noms de domaine :";
$l_nbUrl="Url :";
$l_nbIp="Ip :";
$l_nbDomainNames="noms de domaine";
$l_nbUrl="URL";
$l_nbIp="@Ip";
$l_update_cat="Blacklist principale (catégorie 'malware' uniquement)";
$l_update_cat_header="Mise à jour automatique des Blacklists";
$l_update_success="Échec de la mise à jour";
161,9 → 152,9
$l_submit="Enviar";
$l_nb_ip="Números de IP";
$l_nb_domain_names="Números de sitios";
$l_nbDomainNames="Domain names: ";
$l_nbUrl="Url :";
$l_nbIp="Ip :";
$l_nbDomainNames="sitios";
$l_nbUrl="URL";
$l_nbIp="IP@";
$l_update_cat="¿Actualizar automáticamente las categorías cada 12 horas (solo 'malware' por ahora)?";
$l_update_cat_header="Actualización automática de la lista negra";
$l_update_success="actualización fallida";
245,29 → 236,24
$updateable_ossi_bls=["ossi-bl-candc"];
 
# default values
if (is_file ($conf_file))
{
if (is_file ($conf_file)){
$tab=file($conf_file);
if ($tab)
{
foreach ($tab as $line)
{
if ($tab){
foreach ($tab as $line){
$field=explode("=", $line);
switch ($field[0]) {
switch ($field[0]){
case 'PRIVATE_IP':
$PRIVATE_IP_MASK=trim($field[1]);
$tmp = explode("/",$PRIVATE_IP_MASK);
$PRIVATE_IP=$tmp[0];
break;
 
case 'BL_SAFESEARCH':
if (strtolower(trim($field[1])) == 'on') {
if (strtolower(trim($field[1])) == 'on'){
$bl_safesearch='on';
}
break;
 
case 'BL_PUREIP':
if (strtolower(trim($field[1])) == 'on') {
if (strtolower(trim($field[1])) == 'on'){
$bl_pureip='on';
}
break;
277,8 → 263,7
}
else { echo "$l_error_open_file $conf_file";}
if (isset($_POST['choix'])){ $choix=$_POST['choix']; } else { $choix=""; }
switch ($choix)
{
switch ($choix){
case 'Download_list' :
exec ("sudo /usr/local/bin/alcasar-bl.sh --download");
break;
290,14 → 275,11
unlink ("$dir_tmp/blacklists.tar.gz"); unlink ("$dir_tmp/md5sum");
break;
case 'MAJ_cat_bl' :
if (file_exists($bl_categories_enabled))
{
if (file_exists($bl_categories_enabled)){
exec("/bin/sed -i \"/^ossi-/!d\" $bl_categories_enabled"); // keep ossi custom categories
$pointeur=fopen($bl_categories_enabled, "a+");
foreach ($_POST as $key => $value)
{
if (strstr($key,'chk-'))
{
foreach ($_POST as $key => $value){
if (strstr($key,'chk-')){
$line=str_replace('chk-','',$key)."\n";
fwrite($pointeur,$line);
}
322,8 → 304,7
case 'Specific_filtering':
$bl_pureip='off';
$bl_safesearch='off';
foreach ($_POST as $key => $value)
{
foreach ($_POST as $key => $value){
if (strstr($key,'chk-ip')) $bl_pureip="on";
if (strstr($key,'chk-safesearch')) $bl_safesearch="on";
}
330,43 → 311,32
exec ("sudo /usr/local/bin/alcasar-url_filter_bl.sh -safesearch_$bl_safesearch -pureip_$bl_pureip");
break;
case 'MAJ_ossi_file' :
foreach ($_POST as $fichier => $value)
{
if($fichier != "choix" && $fichier != "update_cat")
{
foreach ($_POST as $fichier => $value){
if($fichier != "choix" && $fichier != "update_cat"){
$action=$_POST[$fichier];
if($action == $l_remove) //delete
{
if($action == $l_remove){ //delete
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $bl_categories_enabled");
exec("/bin/sed -i ".escapeshellarg("/$fichier\$/d")." $bl_categories");
exec("rm -rf $dir_blacklist".escapeshellarg($fichier));
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
}
if($action == $l_disable) //disable
{
 
if($action == $l_disable){ //disable
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $bl_categories_enabled");
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
}
if($action == $l_enable) //enable
{
if($action == $l_enable){ //enable
file_put_contents($bl_categories_enabled, $fichier."\n", FILE_APPEND);
exec("sudo /usr/local/bin/alcasar-bl.sh --reload 2>&1", $out, $ret);
}
if($action == $l_update) //update
{
if ($fichier == ossi-bl-candc)
{
if($action == $l_update){ //update
if ($fichier == ossi-bl-candc){
exec("sudo /usr/local/bin/alcasar-bl-autoupdate.sh --update_ossi-bl-candc 2>&1", $out, $ret);
if ($ret == 0)
{
if ($ret == 0){
echo "<p>".$l_update_success."</p>";
}
else
{
else {
echo "<p>".$l_update_failed.":</p>";
foreach ($out as $line)
{
foreach ($out as $line){
echo "<p>".$line."</p>";
}
}
381,20 → 351,13
fclose($f);
$f = fopen($update_file_ossi_cat, 'w');
fclose($f);
foreach ($_POST as $fichier => $value)
{
// General BL
if ($fichier == 'update_cat' && $value == 1)
{
if (file_exists($bl_categories_enabled))
{
foreach ($_POST as $fichier => $value){ // General BL
if ($fichier == 'update_cat' && $value == 1){
if (file_exists($bl_categories_enabled)){
file_put_contents($update_file_cat, "malware rsync://ftp.ut-capitole.fr/blacklist/dest/malware\n", FILE_APPEND);
}
}
// C&C Server List
if ($fichier == 'ossi-bl-candc' && $value == 1)
{
if ($fichier == 'ossi-bl-candc' && $value == 1){ // C&C Server List
file_put_contents($update_file_ossi_cat, "alcasar-bl-autoupdate.sh --update_ossi-bl-candc\n", FILE_APPEND);
}
}
403,20 → 366,17
$bad_char = array(" ", ".");
$file_name = str_replace ($bad_char, "_",basename($_FILES['fichier_ip']['name']));
$dest_dir = $dir_blacklist."ossi-bl-".$file_name; # /etc/e2guardian/list/blacklist/ossi-bl-XXXXXXXX
if((!empty($file_name)) && (!file_exists($dest_dir)))
{
if((!empty($file_name)) && (!file_exists($dest_dir))){
exec("mkdir ".escapeshellarg($dest_dir));
$file=$_FILES['fichier_ip']['tmp_name'];
exec('/usr/bin/dos2unix '.escapeshellarg($file));
if(move_uploaded_file($_FILES['fichier_ip']['tmp_name'], $dest_dir."/domains")) // copy in the file "domains" (containing @ip & domain names (like over Toulouse categories))
{
if(move_uploaded_file($_FILES['fichier_ip']['tmp_name'], $dest_dir."/domains")){ // copy in the file "domains" (containing @ip & domain names (like over Toulouse categories))
touch ($dest_dir."/urls"); // create the URL file even if it isn't used
file_put_contents ($bl_categories, $dest_dir."\n", FILE_APPEND); // add to the categories list
file_put_contents ($bl_categories_enabled, "ossi-bl-".$file_name."\n", FILE_APPEND); //Enabled by default
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
}
else
{
else {
exec("rm -rf ".escapeshellarg($dest_dir));
echo $l_error_upload;
}
463,22 → 423,20
<?php
echo "<center>";
// total number of IP, DNS & URLs
$nbDomainNames = exec("wc -l /usr/local/share/unbound-bl/* | tail -n 1 | awk '{print $1}'") / 2;
$nbDomainNames = exec("wc -l $dir_bl_domain_names_enabled* | tail -n 1 | awk '{print $1}'2") / 2;
$nbUrl = exec("for file in `find /etc/e2guardian/lists/blacklists/ -name 'urls'`; do nb=$((nb+$(wc -l \$file | awk '{print $1}'))); done; echo \$nb");
$nbIp = exec("wc -l /usr/local/share/iptables-bl/* | tail -n 1 | awk '{print $1}'");
echo "<b>$l_nbDomainNames</b> $nbDomainNames, <b>$l_nbUrl</b> $nbUrl, <b>$l_nbIp</b> $nbIp<br/>";
$nbIp = exec("wc -l $dir_bl_ip_enabled* | tail -n 1 | awk '{print $1}'");
echo "$l_state $nbDomainNames <b>$l_nbDomainNames</b>, $nbUrl <b>$l_nbUrl</b>, $nbIp <b>$l_nbIp</b><br/>";
echo "$l_bl_categories</center></td></tr>";
//read & display all BL categories (checked or not)
//read & display all categories (checked or not)
$cols=1;
if (file_exists($bl_categories))
{
if (file_exists($bl_categories)){
$bl_files = file($bl_categories);
$bl_files = preg_grep("/ossi-/", $bl_files, 1); // don't display ossi custom categories
foreach ($bl_files as $fichier => $value)
{
foreach ($bl_files as $fichier => $value){
if ($cols == 1) { echo "<tr>";}
$categorie=trim(basename($value));
echo "<td><a href='bl_categories_help.php?liste=bl&cat=$categorie' target='cat_help' onclick=\"window.open('bl_categories_help.php','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes')\" title='categories help page'>$categorie</a><br>";
echo "<td><a href='bl_categories_help.php?cat=$categorie' target='cat_help' onclick=\"window.open('bl_categories_help.php','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes')\" title='categories help page'>$categorie</a><br>";
echo "<input type='checkbox' name='chk-$categorie'";
// if the line is commented, the category is disable
if (preg_match('/^#/',$value, $r)) { echo ">";}
485,7 → 443,7
else { echo " checked>"; }
echo "</td>";
$cols++;
if ($cols > 10) {
if ($cols > 10){
echo "</tr>\n";
$cols=1;
}
494,7 → 452,6
else {
echo "$l_error_open_file $bl_categories";
}
 
echo "</tr>\n";
echo "<tr><td valign='middle' align='left' colspan=10>";
echo "<center>
538,15 → 495,13
//list OSSI custom categories
$fichiersbl = array_diff(scandir($dir_blacklist), array('..','.','ossi-bl','ossi-wl'));
$fichiersbl = preg_grep("/^ossi-bl-/",$fichiersbl);
foreach ($fichiersbl as $fichier => $value)
{
echo "<tr><td><center><a href='bl_categories_help.php?liste=bl&cat=$value&filtre=domain' target='cat_help' onclick=\"window.open('bl_categories_help','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes')\" title='categories help page'>".substr($value,8)."</a></center></td><td><center>".exec("wc -l $dir_bl_ip$value | cut -d\" \" -f1")."</center></td><td><center>".exec("wc -l $dir_bl_domain_names$value.conf | cut -d\" \" -f1")."</center></td><td><center><input type='submit' name='$value'";
foreach ($fichiersbl as $fichier => $value){
echo "<tr><td><center><a href='bl_categories_help.php?cat=$value&filtre=domain' target='cat_help' onclick=\"window.open('bl_categories_help','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes')\" title='categories help page'>".substr($value,8)."</a></center></td><td><center>".exec("wc -l $dir_bl_ip$value | cut -d\" \" -f1")."</center></td><td><center>".exec("wc -l $dir_bl_domain_names$value.conf | cut -d\" \" -f1")."</center></td><td><center><input type='submit' name='$value'";
if (file_exists ($dir_bl_domain_names_enabled.$value)) echo " value='$l_disable'>"; else echo " value='$l_enable'>";
echo "</center></td><td><center><input type='submit' name='$value' value='$l_remove'></center></td>";
if (in_array($value,$updateable_ossi_bls)) echo "<td><center><input type='submit' name='$value' value='$l_update'></center></td>"; else echo "<td><center>$l_no_update_configured</center></td>";
echo "</tr>";
}
 
echo "</table>";
echo "</form><br></td>";
echo "<td width=50% colspan=5 align=center><H3>$l_add_file</H3>";
584,9 → 539,7
echo "<input type='radio' name='update_cat' value=1 ".$update_select[1]." >".$l_enable;
echo "</td>";
// Display update checkbox for each updateable ossi-bl
foreach ($updateable_ossi_bls as $value)
{
//check if autoupdate is enabled
foreach ($updateable_ossi_bls as $value){ //check if autoupdate is enabled
$update_ossi_select = ["", ""];
if ( strpos(file_get_contents($update_file_ossi_cat),$value) !== false ) $update_ossi_select[1] = "checked";
else $update_ossi_select[0] = "checked";
/web/acc/admin/wl_filter.php
10,41 → 10,34
<div class="lds-spinner" id="spinner"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div>
</div>
<?
function form_filter ($form_content)
{
// réencodage iso + format unix + rc fin de ligne (ouf...)
function form_filter ($form_content){
// Re-encoding : ISO + unix format + end-of-line
$list = str_replace("\r\n", "\n", utf8_decode($form_content));
if (strlen($list) != 0){
if ($list[strlen($list)-1] != "\n") { $list[strlen($list)]="\n";} ;} ;
return $list;
}
function form_filter_ip($form_content, $color)
{
//# reconstruction des ip
 
function form_filter_ip($form_content, $color){
// IP reconstruction
$list = explode("\n", form_filter($form_content));
$new_list = "";
foreach ($list as &$value)
{
if(preg_match('/([0-9]{1,3}.){3}[0-9]{1,3}/', $value))
{
foreach ($list as &$value){
if(preg_match('/([0-9]{1,3}.){3}[0-9]{1,3}/', $value)){
$new_list = $new_list.$value."\n";
}
}
if($color == "white")
{
if($color == "white"){
return preg_replace("/(.*)\n/", "add wl_ip_allowed $1\n", $new_list);
}
else
{
else {
return preg_replace("/(.*)\n/", "add bl_ip_blocked $1\n", $new_list);
}
}
function echo_file ($filename)
{
if (file_exists($filename))
{
if (filesize($filename) != 0)
{
 
function echo_file ($filename){
if (file_exists($filename)){
if (filesize($filename) != 0){
$pointeur=fopen($filename,"r");
$tampon = fread($pointeur, filesize($filename));
fclose($pointeur);
51,17 → 44,15
echo $tampon;
}
}
else
{
else {
echo "$filename doesn't exist";
}
}
function echo_ip_file ($filename)
{
 
function echo_ip_file ($filename){
$filename = escapeshellarg($filename);
exec("cat $filename | cut -d ' ' -f3", $resultat);
for($i=0; $i<exec("wc -l $filename"); $i++)
{
for($i=0; $i<exec("wc -l $filename"); $i++){
echo $resultat[$i]."\n";
}
}
74,6 → 65,7
}
if($Language == 'fr'){
$l_wl="Liste blanche principale";
$l_state="Sont actuellement autorisés : ";
$l_load="Chargement...";
$l_list_version="Version de la liste : ";
$l_wl_categories="Sélectionnez les catégories à autoriser";
95,14 → 87,15
$l_submit="Envoyer";
$l_nb_ip="Nombre d'IP";
$l_nb_domain_names="Nombre de noms de domaine";
$l_nbDomainNames="Noms de domaine :";
$l_nbUrl="Url :";
$l_nbIp="Ip :";
$l_nbDomainNames="noms de domaine";
$l_nbUrl="URL";
$l_nbIp="@IP";
$l_disable="Désactiver";
$l_enable="Activer";
$l_file_state="Etat";
} else if($Language == 'es') {
} else if($Language == 'es'){
$l_wl="Lista blanca principal";
$l_state="The following are currently authorized : ";
$l_load="Cargando...";
$l_list_version="Versión de la lista: ";
$l_wl_categories="Seleccione las categorías permitidas";
124,14 → 117,15
$l_submit="Enviar";
$l_nb_ip="Número de IPs";
$l_nb_domain_names="Número de sitios";
$l_nbDomainNames="Sitios:";
$l_nbUrl="Url :";
$l_nbIp="Ip :";
$l_nbDomainNames="sitios";
$l_nbUrl="URL";
$l_nbIp="IP@";
$l_disable="Desactivar";
$l_enable="Activar";
$l_file_state="Estado";
} else {
$l_wl="Main WhiteList";
$l_state="Actualmente están autorizados los siguientes : ";
$l_load="Loading...";
$l_list_version="List version : ";
$l_wl_categories="Select the allowed categories";
153,9 → 147,9
$l_submit="Submit";
$l_nb_ip="Number of IP";
$l_nb_domain_names="Number of domain names";
$l_nbDomainNames="Domain names :";
$l_nbUrl="Url :";
$l_nbIp="Ip :";
$l_nbDomainNames="domain names";
$l_nbUrl="URL";
$l_nbIp="IP@";
$l_disable="Disable";
$l_enable="Enable";
$l_file_state="State";
164,9 → 158,9
$dir_dg="/etc/e2guardian/lists/";
$dir_blacklist=$dir_dg."blacklists/";
$dir_wl_ip="/usr/local/share/iptables-wl/";
$dir_wl_ip_enabled= "/usr/local/share/iptables-wl-enabled/";
$dir_wl_domain_names= "/usr/local/share/unbound-wl/";
$dir_wl_domain_names_enabled= "/usr/local/share/unbound-wl-enabled/";
$dir_wl_ip_enabled="/usr/local/share/iptables-wl-enabled/";
$dir_wl_domain_names="/usr/local/share/unbound-wl/";
$dir_wl_domain_names_enabled="/usr/local/share/unbound-wl-enabled/";
$wl_categories=$dir_etc."alcasar-wl-categories";
$wl_categories_enabled=$dir_etc."alcasar-wl-categories-enabled";
$conf_file=$dir_etc."alcasar.conf";
173,27 → 167,22
$domainfilter_file="/etc/unbound/conf.d/whitelist/domainfilter.conf";
$bannedsite_file=$dir_dg."bannedsitelist";
$dir_tmp="/tmp/blacklists";
 
$wl_safesearch="off";
 
# default values
if (is_file ($conf_file))
{
if (is_file ($conf_file)){
$tab=file($conf_file);
if ($tab)
{
foreach ($tab as $line)
{
if ($tab){
foreach ($tab as $line){
$field=explode("=", $line);
switch ($field[0]) {
switch ($field[0]){
case 'PRIVATE_IP':
$PRIVATE_IP_MASK=trim($field[1]);
$tmp = explode("/",$PRIVATE_IP_MASK);
$PRIVATE_IP=$tmp[0];
break;
 
case 'WL_SAFESEARCH':
if (strtolower(trim($field[1])) == 'on') {
if (strtolower(trim($field[1])) == 'on'){
$wl_safesearch='on';
}
break;
203,32 → 192,17
}
else { echo "$l_error_open_file $conf_file";}
if (isset($_POST['choix'])){ $choix=$_POST['choix']; } else { $choix=""; }
switch ($choix)
{
case 'Download_list' :
exec ("sudo /usr/local/bin/alcasar-bl.sh --download");
break;
case 'Active_list' :
exec ("sudo /usr/local/bin/alcasar-bl.sh --adapt");
exec ("sudo /usr/local/bin/alcasar-bl.sh --reload");
break;
case 'Reject_list' :
unlink ("$dir_tmp/blacklists.tar.gz"); unlink ("$dir_tmp/md5sum");
break;
switch ($choix){
case 'MAJ_cat_wl' :
if (file_exists($wl_categories_enabled))
{
if (file_exists($wl_categories_enabled)){
exec("/bin/sed -i \"/^ossi-/!d\" $wl_categories_enabled"); // keep ossi custom categories
$pointeur=fopen($wl_categories_enabled, "a+");
foreach ($_POST as $key => $value)
{
if (strstr($key,'chk-'))
{
foreach ($_POST as $key => $value){
if (strstr($key,'chk-')){
$line=str_replace('chk-','',$key)."\n";
fwrite($pointeur,$line);
}
}
 
fclose($pointeur);
}
else {echo "$l_error_open_file $wl_categories_enabled";}
240,9 → 214,8
break;
case 'Specific_filtering' :
$wl_safesearch='off';
foreach ($_POST as $key => $value)
{
if (strstr($key,'chk-safesearch')) {
foreach ($_POST as $key => $value){
if (strstr($key,'chk-safesearch')){
$wl_safesearch='on';
}
}
249,25 → 222,20
exec ("sudo /usr/local/bin/alcasar-url_filter_wl.sh -safesearch_$wl_safesearch");
break;
case 'MAJ_ossi_file' :
foreach ($_POST as $fichier => $value)
{
if($fichier != "choix")
{
foreach ($_POST as $fichier => $value){
if($fichier != "choix"){
$action=$_POST[$fichier];
if($action == $l_remove) //delete
{
if($action == $l_remove){ //delete
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $wl_categories_enabled");
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $wl_categories");
exec("rm -rf ".escapeshellarg("$dir_blacklist$fichier"));
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
}
if($action == $l_disable) //disable
{
if($action == $l_disable){ //disable
exec("/bin/sed -i ".escapeshellarg("/^$fichier\$/d")." $wl_categories_enabled");
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
}
if($action == $l_enable) //enable
{
if($action == $l_enable){ //enable
file_put_contents($wl_categories_enabled, $fichier."\n", FILE_APPEND);
exec("sudo /usr/local/bin/alcasar-bl.sh --reload");
}
276,21 → 244,18
break;
case 'MAJ_ossi_file_upload' :
$file_name = str_replace (".", "_",basename($_FILES['fichier_ip']['name']));
if(!empty($file_name))
{
if(!empty($file_name)){
$dest_dir = $dir_blacklist."ossi-wl-".$file_name;
exec("mkdir ".escapeshellarg($dest_dir));
$file=$_FILES['fichier_ip']['tmp_name'];
exec('/usr/bin/dos2unix '.escapeshellarg($file));
if(move_uploaded_file($_FILES['fichier_ip']['tmp_name'], $dest_dir."/domains"))
{
if(move_uploaded_file($_FILES['fichier_ip']['tmp_name'], $dest_dir."/domains")){
touch ($dest_dir."/urls"); // create the URL file even if it isn't used
file_put_contents ($wl_categories, $dest_dir."\n", FILE_APPEND);
file_put_contents ($wl_categories_enabled, "ossi-wl-".$file_name."\n", FILE_APPEND); //Enabled by default
exec ("sudo /usr/local/bin/alcasar-bl.sh --reload");
}
else
{
else {
exec("rm -rf ".escapeshellarg($dest_dir));
echo $l_error_upload;
}
309,22 → 274,20
<?php
echo "<center>";
// total number of IP, DNS & URLs
$nbDomainNames = exec("wc -l $dir_wl_domain_names* | tail -n 1 | awk '{print $1}'");
$nbDomainNames = exec("wc -l $dir_wl_domain_names_enabled* | tail -n 1 | awk '{print $1}'");
$nbUrl = "0";
$nbIp = exec("wc -l $dir_wl_ip* | tail -n 1 | awk '{print $1}'");
echo "<b>$l_nbDomainNames</b> $nbDomainNames, <b>$l_nbUrl</b> $nbUrl, <b>$l_nbIp</b> $nbIp<br/>";
$nbIp = exec("wc -l $dir_wl_ip_enabled* | tail -n 1 | awk '{print $1}'");
echo "$l_state $nbDomainNames <b>$l_nbDomainNames</b>, $nbUrl <b>$l_nbUrl</b>, $nbIp <b>$l_nbIp</b><br/>";
echo "$l_wl_categories</center></td></tr>";
//read & display all WL categories (checked or not)
//read & display all categories (checked or not)
$cols=1;
if (file_exists($wl_categories))
{
if (file_exists($wl_categories)){
$wl_files = file($wl_categories);
$wl_files = preg_grep("/ossi-/", $wl_files, 1); // don't display ossi custom categories
foreach ($wl_files as $fichier => $value)
{
foreach ($wl_files as $fichier => $value){
if ($cols == 1) { echo "<tr>";}
$categorie=trim(basename($value));
echo "<td><a href='bl_categories_help.php?liste=wl&cat=$categorie' target='cat_help' onclick=window.open('bl_categories_help.php','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes') title='categories help page'>$categorie</a><br>";
echo "<td><a href='bl_categories_help.php?cat=$categorie' target='cat_help' onclick=window.open('bl_categories_help.php','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes') title='categories help page'>$categorie</a><br>";
echo "<input type='checkbox' name='chk-$categorie'";
// if the line is commented, the category is disable
if (preg_match('/^#/',$value, $r)) { echo ">";}
331,7 → 294,7
else { echo "checked>"; }
echo "</td>";
$cols++;
if ($cols > 10) {
if ($cols > 10){
echo "</tr>";
$cols=1;
}
367,9 → 330,8
//list OSSI custom categories
$fichierswl = array_diff(scandir($dir_blacklist), array('..','.','ossi-bl','ossi-wl'));
$fichierswl = preg_grep("/^ossi-wl-/",$fichierswl);
foreach ($fichierswl as $fichier => $value)
{
echo "<tr><td><center><a href='bl_categories_help.php?liste=wl&cat=$value&filtre=domain' target='cat_help' onclick=window.open('bl_categories_help','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes') title='categories help page'>".substr($value,8)."</a></center></td><td><center>".exec("wc -l $dir_wl_ip$value | cut -d\" \" -f1")."</center></td><td><center>".exec("wc -l $dir_wl_domain_names$value.conf | cut -d\" \" -f1")."</center></td><td><center><input type='submit' name='$value'";
foreach ($fichierswl as $fichier => $value){
echo "<tr><td><center><a href='bl_categories_help.php?cat=$value&filtre=domain' target='cat_help' onclick=window.open('bl_categories_help','cat_help','width=600,height=450,toolbar=no,scrollbars=yes,resizable=yes') title='categories help page'>".substr($value,8)."</a></center></td><td><center>".exec("wc -l $dir_wl_ip$value | cut -d\" \" -f1")."</center></td><td><center>".exec("wc -l $dir_wl_domain_names$value.conf | cut -d\" \" -f1")."</center></td><td><center><input type='submit' name='$value'";
if (file_exists ($dir_wl_domain_names_enabled.$value)) echo " value='$l_disable'>"; else echo " value='$l_enable'>";
echo "</center></td><td><center><input type='submit' name='$value' value='$l_remove'></center></td></tr>";
}
/web/acc/alcasar-3.6.1-exploitation-en.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.1-exploitation-fr.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.1-installation-en.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.1-installation-fr.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.1-presentation-en.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.1-presentation-fr.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/alcasar-3.6.1-technique.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/phpsysinfo/CHANGELOG.md
3,6 → 3,14
 
http://phpsysinfo.sourceforge.net/
 
phpSysInfo 3.4.3
----------------
- [ADD] Linux Lite, BigLinux, Linspire, Tuxedo, Armbian, Photon, RebeccaBlackOS, QuemOS, dahliaOS, openEuler, Runtu, risiOS, Nobara, Fatdog, CachyOS, Snal, Feren, Archman, Elive, RoboLinux, ExTiX, Kaisen, LXLE, Neptune, Regata, Archcraft, Kodachi, Bodhi, Siduction, Vanilla, Q4OS, Guix, XeroLinux, OpenWRT, Gnoppix, Uruk, Laclin, Clear, Sparky and Venom Linux to detected distros
 
- [NEW] SHOW_NETWORK_BRIDGE option
- [NEW] JSONP option for enable JSONP data mode
- [NEW] plugin DiskLoad - show Disk Load information on WinNT
 
phpSysInfo 3.4.2
----------------
- [ADD] RebornOS, Parrot OS, Pop!_OS, Nitrux, Makulu, Absolute, Bluestar, Ultramarine Linux and TrueNAS to detected distros
/web/acc/phpsysinfo/COPYING
1,12 → 1,12
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
 
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
 
Preamble
Preamble
 
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
15,7 → 15,7
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
the GNU Library General Public License instead.) You can apply it to
your programs, too.
 
When we speak of free software, we are referring to freedom, not
55,8 → 55,8
 
The precise terms and conditions for copying, distribution and
modification follow.
 
GNU GENERAL PUBLIC LICENSE
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
0. This License applies to any program or other work which contains
110,7 → 110,7
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
 
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
168,7 → 168,7
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
 
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
225,7 → 225,7
 
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
 
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
255,7 → 255,7
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
 
NO WARRANTY
NO WARRANTY
 
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
277,10 → 277,10
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
 
END OF TERMS AND CONDITIONS
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
 
How to Apply These Terms to Your New Programs
 
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
303,10 → 303,11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
 
Also add information on how to contact you by electronic and paper mail.
 
If the program is interactive, make it output a short notice like this
335,5 → 336,5
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
/web/acc/phpsysinfo/README.md
5,7 → 5,7
* Copyright (c), 1999-2009, Michael Cramer ([github.com/bigmichi1](https://github.com/bigmichi1), [sf.net/users/bigmichi1](https://sf.net/users/bigmichi1))
* Copyright (c), 2007-2008, Audun Larsen ([sf.net/users/xqus](https://sf.net/users/xqus))
* Copyright (c), 2007-2015, Erkan Valentin ([github.com/rk4an](https://github.com/rk4an), [sf.net/users/jacky672](https://sf.net/users/jacky672))
* Copyright (c), 2009-2022, Mieczyslaw Nalewaj ([github.com/namiltd](https://github.com/namiltd), [sf.net/users/namiltd](https://sf.net/users/namiltd))
* Copyright (c), 2009-2023, Mieczyslaw Nalewaj ([github.com/namiltd](https://github.com/namiltd), [sf.net/users/namiltd](https://sf.net/users/namiltd))
* Copyright (c), 2010-2012, Damien Roth ([sf.net/users/iysaak](https://sf.net/users/iysaak))
 
 
45,7 → 45,7
- DrayOS (via SSH)
 
If your platform is not here try checking out the mailing list archives or
the message boards on SourceForge.
the message boards on Github.
 
INSTALLATION AND CONFIGURATION
------------------------------
126,5 → 126,5
LICENSING
---------
 
This program is released under the GNU Public License Version 2 or
This program is released under the GNU Public License Version 2 or
(at your option) any later version, see [COPYING](COPYING) for details.
/web/acc/phpsysinfo/SECURITY.md
0,0 → 1,13
# Security Policy
 
## Reporting Security Issues
 
The ALCASAR team take security bugs in ALCASAR project seriously. We appreciate your efforts to responsibly disclose your findings.
You can email info@alcasar.net and we will respond as quickly as possible.
You can also post in the ALCASAR forum in the ["Security"](https://adullact.net/forum/?group_id=450) section.
 
As your security issue is considered valid, a patch file will be post as soon as possible.
 
## Learning More About Security
 
To learn more about security in ALCASAR, please see the chapter 10 of the [exploitation documentation](https://alcasar.net/download)
/web/acc/phpsysinfo/data/ModelTranslation.txt
39,6 → 39,17
Mac13,1:Mac Studio M1 Max:Apple M1 Max
Mac13,2:Mac Studio M1 Ultra:Apple M1 Ultra
Mac14,2:MacBook Air M2:Apple M2
Mac14,3:Mac mini M2:Apple M2
Mac14,5:MacBook Pro M2 Max:Apple M2 Max
Mac14,6:MacBook Pro M2 Max:Apple M2 Max
Mac14,7:MacBook Pro M2:Apple M2
Mac14,8:MacBook Pro M2 Ultra:Apple M2 Ultra
Mac14,9:MacBook Pro M2 Pro:Apple M2 Pro
Mac14,10:MacBook Pro M2 Pro:Apple M2 Pro
Mac14,12:Mac mini M2 Pro:Apple M2 Pro
Mac14,13:Mac Studio M2 Max:Apple M2 Max
Mac14,14:Mac Studio M2 Ultra:Apple M2 Ultra
Mac14,15:MacBook Air 15" M2:Apple M2
MacBook1,1:MacBook Core Duo:Intel Core Duo T2400/T2500
MacBook2,1:MacBook Core 2 Duo:Intel Core 2 Duo T5600/T7200/T7400
MacBook3,1:MacBook Core 2 Duo:Intel Core 2 Duo T7300/T7500
/web/acc/phpsysinfo/data/cpus.ini
48,7 → 48,7
0x41,0xd09="Cortex-A73"
0x41,0xd0a="Cortex-A75"
0x41,0xd0b="Cortex-A76"
0x41,0xd0c="Neoverse N1"
0x41,0xd0c="Neoverse-N1"
0x41,0xd0d="Cortex-A77"
0x41,0xd0e="Cortex-A76AE"
0x41,0xd13="Cortex-R52"
56,7 → 56,8
0x41,0xd20="Cortex-M23"
0x41,0xd21="Cortex-M33"
0x41,0xd22="Cortex-M55"
0x41,0xd40="Neoverse V1"
0x41,0xd23="Cortex-M85"
0x41,0xd40="Neoverse-V1"
0x41,0xd41="Cortex-A78"
0x41,0xd42="Cortex-A78AE"
0x41,0xd43="Cortex-A65AE"
64,9 → 65,13
0x41,0xd46="Cortex-A510"
0x41,0xd47="Cortex-A710"
0x41,0xd48="Cortex-X2"
0x41,0xd49="Neoverse N2"
0x41,0xd4a="Neoverse E1"
0x41,0xd49="Neoverse-N2"
0x41,0xd4a="Neoverse-E1"
0x41,0xd4b="Cortex-A78C"
0x41,0xd4c="Cortex-X1C"
0x41,0xd4d="Cortex-A715"
0x41,0xd4e="Cortex-X3"
0x41,0xd4f="Neoverse-V2"
 
; Broadcom Corporation - ('B') cores.
0x42,0xf="Brahma B15"
/web/acc/phpsysinfo/data/distros.ini
3,38 → 3,61
; $Id: distros.ini 709 2012-12-05 11:20:40Z namiltd $
;
 
[Solaris SunOS]
[solaris sunos]
Image = "Solaris.png"
 
[OracleSolaris SunOS]
[oraclesolaris sunos]
Image = "Solaris.png"
 
[SmartOS SunOS]
[smartos sunos]
Image = "SmartOS.png"
 
[OpenSolaris SunOS]
[opensolaris sunos]
Image = "OpenSolaris.png"
 
[OpenIndiana SunOS]
[openindiana sunos]
Image = "OpenIndiana.png"
 
[OmniOS SunOS]
[omnios sunos]
Image = "OmniOS.png"
 
[OpenStorage SunOS]
[openstorage sunos]
Image = "NexentaStor.png"
Name = "NexentaStor"
 
[GoboLinux]
[openwrt]
Image = "OpenWRT.png"
Name = "OpenWrt"
Mode = "Detection"
Files = "/etc/openwrt_release"
Files2 = "/etc/openwrt_release"
;detected in "/etc/os-release"
 
[vmware photon os]
Image = "Photon.png"
Files = "/etc/photon-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[guix system]
Image = "Guix.png"
;detected in "/etc/os-release"
 
[gobolinux]
Image = "Gobo.png"
Name = "GoboLinux"
Files = "/etc/GoboLinuxVersion"
 
[SliTaz]
[slitaz]
Image = "SliTaz.png"
Name = "SliTaz"
Files = "/etc/slitaz-release"
 
[eisfair]
Image = "Eisfair.png"
;detected in "/etc/os-release"
 
[eisfair project]
Image = "Eisfair.png"
Files = "/etc/eisfair-system"
41,17 → 64,201
Files2 = "/etc/version"
;detected in "lsb_release -a"
 
[TinyCore]
[tinycore]
Image = "TinyCore.png"
Name = "Tiny Core Linux"
Files = "/usr/share/doc/tc/release.txt"
 
[Frugalware]
[venom linux]
Image = "Venom.png"
Name = "Venom Linux"
Files = "/etc/venom-release"
;detected in "/etc/os-release"
 
[linux plop]
Image = "Plop.png"
;detected in "/etc/os-release"
 
[frugalware]
Image = "Frugalware.png"
Files = "/etc/frugalware-release"
;detected in "/etc/os-release"
 
[MX]
[rbos]
Image = "RebeccaBlackOS.png"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[quemos]
Image = "QuemOS.png"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[rebeccablackos]
Image = "RebeccaBlackOS.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[q4os]
Image = "Q4OS.png"
Name = "Q4OS"
Files = "/etc/q4os_version"
;wrong in "lsb_release -a" Debian
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
 
[siduction]
Image = "Siduction.png"
Files = "/etc/siduction-version"
;wrong in "lsb_release -a" Debian
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
 
[sparkylinux]
Image = "Sparky.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[sparky]
Image = "Sparky.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[regata os]
Image = "Regata.png"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
 
[tuxedo]
Image = "Tuxedo.png"
Files = "/etc/tuxedo-os-version"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[ubuntu tuxedo]
Image = "Tuxedo.png"
;detected in "/etc/lsb-release"
 
[tuxedo os]
Image = "Tuxedo.png"
;detected in "/etc/os-release"
 
[ubuntu linspire]
Image = "Linspire.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[ubuntu lxle]
Image = "LXLE.png"
;detected in "lsb_release -a"
;wrong in "/etc/lsb-release" Ubuntu
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[ubuntu linux lite]
Image = "LinuxLite.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[ubuntu bodhi]
Image = "Bodhi.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[ubuntu linux kodachi]
Image = "Kodachi.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[ubuntu kodachi]
Image = "Kodachi.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[robolinux]
Image = "RoboLinux.png"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[ubuntu robolinux]
Image = "RoboLinux.png"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[feren os classic]
Image = "Feren.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[ubuntu feren]
Image = "Feren.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[debian gnu/linux armbian]
Image = "Armbian.png"
Name = "Armbian"
Mode = "Detection"
Files = "/etc/armbian-release;/etc/armbian-image-release"
Files2 = "/etc/armbian-release;/etc/armbian-image-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[debian elive]
Image = "Elive.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" debian
 
[elive]
Image = "Elive.png"
Mode = "Detection"
Files = "/etc/elive-version"
Files2 = "/etc/elive-version"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" debian
 
[debian neptune]
Image = "Neptune.png"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" debian
 
[neptune]
Image = "Neptune.png"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" debian
 
[kaisen]
Image = "Kaisen.png"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" debian
 
[kaisen gnu/linux]
Image = "Kaisen.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" debian
 
[deepin extix]
Image = "ExTiX.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" debian
 
[mx]
Image = "MX.png"
Files = "/etc/mx-version"
;detected in "lsb_release -a"
61,64 → 268,64
;wrong in "/etc/debian_version" Debian
 
; at the end because some distros may also have the same files (like MX)
[antiX]
[antix]
Image = "antiX.png"
Files = "/etc/antix-version"
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
 
[IPFire]
[ipfire]
Image = "IPFire.png"
;detected in "/etc/system-release"
 
[QTS]
[qts]
Image = "QTS.png"
Name = "QTS"
;detected in "/etc/config/uLinux.conf"
 
[4MLinux]
[4mlinux]
Image = "4MLinux.png"
Name = "4MLinux"
Files = "/etc/4MLinux-version"
 
[Milis Linux]
[milis linux]
Image = "Milis.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;not detected in "/etc/os-release"
;detected in "/etc/os-release"
 
[Lunar Linux]
[lunar linux]
Image = "Lunar.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[CRUX]
[crux]
Image = "Crux.png"
Mode = "Execute"
Files = "/usr/bin/crux"
 
[Omarine]
[omarine]
Image = "Omarine.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[Foresight]
[foresight]
Image = "Foresight.png"
;detected in "/etc/distro-release"
 
[Trustix]
[trustix]
Image = "Trustix.png"
Files = "/etc/trustix-release;/etc/trustix-version"
 
[NixOS]
[nixos]
Image = "NixOS.png"
;detected in "/etc/os-release"
 
[Free-EOS]
[free-eos]
Image = "FreeEOS.png"
Files = "/etc/eos-release;/etc/eos-version"
 
[NuTyX]
[nutyx]
Image = "NuTyX.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
128,22 → 335,82
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[Generations Linux]
[generations linux]
Image = "Generations.png"
;detected in "/etc/os-release"
 
[Artix]
[dahliaos]
Image = "dahliaOS.png"
;detected in "/etc/os-release"
 
[laclin]
Image = "Laclin.png"
Mode = "Detection"
Files = "/etc/laclin-release"
Files2 = "/etc/laclin-release"
;detected in "/etc/os-release" but wrong name Slackware
 
[artix]
Image = "Artix.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[Artix Linux]
[artix linux]
Image = "Artix.png"
Mode = "Detection"
Files = "/etc/artix-release"
;detected in "/etc/os-release"
 
[RebornOS]
[xerolinux]
Image = "XeroLinux.png"
Mode = "Detection"
Files = "/etc/xerolinux-release"
;detected in "/etc/os-release"
 
[xerolinux-kde]
Image = "XeroLinux.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/arch-release" none
 
[cachyos linux]
Image = "CachyOS.png"
;detected in "/etc/os-release"
 
[cachyos]
Image = "CachyOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/arch-release" none
 
[archcraft]
Image = "Archcraft.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" none
 
[snal linux]
Image = "Snal.png"
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" none
 
[snal]
Image = "Snal.png"
Name = "Snal Linux"
Files = "/etc/snal-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/arch-release" none
 
[archman]
Image = "Archman.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" none
 
[rebornos]
Image = "RebornOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
150,17 → 417,17
;wrong in "/etc/os-release" Arch
;wrong in "/etc/arch-release" Arch
 
[RebornOS Linux]
[rebornos linux]
Image = "RebornOS.png"
;wrong in "/etc/os-release"
 
[BluestarLinux]
[bluestarlinux]
Image = "Bluestar.png"
;detected in "/etc/lsb-release"
;wrong in "/etc/os-release" Arch
;wrong in "/etc/arch-release" Arch
 
[EndeavourOS]
[endeavouros]
Image = "EndeavourOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
167,7 → 434,7
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" Arch
 
[ArcoLinux]
[arcolinux]
Image = "Arco.png"
Mode = "Detection"
Files = "/etc/arcolinux-release"
176,17 → 443,49
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" Arch
 
[Garuda]
[garuda]
Image = "Garuda.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/arch-release" Arch
 
[Garuda Linux]
[garuda linux]
Image = "Garuda.png"
;detected in "/etc/os-release"
 
[MaboxLinux]
[ubuntu biglinux]
Image = "BigLinux.png"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[biglinux based in ubuntu]
Image = "BigLinux.png"
;detected in "/etc/os-release"
 
[biglinux based in ubuntu 19.04]
Image = "BigLinux.png"
;detected in "/etc/lsb-release"
 
[deepin biglinux]
Image = "BigLinux.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/deepin-version" Deepin
;wrong in "/etc/os-release" Deepin
;wrong in "/etc/debian_version" Debian
 
[biglinux based in manjaro linux]
Image = "BigLinux.png"
Name = "BigLinux"
Files = "/etc/big-release"
Mode = "Detection"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" Manjaro
;wrong in "/etc/manjaro-release" Manjaro
 
[maboxlinux]
Image = "Mabox.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
194,7 → 493,7
;wrong in "/etc/manjaro-release" Manjaro
;wrong in "/etc/arch-release" Arch | Manjaro
 
[Netrunner]
[netrunner]
Image = "Netrunner.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
201,37 → 500,18
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[NetrunnerSE]
[netrunnerse]
Image = "Netrunner.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[Netrunner Rolling]
[netrunner rolling]
Image = "Netrunner.png"
;detected in "/etc/os-release"
;wrong in "/etc/manjaro-release" Manjaro
 
[ManjaroLinux]
Image = "Manjaro.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[Manjaro Linux]
Image = "Manjaro.png"
Files = "/etc/manjaro-release"
;detected in "/etc/os-release"
 
[Manjaro-ARM]
Image = "Manjaro.png"
Name = "Manjaro ARM"
Files = "/etc/manjaro-arm-version"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" Arch
 
[VoidLinux]
[voidlinux]
Image = "Void.png"
;detected in "lsb_release -a""
 
239,68 → 519,74
Image = "Void.png"
;detected in "/etc/os-release"
 
[Arch]
[arch]
Image = "Arch.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[Arch Linux]
Image = "Arch.png"
Mode = "Analyse"
Files = "/etc/arch-release"
;detected in "/etc/os-release"
 
[Arch Linux ARM]
Image = "Arch.png"
;detected in "/etc/os-release"
 
[Cobalt]
[cobalt]
Image = "Cobalt.png"
Files = "/etc/cobalt-release"
 
[LinuxFromScratch]
[linuxfromscratch]
Image = "LFS.png"
Files = "/etc/lfs-release"
 
[Rubix]
[rubix]
Image = "Rubix.png"
Files = "/etc/rubix-version"
 
[Tails]
[tails]
Image = "Tails.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Tanglu]
[tanglu]
Image = "Tanglu.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[Tanglu GNU/Linux]
[tanglu gnu/linux]
Image = "Tanglu.png"
;detected in "/etc/os-release"
 
[Kali]
[gnoppix]
Image = "Gnoppix.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[kali]
Image = "Kali.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[Kali GNU/Linux]
[kali gnu/linux]
Image = "Kali.png"
;detected in "/etc/os-release"
 
[PureOS]
[urukos]
Image = "Uruk.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[pureos]
Image = "PureOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[PureOS GNU/Linux]
[pureos gnu/linux]
Image = "PureOS.png"
;detected in "/etc/os-release"
 
[Septor]
[septor]
Image = "Septor.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
307,7 → 593,7
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[SalentOS]
[salentos]
Image = "SalentOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
314,17 → 600,17
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Pop]
[pop]
Image = "Pop.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[Pop!_OS]
[pop!_os]
Image = "Pop.png"
;detected in "/etc/os-release"
 
[Mer]
[mer]
Image = "Mer.png"
Mode = "Analyse"
Files = "/etc/mer-release;/etc/meego-release;/etc/moblin-release"
331,7 → 617,7
;detected in "lsb_release -a"
;detected in "/etc/system-release"
 
[KaOS]
[kaos]
Image = "KaOS.png"
Files = "/etc/KaOS-release"
;detected in "lsb_release -a"
346,26 → 632,26
;detected in "/etc/os-release"
;detected in "/etc/system-release"
 
[CoreOS]
[coreos]
Image = "CoreOS.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[Container Linux by CoreOS]
[container linux by coreos]
Image = "Container.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[Parrot]
[parrot]
Image = "Parrot.png"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[Parrot OS]
[parrot os]
Image = "Parrot.png"
;detected in "/etc/os-release"
 
[BOSS]
[boss]
Image = "BOSS.png"
Name = "BOSS GNU/Linux"
Files = "/etc/boss_version"
372,15 → 658,15
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[BOSS GNU/Linux]
[boss gnu/linux]
Image = "BOSS.png"
;detected in "/etc/os-release"
 
[BOSS Server Beta]
[boss server beta]
Image = "BOSS.png"
;detected in "lsb_release -a"
 
[Solus]
[solus]
Image = "Solus.png"
Files = "/etc/solus-release"
;detected in "lsb_release -a"
387,11 → 673,11
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[Solus Operating System]
[solus operating system]
Image = "Solus.png"
;detected in "/etc/os-release"
 
[Canaima]
[canaima]
Image = "Canaima.png"
Name = "Canaima GNU/Linux"
Files = "/etc/canaima_version"
398,11 → 684,18
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[Canaima GNU/Linux]
[canaima gnu/linux]
Image = "Canaima.png"
;detected in "/etc/os-release"
 
[Semplice]
[ubuntu runtu]
Image = "Runtu.png"
;detected in "/etc/lsb-release"
;wrong detected in "lsb_release -a" Ubuntu
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
 
[semplice]
Image = "Semplice.png"
Name = "Semplice"
Files = "/etc/semplice_version"
411,15 → 704,18
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[SolydXK]
[solydxk]
Image = "SolydXK.png"
Name = "SolydXK"
Mode = "Detection"
Files = "/etc/solydxk/info"
Files2 = "/etc/solydxk/info"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/solydxk/info"
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
 
[HandyLinux]
[handylinux]
Image = "Handy.png"
Files = "/etc/handylinux_version"
;detected in "lsb_release -a"
426,14 → 722,18
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
 
[Parsix]
[parsix gnu/linux]
Image = "Parsix.png"
;detected in "/etc/os-release" but sometimes wrong version
;wrong in "/etc/debian_version" Debian
 
[parsix]
Image = "Parsix.png"
Files = "/etc/parsix-version"
;detected in "lsb_release -a"
;detected or wrong version in "/etc/os-release" | Parsix 4.0
;wrong in "/etc/debian_version" Debian
 
[Linaro]
[linaro]
Image = "Linaro.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
440,7 → 740,7
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Endless]
[endless]
Image = "Endless.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
447,18 → 747,24
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Uos]
[uos]
Image = "UOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[uos]
Image = "UOS.png"
[deepin]
Image = "Deepin.png"
Files = "/etc/deepin-version"
Mode = "Detection"
Files2 = "/etc/deepin-version"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[LinuxDeepin]
[linuxdeepin]
Image = "Deepin.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
465,7 → 771,7
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
 
[Ultimate_Edition]
[ultimate_edition]
Image = "UltimateEdition.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
478,7 → 784,7
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[elementary OS]
[elementary os]
Image = "elementaryOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
485,30 → 791,19
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Elementary]
Image = "elementaryOS.png"
[jingos]
Image = "JingOS.png"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[JingOS]
Image = "JingOS.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Jingos]
Image = "JingOS.png"
;detected in "lsb_release -a"
 
[jingos]
Image = "JingOS.png"
;detected in "/etc/lsb-release"
 
[KDE neon]
[kde neon]
Image = "KDEneon.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[KDE]
[kde]
Image = "KDEneon.png"
;detected in "lsb_release -a"
 
516,7 → 811,7
Image = "KDEneon.png"
;detected in "/etc/lsb-release"
 
[PearLinux]
[pearlinux]
Image = "Pear.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
523,7 → 818,7
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
 
[Pear Linux]
[pear linux]
Image = "Pear.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
530,21 → 825,18
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
 
[pearOS]
[pearos]
Image = "Pear.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;detected in "/etc/os-release" (simetimes wrong Ubuntu)
;wrong in "/etc/debian_version" Debian
 
[PearOS]
[neon pearos]
Image = "Pear.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
 
[SolusOS]
[solusos]
Image = "SolusOS.png"
Files = "/etc/solusos_version"
;detected in "lsb_release -a"
552,7 → 844,7
;wrong in "/etc/os-release" Debian GNU/Linux
;wrong in "/etc/debian_version" Debian
 
[LinuxMint]
[linuxmint]
Image = "Mint.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
559,19 → 851,15
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
 
[Linuxmint]
[linux mint]
Image = "Mint.png"
;detected in "lsb_release -a"
 
[Linux Mint]
Image = "Mint.png"
;detected in "/etc/os-release
 
[LMDE]
[lmde]
Image = "Mint.png"
;detected in "/etc/os-release"
 
[Trisquel]
[trisquel]
Image = "Trisquel.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
578,7 → 866,7
;wrong in "/etc/os-release" Ubuntu
;wrong in "/etc/debian_version" Debian
 
[Zorin]
[zorin]
Image = "Zorin.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
585,12 → 873,12
;wrong or almost in "/etc/os-release" Ubuntu | Zorin OS
;wrong in "/etc/debian_version" Debian
 
[Zorin OS]
[zorin os]
Image = "Zorin.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Peppermint]
[peppermint]
Image = "Peppermint.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
597,7 → 885,7
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Nitrux]
[nitrux]
Image = "Nitrux.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
604,17 → 892,27
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[MakuluLinux]
[ubuntu vanillaos]
Image = "Vanilla.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[vanillaos]
Image = "Vanilla.png"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[makululinux]
Image = "Makulu.png"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Ubuntu MakuluLinux]
[ubuntu makululinux]
Image = "Makulu.png"
;detected in "lsb_release -a"
 
[Linuxfx]
[linuxfx]
Image = "Linuxfx.png"
Name="Linuxfx"
Files = "/etc/fx.version"
622,47 → 920,63
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Ubuntu Linuxfx]
[ubuntu linuxfx]
Image = "Linuxfx.png"
;detected in "lsb_release -a"
 
[Ubuntu]
[ubuntu]
Image = "Ubuntu.png"
Test = "nolsbfirst"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/debian_version" Debian
 
[Chakra]
[chakra]
Image = "Chakra.png"
Files = "/etc/chakra-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[The Chakra-Project]
[the chakra-project]
Image = "Chakra.png"
;detected in "/etc/os-release"
 
[IYCC]
[iycc]
Image = "IYCC.png"
;detected in "/etc/lsb-release"
 
[HipServ]
[openeuler]
Image = "openEuler.png"
Files = "/etc/openEuler-release"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
;detected in "/etc/system-release"
 
[risios]
Image = "risiOS.png"
;detected in "lsb_release -a"
;detected in "/etc/fedora-release"
;detected in "/etc/os-release"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[hipserv]
Image = "HipServ.png"
;detected in "/etc/redhat-release"
 
[NeoKylin]
[neokylin]
Image = "NeoKylin.png"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[NeoKylin Linux Desktop]
[neokylin linux desktop]
Image = "NeoKylin.png"
Files = "/etc/neokylin-release;/etc/cs2c-release"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
 
[Mageia]
[mageia]
Image = "Mageia.png"
Files = "/etc/mageia-release"
;detected in "lsb_release -a"
672,130 → 986,155
;detected in "/etc/redhat-release"
;detected in "/etc/os-release"
 
[PLD Linux]
[pld linux]
Image = "PLD.png"
Files = "/etc/pld-release"
;detected in "/etc/os-release"
 
[LFS]
[lfs]
Image = "lfs.png"
Files = "/etc/lfs-release;/etc/lfs_version"
 
[HLFS]
[hlfs]
Image = "lfs.png"
Files = "/etc/hlfs-release;/etc/hlfs_version"
 
[Synology]
[synology]
Image = "Synology.png"
Mode = "Detection"
Files = "/etc/synoinfo.conf"
Files2 = "/etc/VERSION"
 
[Alpine]
[alpine]
Image = "Alpine.png"
Name = "Alpine"
Files = "/etc/alpine-release"
 
[Puppy]
[fatdog64 linux]
Image = "Fatdog.png"
;detected in "/etc/os-release"
 
[fatdog64]
Image = "Fatdog.png"
Name = "Fatdog64 Linux"
Files = "/etc/fatdog-version"
;detected in "/etc/DISTRO_SPECS"
 
[puppy]
Image = "Puppy.png"
Name = "Puppy"
;detected in "/etc/os-release"
;detected in "/etc/DISTRO_SPECS"
 
[Lucid]
[lucid]
Image = "Puppy.png"
Name = "Lucid Puppy"
;detected in "/etc/DISTRO_SPECS"
 
[Slacko Puppy]
[slacko puppy]
Image = "Puppy.png"
;detected in "/etc/DISTRO_SPECS"
 
[Wary Puppy]
[wary puppy]
Image = "Puppy.png"
;detected in "/etc/DISTRO_SPECS"
 
[Quirky]
[quirky]
Image = "EasyOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[Easy OS]
[easyos]
Image = "EasyOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[easy os]
Image = "EasyOS.png"
;detected in "/etc/DISTRO_SPECS"
 
[Easy Beaver]
[easy beaver]
Image = "EasyOS.png"
;detected in "/etc/DISTRO_SPECS"
 
[Easy Pyro64]
[easy pyro64]
Image = "EasyOS.png"
;detected in "/etc/DISTRO_SPECS"
 
[Easy Buster64]
[easy buster64]
Image = "EasyOS.png"
;detected in "/etc/DISTRO_SPECS"
 
[Turbolinux]
[easy dunfell64]
Image = "EasyOS.png"
;detected in "/etc/DISTRO_SPECS"
 
[easyos kirkstone64]
Image = "EasyOS.png"
;detected in "/etc/DISTRO_SPECS"
 
[turbolinux]
Image = "Turbo.png"
Files = "/etc/turbolinux-release"
 
[Amazon]
[amazon]
Image = "Amazon.png"
;detected in "/etc/system-release"
 
[AmazonAMI]
[amazonami]
Image = "Amazon.png"
;detected in "lsb_release -a"
 
[Amazon Linux AMI]
[amazon linux ami]
Image = "Amazon.png"
;detected in /etc/os-release
 
[RedFlag]
[redflag]
Image = "RedFlag.png"
Files = "/etc/redflag-release"
;detected in "/etc/system-release"
 
[Red Flag inWise]
[red flag inwise]
Image = "RedFlag.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[StartOS]
[startos]
Image = "StartOS.png"
Files = "/etc/startos-release"
;detected in "lsb_release -a"
 
[OpenELEC]
[openelec]
Image = "OpenELEC.png"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
 
[LibreELEC]
[libreelec]
Image = "LibreELEC.png"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
 
[Lakka]
[lakka]
Image = "Lakka.png"
;detected in "lsb_release -a"
;detected in "/etc/os-release"
 
[PisiLinux]
[pisilinux]
Image = "Pisi.png"
Files = "/etc/pisilinux-release"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[Pisi_Linux]
[pisi_linux]
Image = "Pisi.png"
;detected in "/etc/system-release"
 
[Springdale Linux]
[springdale linux]
Image = "Springdale.png"
;detected in "/etc/os-release"
 
[Springdale]
[springdale]
Image = "Springdale.png"
Files = "/etc/PU_IAS-release;/etc/puias-release;/etc/springdale-release"
;detected in "lsb_release -a"
802,7 → 1141,7
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[NethServer]
[nethserver]
Image = "NethServer.png"
Files = "/etc/nethserver-release"
;detected in "/etc/os-release"
810,7 → 1149,7
;wrong in "/etc/redhat-release" CentOS
;wrong in "/etc/system-release" CentOS
 
[SME]
[sme]
Image = "SMEServer.png"
Files = "/etc/e-smith-release"
;wrong in "/etc/centos-release" CentOS
817,53 → 1156,61
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[SMEServer]
[smeserver]
Image = "SMEServer.png"
;detected in "lsb_release -a"
 
[Scientific]
[koozali sme server]
Image = "SMEServer.png"
;detected in "/etc/os-release"
 
[scientific]
Image = "Scientific.png"
;detected in "lsb_release -a"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[ScientificSL]
[scientificsl]
Image = "Scientific.png"
;detected in "lsb_release -a"
 
[ScientificCERNSLC]
[scientificcernslc]
Image = "Scientific.png"
;detected in "lsb_release -a"
 
[ScientificFermi]
[scientificfermi]
Image = "Scientific.png"
;detected in "lsb_release -a"
 
[ScientificFermiLTS]
[scientificfermilts]
Image = "Scientific.png"
;detected in "lsb_release -a"
 
[ScientificSLF]
[scientificslf]
Image = "Scientific.png"
;detected in "lsb_release -a"
 
[ClearOS]
[clear linux os]
Image = "Clear.png"
;detected in "/etc/os-release"
 
[clearos]
Image = "ClearOS.png"
Files = "/etc/clearos-release"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[CloudLinuxServer]
[cloudlinuxserver]
Image = "Cloud.png"
;detected in "lsb_release -a"
 
[CloudLinux]
[cloudlinux]
Image = "Cloud.png"
Files = "/etc/CloudLinux-release"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[AlmaLinux]
[almalinux]
Image = "Alma.png"
Files = "/etc/almalinux-release"
;detected in "lsb_release -a"
872,11 → 1219,11
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[Virtuozzo Linux]
[virtuozzo linux]
Image = "Virtuozzo.png"
;detected in "/etc/os-release"
 
[Virtuozzo]
[virtuozzo]
Image = "Virtuozzo.png"
Files = "/etc/vzlinux-release"
;detected in "lsb_release -a"
883,11 → 1230,11
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[Rocky Linux]
[rocky linux]
Image = "Rocky.png"
;detected in "/etc/os-release"
 
[Rocky]
[rocky]
Image = "Rocky.png"
Files = "/etc/rocky-release"
;detected in "lsb_release -a"
894,7 → 1241,7
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[EuroLinux]
[eurolinux]
Image = "EuroLinux.png"
Files = "/etc/el-release"
;detected in "lsb_release -a"
902,41 → 1249,42
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[CentOSStream]
[centosstream]
Image = "CentOS.png"
;detected in "lsb_release -a"
 
[CentOS Stream]
[centos stream]
Image = "CentOS.png"
;detected in "/etc/os-release"
 
[CentOS Linux]
[centos linux]
Image = "CentOS.png"
;detected in "/etc/os-release"
 
; at the end because some distros may also have the same files (like SMEServer, AlmaLinux, NethServer)
[CentOS]
[centos]
Image = "CentOS.png"
Test = "nolsbfirst"
Files = "/etc/centos-release"
;detected in "lsb_release -a"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[Oracle]
[oracle]
Image = "Oracle.png"
Files = "/etc/oracle-release;/etc/enterprise-release"
;detected in "/etc/system-release"
;wrong in "/etc/redhat-release" RedHat
 
[OracleServer]
[oracleserver]
Image = "Oracle.png"
;detected in "lsb_release -a"
 
[EnterpriseEnterpriseServer]
[enterpriseenterpriseserver]
Image = "Oracle.png"
;detected in "lsb_release -a"
 
[PCLinuxOS]
[pclinuxos]
Image = "PCLinuxOS.png"
Files = "/etc/pclinuxos-release"
;detected in "lsb_release -a"
945,12 → 1293,12
;detected in "/etc/mandrake-release;/etc/mandrakelinux-release"
;detected in "/etc/redhat-release"
 
[Absolute]
[absolute]
Image = "Absolute.png"
;delected in "/etc/os-release"
;wrong in "/etc/slackware-version" Slackware
 
[Salix]
[salix]
Image = "Salix.png"
Mode = "Detection"
Files = "/etc/salix-update-notifier.conf"
958,30 → 1306,30
;wrong in "/etc/os-release" Slackware
;wrong in "/etc/slackware-version" Slackware
 
[Slax]
[slax]
Image = "Slax.png"
Files = "/etc/slax-version"
;wrong in "/etc/os-release" Slackware
;wrong in "/etc/slackware-version" Slackware
 
[SMS]
[sms]
Image = "SMS.png"
Files = "/etc/sms-version"
;detected in "/etc/os-release"
;wrong in "/etc/slackware-version" Slackware
 
[Porteus]
[porteus]
Image = "Porteus.png"
Files = "/etc/porteus-version"
;wrong in "/etc/os-release" Slackware
;wrong in "/etc/slackware-version" Slackware
 
[Vector]
[vector]
Image = "Vector.png"
Files = "/etc/vector-version"
;wrong in "/etc/slackware-version" Slackware
 
[Zenwalk]
[zenwalk]
Image = "Zenwalk.png"
Name = "Zenwalk"
Files = "/etc/zenwalk-version"
988,23 → 1336,23
;detected in "/etc/os-release"
;wrong in "/etc/slackware-version" Slackware
 
[Slackware]
[slackware]
Image = "Slackware.png"
Files = "/etc/slackware-release"
;detected in "/etc/os-release"
;detected in "/etc/slackware-version"
 
[Calculate]
[calculate]
Image = "Calculate.png"
;detected in "/etc/gentoo-release"
;wrong in "/etc/os-release" Gentoo
 
[Redcore]
[redcore]
Image = "Redcore.png"
;detected in "/etc/gentoo-release"
;detected in "/etc/os-release"
 
[Exherbo]
[exherbo]
Image = "Exherbo.png"
Name = "Exherbo Linux"
Mode = "Detection"
1011,13 → 1359,13
Files = "/etc/exherbo-release"
;detected in "/etc/os-release"
 
[Tizen]
[tizen]
Image = "Tizen.png"
Files = "/etc/tizen-release"
;detected in "/etc/system-release"
;detected in "/etc/os-release"
 
[Sabayon]
[sabayon]
Image = "Sabayon.png"
Files = "/etc/sabayon-release"
;detected in "lsb_release -a"
1026,7 → 1374,7
;detected in "/etc/os-release"
;wrong in "/etc/gentoo-release" Gentoo
 
[VortexBox]
[vortexbox]
Image = "VortexBox.png"
Name = "VortexBox"
Files = "/etc/vortexbox/vortexbox-version"
1035,7 → 1383,18
;wrong in "/etc/system-release" Fedora
;wrong in "/etc/os-release" Fedora
 
[Ultramarine]
[nobara]
Image = "Nobara.png"
Files = "/etc/nobara-release"
;detected in "lsb_release -a"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[nobara linux]
Image = "Nobara.png"
;detected in "/etc/os-release"
 
[ultramarine]
Image = "Ultramarine.png"
Files = "/etc/ultramarine-release"
;detected in "lsb_release -a"
1042,11 → 1401,11
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[Ultramarine Linux]
[ultramarine linux]
Image = "Ultramarine.png"
;detected in "/etc/os-release"
 
[ALT]
[alt]
Image = "ALT.png"
Files = "/etc/altlinux-release"
;detected in "/etc/fedora-release"
1053,21 → 1412,21
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[ALT Linux]
[alt linux]
Image = "ALT.png"
;detected in "/etc/os-release"
 
[Simply]
[simply]
Image = "ALT.png"
;detected in "/etc/fedora-release"
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[Simply Linux]
[simply linux]
Image = "ALT.png"
;detected in "/etc/os-release"
 
[Fuduntu]
[fuduntu]
Image = "Fuduntu.png"
Files = "/etc/fuduntu-release"
;detected in "lsb_release -a"
1076,32 → 1435,32
;detected in "/etc/redhat-release"
;detected in "/etc/system-release"
 
[gNewSense]
[gnewsense]
Image = "gNewSense.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[SteamOS]
[steamos]
Image = "SteamOS.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;wrong in "/etc/debian_version" Debian
 
[SteamOS GNU/Linux]
[steamos gnu/linux]
Image = "SteamOS.png"
;detected in "/etc/os-release"
 
[Raspbian]
[raspbian]
Image = "Raspbian.png"
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[Raspbian GNU/Linux]
[raspbian gnu/linux]
Image = "Raspbian.png"
;detected in "/etc/os-release"
 
[Devuan]
[devuan]
Image = "Devuan.png"
Name = "Devuan"
Files = "/etc/devuan_version"
1108,12 → 1467,13
;detected in "lsb_release -a"
;wrong in "/etc/debian_version" Debian
 
[Devuan GNU/Linux]
[devuan gnu/linux]
Image = "Devuan.png"
;detected in "/etc/os-release"
 
[Debian]
[debian]
Image = "Debian.png"
Test = "nolsbfirst"
Name = "Debian"
Files = "/etc/debian_release"
;detected in "lsb_release -a"
1120,47 → 1480,47
;detected in "/etc/lsb-release"
;detected in "/etc/debian_version"
 
[Debian GNU/Linux]
[debian gnu/linux]
Image = "Debian.png"
;detected in "/etc/os-release"
 
[openSUSE]
[opensuse]
Image = "openSUSE.png"
;detected in "/etc/os-release"
;detected in "/etc/SuSE-release"
 
[openSUSE Leap]
[opensuse leap]
Image = "openSUSE.png"
;detected in "/etc/os-release"
 
[openSUSE Tumbleweed]
[opensuse tumbleweed]
Image = "openSUSE.png"
;detected in "/etc/os-release"
 
[openSUSE project]
[opensuse project]
Image = "openSUSE.png"
;detected in "lsb_release -a"
 
[SUSE LINUX openSUSE]
[suse linux opensuse]
Image = "openSUSE.png"
;detected in "lsb_release -a"
 
[SUSE]
[suse]
Image = "SUSE.png"
;detected in "/etc/SuSE-release"
 
[SLES]
[sles]
Image = "SUSE.png"
;detected in "/etc/os-release"
 
; at the end because some distros may also have the same files (like openSUSE, SUSE)
[SUSE LINUX]
[suse linux]
Image = "SUSE.png"
Mode = "Analyse"
Files = "/etc/SuSE-release;/etc/UnitedLinux-release"
 
; at the end because some distros may also have the same files (like Sabayon, Calculate)
[Gentoo]
[gentoo]
Image = "Gentoo.png"
Mode = "Analyse"
Files = "/etc/gentoo-release"
1168,7 → 1528,7
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
 
[Qubes]
[qubes]
Image = "Qubes.png"
Files = "/etc/qubes-release"
;detected in "/etc/fedora-release"
1176,7 → 1536,7
;detected in "/etc/system-release"
;detected in "/etc/os-release"
 
[Korora]
[korora]
Image = "Korora.png"
;detected in "lsb_release -a"
;detected in "/etc/fedora-release"
1185,7 → 1545,7
;detected in "/etc/os-release"
 
; at the end because some distros may also have the same files (like Fuduntu, ALT, VortexBox, Qubes, Korora)
[Fedora]
[fedora]
Image = "Fedora.png"
Mode = "Analyse"
Files = "/etc/fedora-release"
1194,11 → 1554,11
;detected in "/etc/system-release"
;detected in "/etc/os-release"
 
[FedoraCore]
[fedoracore]
Image = "Fedora.png"
;detected in "/etc/lsb-release"
 
[OpenMandriva]
[openmandriva]
Image = "OpenMandriva.png"
;detected in "/etc/rosa-release"
;detected in "/etc/mandriva-release"
1207,43 → 1567,74
;detected in "/etc/distro-release"
;detected in "/etc/system-release"
 
[OpenMandriva Lx]
[openmandriva lx]
Image = "OpenMandriva.png"
;detected in "/etc/os-release"
 
[OpenMandrivaLinux]
[openmandrivalinux]
Image = "OpenMandriva.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[ROSA MarathonLinux]
[rosa marathonlinux]
Image = "ROSA.png"
;detected in "/etc/lsb-release"
 
[RosaDesktop.Marathon]
[rosadesktop.marathon]
Image = "ROSA.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[RosaDesktop.Fresh]
[rosadesktop.fresh]
Image = "ROSA.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[ROSA Desktop Fresh]
[rosa desktop fresh]
Image = "ROSA.png"
;detected in "/etc/os-release"
 
[ROSA Marathon]
[rosa marathon]
Image = "ROSA.png"
;detected in "/etc/os-release"
 
[ROSAEnterpriseServer]
[rosaenterpriseserver]
Image = "ROSA.png"
;detected in "lsb_release -a"
 
[manjarolinux]
Image = "Manjaro.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
[manjaro-arm]
Image = "Manjaro.png"
Name = "Manjaro ARM"
Files = "/etc/manjaro-arm-version"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
;detected in "/etc/os-release"
;wrong in "/etc/arch-release" Arch
 
; at the end because some distros may also have the same files (like BigLinux, Mabox, Netrunner)
[manjaro linux]
Image = "Manjaro.png"
Files = "/etc/manjaro-release"
;detected in "/etc/os-release"
 
[arch linux arm]
Image = "Arch.png"
;detected in "/etc/os-release"
 
; at the end because some distros may also have the same files (like XeroLinux-KDE, CachyOS, Archcraft, Snal, Archman, RebornOS, BluestarLinux, EndeavourOS, Arco, Garuda, BigLinux, Mabox, Manjaro ARM)
[arch linux]
Image = "Arch.png"
Mode = "Analyse"
Files = "/etc/arch-release"
;detected in "/etc/os-release"
 
; at the end because some distros may also have the same files (like OpenMandriva)
[ROSA]
[rosa]
Image = "ROSA.png"
Mode = "Analyse"
Files = "/etc/rosa-release"
1253,13 → 1644,13
;detected in "/etc/mandrake-release;/etc/mandrakelinux-release"
;detected in "/etc/redhat-release"
 
[MandrivaLinux]
[mandrivalinux]
Image = "Mandrake.png"
;detected in "lsb_release -a"
;detected in "/etc/lsb-release"
 
; at the end because some distros may also have the same files (like Mageia, PCLinuxOS, ROSA, OpenMandriva)
[Mandriva]
[mandriva]
Image = "Mandrake.png"
Mode = "Analyse"
Files = "/etc/mandriva-release"
1267,38 → 1658,38
;detected in "/etc/redhat-release"
 
; at the end because some distros may also have the same files (like Mandriva, Mageia, PCLinuxOS, ROSA, OpenMandriva)
[Mandrake]
[mandrake]
Image = "Mandrake.png"
Mode = "Analyse"
Files = "/etc/mandrake-release;/etc/mandrakelinux-release"
 
; at the end because some distros may also have the same files (like SMEServer, Fuduntu, ALT, VortexBox, Qubes, Korora, Fedora, CentOS, Oracle, Scientific, CloudLinux, Mandrake, MandrivaLinux, Mageia, PCLinuxOS, ROSA, OpenMandriva, HipServ, NeoKylin, Springdale, Rocky, EuroLinux, AlmaLinux, Virtuozzo, NethServer)
[RedHat]
[redhat]
Image = "RedHat.png"
Mode = "Analyse"
Files = "/etc/redhat-release;/etc/redhat_version"
;detected in "/etc/system-release"
 
[Red Hat Enterprise Linux Server]
[red hat enterprise linux server]
Image = "RedHat.png"
;detected in "/etc/os-release"
 
[Red Hat Enterprise Linux Everything]
[red hat enterprise linux everything]
Image = "RedHat.png"
;detected in "/etc/os-release"
 
[RedHatEnterpriseES]
[redhatenterprisees]
Image = "RedHat.png"
;detected in "lsb_release -a"
 
[RedHatEnterpriseAS]
[redhatenterpriseas]
Image = "RedHat.png"
;detected in "lsb_release -a"
 
[RedHatEnterpriseServer]
[redhatenterpriseserver]
Image = "RedHat.png"
;detected in "lsb_release -a"
 
[RedHatEnterpriseClient]
[redhatenterpriseclient]
Image = "RedHat.png"
;detected in "lsb_release -a"
/web/acc/phpsysinfo/data/osnames.ini
44,6 → 44,7
11="Big Sur"
12="Monterey"
13="Ventura"
14="Sonoma"
 
[win10]
10240="1507"
/web/acc/phpsysinfo/gfx/htmlrest.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/free-eos.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Deleted: svn:mime-type
-image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/iycc.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Deleted: svn:mime-type
-image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Archcraft.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Archman.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Armbian.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/BigLinux.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Bodhi.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/CachyOS.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Clear.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/EasyOS.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/web/acc/phpsysinfo/gfx/images/Elive.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/ExTiX.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Fatdog.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Feren.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Gnoppix.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Guix.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Kaisen.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Kodachi.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/LXLE.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Laclin.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Linspire.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/LinuxLite.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Neptune.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Nobara.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/OpenWRT.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Photon.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Plop.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Q4OS.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/QuemOS.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/RebeccaBlackOS.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Regata.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/RoboLinux.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Runtu.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/SMEServer.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/web/acc/phpsysinfo/gfx/images/Siduction.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Sparky.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Tuxedo.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Uruk.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Vanilla.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/Venom.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/XeroLinux.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/dahliaOS.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/openEuler.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/gfx/images/risiOS.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/web/acc/phpsysinfo/includes/class.CommonFunctions.inc.php
844,7 → 844,8
'ACRNACRNACRN' => 'acrn', // ACRN hypervisor
'TCGTCGTCGTCG' => 'qemu', // QEMU
'QNXQVMBSQG' => 'qnx', // QNX hypervisor
'VBoxVBoxVBox' => 'oracle' // Oracle VM VirtualBox
'VBoxVBoxVBox' => 'oracle', // Oracle VM VirtualBox
'SRESRESRESRE' => 'sre' // LMHS SRE hypervisor
);
$shortvendorid = trim(preg_replace('/[\s!\.]/', '', $vendor_data));
if (($shortvendorid !== "") && isset($vidarray[$shortvendorid])) {
/web/acc/phpsysinfo/includes/class.Parser.inc.php
131,7 → 131,9
}
}
}
if (CommonFunctions::executeProgram('df', '-k '.$df_param, $df, PSI_DEBUG) && ($df!=="")) {
$df = "";
CommonFunctions::executeProgram('df', '-k '.$df_param, $df, PSI_DEBUG);
if ($df!=="") {
$df = preg_split("/\n/", $df, -1, PREG_SPLIT_NO_EMPTY);
if ($get_inodes && PSI_SHOW_INODES) {
if (CommonFunctions::executeProgram('df', '-i '.$df_param, $df2, PSI_DEBUG)) {
/web/acc/phpsysinfo/includes/mb/class.lmsensors.inc.php
69,24 → 69,24
}
}
$data = array();
if (preg_match("/^(.+):(.+).C\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)\)/", $line, $data)) {
if (preg_match("/^(.+):(.+)[^\w\r\n\t]C\s*\((.+)=(.+)[^\w\r\n\t]C,(.+)=(.+)[^\w\r\n\t]C\)(.*)\)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+).C\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)/", $line, $data)) {
} elseif (preg_match("/^(.+):(.+)[^\w\r\n\t]C\s*\((.+)=(.+)[^\w\r\n\t]C,(.+)=(.+)[^\w\r\n\t]C\)(.*)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+).C\s*\((.+)=(.+).C\)(.*)/", $line, $data)) {
} elseif (preg_match("/^(.+):(.+)[^\w\r\n\t]C\s*\((.+)=(.+)[^\w\r\n\t]C\)(.*)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)\)/", $line, $data)) {
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+)[^\w\r\n\t]C,(.+)=(.+)[^\w\r\n\t]C\)(.*)\)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+).C,(.+)=(.+).C\)(.*)/", $line, $data)) {
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+)[^\w\r\n\t]C,(.+)=(.+)[^\w\r\n\t]C\)(.*)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+).C\)(.*)/", $line, $data)) {
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+)[^\w\r\n\t]C\)(.*)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+).C\s*\(/", $line, $data)) {
} elseif (preg_match("/^(.+):(.+)[^\w\r\n\t]C\s*\(/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+).C\s+\D+/", $line, $data)) {
} elseif (preg_match("/^(.+):(.+)[^\w\r\n\t]C\s+\D+/", $line, $data)) {
;
} else {
preg_match("/^(.+):(.+).C\r?$/", $line, $data);
preg_match("/^(.+):(.+)[^\w\r\n\t]C\r?$/", $line, $data);
}
if (count($data)>2) {
foreach ($data as $key=>$value) {
233,20 → 233,22
}
}
$data = array();
if (preg_match("/^(.+):(.+) V\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)\)/", $line, $data)) {
if (preg_match("/^(.+):(.+) (m?)V\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)\)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+) V\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)/", $line, $data)) {
} elseif (preg_match("/^(.+):(.+) (m?)V\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)\)/", $line, $data)) {
} elseif (preg_match("/^(.+):\s*(FAULT)()\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)\)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):\s*(FAULT)\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)/", $line, $data)) {
} elseif (preg_match("/^(.+):\s*(FAULT)()\s*\((.+)=(.+) V,(.+)=(.+) V\)(.*)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+) V\s*\(/", $line, $data)) {
} elseif (preg_match("/^(.+):\s*(.+) (m?)V\s*()()\((.+)=(.+) V\)(.*)/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+) V\s+\D+/", $line, $data)) {
} elseif (preg_match("/^(.+):(.+) (m?)V\s*\(/", $line, $data)) {
;
} elseif (preg_match("/^(.+):(.+) (m?)V\s+\D+/", $line, $data)) {
;
} else {
preg_match("/^(.+):(.+) V\r?$/", $line, $data);
preg_match("/^(.+):(.+) (m?)V\r?$/", $line, $data);
}
 
if (count($data)>2) {
259,13 → 261,17
}
$dev = new SensorDevice();
$dev->setName($data[1].$sname);
$dev->setValue($data[2]);
if (isset($data[4])) {
$dev->setMin($data[4]);
if (isset($data[3]) && ($data[3]==='m') && is_float($data[2])) {
$dev->setValue($data[2]/1000);
} else {
$dev->setValue($data[2]);
}
if (isset($data[6])) {
$dev->setMax($data[6]);
if (isset($data[5]) && ($data[5]!=='')) {
$dev->setMin($data[5]);
}
if (isset($data[7])) {
$dev->setMax($data[7]);
}
if (preg_match("/\s(ALARM)\s*$/", $line, $evbuf) || (($evbuf[1] = $dev->getValue()) === 'FAULT')) {
$dev->setEvent($evbuf[1]);
}
/web/acc/phpsysinfo/includes/os/class.Linux.inc.php
306,9 → 306,12
if ($ip != $result) {
$this->sys->setHostname(gethostbyaddr($ip));
}
} elseif (CommonFunctions::executeProgram('hostname', '', $ret)) {
} elseif (CommonFunctions::executeProgram('hostname', '', $ret, false)) {
$this->sys->setHostname($ret);
} elseif (CommonFunctions::executeProgram('uname', '-n', $ret, false)) {
$this->sys->setHostname($ret);
}
 
}
}
 
443,6 → 446,10
}
}
}
if (CommonFunctions::rfts('/proc/device-tree/compatible', $compatible, 1, 4096, false) && ($compatible === "qemu,pseries")) {
$this->sys->setVirtualizer('qemu'); // QEMU
$novm = false;
}
}
}
}
692,6 → 699,9
// IBM/S390
$bufr = preg_replace('/\ncpu number\s*:\s*(\d+)\r?\ncpu MHz dynamic\s*:\s*(\d+)/m', "\nprocessor:$1\nclock:$2", $bufr);
 
// machine
$bufr = preg_replace('/(\nmachine\s*:\s*[^\r\n]+)/m', "$1\n", $bufr);
 
$processors = preg_split('/\s?\n\s?\n/', trim($bufr));
 
//first stage
724,6 → 734,7
case 'cpu variant':
$_vari = $arrBuff1;
break;
case 'machine':
case 'hardware':
$_hard = $arrBuff1;
break;
1344,7 → 1355,7
for ($i = 0; $i < $total; $i++) {
if (CommonFunctions::rfts($i2cdevices[$i], $buf, 1, 4096, false) && (trim($buf) != "")) {
$dev = new HWDevice();
$dev->setName(trim($buf));
$dev->setName(trim($buf, ": \n\r\t\v\x00"));
$this->sys->setI2cDevices($dev);
}
}
1387,9 → 1398,9
$nsize[$locid] = $i - $nlocate[$locid];
}
} elseif ($count > 1) {
if (isset($nlocate[2]) && isset($nsize[2])) {
if (isset($nlocate[2]) && isset($nsize[2]) && (($nvname=trim(substr($buf, $nlocate[2], $nsize[2]))) !== '')) {
$dev = new HWDevice();
$dev->setName(trim(substr($buf, $nlocate[2], $nsize[2])));
$dev->setName($nvname);
if (defined('PSI_SHOW_DEVICES_INFOS') && (PSI_SHOW_DEVICES_INFOS)) {
if (isset($nlocate[4]) && isset($nsize[4])) {
if (preg_match('/\/\s*([0-9\.]+)\s*(B|KB|MB|GB|TB|PB)$/', str_replace(',', '.', trim(substr($buf, $nlocate[4], $nsize[4]))), $tmpbuf)) {
1448,10 → 1459,17
$dev->setTxBytes($stats[8]);
$dev->setErrors($stats[2] + $stats[10]);
$dev->setDrops($stats[3] + $stats[11]);
if (((defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS)) || (defined('PSI_SHOW_NETWORK_BRIDGE') && PSI_SHOW_NETWORK_BRIDGE))
&& CommonFunctions::executeProgram('ip', 'addr show '.trim($dev_name), $bufr2, PSI_DEBUG) && (trim($bufr2)!="")) {
if (defined('PSI_SHOW_NETWORK_BRIDGE') && PSI_SHOW_NETWORK_BRIDGE && preg_match("/^\d+:\s+([^\s:@]+).+\s+master\s+(\S+)/", $bufr2, $brbufr)) {
$dev->setBridge($brbufr[2]);
}
} else {
$bufr2 = "";
}
if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS)) {
$macaddr = "";
if ((CommonFunctions::executeProgram('ip', 'addr show '.trim($dev_name), $bufr2, PSI_DEBUG) && ($bufr2!=""))
|| CommonFunctions::executeProgram('ifconfig', trim($dev_name).' 2>/dev/null', $bufr2, PSI_DEBUG)) {
if (($bufr2!="") || CommonFunctions::executeProgram('ifconfig', trim($dev_name).' 2>/dev/null', $bufr2, PSI_DEBUG)) {
$bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY);
foreach ($bufe2 as $buf2) {
// if (preg_match('/^'.trim($dev_name).'\s+Link\sencap:Ethernet\s+HWaddr\s(\S+)/i', $buf2, $ar_buf2)
1468,7 → 1486,8
}
} elseif (preg_match('/^\s+inet\saddr:(\S+)\s+P-t-P:(\S+)/i', $buf2, $ar_buf2)
|| preg_match('/^\s+inet\s+(\S+)\s+netmask.+destination\s+(\S+)/i', $buf2, $ar_buf2)
|| preg_match('/^\s+inet\s+([^\/\s]+).*peer\s+([^\/\s]+).*\s+scope\s((global)|(host))/i', $buf2, $ar_buf2)) {
|| preg_match('/^\s+inet\s+([^\/\s]+).*peer\s+([^\/\s]+).*\s+scope\s((global)|(host))/i', $buf2, $ar_buf2)
/*|| preg_match('/^\s+link\/sit\s+([^\/\s]+).*peer\s+([^\/\s]+)/i', $buf2, $ar_buf2)*/) {
if ($ar_buf2[1] != $ar_buf2[2]) {
$dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1].";:".$ar_buf2[2]);
} else {
1514,7 → 1533,7
$speedinfo = "";
$dev = null;
foreach ($lines as $line) {
if (preg_match("/^\d+:\s+([^\s:]+)/", $line, $ar_buf)) {
if (preg_match("/^\d+:\s+([^\s:@]+)(.*)/", $line, $ar_buf)) {
if ($was) {
if ($macaddr != "") {
$dev->setInfo($macaddr.($dev->getInfo()?';'.$dev->getInfo():''));
1528,12 → 1547,35
$macaddr = "";
$dev = new NetDevice();
$dev->setName($ar_buf[1]);
if (CommonFunctions::executeProgram('ip', '-s link show '.$ar_buf[1], $bufr2, PSI_DEBUG) && ($bufr2!="")
if (defined('PSI_SHOW_NETWORK_BRIDGE') && PSI_SHOW_NETWORK_BRIDGE
&& isset($ar_buf[2]) && (($ar_buf[2] = trim($ar_buf[2])) !=="") && preg_match("/\s+master\s+(\S+)/", $ar_buf[2], $bufr2)) {
$dev->setBridge($bufr2[1]);
}
if (CommonFunctions::executeProgram('ip', '-s link show '.$ar_buf[1], $bufr2, false) && ($bufr2!="")
&& preg_match("/\n\s+RX:\s[^\n]+\n\s+(\d+)\s+\d+\s+(\d+)\s+(\d+)[^\n]+\n\s+TX:\s[^\n]+\n\s+(\d+)\s+\d+\s+(\d+)\s+(\d+)/m", $bufr2, $ar_buf2)) {
$dev->setRxBytes($ar_buf2[1]);
$dev->setTxBytes($ar_buf2[4]);
$dev->setErrors($ar_buf2[2]+$ar_buf2[5]);
$dev->setDrops($ar_buf2[3]+$ar_buf2[6]);
} elseif (CommonFunctions::executeProgram('ifconfig', $ar_buf[1], $bufr2, false) && ($bufr2!="")) {
if (preg_match('/\sRX bytes:(\d+)\s/im', $bufr2, $ar_buf2)) {
$dev->setRxBytes($ar_buf2[1]);
}
if (preg_match('/\sTX bytes:(\d+)\s/im', $bufr2, $ar_buf2)) {
$dev->setTxBytes($ar_buf2[1]);
}
$errors = 0;
$drops = 0;
if (preg_match('/\sRX packets:\d+\serrors:(\d+)\sdropped:(\d+)/im', $bufr2, $ar_buf2)) {
$errors +=$ar_buf2[1];
$drops +=$ar_buf2[2];
}
if (preg_match('/\sTX packets:\d+\serrors:(\d+)\sdropped:(\d+)/im', $bufr2, $ar_buf2)) {
$errors +=$ar_buf2[1];
$drops +=$ar_buf2[2];
}
$dev->setErrors($errors);
$dev->setDrops($drops);
}
$was = true;
if (defined('PSI_SHOW_NETWORK_INFOS') && (PSI_SHOW_NETWORK_INFOS)) {
1563,7 → 1605,8
$macaddr = "";
}
}
} elseif (preg_match('/^\s+inet\s+([^\/\s]+).*peer\s+([^\/\s]+).*\s+scope\s((global)|(host))/i', $line, $ar_buf2)) {
} elseif (preg_match('/^\s+inet\s+([^\/\s]+).*peer\s+([^\/\s]+).*\s+scope\s((global)|(host))/i', $line, $ar_buf2)
/*|| preg_match('/^\s+link\/sit\s+([^\/\s]+).*peer\s+([^\/\s]+)/i', $line, $ar_buf2)*/) {
if ($ar_buf2[1] != $ar_buf2[2]) {
$dev->setInfo(($dev->getInfo()?$dev->getInfo().';':'').$ar_buf2[1].";:".$ar_buf2[2]);
} else {
1797,6 → 1840,9
if (!$list) {
return;
}
$_ignore_lsb_release = false;
$_Distrib = "";
$_DistribIcon = "";
// We have the '2>/dev/null' because Ubuntu gives an error on this command which causes the distro to be unknown
if (CommonFunctions::executeProgram('lsb_release', '-a 2>/dev/null', $distro_info, PSI_DEBUG) && strlen($distro_info) > 0) {
$distro_tmp = preg_split("/\r?\n/", $distro_info, -1, PREG_SPLIT_NO_EMPTY);
1807,29 → 1853,31
$distro[trim($info_tmp[0])] = trim($info_tmp[1]);
}
}
 
if (!isset($distro['Distributor ID']) && !isset($distro['Description'])) { // Systems like StartOS
if (isset($distro_tmp[0]) && ($distro_tmp[0] !== null) && (trim($distro_tmp[0]) != "")) {
$this->sys->setDistribution(trim($distro_tmp[0]));
$_Distrib = trim($distro_tmp[0]);
if (preg_match('/^(\S+)\s*/', $distro_tmp[0], $id_buf)
&& isset($list[trim($id_buf[1])]['Image'])) {
$this->sys->setDistributionIcon($list[trim($id_buf[1])]['Image']);
&& isset($list[strtolower(trim($id_buf[1]))]['Image'])) {
$_DistribIcon = $list[strtolower(trim($id_buf[1]))]['Image'];
// set ignore lsb_release for some distributions
if (isset($list[strtolower(trim($id_buf[1]))]['Test']) && ($list[strtolower(trim($id_buf[1]))]['Test'] === "nolsbfirst")) $_ignore_lsb_release = true;
}
}
} else {
if (isset($distro['Description']) && ($distro['Description'] != "n/a") && isset($distro['Distributor ID']) && $distro['Distributor ID']=="Neon") { // Neon systems
$distro_tmp = preg_split("/\s/", $distro['Description'], -1, PREG_SPLIT_NO_EMPTY);
$distro['Distributor ID'] = $distro_tmp[0];
if (isset($distro['Description'])) {
if (preg_match('/^NAME=\s*"?([^"\r\n]+)"?\s*$/', $distro['Description'], $name_tmp)) {
$distro['Description'] = trim($name_tmp[1]);
} elseif (($distro['Description']==="Rolling Release") && isset($distro['Distributor ID']) && ($distro['Distributor ID'] != "n/a")) {
$distro['Description'] = $distro['Distributor ID']." ".$distro['Description'];
}
}
if (isset($distro['Description'])
&& preg_match('/^NAME=\s*"?([^"\r\n]+)"?\s*$/', $distro['Description'], $name_tmp)) {
$distro['Description'] = trim($name_tmp[1]);
}
if (isset($distro['Description'])
&& ($distro['Description'] != "n/a")
&& (!isset($distro['Distributor ID'])
|| (($distro['Distributor ID'] != "n/a")
&& ($distro['Description'] != $distro['Distributor ID'])))) {
$this->sys->setDistribution($distro['Description']);
$_Distrib = $distro['Description'];
if (isset($distro['Release']) && ($distro['Release'] != "n/a")
&& ($distro['Release'] != $distro['Description']) && strstr($distro['Release'], ".")){
if (preg_match("/^(\d+)\.[0]+$/", $distro['Release'], $match_buf)) {
1838,42 → 1886,67
$tofind = $distro['Release'];
}
if (!preg_match("/^".$tofind."[\s\.]|[\(\[]".$tofind."[\.\)\]]|\s".$tofind."$|\s".$tofind."[\s\.]/", $distro['Description'])) {
$this->sys->setDistribution($this->sys->getDistribution()." ".$distro['Release']);
$_Distrib .= " ".$distro['Release'];
}
}
} elseif (isset($distro['Distributor ID'])) {
if ($distro['Distributor ID'] != "n/a") {
$this->sys->setDistribution($distro['Distributor ID']);
$_Distrib = $distro['Distributor ID'];
if (isset($distro['Release']) && ($distro['Release'] != "n/a")) {
$this->sys->setDistribution($this->sys->getDistribution()." ".$distro['Release']);
$_Distrib .= " ".$distro['Release'];
}
if (isset($distro['Codename']) && ($distro['Codename'] != "n/a")) {
$this->sys->setDistribution($this->sys->getDistribution()." (".$distro['Codename'].")");
$_Distrib .= " (".$distro['Codename'].")";
}
} elseif (isset($distro['Description']) && ($distro['Description'] != "n/a")) {
$this->sys->setDistribution($distro['Description']);
$_Distrib = $distro['Description'];
}
}
if (isset($distro['Distributor ID'])) {
$distrib = $distro['Distributor ID'];
$distrib2 = $distrib;
$distrib3 = $distrib;
if (isset($distro['Description'])) {
$distarr = preg_split("/\s/", $distro['Description'], -1, PREG_SPLIT_NO_EMPTY);
if (isset($distarr[0])) {
if ($distrib != "n/a") {
$distrib .= ' '.$distarr[0];
$distrib2 .= ' '.$distarr[0];
} else {
$distrib = $distarr[0];
$distrib2 = $distarr[0];
}
}
if (isset($distarr[1])) {
if ($distrib != "n/a") {
$distrib3 .= ' '.$distarr[0].' '.$distarr[1];
} else {
$distrib3 = $distarr[0].' '.$distarr[1];
}
}
}
if (isset($list[$distrib]['Image'])) {
$this->sys->setDistributionIcon($list[$distrib]['Image']);
} elseif (($distro['Distributor ID'] != "n/a") && isset($list[$distro['Distributor ID']]['Image'])) {
$this->sys->setDistributionIcon($list[$distro['Distributor ID']]['Image']);
if (($distrib!==$distrib3) && isset($list[strtolower($distrib3)]['Image'])) {
$_DistribIcon = $list[strtolower($distrib3)]['Image'];
// set ignore lsb_release for some distributions
if (isset($list[strtolower($distrib3)]['Test']) && ($list[strtolower($distrib3)]['Test'] === "nolsbfirst")) $_ignore_lsb_release = true;
} elseif (($distrib!==$distrib2) && isset($list[strtolower($distrib2)]['Image'])) {
$_DistribIcon = $list[strtolower($distrib2)]['Image'];
// set ignore lsb_release for some distributions
if (isset($list[strtolower($distrib2)]['Test']) && ($list[strtolower($distrib2)]['Test'] === "nolsbfirst")) $_ignore_lsb_release = true;
} elseif (($distrib!=="n/a") && isset($list[strtolower($distrib)]['Image'])) {
$_DistribIcon = $list[strtolower($distrib)]['Image'];
// set ignore lsb_release for some distributions
if (isset($list[strtolower($distrib)]['Test']) && ($list[strtolower($distrib)]['Test'] === "nolsbfirst")) $_ignore_lsb_release = true;
}
}
}
} else {
}
 
if (!$_ignore_lsb_release) { // don't ignore lsb_release
if ($_Distrib !== "") $this->sys->setDistribution(preg_replace("/ - Version:| Build:| Release| version| build| based in Ubuntu/i", "", $_Distrib));
if ($_DistribIcon !== "") $this->sys->setDistributionIcon($_DistribIcon);
}
 
// if the distribution is still unknown
if ($this->sys->getDistribution() == "Linux") {
/* default error handler */
if (function_exists('errorHandlerPsi')) {
restore_error_handler();
1885,10 → 1958,13
// Fall back in case 'lsb_release' does not exist but exist /etc/lsb-release
if (CommonFunctions::fileexists($filename="/etc/lsb-release")
&& CommonFunctions::rfts($filename, $buf, 0, 4096, false)
&& preg_match('/^DISTRIB_ID="?([^"\r\n]+)/m', $buf, $id_buf)) {
&& (preg_match('/^DISTRIB_ID="?([^"\r\n]+)/m', $buf, $id_buf) || preg_match('/^DISTRIB_DESCRIPTION="?([^"\r\n]+)/m', $buf, $id_buf))) {
if (preg_match('/^DISTRIB_DESCRIPTION="?([^"\r\n]+)/m', $buf, $desc_buf)
&& (trim($desc_buf[1])!=trim($id_buf[1]))) {
$this->sys->setDistribution(trim($desc_buf[1]));
if ($desc_buf[1]==="Rolling Release") {
$desc_buf[1] = $id_buf[1]." ".$desc_buf[1];
}
$this->sys->setDistribution(preg_replace("/ - Version:| Build:| Release| version| build| based in Ubuntu/i", "", trim($desc_buf[1])));
if (preg_match('/^DISTRIB_RELEASE="?([^"\r\n]+)/m', $buf, $vers_buf)
&& (trim($vers_buf[1])!=trim($desc_buf[1])) && strstr($vers_buf[1], ".")){
if (preg_match("/^(\d+)\.[0]+$/", trim($vers_buf[1]), $match_buf)) {
1900,9 → 1976,26
$this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1]));
}
}
$distrib = trim($id_buf[1]);
$distrib2 = $distrib;
$distrib3 = $distrib;
$distarr = preg_split("/\s/", trim($desc_buf[1]), -1, PREG_SPLIT_NO_EMPTY);
if (isset($distarr[0])) {
$distrib2 .= ' '.$distarr[0];
}
if (isset($distarr[1])) {
$distrib3 .= ' '.$distarr[0].' '.$distarr[1];
}
if (($distrib!==$distrib3) && isset($list[strtolower($distrib3)]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower($distrib3)]['Image']);
} elseif (($distrib!==$distrib2) && isset($list[strtolower($distrib2)]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower($distrib2)]['Image']);
} elseif (($distrib!=="n/a") && isset($list[strtolower($distrib)]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower($distrib)]['Image']);
}
} else {
if (isset($list[trim($id_buf[1])]['Name'])) {
$this->sys->setDistribution(trim($list[trim($id_buf[1])]['Name']));
if (isset($list[strtolower(trim($id_buf[1]))]['Name'])) {
$this->sys->setDistribution(trim($list[strtolower(trim($id_buf[1]))]['Name']));
} else {
$this->sys->setDistribution(trim($id_buf[1]));
}
1912,10 → 2005,10
if (preg_match('/^DISTRIB_CODENAME="?([^"\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." (".trim($vers_buf[1]).")");
}
if (isset($list[strtolower(trim($id_buf[1]))]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower(trim($id_buf[1]))]['Image']);
}
}
if (isset($list[trim($id_buf[1])]['Image'])) {
$this->sys->setDistributionIcon($list[trim($id_buf[1])]['Image']);
}
} else { // otherwise find files specific for distribution
foreach ($list as $section=>$distribution) {
if (!isset($distribution['Files'])) {
1933,13 → 2026,19
} else {
if (!CommonFunctions::rfts($filename, $buf, 1, 4096, false)) {
$buf = "";
if (isset($distribution['Mode'])&&(strtolower($distribution['Mode'])=="analyse")) {
break;
}
} elseif (isset($distribution['Mode'])&&(strtolower($distribution['Mode'])=="analyse")) {
if (preg_match('/^(\S+)\s*/', preg_replace('/^Red\s+/', 'Red', $buf), $id_buf)
if (preg_match('/^(\S+)\s*/', preg_replace('/^red\s+/', 'red', strtolower($buf)), $id_buf)
&& isset($list[trim($id_buf[1])]['Image'])) {
$distro = $list[trim($id_buf[1])];
}
}
}
if (($buf !== null) && (trim($buf) !== "")) {
$buf = preg_replace("/ - Version:| Build:| Release| version| build/i", "", $buf);
}
if (isset($distro['Image'])) {
$this->sys->setDistributionIcon($distro['Image']);
}
1951,7 → 2050,7
}
} else {
if (($buf === null) || (trim($buf) == "")) {
$this->sys->setDistribution($section);
$this->sys->setDistribution(preg_replace('/linux/', 'Linux', ucwords($section)));
} else {
$this->sys->setDistribution(trim($buf));
}
1972,6 → 2071,29
$distr2.=' ('.$dat_buf[1].')';
}
$this->sys->setDistribution($this->sys->getDistribution()." ".$distr2);
} elseif (preg_match('/^elive-codename:\s*([^\r\n]+)/m', $buf, $cod_buf)
&& preg_match('/^elive-version:\s*([^\r\n]+)/m', $buf, $ver_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." ".trim($cod_buf[1])." ".trim($ver_buf[1]));
} elseif (preg_match('/^VERSION=["\']?([^"\'\r\n]+)/im', $buf, $vers_buf)
|| preg_match('/^VERSION_ID=["\']?([^"\'\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1]));
} elseif (preg_match('/^DISTRIB_ID=[\'"]?([^\'"\r\n]+)/m', $buf, $id_buf)) {
if (preg_match('/^DESCRIPTION="?([^"\r\n]+)/m', $buf, $desc_buf)
&& (trim($desc_buf[1])!=trim($id_buf[1]))) {
$this->sys->setDistribution(trim($desc_buf[1]));
} else {
if (isset($list[strtolower(trim($id_buf[1]))]['Name'])) {
$this->sys->setDistribution(trim($list[strtolower(trim($id_buf[1]))]['Name']));
} else {
$this->sys->setDistribution(trim($id_buf[1]));
}
if (preg_match('/^RELEASE="?([^"\r\n]+)/m', $buf, $vers_buf) || preg_match('/^DISTRIB_RELEASE=[\'"]?([^\'"\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1]));
}
if (preg_match('/^CODENAME="?([^"\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." (".trim($vers_buf[1]).")");
}
}
} else {
$distr2=trim(substr($buf, 0, strpos($buf, "\n")));
if (($distr2 !== null) && ($distr2 != "")) {
1990,24 → 2112,105
}
// if the distribution is still unknown
if ($this->sys->getDistribution() == "Linux") {
if (CommonFunctions::fileexists($filename="/etc/DISTRO_SPECS")
if ($_ignore_lsb_release) { // if lsb_release was ignored
if ($_Distrib !== "") $this->sys->setDistribution(preg_replace("/ - Version:| Build:| Release| version| build| based in Ubuntu/i", "", $_Distrib));
if ($_DistribIcon !== "") $this->sys->setDistributionIcon($_DistribIcon);
}
}
// if the distribution is still unknown
if ($this->sys->getDistribution() == "Linux") {
if (((defined('PSI_EMU_PORT') && CommonFunctions::executeProgram('cat', '/etc/os-release', $buf, false))
|| (!defined('PSI_EMU_PORT') && CommonFunctions::fileexists($filename="/etc/os-release") && CommonFunctions::rfts($filename, $buf, 0, 4096, false)))
&& (preg_match('/^TAILS_VERSION_ID="?([^"\r\n]+)/m', $buf, $tid_buf) || preg_match('/^NAME=["\']?([^"\'\r\n]+)/m', $buf, $id_buf) || preg_match('/^DISTRIB_ID=["\']?([^"\'\r\n]+)/m', $buf, $id_buf))) {
if (preg_match('/^TAILS_VERSION_ID="?([^"\r\n]+)/m', $buf, $tid_buf)) {
if (preg_match('/^TAILS_PRODUCT_NAME="?([^"\r\n]+)/m', $buf, $desc_buf)) {
$this->sys->setDistribution(trim($desc_buf[1])." ".trim($tid_buf[1]));
} else {
if (isset($list['tails']['Name'])) {
$this->sys->setDistribution(trim($list['tails']['Name'])." ".trim($tid_buf[1]));
} else {
$this->sys->setDistribution('Tails'." ".trim($tid_buf[1]));
}
}
$this->sys->setDistributionIcon($list['tails']['Image']);
} else {
$addversion = false;
$distrib = trim($id_buf[1]);
if (preg_match('/^PRETTY_NAME=["\']?([^"\'\r\n]+)/m', $buf, $desc_buf)
&& !preg_match('/\$/', $desc_buf[1]) // if is not defined by variable
&& ($distrib!==trim($desc_buf[1]))) {
if (isset($list[strtolower($distrib)]['Name']) && !preg_match("/".$list[strtolower($distrib)]['Name']."/i", trim($desc_buf[1]))) {
$this->sys->setDistribution($list[strtolower($distrib)]['Name'] ." ". preg_replace("/ - Version:| Build:| Release| version| build| based in Ubuntu/i", "", trim($desc_buf[1])));
} else {
$this->sys->setDistribution(preg_replace("/ - Version:| Build:| Release| version| build| based in Ubuntu/i", "", trim($desc_buf[1])));
}
$distrib2 = $distrib;
$distrib3 = $distrib;
$distarr = preg_split("/\s/", trim($desc_buf[1]), -1, PREG_SPLIT_NO_EMPTY);
if (isset($distarr[0])) {
$distrib2 .= ' '.$distarr[0];
}
if (isset($distarr[1])) {
$distrib3 .= ' '.$distarr[0].' '.$distarr[1];
}
if (($distrib!==$distrib3) && isset($list[strtolower($distrib3)]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower($distrib3)]['Image']);
if (count($distarr) == 2) {
$addversion = true;
}
} elseif (($distrib!==$distrib2) && isset($list[strtolower($distrib2)]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower($distrib2)]['Image']);
if (count($distarr) == 1) {
$addversion = true;
}
} elseif (($distrib!=="n/a") && isset($list[strtolower($distrib)]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower($distrib)]['Image']);
}
} else {
if (isset($list[strtolower($distrib)]['Name'])) {
$this->sys->setDistribution(trim($list[strtolower($distrib)]['Name']));
} else {
$this->sys->setDistribution($distrib);
}
if (isset($list[strtolower($distrib)]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower($distrib)]['Image']);
}
$addversion = true;
}
if ($addversion) {
if (preg_match('/^VERSION=["\']?([^"\'\r\n]+)/m', $buf, $vers_buf)
|| preg_match('/^VERSION_ID=["\']?([^"\'\r\n]+)/m', $buf, $vers_buf)
|| preg_match('/^DISTRIB_RELEASE=["\']?([^"\'\r\n]+)/m', $buf, $vers_buf)
|| preg_match('/^IMAGE_VERSION=["\']?([^"\'\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1]));
}
if (!strstr($this->sys->getDistribution(), "(") && (preg_match('/^VERSION_CODENAME="?([^"\r\n]+)/m', $buf, $vers_buf)
|| preg_match('/^DISTRIB_CODENAME="?([^"\r\n]+)/m', $buf, $vers_buf))) {
$this->sys->setDistribution($this->sys->getDistribution()." (".trim($vers_buf[1]).")");
}
}
}
} elseif (CommonFunctions::fileexists($filename="/etc/DISTRO_SPECS")
&& CommonFunctions::rfts($filename, $buf, 0, 4096, false)
&& preg_match('/^DISTRO_NAME=\'(.+)\'/m', $buf, $id_buf)) {
if (isset($list[trim($id_buf[1])]['Name'])) {
$dist = trim($list[trim($id_buf[1])]['Name']);
&& preg_match('/^DISTRO_NAME=["\']([^"\']+)/m', $buf, $id_buf)) {
if (isset($list[strtolower(trim($id_buf[1]))]['Name'])) {
$dist = trim($list[strtolower(trim($id_buf[1]))]['Name']);
} else {
$dist = trim($id_buf[1]);
}
if (preg_match('/^DISTRO_VERSION=([^#\n\r]+)/m', $buf, $vers_buf)) {
if (preg_match('/^DISTRO_VERSION=([^$#\n\r]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution(trim($dist." ".trim($vers_buf[1])));
} else {
$this->sys->setDistribution($dist);
}
if (isset($list[trim($id_buf[1])]['Image'])) {
$this->sys->setDistributionIcon($list[trim($id_buf[1])]['Image']);
if (isset($list[strtolower(trim($id_buf[1]))]['Image'])) {
$this->sys->setDistributionIcon($list[strtolower(trim($id_buf[1]))]['Image']);
} else {
if (isset($list['Puppy']['Image'])) {
$this->sys->setDistributionIcon($list['Puppy']['Image']);
if (isset($list['puppy']['Image'])) {
$this->sys->setDistributionIcon($list['puppy']['Image']);
if (!preg_match("/puppy/i", $dist = $this->sys->getDistribution())) {
$this->sys->setDistribution("Puppy ".$dist);
}
}
}
} elseif ((CommonFunctions::fileexists($filename="/etc/distro-release")
2016,82 → 2219,23
|| (CommonFunctions::fileexists($filename="/etc/system-release")
&& CommonFunctions::rfts($filename, $buf, 1, 4096, false)
&& ($buf !== null) && (trim($buf) != ""))) {
$this->sys->setDistribution(trim($buf));
if (preg_match('/^(\S+)\s*/', preg_replace('/^Red\s+/', 'Red', $buf), $id_buf)
$this->sys->setDistribution(preg_replace("/ - Version:| Build:| Release| version| build| based in Ubuntu/i", "", trim($buf)));
if (preg_match('/^(\S+)\s*/', preg_replace('/^red\s+/', 'red', strtolower($buf)), $id_buf)
&& isset($list[trim($id_buf[1])]['Image'])) {
$this->sys->setDistributionIcon($list[trim($id_buf[1])]['Image']);
}
} elseif (CommonFunctions::fileexists($filename="/etc/solydxk/info")
&& CommonFunctions::rfts($filename, $buf, 0, 4096, false)
&& preg_match('/^DISTRIB_ID="?([^"\r\n]+)/m', $buf, $id_buf)) {
if (preg_match('/^DESCRIPTION="?([^"\r\n]+)/m', $buf, $desc_buf)
&& (trim($desc_buf[1])!=trim($id_buf[1]))) {
$this->sys->setDistribution(trim($desc_buf[1]));
} else {
if (isset($list[trim($id_buf[1])]['Name'])) {
$this->sys->setDistribution(trim($list[trim($id_buf[1])]['Name']));
} else {
$this->sys->setDistribution(trim($id_buf[1]));
}
if (preg_match('/^RELEASE="?([^"\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1]));
}
if (preg_match('/^CODENAME="?([^"\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." (".trim($vers_buf[1]).")");
}
}
if (isset($list[trim($id_buf[1])]['Image'])) {
$this->sys->setDistributionIcon($list[trim($id_buf[1])]['Image']);
} else {
$this->sys->setDistributionIcon($list['SolydXK']['Image']);
}
} elseif (CommonFunctions::fileexists($filename="/etc/os-release")
&& CommonFunctions::rfts($filename, $buf, 0, 4096, false)
&& (preg_match('/^TAILS_VERSION_ID="?([^"\r\n]+)/m', $buf, $tid_buf)
|| preg_match('/^NAME=["\']?([^"\'\r\n]+)/m', $buf, $id_buf))) {
if (preg_match('/^TAILS_VERSION_ID="?([^"\r\n]+)/m', $buf, $tid_buf)) {
if (preg_match('/^TAILS_PRODUCT_NAME="?([^"\r\n]+)/m', $buf, $desc_buf)) {
$this->sys->setDistribution(trim($desc_buf[1])." ".trim($tid_buf[1]));
} else {
if (isset($list['Tails']['Name'])) {
$this->sys->setDistribution(trim($list['Tails']['Name'])." ".trim($tid_buf[1]));
} else {
$this->sys->setDistribution('Tails'." ".trim($tid_buf[1]));
}
}
$this->sys->setDistributionIcon($list['Tails']['Image']);
} else {
if (preg_match('/^PRETTY_NAME=["\']?([^"\'\r\n]+)/m', $buf, $desc_buf)
&& !preg_match('/\$/', $desc_buf[1])) { // if is not defined by variable
$this->sys->setDistribution(trim($desc_buf[1]));
} else {
if (isset($list[trim($id_buf[1])]['Name'])) {
$this->sys->setDistribution(trim($list[trim($id_buf[1])]['Name']));
} else {
$this->sys->setDistribution(trim($id_buf[1]));
}
if (preg_match('/^VERSION=["\']?([^"\'\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1]));
} elseif (preg_match('/^VERSION_ID=["\']?([^"\'\r\n]+)/m', $buf, $vers_buf)) {
$this->sys->setDistribution($this->sys->getDistribution()." ".trim($vers_buf[1]));
}
}
if (isset($list[trim($id_buf[1])]['Image'])) {
$this->sys->setDistributionIcon($list[trim($id_buf[1])]['Image']);
}
}
} elseif (CommonFunctions::fileexists($filename="/etc/debian_version")) {
if (!CommonFunctions::rfts($filename, $buf, 1, 4096, false)) {
$buf = "";
}
if (isset($list['Debian']['Image'])) {
$this->sys->setDistributionIcon($list['Debian']['Image']);
if (isset($list['debian']['Image'])) {
$this->sys->setDistributionIcon($list['debian']['Image']);
}
if (isset($list['Debian']['Name'])) {
if (isset($list['debian']['Name'])) {
if (($buf === null) || (trim($buf) == "")) {
$this->sys->setDistribution($list['Debian']['Name']);
$this->sys->setDistribution($list['debian']['Name']);
} else {
$this->sys->setDistribution($list['Debian']['Name']." ".trim($buf));
$this->sys->setDistribution($list['debian']['Name']." ".trim($buf));
}
} else {
if (($buf === null) || (trim($buf) == "")) {
2104,14 → 2248,14
if (!CommonFunctions::rfts($filename, $buf, 1, 4096, false)) {
$buf = "";
}
if (isset($list['Slackware']['Image'])) {
$this->sys->setDistributionIcon($list['Slackware']['Image']);
if (isset($list['slackware']['Image'])) {
$this->sys->setDistributionIcon($list['slackware']['Image']);
}
if (isset($list['Slackware']['Name'])) {
if (isset($list['slackware']['Name'])) {
if (($buf === null) || (trim($buf) == "")) {
$this->sys->setDistribution($list['Slackware']['Name']);
$this->sys->setDistribution($list['slackware']['Name']);
} else {
$this->sys->setDistribution($list['Slackware']['Name']." ".trim($buf));
$this->sys->setDistribution($list['slackware']['Name']." ".trim($buf));
}
} else {
if (($buf === null) || (trim($buf) == "")) {
2125,11 → 2269,11
&& preg_match("/^Rsync\sModel\s*=\s*QNAP/m", $buf)
&& preg_match("/^Version\s*=\s*([\d\.]+)\r?\nBuild\sNumber\s*=\s*(\S+)/m", $buf, $ver_buf)) {
$buf = $ver_buf[1]."-".$ver_buf[2];
if (isset($list['QTS']['Image'])) {
$this->sys->setDistributionIcon($list['QTS']['Image']);
if (isset($list['qts']['Image'])) {
$this->sys->setDistributionIcon($list['qts']['Image']);
}
if (isset($list['QTS']['Name'])) {
$this->sys->setDistribution($list['QTS']['Name']." ".trim($buf));
if (isset($list['qts']['Name'])) {
$this->sys->setDistribution($list['qts']['Name']." ".trim($buf));
} else {
$this->sys->setDistribution(trim($buf));
}
/web/acc/phpsysinfo/includes/os/class.SunOS.inc.php
405,7 → 405,7
if (CommonFunctions::rfts('/etc/release', $buf, 1, 4096, false) && (trim($buf)!="")) {
$this->sys->setDistribution(trim($buf));
$list = @parse_ini_file(PSI_APP_ROOT."/data/distros.ini", true);
if ($list && preg_match('/^(\S+)\s*/', preg_replace('/^Open\s+/', 'Open', preg_replace('/^Oracle\s+/', 'Oracle', trim($buf))), $id_buf) && isset($list[$distid=(trim($id_buf[1].' SunOS'))]['Image'])) {
if ($list && preg_match('/^(\S+)\s*/', preg_replace('/^open\s+/', 'open', preg_replace('/^oracle\s+/', 'oracle', strtolower(trim($buf)))), $id_buf) && isset($list[$distid=(trim($id_buf[1].' sunos'))]['Image'])) {
$this->sys->setDistributionIcon($list[$distid]['Image']);
if (isset($list[trim($distid)]['Name'])) {
$this->sys->setDistribution(trim($list[$distid]['Name']).' '.$this->sys->getDistribution());
/web/acc/phpsysinfo/includes/plugin/class.PSI_Plugin.inc.php
86,10 → 86,11
*/
private function _getconfig()
{
if ((!defined('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_ACCESS')) &&
(!defined('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_FILE')) &&
(!defined('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_SHOW_SERIAL'))) {
$this->global_error->addError("phpsysinfo.ini", "Config for plugin ".$this->_plugin_name." not exist!");
if ((strtoupper($this->_plugin_name) !== 'DISKLOAD') &&
(!defined('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_ACCESS')) &&
(!defined('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_FILE')) &&
(!defined('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_SHOW_SERIAL'))) {
$this->global_error->addError("phpsysinfo.ini", "Config for plugin ".$this->_plugin_name." not exist!");
}
}
 
131,8 → 132,10
$dom->appendChild($root);
$this->xml = new SimpleXMLExtended(simplexml_import_dom($dom), $enc);
$plugname = strtoupper($this->_plugin_name);
if (((PSI_OS == 'WINNT') || (PSI_OS == 'Linux')) &&
defined('PSI_PLUGIN_'.$plugname.'_WMI_HOSTNAME') &&
if ((PSI_OS == 'Linux') && defined('PSI_PLUGIN_'.$plugname.'_SSH_HOSTNAME') &&
(!defined('PSI_SSH_HOSTNAME') || (PSI_SSH_HOSTNAME != constant('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_SSH_HOSTNAME')))) {
$this->xml->addAttribute('Hostname', constant('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_SSH_HOSTNAME'));
} elseif (((PSI_OS == 'WINNT') || (PSI_OS == 'Linux')) && defined('PSI_PLUGIN_'.$plugname.'_WMI_HOSTNAME') &&
(!defined('PSI_WMI_HOSTNAME') || (PSI_WMI_HOSTNAME != constant('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_WMI_HOSTNAME')))) {
$this->xml->addAttribute('Hostname', constant('PSI_PLUGIN_'.strtoupper($this->_plugin_name).'_WMI_HOSTNAME'));
}
/web/acc/phpsysinfo/includes/to/device/class.NetDevice.inc.php
68,6 → 68,13
private $_info = null;
 
/**
* string with bridge
*
* @var string
*/
private $_bridge = null;
 
/**
* transmitted bytes rate
*
* @var int
236,7 → 243,34
{
$this->_info = $info;
}
 
/**
* Returns $_bridge.
*
* @see NetDevice::$_bridge
*
* @return String
*/
public function getBridge()
{
return $this->_bridge;
}
 
/**
* Sets $_bridge.
*
* @param String $bridge bridge string
*
* @see NetDevice::$_bridge
*
* @return void
*/
public function setBridge($bridge)
{
$this->_bridge = $bridge;
}
 
/**
* Returns $_rxRate.
*
* @see NetDevice::$_rxRate
/web/acc/phpsysinfo/includes/to/device/class.UPSDevice.inc.php
63,7 → 63,7
/**
* temperature of the ups
*
* @var int
* @var string
*/
private $_temperatur = null;
 
91,7 → 91,7
/**
* line volt
*
* @var int
* @var float
*/
private $_lineVoltage = null;
 
105,7 → 105,7
/**
* current load of the ups in percent
*
* @var int
* @var float
*/
private $_load = null;
 
119,7 → 119,7
/**
* current battery volt
*
* @var int
* @var float
*/
private $_batteryVoltage = null;
 
126,7 → 126,7
/**
* current charge in percent of the battery
*
* @var int
* @var float
*/
private $_batterCharge = null;
 
149,7 → 149,7
*
* @see UPSDevice::$_batterCharge
*
* @return integer
* @return float
*/
public function getBatterCharge()
{
159,7 → 159,7
/**
* Sets $_batterCharge.
*
* @param int $batterCharge battery charge
* @param float $batterCharge battery charge
*
* @see UPSDevice::$_batterCharge
*
201,7 → 201,7
*
* @see UPSDevice::$_batteryVoltage
*
* @return int
* @return float
*/
public function getBatteryVoltage()
{
211,7 → 211,7
/**
* Sets $_batteryVoltage.
*
* @param int $batteryVoltage battery volt
* @param float $batteryVoltage battery volt
*
* @see UPSDevice::$_batteryVoltage
*
279,7 → 279,7
*
* @see UPSDevice::$_lineVoltage
*
* @return int
* @return float
*/
public function getLineVoltage()
{
289,7 → 289,7
/**
* Sets $_lineVoltage.
*
* @param int $lineVoltage line voltage
* @param float $lineVoltage line voltage
*
* @see UPSDevice::$_lineVoltage
*
331,7 → 331,7
*
* @see UPSDevice::$_load
*
* @return int
* @return float
*/
public function getLoad()
{
341,7 → 341,7
/**
* Sets $_load.
*
* @param int $load current load
* @param float $load current load
*
* @see UPSDevice::$_load
*
513,7 → 513,7
*
* @see UPSDevice::$_temperatur
*
* @return int
* @return string
*/
public function getTemperatur()
{
523,7 → 523,7
/**
* Sets $_temperatur.
*
* @param int $temperatur temperature
* @param string $temperatur temperature
*
* @see UPSDevice::$_temperatur
*
/web/acc/phpsysinfo/includes/xml/class.XML.inc.php
231,8 → 231,12
}
$device->addAttribute('Err', $dev->getErrors());
$device->addAttribute('Drops', $dev->getDrops());
if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS && $dev->getInfo())
if (defined('PSI_SHOW_NETWORK_BRIDGE') && PSI_SHOW_NETWORK_BRIDGE && $dev->getBridge()) {
$device->addAttribute('Bridge', $dev->getBridge());
}
if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS && $dev->getInfo()) {
$device->addAttribute('Info', $dev->getInfo());
}
}
}
}
293,6 → 297,8
$virtstring .= 'virtualbox';
} elseif ($virtkey === 'zvm') {
$virtstring .= 'z/vm';
} elseif ($virtkey === 'sre') {
$virtstring .= 'lmhs sre';
} else {
$virtstring .= $virtkey;
}
927,7 → 933,9
$plugins = array($this->_plugin);
}
foreach ($plugins as $plugin) {
if (!$this->_complete_request || !defined('PSI_PLUGIN_'.strtoupper($plugin).'_WMI_HOSTNAME') ||
if (!$this->_complete_request ||
(!defined('PSI_PLUGIN_'.strtoupper($plugin).'_SSH_HOSTNAME') && !defined('PSI_PLUGIN_'.strtoupper($plugin).'_WMI_HOSTNAME')) ||
(defined('PSI_SSH_HOSTNAME') && (PSI_SSH_HOSTNAME == constant('PSI_PLUGIN_'.strtoupper($plugin).'_SSH_HOSTNAME'))) ||
(defined('PSI_WMI_HOSTNAME') && (PSI_WMI_HOSTNAME == constant('PSI_PLUGIN_'.strtoupper($plugin).'_WMI_HOSTNAME')))) {
$object = new $plugin($this->_sysinfo->getEncoding());
$object->execute();
/web/acc/phpsysinfo/js/jQuery/README
4,7 → 4,7
 
jquery.js
---------
VERSION : 1.12.4-ff3fix-ff2fix
VERSION : v1.12.4-ff3fix-ff2fix-CVE_2015_9251fix-CVE_2019_11358fix
URL : http://jquery.com/
DESC : jQuery is a fast, concise, JavaScript Library that simplifies how you traverse HTML documents, handle
events, perform animations, and add Ajax interactions to your web pages.
13,7 → 13,7
 
jquery.dataTables.js
--------------------
VERSION : 1.8.2+jquery1.9fix+parseJSONfix2+bindfix+samesitefix
VERSION : 1.8.2+jquery1.9fix+parseJSONfix2+bindfix+samesitefix+noeval
URL : http://plugins.jquery.com/project/DataTables
DESC : dataTables is a jQuery plugin for turning a standard HTML table with THEAD and TBODY tags into a sortable
table without page refreshes.
21,7 → 21,7
 
jquery.nyroModal.js
-------------------
VERSION : 1.6.2+jquery1.8fix+bindfix
VERSION : 1.6.2+jquery1.8fix+bindfix+ff2fix
URL : http://plugins.jquery.com/project/nyroModal
DESC : nyroModal is a high customizable modal window plugin.
USED : provide a modal dialog, that is shown when errors are found during execution of the php parsers, or lets say
50,7 → 50,7
 
jquery.ifixpng.js
-------------------
VERSION : 2.1 (23/04/2008)+jquery1.8fix
VERSION : 2.1 (23/04/2008)+jquery1.9fix
URL : http://jquery.khurshid.com
DESC : Designed to fix that problem by applying appropriate filters to user specified elements, while keeping all element tags intact.
USED : used for the entire userinterface
/web/acc/phpsysinfo/js/jQuery/README_bootstrap
3,7 → 3,7
 
jquery.js
---------
VERSION : 1.12.4-ff3fix-ff2fix
VERSION : v1.12.4-ff3fix-ff2fix-CVE_2015_9251fix-CVE_2019_11358fix
URL : http://jquery.com/
DESC : jQuery is a fast, concise, JavaScript Library that simplifies how you traverse HTML documents, handle
events, perform animations, and add Ajax interactions to your web pages.
/web/acc/phpsysinfo/js/jQuery/jquery.dataTables.js
1,6 → 1,6
/*
* File: jquery.dataTables.js
* Version: 1.8.2+jquery1.9fix+parseJSONfix2+bindfix+samesitefix
* Version: 1.8.2+jquery1.9fix+parseJSONfix2+bindfix+samesitefix+noeval
* Description: Paginate, search and sort HTML tables
* Author: Allan Jardine (www.sprymedia.co.uk)
* Created: 28/3/2008
6376,6 → 6376,7
if ( iLength+10 > 4096 ) /* Magic 10 for padding */
{
var aCookies =document.cookie.split(';');
var sData;
for ( var i=0, iLen=aCookies.length ; i<iLen ; i++ )
{
if ( aCookies[i].indexOf( sBaseName ) != -1 )
6382,7 → 6383,11
{
/* It's a DataTables cookie, so eval it and check the time stamp */
var aSplitCookie = aCookies[i].split('=');
try { oData = eval( '('+decodeURIComponent(aSplitCookie[1])+')' ); }
try {
sData = decodeURIComponent(aSplitCookie[1]);
oData = (typeof JSON.parse == 'function') ?
JSON.parse( sData.replace(/'/g, '"') ) : $.parseJSON( sData.replace(/'/g, '"') ); }
//try { oData = eval( '('+decodeURIComponent(aSplitCookie[1])+')' ); }
catch( e ) { continue; }
if ( typeof oData.iCreate != 'undefined' && oData.iCreate < iOldTime )
/web/acc/phpsysinfo/js/phpSysInfo/phpsysinfo.js
29,6 → 29,13
showCPUListExpanded, showCPUInfoExpanded, showNetworkInfosExpanded, showMemoryInfosExpanded, showNetworkActiveSpeed, showCPULoadCompact, showTotals, increaseWidth, oldnetwork = [];
 
/**
* Fix potential XSS vulnerability in jQuery
*/
jQuery.htmlPrefilter = function( html ) {
return html;
};
 
/**
* Fix PNG loading on IE6 or below
*/
function PNGload(png) {
121,7 → 128,7
} else {
$('link[rel*=style][title]').each(function getTitle(i) {
if (this.getAttribute('title') === 'PSI_Template') {
this.setAttribute('href', './templates/' + template + ".css");
this.setAttribute('href', './templates/' + template + ".css");
}
});
}
621,11 → 628,22
* @param {Number} size barclass
* @return {String} HTML string which contains the full layout of the bar
*/
function createBar(size, barclass) {
function createBar(size, barclass, sizeused) {
var percsize = 0, percsizeused = 0;
if (barclass === undefined) {
barclass = "bar";
}
return "<div class=\"" + barclass + "\" style=\"float:left; width: " + Math.max(Math.min(Math.round(size), 100), 0) + "px;\">&nbsp;</div>&nbsp;" + size + "%";
percsize = Math.max(Math.min(Math.ceil(size), 100), 0);
if (sizeused === undefined) {
percsizeused = percsize;
} else {
percsizeused = Math.max(Math.min(Math.ceil(sizeused), size), 0);
}
if (percsizeused == percsize) {
return "<div class=\"" + barclass + "\" style=\"float:left; width: " + percsizeused + "px;\">&nbsp;</div>&nbsp;" + size + "%";
} else {
return "<div class=\"" + barclass + "\" style=\"float:left; width: " + percsizeused + "px;\">&nbsp;</div><div class=\"barrest\" style=\"float:left; width: " + (percsize-percsizeused) + "px;\">&nbsp;</div>&nbsp;" + size + "%";
}
}
 
/**
663,7 → 681,7
}
 
var kernel = "", distro = "", icon = "", uptime = "", users = 0, loadavg = "", os = "";
var processes = 0, prunning = 0, psleeping = 0, pstopped = 0, pzombie = 0, pwaiting = 0, pother = 0;
var processes = 0, psarray = [0,0,0,0,0,0];
var syslang = "", codepage = "";
var lastboot = 0;
var timestamp = parseInt($("Generation", xml).attr("timestamp"), 10)*1000; //server time
702,32 → 720,32
processes = parseInt($(this).attr("Processes"), 10);
}
if ($(this).attr("ProcessesRunning") !== undefined) {
prunning = parseInt($(this).attr("ProcessesRunning"), 10);
psarray[0] = parseInt($(this).attr("ProcessesRunning"), 10);
}
if ($(this).attr("ProcessesSleeping") !== undefined) {
psleeping = parseInt($(this).attr("ProcessesSleeping"), 10);
psarray[1] = parseInt($(this).attr("ProcessesSleeping"), 10);
}
if ($(this).attr("ProcessesStopped") !== undefined) {
pstopped = parseInt($(this).attr("ProcessesStopped"), 10);
psarray[2] = parseInt($(this).attr("ProcessesStopped"), 10);
}
if ($(this).attr("ProcessesZombie") !== undefined) {
pzombie = parseInt($(this).attr("ProcessesZombie"), 10);
psarray[3] = parseInt($(this).attr("ProcessesZombie"), 10);
}
if ($(this).attr("ProcessesWaiting") !== undefined) {
pwaiting = parseInt($(this).attr("ProcessesWaiting"), 10);
psarray[4] = parseInt($(this).attr("ProcessesWaiting"), 10);
}
if ($(this).attr("ProcessesOther") !== undefined) {
pother = parseInt($(this).attr("ProcessesOther"), 10);
psarray[5] = parseInt($(this).attr("ProcessesOther"), 10);
}
 
document.title = "System information: " + hostname + " (" + ip + ")";
$("#s_hostname_title").html(hostname);
$("#s_ip_title").html(ip);
$("#s_ip_title").html(ip);
setAndStrip("#s_hostname", hostname);
setAndStrip("#s_ip", ip);
setAndStrip("#s_kernel", kernel);
setAndStrip("#s_distro", "<img src='./gfx/images/" + icon + "' alt='Icon' title='' style='width:16px;height:16px;vertical-align:middle;' onload='PNGload($(this));' />&nbsp;" + distro); //onload IE6 PNG fix
setAndStrip("#s_os", "<img src='./gfx/images/" + os + ".png' alt='OSIcon' title='' style='width:16px;height:16px;vertical-align:middle;' onload='PNGload($(this));' />&nbsp;" + os); //onload IE6 PNG fix
setAndStrip("#s_distro", "<img src='./gfx/images/" + icon + "' alt='Icon' title='" + icon + "' style='width:16px;height:16px;vertical-align:middle;' onload='PNGload($(this));' />&nbsp;" + distro); //onload IE6 PNG fix
setAndStrip("#s_os", "<img src='./gfx/images/" + os + ".png' alt='OSIcon' title='" + os + ".png' style='width:16px;height:16px;vertical-align:middle;' onload='PNGload($(this));' />&nbsp;" + os); //onload IE6 PNG fix
setAndStrip("#s_uptime", uptime);
if ((datetimeFormat !== undefined) && (datetimeFormat.toLowerCase() === "locale")) {
setAndStrip("#s_lastboot", lastboot.toLocaleString());
744,15 → 762,15
setAndStrip("#s_syslang", syslang);
setAndStrip("#s_codepage", codepage);
setAndStrip("#s_processes", processes);
if ((processes > 0) && (prunning || psleeping || pstopped || pzombie || pwaiting || pother)) {
if ((processes > 0) && (psarray[0] || psarray[1] || psarray[2] || psarray[3] || psarray[4] || psarray[5])) {
$("#s_processes").append(" (");
var typelist = {running:111,sleeping:112,stopped:113,zombie:114,waiting:115,other:116};
for (var proc_type in typelist) {
if (eval("p" + proc_type)) {
var idlist = {0:111,1:112,2:113,3:114,4:115,5:116};
for (var proc_type in idlist) {
if (psarray[proc_type]) {
if (not_first) {
$("#s_processes").append(", ");
}
$("#s_processes").append(eval("p" + proc_type) + "&nbsp;" + genlang(typelist[proc_type]));
$("#s_processes").append(psarray[proc_type] + "&nbsp;" + genlang(idlist[proc_type]));
not_first = true;
}
}
824,7 → 842,7
tree.push(cpucoreposition);
}
if (isFinite(voltage)) {
html += "<tr><td style=\"width:68%\"><div class=\"treediv\"><span class=\"treespan\">" + genlang(52) + ":</span></div></td><td>" + round(voltage, 2) + " " + genlang(82) + "</td></tr>\n";
html += "<tr><td style=\"width:68%\"><div class=\"treediv\"><span class=\"treespan\">" + genlang(52) + ":</span></div></td><td>" + round(voltage, 2) + String.fromCharCode(160) + genlang(62) + "</td></tr>\n";
tree.push(cpucoreposition);
}
if (!isNaN(bogo)) {
904,7 → 922,7
tree.push(devcoreposition);
}
if (isFinite(voltage)) {
html += "<tr><td style=\"width:68%\"><div class=\"treediv\"><span class=\"treespan\">" + genlang(52) + ":</span></div></td><td>" + round(voltage, 2) + " " + genlang(82) + "</td></tr>\n";
html += "<tr><td style=\"width:68%\"><div class=\"treediv\"><span class=\"treespan\">" + genlang(52) + ":</span></div></td><td>" + round(voltage, 2) + String.fromCharCode(160) + genlang(62) + "</td></tr>\n";
tree.push(devcoreposition);
}
if (serial !== undefined) {
1031,8 → 1049,9
}
 
$("Network NetDevice", xml).each(function getDevice(id) {
var name = "", rx = 0, tx = 0, er = 0, dr = 0, info = "", networkindex = 0, htmlrx = '', htmltx = '', rxr = 0, txr = 0;
var name = "", rx = 0, tx = 0, er = 0, dr = 0, info = "", bridge = "", networkindex = 0, htmlrx = '', htmltx = '', rxr = 0, txr = 0;
name = $(this).attr("Name");
bridge = $(this).attr("Bridge");
rx = parseInt($(this).attr("RxBytes"), 10);
tx = parseInt($(this).attr("TxBytes"), 10);
er = parseInt($(this).attr("Err"), 10);
1074,8 → 1093,11
}
}
 
html +="<tr><td><div class=\"treediv\"><span class=\"treespan\">" + name + "</span></div></td><td class=\"right\">" + formatBytes(rx, xml) + htmlrx + "</td><td class=\"right\">" + formatBytes(tx, xml) + htmltx +"</td><td class=\"right\">" + er.toString() + "/<wbr>" + dr.toString() + "</td></tr>";
 
if ( (bridge !== undefined) && (bridge !== "") ) {
html +="<tr><td><div class=\"treediv\"><span class=\"treespan\">" + name + " (" + bridge +")</span></div></td><td class=\"right\">" + formatBytes(rx, xml) + htmlrx + "</td><td class=\"right\">" + formatBytes(tx, xml) + htmltx +"</td><td class=\"right\">" + er.toString() + "/<wbr>" + dr.toString() + "</td></tr>";
} else {
html +="<tr><td><div class=\"treediv\"><span class=\"treespan\">" + name + "</span></div></td><td class=\"right\">" + formatBytes(rx, xml) + htmlrx + "</td><td class=\"right\">" + formatBytes(tx, xml) + htmltx +"</td><td class=\"right\">" + er.toString() + "/<wbr>" + dr.toString() + "</td></tr>";
}
networkindex = tree.push(0);
 
if (showNetworkActiveSpeed) {
1262,7 → 1284,7
return;
}
 
var total_usage = 0, total_used = 0, total_free = 0, total_size = 0, threshold = 0;
var total_usage = 0, total_used = 0, total_free = 0, total_size = 0, threshold = 0, usage = 0;
 
filesystemTable.fnClearTable();
 
1297,25 → 1319,26
type = "";
}
 
usage = (size != 0) ? Math.ceil((used / size) * 100) : 0;
if (!isNaN(ignore) && (ignore > 0) && showTotals) {
if (ignore >= 3) {
if ((ignore == 3) && !isNaN(threshold) && (percent >= threshold)) {
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "barwarn") + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span><i>(" + formatBytes(used, xml) + ")</i>", "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "barwarn", usage) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span><i>(" + formatBytes(used, xml) + ")</i>", "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
} else {
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span><i>(" + formatBytes(used, xml) + ")</i>", "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "bar", usage) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span><i>(" + formatBytes(used, xml) + ")</i>", "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
}
} else {
if (!isNaN(threshold) && (percent >= threshold)) {
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "barwarn") + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "barwarn", usage) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
} else {
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "bar", usage) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span><i>(" + formatBytes(free, xml) + ")</i>", "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span><i>(" + formatBytes(size, xml) + ")</i>"]);
}
}
} else {
if (!isNaN(threshold) && (percent >= threshold) && (showTotals || isNaN(ignore) || (ignore < 4))) {
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "barwarn") + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span>" + formatBytes(free, xml), "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span>" + formatBytes(size, xml)]);
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "barwarn", usage) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span>" + formatBytes(free, xml), "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span>" + formatBytes(size, xml)]);
} else {
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span>" + formatBytes(free, xml), "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span>" + formatBytes(size, xml)]);
filesystemTable.fnAddData(["<span style=\"display:none;\">" + mpoint + "</span>" + mpoint, "<span style=\"display:none;\">" + type + "</span>" + type, "<span style=\"display:none;\">" + name + "</span>" + name + options_text, "<span style=\"display:none;\">" + percent.toString() + "</span>" + createBar(percent, "bar", usage) + inodes_text, "<span style=\"display:none;\">" + free.toString() + "</span>" + formatBytes(free, xml), "<span style=\"display:none;\">" + used.toString() + "</span>" + formatBytes(used, xml), "<span style=\"display:none;\">" + size.toString() + "</span>" + formatBytes(size, xml)]);
}
}
if (showTotals) {
1331,15 → 1354,16
total_free += free;
total_size += size;
}
total_usage = (total_size != 0) ? round(100 - (total_free / total_size) * 100, 2) : 0;
}
});
 
if (showTotals) {
usage = (total_size != 0) ? Math.ceil((total_used / total_size) * 100) : 0;
total_usage = (total_size != 0) ? round(100 - (total_free / total_size) * 100, 2) : 0;
if (!isNaN(threshold) && (total_usage >= threshold)) {
$("#s_fs_total").html(createBar(total_usage, "barwarn"));
$("#s_fs_total").html(createBar(total_usage, "barwarn" , usage));
} else {
$("#s_fs_total").html(createBar(total_usage));
$("#s_fs_total").html(createBar(total_usage, "bar", usage));
}
$("#s_fs_tfree").html(formatBytes(total_free, xml));
$("#s_fs_tused").html(formatBytes(total_used, xml));
1451,7 → 1475,7
if (isFinite(value))
$("#fansTable tbody").append("<tr><td>" + label + "</td><td>" + createBar(round(value,0)) + "</td><td class=\"right\">" + _min + "</td></tr>");
else
$("#fansTable tbody").append("<tr><td>" + label + "</td><td>---%</td><td class=\"right\">" + _min + "</td></tr>");
$("#fansTable tbody").append("<tr><td>" + label + "</td><td>---%</td><td class=\"right\">" + _min + "</td></tr>");
} else {
if (isFinite(min))
_min = round(min,0) + "&nbsp;" + genlang(63);
1569,7 → 1593,10
label += " <img style=\"vertical-align: middle; width:16px;\" src=\"./gfx/attention.gif\" alt=\"!\" title=\""+event+"\"/>";
unit = $(this).attr("Unit");
if (unit === "%") {
$("#otherTable tbody").append("<tr><td>" + label + "</td><td>" + createBar(round(value,0)) + "</td></tr>");
if (isFinite(value))
$("#otherTable tbody").append("<tr><td>" + label + "</td><td>" + createBar(round(value,0)) + "</td></tr>");
else
$("#otherTable tbody").append("<tr><td>" + label + "</td><td>---%</td></tr>");
} else {
$("#otherTable tbody").append("<tr><td>" + label + "</td><td class=\"right\">" + value + "</td></tr>");
}
1871,7 → 1898,7
$("#template").val(cookie_template);
if ($("#template").val() === null) {
$("#template").val(old_template);
}
}
}
switchStyle($("#template").val().toString());
$('#template').show();
/web/acc/phpsysinfo/js/phpSysInfo/phpsysinfo_bootstrap.js
2,6 → 2,13
showCPUListExpanded, showCPUInfoExpanded, showNetworkInfosExpanded, showNetworkActiveSpeed, showCPULoadCompact, oldnetwork = [], refrTimer;
 
/**
* Fix potential XSS vulnerability in jQuery
*/
jQuery.htmlPrefilter = function( html ) {
return html;
};
 
/**
* generate a cookie, if not exist, and add an entry to it<br><br>
* inspired by <a href="http://www.quirksmode.org/js/cookies.html">http://www.quirksmode.org/js/cookies.html</a>
* @param {String} name name that holds the value
231,6 → 238,7
}
},
success: function (data) {
var refrtime;
// console.log(data);
// data_dbg = data;
if ((typeof(initiate) === 'boolean') && (data.Options !== undefined) && (data.Options["@attributes"] !== undefined) && ((refrtime = data.Options["@attributes"].refresh) !== undefined) && (refrtime !== "0")) {
292,8 → 300,8
success: function (data) {
try {
for (var propertyName in data.Plugins) {
if ((data.Plugins[propertyName]["@attributes"] !== undefined) &&
((hostname = data.Plugins[propertyName]["@attributes"]["Hostname"]) !== undefined)) {
if ((data.Plugins[propertyName]["@attributes"] !== undefined) &&
((hostname = data.Plugins[propertyName]["@attributes"].Hostname) !== undefined)) {
$('span[class=hostname_' + pluginname + ']').html(hostname);
}
break;
323,13 → 331,19
});
}
 
if ((ua=useragent.match(/Version\/(\d+)\.[\d\.]+ (Mobile\/\S+ )?Safari\//)) !== null) {
if ((ua=useragent.match(/Midori\/(\d+)\.?(\d+)?/)) !== null) {
if ((ua[1]==0) && (ua.length==3) && (ua[2]<=4)) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-midori04.css');
} else if ((ua[1]==0) && (ua.length==3) && (ua[2]==5)) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-midori05.css');
}
} else if ((ua=useragent.match(/\(KHTML, like Gecko\) Version\/(\d+)\.[\d\.]+ (Mobile\/\S+ )?Safari\//)) !== null) {
if (ua[1]<=5) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-safari5.css');
} else if (ua[1]<=8) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-safari8.css');
}
} else if ((ua=useragent.match(/Firefox\/(\d+)\.[\d\.]+/)) !== null) {
} else if ((ua=useragent.match(/Firefox\/(\d+)\.[\d\.]+/)) !== null) {
if (ua[1]<=15) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-firefox15.css');
} else if (ua[1]<=20) {
339,18 → 353,16
} else if (ua[1]==28) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-firefox28.css');
}
} else if ((ua=useragent.match(/Midori\/(\d+)\.?(\d+)?/)) !== null) {
if ((ua[1]==0) && (ua.length==3) && (ua[2]<=4)) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-midori04.css');
} else if ((ua[1]==0) && (ua.length==3) && (ua[2]==5)) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-midori05.css');
}
} else if ((ua=useragent.match(/Chrome\/(\d+)\.[\d\.]+/)) !== null) {
} else if ((ua=useragent.match(/Chrome\/(\d+)\.[\d\.]+/)) !== null) {
if (ua[1]<=25) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-chrome25.css');
} else if (ua[1]<=28) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-chrome28.css');
}
} else if ((ua=useragent.match(/^Opera\/.*Version\/(\d+)\.[\d\.]+$/)) !== null) {
if (ua[1]<=11) {
$("#PSI_CSS_Fix")[0].setAttribute('href', 'templates/vendor/bootstrap-opera11.css');
}
}
 
$(window).resize();
599,12 → 611,12
},
Distro: {
html: function () {
return '<table class="borderless table-hover table-nopadding" style="width:100%;"><tr><td style="padding-right:4px!important;width:32px;"><img src="gfx/images/' + this.Distroicon + '" alt="" style="width:32px;height:32px;" /></td><td style="vertical-align:middle;">' + this.Distro + '</td></tr></table>';
return '<table class="borderless table-hover table-nopadding" style="width:100%;"><tr><td style="padding-right:4px!important;width:32px;"><img src="gfx/images/' + this.Distroicon + '" alt="" title="' + this.Distroicon + '" style="width:32px;height:32px;" /></td><td style="vertical-align:middle;">' + this.Distro + '</td></tr></table>';
}
},
OS: {
html: function () {
return '<table class="borderless table-hover table-nopadding" style="width:100%;"><tr><td style="padding-right:4px!important;width:32px;"><img src="gfx/images/' + this.OS + '.png" alt="" style="width:32px;height:32px;" /></td><td style="vertical-align:middle;">' + this.OS + '</td></tr></table>';
return '<table class="borderless table-hover table-nopadding" style="width:100%;"><tr><td style="padding-right:4px!important;width:32px;"><img src="gfx/images/' + this.OS + '.png" alt="" title="' + this.OS + '.png" style="width:32px;height:32px;" /></td><td style="vertical-align:middle;">' + this.OS + '</td></tr></table>';
}
},
LoadAvg: {
620,36 → 632,37
},
Processes: {
html: function () {
var processes = "", p111 = 0, p112 = 0, p113 = 0, p114 = 0, p115 = 0, p116 = 0;
var processes = 0, psarray = [0,0,0,0,0,0];
var not_first = false;
processes = parseInt(this.Processes, 10);
if (processes > 0) {
if (this.ProcessesRunning !== undefined) {
p111 = parseInt(this.ProcessesRunning, 10);
psarray[0] = parseInt(this.ProcessesRunning, 10);
}
if (this.ProcessesSleeping !== undefined) {
p112 = parseInt(this.ProcessesSleeping, 10);
psarray[1] = parseInt(this.ProcessesSleeping, 10);
}
if (this.ProcessesStopped !== undefined) {
p113 = parseInt(this.ProcessesStopped, 10);
psarray[2] = parseInt(this.ProcessesStopped, 10);
}
if (this.ProcessesZombie !== undefined) {
p114 = parseInt(this.ProcessesZombie, 10);
psarray[3] = parseInt(this.ProcessesZombie, 10);
}
if (this.ProcessesWaiting !== undefined) {
p115 = parseInt(this.ProcessesWaiting, 10);
psarray[4] = parseInt(this.ProcessesWaiting, 10);
}
if (this.ProcessesOther !== undefined) {
p116 = parseInt(this.ProcessesOther, 10);
psarray[5] = parseInt(this.ProcessesOther, 10);
}
if (p111 || p112 || p113 || p114 || p115 || p116) {
if (psarray[0] || psarray[1] || psarray[2] || psarray[3] || psarray[4] || psarray[5]) {
processes += " (";
for (var proc_type in {111:0,112:1,113:2,114:3,115:4,116:5}) {
if (eval("p" + proc_type)) {
var idlist = {0:111,1:112,2:113,3:114,4:115,5:116};
for (var proc_type in idlist) {
if (psarray[proc_type]) {
if (not_first) {
processes += ", ";
}
processes += eval("p" + proc_type) + String.fromCharCode(160) + genlang(proc_type);
processes += psarray[proc_type] + String.fromCharCode(160) + genlang(idlist[proc_type]);
not_first = true;
}
}
728,7 → 741,7
},
Voltage: {
html: function() {
return round(this.Voltage, 2) + genlang(82); //V
return round(this.Voltage, 2) + String.fromCharCode(160) + genlang(62); //V
}
},
Bogomips: {
770,7 → 783,7
},
Voltage: {
html: function() {
return round(this.Voltage, 2) + genlang(82); //V
return round(this.Voltage, 2) + String.fromCharCode(160) + genlang(62); //V
}
},
Capacity: {
795,7 → 808,7
 
var html="";
 
if (data.Hardware["@attributes"] !== undefined) {
if (data.Hardware["@attributes"] !== undefined) {
if (data.Hardware["@attributes"].Name !== undefined) {
html+="<tr id=\"hardware-Machine\">";
html+="<th style=\"width:8%;\">"+genlang(107)+"</th>"; //Machine
862,7 → 875,7
html+="<td><span class=\"treegrid-span\">" + genlang('128') + ":</span></td>"; //Number of memories
} else {
html+="<td><span class=\"treegrid-span\">" + genlang('120') + ":</span></td>"; //Number of devices
}
}
html+="<td class=\"rightCell\"><span id=\"" + hw_type + "Count\"></span></td>";
html+="</tr>";
}
1130,8 → 1143,8
},
Percent: {
html: function () {
var used1 = (this.Total != 0) ? Math.ceil((this.Used / this.Total) * 100) : 0;
var used2 = Math.ceil(this.Percent);
var used1 = Math.max(Math.min((this.Total != 0) ? Math.ceil((this.Used / this.Total) * 100) : 0, 100), 0);
var used2 = Math.max(Math.min(Math.ceil(this.Percent), 100), 0);
var used21= used2 - used1;
if (used21 > 0) {
return '<div class="progress">' + '<div class="' +
1138,8 → 1151,8
( ( ((this.Ignore == undefined) || (this.Ignore < 4)) && ((data.Options["@attributes"].threshold !== undefined) &&
(parseInt(this.Percent, 10) >= parseInt(data.Options["@attributes"].threshold, 10))) ) ? 'progress-bar progress-bar-danger' : 'progress-bar progress-bar-info' ) +
'" style="width:' + used1 + '% ;"></div>' +
'<div class="progress-bar progress-bar-warning" style="width:' + used21 + '% ;"></div>'
+'</div><div class="percent">' + this.Percent + '% ' + ((this.Inodes !== undefined) ? '<i>(' + this.Inodes + '%)</i>' : '') + '</div>';
'<div class="progress-bar progress-bar-warning" style="width:' + used21 + '% ;"></div>' +
'</div><div class="percent">' + this.Percent + '% ' + ((this.Inodes !== undefined) ? '<i>(' + this.Inodes + '%)</i>' : '') + '</div>';
} else {
return '<div class="progress">' + '<div class="' +
( ( ((this.Ignore == undefined) || (this.Ignore < 4)) && ((data.Options["@attributes"].threshold !== undefined) &&
1161,7 → 1174,7
if (showtotals) {
if ((datas[i]["@attributes"].Ignore !== undefined) && (datas[i]["@attributes"].Ignore > 0)) {
if (datas[i]["@attributes"].Ignore == 2) {
total.Used += parseInt(datas[i]["@attributes"].Used, 10);
total.Used += parseInt(datas[i]["@attributes"].Used, 10);
} else if (datas[i]["@attributes"].Ignore == 1) {
total.Total += parseInt(datas[i]["@attributes"].Used, 10);
total.Used += parseInt(datas[i]["@attributes"].Used, 10);
1200,6 → 1213,15
}
 
var directives = {
Name: {
text: function () {
if (this.Bridge !== undefined) {
return this.Name + " (" + this.Bridge + ")";
} else {
return this.Name;
}
}
},
RxBytes: {
html: function () {
var htmladd = '';
1209,7 → 1231,7
htmladd ="<br><i>("+formatBPS(round(this.RxRate, 2))+")</i>";
} else {
htmladd ="<br><i>("+formatBytes(round(this.RxRate, 2), data.Options["@attributes"].byteFormat)+"/s)</i>";
}
}
} else if ($.inArray(this.Name, oldnetwork) >= 0) {
var diff, difftime;
if (((diff = this.RxBytes - oldnetwork[this.Name].RxBytes) > 0) && ((difftime = data.Generation["@attributes"].timestamp - oldnetwork[this.Name].timestamp) > 0)) {
1317,7 → 1339,7
var directives = {
Value: {
text: function () {
return round(this.Value,2) + String.fromCharCode(160) + "V";
return (isFinite(this.Value)?round(this.Value,2):"---") + String.fromCharCode(160) + "V";
}
},
Min: {
1409,11 → 1431,14
Value: {
html: function () {
if (this.Unit === "%") {
return '<div class="progress">' +
'<div class="progress-bar progress-bar-info" style="width:' + round(this.Value,0) + '%;"></div>' +
'</div><div class="percent">' + round(this.Value,0) + '%</div>';
if (isFinite(this.Value))
return '<div class="progress">' +
'<div class="progress-bar progress-bar-info" style="width:' + round(this.Value,0) + '%;"></div>' +
'</div><div class="percent">' + round(this.Value,0) + '%</div>';
else
return '---%';
} else {
return round(this.Value,0) + String.fromCharCode(160) + genlang(63); //RPM
return (isFinite(this.Value)?round(this.Value,0):"---") + String.fromCharCode(160) + genlang(63); //RPM
}
}
},
1462,7 → 1487,7
var directives = {
Value: {
text: function () {
return round(this.Value,2) + String.fromCharCode(160) + "W";
return (isFinite(this.Value)?round(this.Value,2):"---") + String.fromCharCode(160) + "W";
}
},
Max: {
1505,7 → 1530,7
var directives = {
Value: {
text: function () {
return round(this.Value,2) + String.fromCharCode(160) + "A";
return (isFinite(this.Value)?round(this.Value,2):"---") + String.fromCharCode(160) + "A";
}
},
Min: {
1555,10 → 1580,12
Value: {
html: function () {
if (this.Unit === "%") {
return '<div class="progress">' +
'<div class="progress-bar progress-bar-info" style="width:' + round(this.Value,0) + '%;"></div>' +
'</div><div class="percent">' + round(this.Value,0) + '%</div>';
// return round(this.Value,0) + "%";
if (isFinite(this.Value))
return '<div class="progress">' +
'<div class="progress-bar progress-bar-info" style="width:' + round(this.Value,0) + '%;"></div>' +
'</div><div class="percent">' + round(this.Value,0) + '%</div>';
else
return '---%';
} else {
return this.Value;
}
/web/acc/phpsysinfo/phpsysinfo.ini
47,6 → 47,13
;
ALLOWED=false
 
; Enable JSONP data mode (e.g. /phpsysinfo/xml.php?plugin=complete&jsonp&callback=getData)
; Disabled by default for security reasons.
; - false : JSONP data mode disabled
; - true : JSONP data mode enabled
;
;JSONP=false
 
; List of sudo commands
; Example : SUDO_COMMANDS="iptables-save" //execute "sudo iptables-save" instead "iptables-save"
; SUDO_COMMANDS=false //no sudo commands
127,6 → 134,7
; - Uprecords - show uprecords info
; - PingTest - show Ping Test info
; - StableBit - show StableBit Scanner info (WinNT)
; - DiskLoad - show Disk Load info (WinNT)
; - HyperV - show Hyper-V info (WinNT)
; - Docker - show docker stats
; - Viewer - show output of any command or file viewer.tmp contents
446,6 → 454,11
HIDE_NETWORK_MACADDR=false
 
 
; Show bridge info in the network interface name
;
SHOW_NETWORK_BRIDGE=true
 
 
; Sort network interfaces list
;
SORT_NETWORK_INTERFACES_LIST=false
740,8 → 753,8
; downloaded from http://hwraid.le-vert.net or https://github.com/eLvErDe/hwraid or https://github.com/ElCoyote27/hwraid
; - graid: command "graid list" is run (on FreeBSD only)
; - zpool: command "zpool status" is run
; - storcli: command "storcli /call show all" or "storcli /call show all" is run
; - perccli: command "perccli /call show all" or "perccli /call show all" is run
; - storcli: command "storcli64 /call show all; storcli64 /call /vall show all" or "storcli /call show all; storcli /call /vall show all" is run
; - perccli: command "perccli64 /call show all; perccli64 /call /vall show all" or "perccli /call show all; perccli /call /vall show all" is run
; - idrac: command "snmpwalk -Ona -c public -v 1 -r 0 -t 3 {device} .1.3.6.1.4.1.674.10892.5.5.1.20" is run
; - "php-snmp"- idrac: execute php snmprealwalk function (php-snmp module must be installed)
; - for others the option is inactive (uses "command" instead)
/web/acc/phpsysinfo/read_config.php
3,7 → 3,7
/**
* phpSysInfo version
*/
define('PSI_VERSION', '3.4.2');
define('PSI_VERSION', '3.4.3');
/**
* phpSysInfo configuration
*/
89,6 → 89,11
}
}
 
if (isset($_GET['jsonp']) && (!defined('PSI_JSONP') || !PSI_JSONP)) {
echo "JSONP data mode not enabled in phpsysinfo.ini.";
die();
}
 
/* default error handler */
if (function_exists('errorHandlerPsi')) {
restore_error_handler();
327,8 → 332,8
}
 
if (!defined('PSI_JSON_ISSUE')) { //if not overloaded in phpsysinfo.ini
if (!extension_loaded("xml")) {
die("phpSysInfo requires the xml extension to php in order to work properly.");
if (!extension_loaded("simplexml")) {
die("phpSysInfo requires the simplexml extension to php in order to work properly.");
}
if (simplexml_load_string("<A><B><C/></B>\n</A>") !== simplexml_load_string("<A><B><C/></B></A>")) { // json_encode issue test
define('PSI_JSON_ISSUE', true); // Problem must be solved
/web/acc/phpsysinfo/templates/aqua.css
101,9 → 101,8
width: 100px;
}
 
#vitals, #network, #memory, #filesystem, #hardware, #temperature, #voltage, #fans, #power, #current, #other, #ups {
.fullsize, .halfsize {
float: left;
width: 451px;
margin: 10px 0 0 8px;
_margin: 10px 4px 0 4px; /* ie6 */
padding: 1px;
111,12 → 110,12
background: #fff;
}
 
#pciTable, #ideTable, #scsiTable, #nvmeTable, #usbTable, #tbTable, #i2cTable {
padding: 0px 30px;
.fullsize {
width: 916px;
}
 
#memory, #filesystem {
width: 915px;
.halfsize {
width: 451px;
}
 
#filesystemTable thead tr th {
152,6 → 151,10
background: #a72971;
}
 
.barrest {
background: #29a79e;
}
 
.right {
text-align: right;
padding-right: 20px;
/web/acc/phpsysinfo/templates/html/index_bootstrap.html
3,6 → 3,7
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="Content-Security-Policy" content="default-src 'unsafe-inline' 'unsafe-eval' 'self'">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">
/web/acc/phpsysinfo/templates/html/index_dynamic.html
5,6 → 5,7
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Security-Policy" content="default-src 'unsafe-inline' 'unsafe-eval' 'self'" />
<meta name="Description" content="phpSysInfo is a customizable PHP script that displays information about your system nicely" />
<noscript>
<meta http-equiv="refresh" content="2; URL=index.php?disp=static" />
/web/acc/phpsysinfo/xml.php
39,7 → 39,8
$json = $output->getJsonString();
if (isset($_GET['jsonp'])) {
header('Content-Type: application/javascript');
echo(!preg_match('/[^\w\?]/', $_GET['callback'])?$_GET['callback']:'') . '('.$json.')';
echo !preg_match('/[^\w\?]/', $_GET['callback'])?$_GET['callback']:'';
echo '('.$json.')';
} else {
header('Content-Type: application/json');
echo $json;