diff --git a/emhttp/plugins/dynamix/event/driver_loaded/SysDriversBuild b/emhttp/plugins/dynamix/event/driver_loaded/SysDriversBuild new file mode 100644 index 000000000..132c40dfc --- /dev/null +++ b/emhttp/plugins/dynamix/event/driver_loaded/SysDriversBuild @@ -0,0 +1,3 @@ +#!/bin/bash +/usr/bin/logger "Submitting SysDrivers Build" +/usr/local/emhttp/plugins/dynamix/include/SysDriversInit.php &> /dev/null & \ No newline at end of file diff --git a/emhttp/plugins/dynamix/include/SysDrivers.php b/emhttp/plugins/dynamix/include/SysDrivers.php index 30ddf988a..a32de7a18 100644 --- a/emhttp/plugins/dynamix/include/SysDrivers.php +++ b/emhttp/plugins/dynamix/include/SysDrivers.php @@ -16,6 +16,7 @@ $docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp'; $_SERVER['REQUEST_URI'] = 'tools'; require_once "$docroot/webGui/include/Translations.php"; require_once "$docroot/webGui/include/Helpers.php"; +require_once "$docroot/webGui/include/SysDriversHelpers.php"; require_once "$docroot/plugins/dynamix.plugin.manager/include/PluginHelpers.php"; $kernel = shell_exec("uname -r") ; @@ -27,210 +28,17 @@ $sysdrvfile = "/tmp/sysdrivers.json" ; if (!is_file($modtoplgfile) || !is_file($sysdrvfile)) { modtoplg() ; createlist() ;} $arrModtoPlg = json_decode(file_get_contents("/tmp/modulestoplg.json") ,TRUE) ; -function getplugin($in) { - $plugins = "/var/log/plugins/"; - $plugin_link = $plugins.$in ; - $plugin_file = @readlink($plugin_link); - $support = plugin('support',$plugin_file) ?: ""; - return($support) ; -} - -function getmodules($line) { - global $arrModules,$lsmod,$kernel,$arrModtoPlg,$modplugins ; - $modprobe = "" ; - $desc = $file = $pluginfile = $option = $filename = $depends = $support = $supporturl = $dir = $state = null ; - $name = $line ; - #echo $line ; - $modname = shell_exec("modinfo $name > /dev/null") ; - if ($modname != null) $modname = trim($modname,"\n") ; - $output=null ; - exec("modinfo $name",$output,$error) ; - $parms = array() ; - foreach($output as $outline) { - $data = explode(":",$outline) ; - $support = false ; $supporturl = null ; - switch ($data[0]) - { - case "name": - $modname = trim($data[1]) ; - break ; - case "depends": - $depends = trim($data[1]) ; - break ; - case "filename": - $filename = trim($data[1]) ; - break ; - case "description": - $desc = trim($data[1]) ; - break ; - case "parm": - $parms[] = trim(str_replace("parm:","",$outline)) ; - break ; - case "file": - $file = trim(str_replace("file:","",$outline)) ; - break ; - case "alias": - case "author": - case "firmware": - case "intree": - case "vermagic": - case "retpoline": - case "import_ns": - case "license": - break ; - default: - $parms[] = trim($outline) ; - break ; - } -} -if ($modname != null) { - if (strpos($lsmod, $modname,0)) $state = "Inuse" ; else $state = "Available"; - if (isset($arrModtoPlg[$modname])) { $support = true ; $supporturl = plugin("support", $modplugins[$arrModtoPlg[$modname]]) ; $pluginfile = "Plugin name: {$arrModtoPlg[$modname]}" ; } else { $support = false ; $supporturl = null ; } - } -if (is_file("/boot/config/modprobe.d/$modname.conf")) { - $modprobe = file_get_contents("/boot/config/modprobe.d/$modname.conf") ; - $state = strpos($modprobe, "blacklist"); - $modprobe = explode(PHP_EOL,$modprobe) ; - if($state !== false) {$state = "Disabled" ;} - else $state="Custom" ; - } - -if ($filename != "(builtin)") { -if ($filename != null) { -$type = pathinfo($filename) ; -$dir = $type['dirname'] ; - -$dir = str_replace("/lib/modules/$kernel/kernel/drivers/", "" ,$dir) ; -$dir = str_replace("/lib/modules/$kernel/kernel/", "" ,$dir) ; -} -} else { - $dir = $file ; - $dir = str_replace("drivers/", "" ,$dir) ; - if ($state == "Inuse") $state= "Kernel - Inuse"; else $state="Kernel" ; -} -if ($desc != null) $description = substr($desc , 0 ,60) ; else $description = null ; -$arrModules[$modname] = [ - 'modname' => $modname, - 'dependacy' => $depends, - 'parms' => $parms, - 'file' => $file, - 'modprobe' => $modprobe, - 'plugin' => $pluginfile , - 'state' => $state, - 'type' => $dir, - 'support' => $support, - 'supporturl' => $supporturl, - 'description' => $description , -] ; -} - -function modtoplg() { - global $modtoplgfile ; - $rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/boot/config/plugins')); - $files = array(); - - /** @var SplFileInfo $file */ - foreach ($rii as $file) { - if ($file->isDir()){ - continue; - } - if ($file->getExtension() != "tgz" && $file->getExtension() != "txz") continue ; - $files[] = $file->getPathname(); - } - - $list = array() ; - foreach ($files as $f) { - $plugin = str_replace("/boot/config/plugins/", "", $f) ; - $plugin = substr($plugin,0,strpos($plugin,'/') ) ; - $tar = [] ; - exec("tar -tf $f | grep -E '.ko.xz|.ko' ",$tar) ; - foreach ($tar as $t) { - $p = pathinfo($t) ; - $filename = str_replace(".ko","",$p["filename"]) ; - $list[$filename] = $plugin ; - } - } - - file_put_contents($modtoplgfile,json_encode($list,JSON_PRETTY_PRINT)) ; - -} - -function createlist() { - global $modtoplgfile, $sysdrvfile, $lsmod, $kernel,$arrModules, $modplugins ; - $arrModtoPlg = json_decode(file_get_contents($modtoplgfile) ,TRUE) ; - $builtinmodules = file_get_contents("/lib/modules/$kernel/modules.builtin") ; - $builtinmodules = explode(PHP_EOL,$builtinmodules) ; - $procmodules =file_get_contents("/lib/modules/$kernel/modules.order") ; - $procmodules = explode(PHP_EOL,$procmodules) ; - $arrModules = array() ; - - $list = scandir('/var/log/plugins/') ; - foreach($list as $f) $modplugins[plugin("name" , @readlink("/var/log/plugins/$f"))] = @readlink("/var/log/plugins/$f") ; - - foreach($builtinmodules as $bultin) - { - if ($bultin == "") continue ; - getmodules(pathinfo($bultin)["filename"]) ; - } - - foreach($procmodules as $line) { - if ($line == "") continue ; - getmodules(pathinfo($line)["filename"]) ; - } - - $lsmod2 = explode(PHP_EOL,$lsmod) ; - foreach($lsmod2 as $line) { - if ($line == "") continue ; - $line2 = explode(" ",$line) ; - getmodules($line2['0']) ; - } - - unset($arrModules['null']); - file_put_contents($sysdrvfile,json_encode($arrModules,JSON_PRETTY_PRINT)) ; -} - switch ($_POST['table']) { case 't1create': modtoplg() ; createlist() ; - /*$arrModtoPlg = json_decode(file_get_contents($modtoplgfile) ,TRUE) ; - $builtinmodules = file_get_contents("/lib/modules/$kernel/modules.builtin") ; - $builtinmodules = explode(PHP_EOL,$builtinmodules) ; - $procmodules =file_get_contents("/lib/modules/$kernel/modules.order") ; - $procmodules = explode(PHP_EOL,$procmodules) ; - $arrModules = array() ; - - $list = scandir('/var/log/plugins/') ; - foreach($list as $f) $modplugins[plugin("name" , @readlink("/var/log/plugins/$f"))] = @readlink("/var/log/plugins/$f") ; - - foreach($builtinmodules as $bultin) - { - if ($bultin == "") continue ; - getmodules(pathinfo($bultin)["filename"]) ; - } - - foreach($procmodules as $line) { - if ($line == "") continue ; - getmodules(pathinfo($line)["filename"]) ; - } - - $lsmod2 = explode(PHP_EOL,$lsmod) ; - foreach($lsmod2 as $line) { - if ($line == "") continue ; - $line2 = explode(" ",$line) ; - getmodules($line2['0']) ; - } - - unset($arrModules['null']); - file_put_contents($sysdrvfile,json_encode($arrModules,JSON_PRETTY_PRINT)) ; */ - + break; case 't1load': $list = file_get_contents($sysdrvfile) ; $arrModules = json_decode($list,TRUE) ; - #echo ""._("Actions").""._("Driver").""._("Description").""._("State").""._("Type").""._("Modeprobe.d config file").""; echo ""._("Driver").""._("Description").""._("State").""._("Type").""._("Modprobe.d config file").""; echo "" ; @@ -248,10 +56,8 @@ switch ($_POST['table']) { } echo "" ; - #echo "" ; if ($supportpage) { if ($module['support'] == false) { - #$supporthtml = "" ; $supporthtml = "" ; } else { $supporturl = $module['supporturl'] ; diff --git a/emhttp/plugins/dynamix/include/SysDriversHelpers.php b/emhttp/plugins/dynamix/include/SysDriversHelpers.php new file mode 100644 index 000000000..a3a621e66 --- /dev/null +++ b/emhttp/plugins/dynamix/include/SysDriversHelpers.php @@ -0,0 +1,176 @@ + /dev/null") ; + if ($modname != null) $modname = trim($modname,"\n") ; + $output=null ; + exec("modinfo $name",$output,$error) ; + $parms = array() ; + foreach($output as $outline) { + $data = explode(":",$outline) ; + $support = false ; $supporturl = null ; + switch ($data[0]) + { + case "name": + $modname = trim($data[1]) ; + break ; + case "depends": + $depends = trim($data[1]) ; + break ; + case "filename": + $filename = trim($data[1]) ; + break ; + case "description": + $desc = trim($data[1]) ; + break ; + case "parm": + $parms[] = trim(str_replace("parm:","",$outline)) ; + break ; + case "file": + $file = trim(str_replace("file:","",$outline)) ; + break ; + case "alias": + case "author": + case "firmware": + case "intree": + case "vermagic": + case "retpoline": + case "import_ns": + case "license": + break ; + default: + $parms[] = trim($outline) ; + break ; + } +} +if ($modname != null) { + if (strpos($lsmod, $modname,0)) $state = "Inuse" ; else $state = "Available"; + if (isset($arrModtoPlg[$modname])) { $support = true ; $supporturl = plugin("support", $modplugins[$arrModtoPlg[$modname]]) ; $pluginfile = "Plugin name: {$arrModtoPlg[$modname]}" ; } else { $support = false ; $supporturl = null ; } + } +if (is_file("/boot/config/modprobe.d/$modname.conf")) { + $modprobe = file_get_contents("/boot/config/modprobe.d/$modname.conf") ; + $state = strpos($modprobe, "blacklist"); + $modprobe = explode(PHP_EOL,$modprobe) ; + if($state !== false) {$state = "Disabled" ;} + else $state="Custom" ; + } + +if ($filename != "(builtin)") { +if ($filename != null) { +$type = pathinfo($filename) ; +$dir = $type['dirname'] ; + +$dir = str_replace("/lib/modules/$kernel/kernel/drivers/", "" ,$dir) ; +$dir = str_replace("/lib/modules/$kernel/kernel/", "" ,$dir) ; +} +} else { + $dir = $file ; + $dir = str_replace("drivers/", "" ,$dir) ; + if ($state == "Inuse") $state= "Kernel - Inuse"; else $state="Kernel" ; +} +if ($desc != null) $description = substr($desc , 0 ,60) ; else $description = null ; +$arrModules[$modname] = [ + 'modname' => $modname, + 'dependacy' => $depends, + 'parms' => $parms, + 'file' => $file, + 'modprobe' => $modprobe, + 'plugin' => $pluginfile , + 'state' => $state, + 'type' => $dir, + 'support' => $support, + 'supporturl' => $supporturl, + 'description' => $description , +] ; +} + +function modtoplg() { + global $modtoplgfile ; + $rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/boot/config/plugins')); + $files = array(); + + /** @var SplFileInfo $file */ + foreach ($rii as $file) { + if ($file->isDir()){ + continue; + } + if ($file->getExtension() != "tgz" && $file->getExtension() != "txz") continue ; + $files[] = $file->getPathname(); + } + + $list = array() ; + foreach ($files as $f) { + $plugin = str_replace("/boot/config/plugins/", "", $f) ; + $plugin = substr($plugin,0,strpos($plugin,'/') ) ; + $tar = [] ; + exec("tar -tf $f | grep -E '.ko.xz|.ko' ",$tar) ; + foreach ($tar as $t) { + $p = pathinfo($t) ; + $filename = str_replace(".ko","",$p["filename"]) ; + $list[$filename] = $plugin ; + } + } + + file_put_contents($modtoplgfile,json_encode($list,JSON_PRETTY_PRINT)) ; + +} + +function createlist() { + global $modtoplgfile, $sysdrvfile, $lsmod, $kernel,$arrModules, $modplugins ; + $arrModtoPlg = json_decode(file_get_contents($modtoplgfile) ,TRUE) ; + $builtinmodules = file_get_contents("/lib/modules/$kernel/modules.builtin") ; + $builtinmodules = explode(PHP_EOL,$builtinmodules) ; + $procmodules =file_get_contents("/lib/modules/$kernel/modules.order") ; + $procmodules = explode(PHP_EOL,$procmodules) ; + $arrModules = array() ; + + $list = scandir('/var/log/plugins/') ; + foreach($list as $f) $modplugins[plugin("name" , @readlink("/var/log/plugins/$f"))] = @readlink("/var/log/plugins/$f") ; + + foreach($builtinmodules as $bultin) + { + if ($bultin == "") continue ; + getmodules(pathinfo($bultin)["filename"]) ; + } + + foreach($procmodules as $line) { + if ($line == "") continue ; + getmodules(pathinfo($line)["filename"]) ; + } + + $lsmod2 = explode(PHP_EOL,$lsmod) ; + foreach($lsmod2 as $line) { + if ($line == "") continue ; + $line2 = explode(" ",$line) ; + getmodules($line2['0']) ; + } + + unset($arrModules['null']); + file_put_contents($sysdrvfile,json_encode($arrModules,JSON_PRETTY_PRINT)) ; +} + +?> \ No newline at end of file diff --git a/emhttp/plugins/dynamix/include/SysDriversInit.php b/emhttp/plugins/dynamix/include/SysDriversInit.php new file mode 100644 index 000000000..ad2d6b75a --- /dev/null +++ b/emhttp/plugins/dynamix/include/SysDriversInit.php @@ -0,0 +1,33 @@ +#!/usr/bin/php + \ No newline at end of file