webgui updates for 6.3.0-rc9

This commit is contained in:
Eric Schultz
2017-01-27 10:23:44 -06:00
parent 9b98236550
commit 0c5a36741a
85 changed files with 543 additions and 561 deletions
+40 -40
View File
@@ -31,7 +31,7 @@ function anonymize($text,$select) {
foreach ($rows as &$row) {
if (!preg_match("/\b(disk|cache|parity|flash)\d*\b/", $row)) {
$row = preg_replace("/^(\s*\[\S).*(\S\])( => Array)$/","$1..$2$3",$row);
$row = preg_replace("/^(\s*\[(name|nameOrig|comment|flashGUID|regGUID|regTo|readList|writeList)\] => \S).*(\S)$/","$1..$3",$row);
$row = preg_replace("/^(\s*\[(name|nameOrig|comment|flashGUID|regGUID|regTo|readList|writeList|csrf_token)\] => \S).*(\S)$/","$1..$3",$row);
}
}
return implode("\n", $rows);
@@ -63,7 +63,7 @@ if ($cli) {
$date = "{$split[2]}-{$split[3]}";
}
// create folder structure
exec("mkdir -p /$diag/system /$diag/config /$diag/logs /$diag/shares /$diag/smart /$diag/qemu");
exec("mkdir -p ".escapeshellarg("/$diag/system")." ".escapeshellarg("/$diag/config")." ".escapeshellarg("/$diag/logs")." ".escapeshellarg("/$diag/shares")." ".escapeshellarg("/$diag/smart")." ".escapeshellarg("/$diag/qemu"));
// make unRAID version reference
$unraid = parse_ini_file('/etc/unraid-version');
file_put_contents("/$diag/unRAID-".$unraid['version'].".txt",$unraid['version']);
@@ -74,41 +74,41 @@ foreach (glob("$get/*.ini") as $file) {
if ($all || $ini != "users") file_put_contents("/$diag/system/vars.txt",preg_replace(["/\n/","/^Array/"],["\r\n",$ini],anonymize(print_r(parse_ini_file($file,true),true),1)),FILE_APPEND);
}
// individual commands execution (suppress errors)
exec("lsscsi -vgl 2>/dev/null|todos >/$diag/system/lsscsi.txt");
exec("lspci -knn 2>/dev/null|todos >/$diag/system/lspci.txt");
exec("free -mt 2>/dev/null|todos >/$diag/system/memory.txt");
exec("ps -ef 2>/dev/null|todos >/$diag/system/ps.txt");
exec("lsof -Pni 2>/dev/null|todos >/$diag/system/lsof.txt");
exec("lsmod 2>/dev/null|todos >/$diag/system/lsmod.txt");
exec("df -h 2>/dev/null|todos >/$diag/system/df.txt");
exec("lsscsi -vgl 2>/dev/null|todos >".escapeshellarg("/$diag/system/lsscsi.txt"));
exec("lspci -knn 2>/dev/null|todos >".escapeshellarg("/$diag/system/lspci.txt"));
exec("free -mt 2>/dev/null|todos >".escapeshellarg("/$diag/system/memory.txt"));
exec("ps -ef 2>/dev/null|todos >".escapeshellarg("/$diag/system/ps.txt"));
exec("lsof -Pni 2>/dev/null|todos >".escapeshellarg("/$diag/system/lsof.txt"));
exec("lsmod 2>/dev/null|todos >".escapeshellarg("/$diag/system/lsmod.txt"));
exec("df -h 2>/dev/null|todos >".escapeshellarg("/$diag/system/df.txt"));
exec("ifconfig -a -s 2>/dev/null|grep -Po '^(eth|bond)[0-9]+'", $ports);
// create ethernet information information (suppress errors)
foreach ($ports as $port) {
exec("ethtool $port 2>/dev/null|todos >>/$diag/system/ethtool.txt");
exec("ethtool ".escapeshellarg($port)." 2>/dev/null|todos >>".escapeshellarg("/$diag/system/ethtool.txt"));
file_put_contents("/$diag/system/ethtool.txt", "\r\n", FILE_APPEND);
exec("ethtool -i $port 2>/dev/null|todos >>/$diag/system/ethtool.txt");
exec("ethtool -i ".escapeshellarg($port)." 2>/dev/null|todos >>".escapeshellarg("/$diag/system/ethtool.txt"));
file_put_contents("/$diag/system/ethtool.txt", "--------------------------------\r\n", FILE_APPEND);
}
exec("ifconfig -a 2>/dev/null|todos >/$diag/system/ifconfig.txt");
exec("ifconfig -a 2>/dev/null|todos >".escapeshellarg("/$diag/system/ifconfig.txt"));
// create system information (suppress errors)
exec("find /sys/kernel/iommu_groups/ -type l 2>/dev/null|todos >/$diag/system/iommu_groups.txt");
exec("todos </proc/cmdline >/$diag/system/cmdline.txt");
exec("find /sys/kernel/iommu_groups/ -type l 2>/dev/null|todos >".escapeshellarg("/$diag/system/iommu_groups.txt"));
exec("todos </proc/cmdline >".escapeshellarg("/$diag/system/cmdline.txt"));
// create folder structure listing
$dest = "/$diag/system/folders.txt";
foreach ($folders as $folder) {
if (is_dir($folder)) exec("echo -ne \"\r\n$folder\r\n\" >>$dest;ls -l $folder|todos >>$dest"); else exec("echo -ne \"\r\n$folder\r\nfolder does not exist\r\n\" >>$dest");
if (is_dir($folder)) exec("echo -ne ".escapeshellarg("\r\n$folder\r\n")." >>".escapeshellarg($dest).";ls -l ".escapeshellarg($folder)."|todos >>".escapeshellarg("$dest")); else exec("echo -ne ".escapeshellarg("\r\n$folder\r\nfolder does not exist\r\n")." >>".escapeshellarg("$dest"));
}
// copy configuration files (suppress errors)
exec("cp /boot/config/*.{cfg,conf,dat} /boot/config/go /$diag/config 2>/dev/null");
exec("cp /boot/config/*.{cfg,conf,dat} /boot/config/go ".escapeshellarg("/$diag/config")." 2>/dev/null");
// anonymize configuration files
if (!$all) exec("sed -ri 's/^((disk|flash)(Read|Write)List.*=\")[^\"]+/\\1.../' /$diag/config/*.cfg 2>/dev/null");
if (!$all) exec("sed -ri 's/^((disk|flash)(Read|Write)List.*=\")[^\"]+/\\1.../' ".escapeshellarg("/$diag/config/*.cfg")." 2>/dev/null");
// copy share information (anonymize if applicable)
$files = glob("/boot/config/shares/*.cfg");
foreach ($files as $file) {
$dest = anonymize("/$diag/shares/".basename($file),2);
@copy($file, $dest);
if (!$all) exec("sed -ri 's/^(share(Comment|ReadList|WriteList)=\")[^\"]+/\\1.../' '$dest' 2>/dev/null");
if (!$all) exec("sed -ri 's/^(share(Comment|ReadList|WriteList)=\")[^\"]+/\\1.../' ".escapeshellarg($dest)." 2>/dev/null");
}
// create default user shares information
$shares = file_exists("$get/shares.ini") ? parse_ini_file("$get/shares.ini", true) : [];
@@ -120,51 +120,51 @@ foreach ($shares as $share) {
$max = 2*1024*1024; //=2MB
foreach (glob("/var/log/syslog*") as $file) {
$log = "/$diag/logs/".basename($file);
exec("todos <$file >$log.txt");
exec("todos <".escapeshellarg($file)." >".escapeshellarg("$log.txt"));
if (!$all) {
unset($titles,$rows);
exec("grep -Po 'logger: moving \"\K[^\"]+' $log.txt 2>/dev/null|sort|uniq", $titles);
exec("sed -ri 's|\b\S+@\S+\.\S+\b|xxx@removed.com|;s|\b(username\|password)([=:])\S+\b|\\1\\2xxx|;s|(GUID: \S)\S+(\S) |\\1..\\2 |;s|(moving \"\S\|\"/mnt/user/\S).*(\S)\"|\\1..\\2\"|' $log.txt");
exec("grep -Po 'logger: moving \"\K[^\"]+' ".escapeshellarg("$log.txt")." 2>/dev/null|sort|uniq", $titles);
exec("sed -ri 's|\b\S+@\S+\.\S+\b|xxx@removed.com|;s|\b(username\|password)([=:])\S+\b|\\1\\2xxx|;s|(GUID: \S)\S+(\S) |\\1..\\2 |;s|(moving \"\S\|\"/mnt/user/\S).*(\S)\"|\\1..\\2\"|' ".escapeshellarg("$log.txt"));
foreach ($titles as $mover) {
$title = "/{$mover[0]}..".substr($mover,-1)."/...";
exec("sed -ri 's|(logger: [.>cr].*)[ /]$mover/.*$|\\1 file: $title|' $log.txt 2>/dev/null");
exec("sed -ri 's|(logger: [.>cr].*)[ /]$mover/.*$|\\1 file: $title|' ".escapeshellarg("$log.txt")." 2>/dev/null");
}
exec("grep -n ' cache_dirs: -' $log.txt 2>/dev/null|cut -d: -f1", $rows);
for ($i = 0; $i < count($rows); $i += 2) for ($row = $rows[$i]+1; $row < $rows[$i+1]; $row++) exec("sed -ri '$row s|(cache_dirs: \S).*(\S)|\\1..\\2|' $log.txt 2>/dev/null");
exec("grep -n ' cache_dirs: -' ".escapeshellarg("$log.txt")." 2>/dev/null|cut -d: -f1", $rows);
for ($i = 0; $i < count($rows); $i += 2) for ($row = $rows[$i]+1; $row < $rows[$i+1]; $row++) exec("sed -ri '$row s|(cache_dirs: \S).*(\S)|\\1..\\2|' ".escapeshellarg("$log.txt")." 2>/dev/null");
}
if (basename($file)=='syslog' && filesize($file)>=$max) exec("tail -n 200 $log.txt >$log.last200.txt");
exec("truncate -s '<$max' $log.txt");
if (basename($file)=='syslog' && filesize($file)>=$max) exec("tail -n 200 ".escapeshellarg("$log.txt")." >".escapeshellarg("$log.last200.txt"));
exec("truncate -s '<$max' ".escapeshellarg("$log.txt"));
}
// copy docker information (if existing)
$max = 1*1024*1024; //=1MB
$docker = "/var/log/docker.log";
if (file_exists($docker)) {
$log = "/$diag/logs/docker";
exec("todos <$docker >$log.txt");
exec("todos <$docker >".escapeshellarg("$log.txt"));
if (filesize($docker)>=$max) {
exec("tail -n 200 $log.txt >$log.last200.txt");
exec("truncate -s '<$max' $log.txt");
exec("tail -n 200 ".escapeshellarg("$log.txt")." >".escapeshellarg("$log.last200.txt"));
exec("truncate -s '<$max' ".escapeshellarg("$log.txt"));
}
}
// copy libvirt information (if existing)
$libvirtd = "/var/log/libvirt/libvirtd.log";
if (file_exists($libvirtd)) {
$log = "/$diag/logs/libvirt";
exec("todos <$libvirtd >$log.txt");
exec("todos <$libvirtd >".escapeshellarg("$log.txt"));
if (filesize($libvirtd)>=$max) {
exec("tail -n 200 $log.txt >$log.last200.txt");
exec("truncate -s '<$max' $log.txt");
exec("tail -n 200 ".escapeshellarg("$log.txt")." >".escapeshellarg("$log.last200.txt"));
exec("truncate -s '<$max' ".escapeshellarg("$log.txt"));
}
}
// copy VMs information (if existing)
$qemu = glob("/var/log/libvirt/qemu/*.log*");
if ($qemu) {
foreach ($qemu as $file) {
$log = "/$diag/qemu/".escapeshellarg(basename($file,'.log'));
exec("todos <".escapeshellarg($file)." >$log.txt");
$log = "/$diag/qemu/".basename($file,'.log');
exec("todos <".escapeshellarg($file)." >".escapeshellarg("$log.txt"));
if (filesize($file)>=$max) {
exec("tail -n 200 $log.txt >$log.last200.txt");
exec("truncate -s '<$max' $log.txt");
exec("tail -n 200 ".escapeshellarg("$log.txt")." >".escapeshellarg("$log.last200.txt"));
exec("truncate -s '<$max' ".escapeshellarg("$log.txt"));
}
}
} else
@@ -194,14 +194,14 @@ foreach ($devices as $device) {
break;
}
}
exec("smartctl -a $type /dev/$dev 2>/dev/null|todos >/$diag/smart/$name-$date.txt");
exec("smartctl -a ".escapeshellarg($type)." ".escapeshellarg("/dev/$dev")." 2>/dev/null|todos >".escapeshellarg("/$diag/smart/$name-$date.txt"));
}
// create cache pool information
if (is_dir('/mnt/cache') && $disks['cache']['fsType']=='btrfs') {
exec("/sbin/btrfs filesystem show /mnt/cache 2>/dev/null|todos >/$diag/system/btrfs-show.txt");
exec("/sbin/btrfs filesystem df /mnt/cache 2>/dev/null|todos >/$diag/system/btrfs-df.txt");
exec("/sbin/btrfs filesystem show /mnt/cache 2>/dev/null|todos >".escapeshellarg("/$diag/system/btrfs-show.txt"));
exec("/sbin/btrfs filesystem df /mnt/cache 2>/dev/null|todos >".escapeshellarg("/$diag/system/btrfs-df.txt"));
}
// create resulting zip file and remove temp folder
exec("zip -qmr $zip /$diag");
exec("zip -qmr ".escapeshellarg($zip)." ".escapeshellarg("/$diag"));
if ($cli) echo "done.\nZIP file '$zip' created.\n";
?>