From 2383b44961f4975a3fc0a70d96164bbed9cc9d7b Mon Sep 17 00:00:00 2001 From: Derek Macias Date: Sun, 13 Dec 2015 11:56:35 -0700 Subject: [PATCH] initial commit of nerpack plugin --- plugins/NerdPack.plg | 146 ++++++++++++ plugins/NerdPack.png | Bin 0 -> 9384 bytes source/NerdPack/install/doinst.sh | 1 + source/NerdPack/install/slack-desc | 19 ++ source/NerdPack/pkg_build.sh | 37 +++ .../emhttp/plugins/NerdPack/NerdPack.page | 38 ++++ .../local/emhttp/plugins/NerdPack/README.md | 5 + .../emhttp/plugins/NerdPack/event/started | 2 + .../plugins/NerdPack/icons/NerdPack.png | Bin 0 -> 744 bytes .../plugins/NerdPack/images/NerdPack.png | Bin 0 -> 9384 bytes .../NerdPack/include/DownloadHelpers.php | 76 +++++++ .../NerdPack/include/PackageDownload.php | 46 ++++ .../plugins/NerdPack/include/PackageQuery.php | 53 +++++ .../NerdPack/include/PackageUpdate.php | 38 ++++ .../NerdPack/javascript/jquery.NerdPack.js | 215 ++++++++++++++++++ .../plugins/NerdPack/scripts/packagemanager | 111 +++++++++ 16 files changed, 787 insertions(+) create mode 100644 plugins/NerdPack.plg create mode 100644 plugins/NerdPack.png create mode 100644 source/NerdPack/install/doinst.sh create mode 100644 source/NerdPack/install/slack-desc create mode 100755 source/NerdPack/pkg_build.sh create mode 100644 source/NerdPack/usr/local/emhttp/plugins/NerdPack/NerdPack.page create mode 100644 source/NerdPack/usr/local/emhttp/plugins/NerdPack/README.md create mode 100755 source/NerdPack/usr/local/emhttp/plugins/NerdPack/event/started create mode 100644 source/NerdPack/usr/local/emhttp/plugins/NerdPack/icons/NerdPack.png create mode 100644 source/NerdPack/usr/local/emhttp/plugins/NerdPack/images/NerdPack.png create mode 100644 source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/DownloadHelpers.php create mode 100644 source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/PackageDownload.php create mode 100644 source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/PackageQuery.php create mode 100644 source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/PackageUpdate.php create mode 100644 source/NerdPack/usr/local/emhttp/plugins/NerdPack/javascript/jquery.NerdPack.js create mode 100755 source/NerdPack/usr/local/emhttp/plugins/NerdPack/scripts/packagemanager diff --git a/plugins/NerdPack.plg b/plugins/NerdPack.plg new file mode 100644 index 00000000..78918812 --- /dev/null +++ b/plugins/NerdPack.plg @@ -0,0 +1,146 @@ + + + + + + + + + + + + + +]> + + + + +###2015.12.13 +- initial commit of wrapper plugin for packages in repo +###2015.12.07 +- Added perl 5.22.0 +- Added vim 7.4.898 (thanks Ryan Detzel) + +###2015.09.09 +- Keep all packages installed after NerdPack uninstall so we don't break other plugin's dependancies. (thanks David Coppit) + +###2015.08.09 +- Added p7zip 9.38.1 + +###2015.07.31 +- Added iperf 3.0.11 + +###2015.06.27 +- Added sshfs 2.5 + +###2015.06.23 +- Added python 2.7.9 (fixes iotop dependency) + +###2015.05.16 +- Added subversion 1.7.16 +- Added MD5 checks for all packages + +###2015.05.15 +- Added lftp 4.6.1 +- Replaced installpkg with upgradepkg to allow package upgrading +- Added removal of packages upon uninstall of &name; + +###2015.04.29 +- Added git 2.3.5 + +###2015.04.24 +- Added strace 4.10 + +###2015.04.23 +- Added bwm-ng 0.6 + +###2015.02.07 +- Added unrar 5.2.5 + +###2015.01.06 +- Inital release. includes: + - iftop 1.0pre2 + - iotop 0.6 + - screen 4.2.1 + - lshw B.02.17 + - kbd 1.15.3 + - inotify-tools 3.14 + - cpio 2.11 + + + + +&gitURL;/archive/&plgname;.txz + + + + +&gitURL;/archive/&plgname;.md5 + + + + + +if [ ! -d &emhttp; ]; then + mkdir -p &emhttp; +fi + +# Verify and install plugin package +sum1=$(/usr/bin/md5sum &plgpath;/&plgname;.txz) +sum2=$(/usr/bin/cat &plgpath;/&plgname;.md5) +if [ "${sum1:0:32}" != "${sum2:0:32}" ]; then + echo "Wrong 'plugin' package md5 hash." + rm &plgpath;/&plgname;.txz \ + &plgpath;/&plgname;.md5 + exit 1 +else + upgradepkg --install-new &plgpath;/&plgname;.txz +fi + +# Update file permissions of scripts +chmod +0755 &emhttp;/scripts/* + +# Cleaning old source files +find &plgpath;/ -type f -iname "&name;*.txz" ! -iname "*&version;*" -delete +find &plgpath;/ -type f -iname "&name;*.md5" ! -iname "*&version;*" -delete + +echo "" +echo "-----------------------------------------------------------" +echo " &name; has been installed." +echo " This plugin requires Dynamix webGui to operate" +echo " Copyright 2015, &author;, eschultz" +echo " Version: &version;" +echo "-----------------------------------------------------------" +echo "" + + + + + + +removepkg &plgpath;/&plgname;.txz \ + &plgpath;/&pkg; +rm -rf &emhttp; \ + -rf &plgpath; + +echo "" +echo "-----------------------------------------------------------" +echo " &name; has been removed." +echo " Copyright 2015, &author;, eschultz" +echo " Version: &version;" +echo "-----------------------------------------------------------" +echo "" + + + + diff --git a/plugins/NerdPack.png b/plugins/NerdPack.png new file mode 100644 index 0000000000000000000000000000000000000000..6044749cba3247e2ef5d84a870fbce3015b61b8a GIT binary patch literal 9384 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 literal 0 HcmV?d00001 diff --git a/source/NerdPack/install/doinst.sh b/source/NerdPack/install/doinst.sh new file mode 100644 index 00000000..1a248525 --- /dev/null +++ b/source/NerdPack/install/doinst.sh @@ -0,0 +1 @@ +#!/bin/sh diff --git a/source/NerdPack/install/slack-desc b/source/NerdPack/install/slack-desc new file mode 100644 index 00000000..53dca856 --- /dev/null +++ b/source/NerdPack/install/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +nerdapck: Nerd Tools unRAID Plugin +nerdpack: +nerdpack: unRAID plugin wrapper for extra packages, mostly CLI, for advanced +nerdpack: users. Use at your own risk. Not officially supported by LimeTech. +nerdpack: +nerdpack: Supports: apr, apt-util, bwm-ng, cpio, git, iftop, inotify, iotop, +nerdpack: iperf, kbd, lftp, lshw, neon, p7zip, perl, python, readline, screen, +nerdpack: sshfs-fuse, strace, subversion, unrar, utempter, vim +nerdpack: +nerdpack: plugin: https://github.com/dmacias72/unRAID-plugins +nerdpack: packages: https://github.com/eschultz/unraid6-nerdpack diff --git a/source/NerdPack/pkg_build.sh b/source/NerdPack/pkg_build.sh new file mode 100755 index 00000000..68a24194 --- /dev/null +++ b/source/NerdPack/pkg_build.sh @@ -0,0 +1,37 @@ +#!/bin/bash +DIR="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")" +tmpdir=/tmp/tmp.$(( $RANDOM * 19318203981230 + 40 )) +plugin=$(basename ${DIR}) +archive="$(dirname $(dirname ${DIR}))/archive" +version=$(date +"%Y.%m.%d") +package="${archive}/${plugin}-${version}-x86_64-1.txz" +md5="${archive}/${plugin}-${version}-x86_64-1.md5" + +if [[ -f $package ]]; then + for x in a b c d e d f g h ; do + package="${archive}/${plugin}-${version}${x}-x86_64-1.txz" + md5="${archive}/${plugin}-${version}${x}-x86_64-1.md5" + if [[ ! -f $package ]]; then + break + fi + done +fi + +mkdir -p $tmpdir +cd "$DIR" +cp --parents -f $(find . -type f ! \( -iname "pkg_build.sh" -o -iname "sftp-config.json" -o -iname ".DS_Store" \) ) $tmpdir/ +cd "$tmpdir/" +makepkg -l y -c y "${package}" +cd "$archive/" +md5sum $(basename "$package") > "$md5" +rm -rf "$tmpdir" + +# Verify and install plugin package +sum1=$(md5sum "${package}") +sum2=$(cat "$md5") +if [ "${sum1:0:32}" != "${sum2:0:32}" ]; then + echo "Checksum mismatched."; + rm "$md5" "${package}" +else + echo "Checksum matched." +fi \ No newline at end of file diff --git a/source/NerdPack/usr/local/emhttp/plugins/NerdPack/NerdPack.page b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/NerdPack.page new file mode 100644 index 00000000..f4ff52a3 --- /dev/null +++ b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/NerdPack.page @@ -0,0 +1,38 @@ +Icon="NerdPack.png" +Menu="NetworkServices" +Title="Nerd Pack" +--- + + + + +
+ + + + + + + + + + + + + + +
Name Version Size (kB) Downloaded Installed
+ +  +: +
+ + + diff --git a/source/NerdPack/usr/local/emhttp/plugins/NerdPack/README.md b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/README.md new file mode 100644 index 00000000..f6abc852 --- /dev/null +++ b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/README.md @@ -0,0 +1,5 @@ +**Nerd Tools** + +Extra packages, mostly CLI, for advanced users. Use at your own risk. Not officially supported by LimeTech. + +Contains: iftop, iotop, screen, lshw, kbd, inotify-tools, cpio, unrar, bwm-ng, strace, git, lftp, subversion, python, sshfs, iperf, p7zip diff --git a/source/NerdPack/usr/local/emhttp/plugins/NerdPack/event/started b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/event/started new file mode 100755 index 00000000..653b888e --- /dev/null +++ b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/event/started @@ -0,0 +1,2 @@ +#!/bin/bash +/usr/local/emhttp/plugins/NerdPack/scripts/packagemanager diff --git a/source/NerdPack/usr/local/emhttp/plugins/NerdPack/icons/NerdPack.png b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/icons/NerdPack.png new file mode 100644 index 0000000000000000000000000000000000000000..96cbbd40d221fec0c8f1b3cb7f21e56a1b8085e9 GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5z3 z=6kw0hFJ7&o#gEiQYdn)zWmrluemN;TsYKBj5)U+%F(%?q?K{;uxp4L$IP_IZn3pm zRSrwGXq=GiUSt%a_GfHB+e60HUKY#8*gTmX}ZEEiKe=g+v zqkr_Mt0jZB!@p~5f@fb}Hr40(POP&+HTqA$y{^z*ZEV&-}i~;_-VUyDsdT# z-n0Mo)hRT)&OQDAWQBy%w4!$pWhKi^d@l!~x|O?bJiJIsNV@#4jc zW#y$4{b#D_&)chR^kLFnRkJ^L?Ub(d2US<97bhJO40aINb^pTL%Ik-8gd5sU?Ts_! zJ;D=EzIi79B=_XcjA?5=CbBW@dHb*R1>+HefL#Y4FVmmOpvbUNv(IPB!cGkn5$~e8 zbM&;i%c@`1xt)8Jb1&rm!3(^*;=ULEnY6p1)4E>%6JOlUyG2Teq^#6UEzK4``J$|( zeCT7vzKd6H9{t7pIwL#xVbs-PG1prHsYUDezK9s8FrpU&ccsUq=p z&X%Y4&6cNA8Xj(M%4`mh4doXV6}6b_CnWs5d0As(ka30F0kgMk4683af3JIM#i^>_ zZg0Omb)U`7&USBcW@6#~{M_6Zr!8I-U5%Ol=0CTHmfw#*T}wYOFfcH9y85}Sb4q9e E05_FZX8-^I literal 0 HcmV?d00001 diff --git a/source/NerdPack/usr/local/emhttp/plugins/NerdPack/images/NerdPack.png b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/images/NerdPack.png new file mode 100644 index 0000000000000000000000000000000000000000..6044749cba3247e2ef5d84a870fbce3015b61b8a GIT binary patch literal 9384 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 literal 0 HcmV?d00001 diff --git a/source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/DownloadHelpers.php b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/DownloadHelpers.php new file mode 100644 index 00000000..4b4fd248 --- /dev/null +++ b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/DownloadHelpers.php @@ -0,0 +1,76 @@ + $previousProgress){ + $previousProgress = $progress; + + $pct=(double)($progress/100); + + $bar=round($pct * 30); + + $pct_disp=number_format($pct * 100, 0); + + $status_bar="\r["; + $status_bar.=str_repeat("|", $bar); + if($bar < 30){ + $status_bar.=">"; + $status_bar.=str_repeat("-", 30 - $bar); + } else { + $status_bar.="|"; + } + + $status_bar.="] $pct_disp%"; + + echo $status_bar; + + flush(); + + if($progress == 100) { + echo "\n"; + } + } + flush(); +} + +function get_file_from_url($file, $url) { + flush(); + $chfile = fopen($file, 'w'); + $ch = curl_init(); + $ch_vers = curl_version(); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_TIMEOUT, 3600); + curl_setopt($ch, CURLOPT_NOPROGRESS, false ); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_USERAGENT, 'curl/' . $ch_vers['version'] ); + curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'progressBar' ); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_FILE, $chfile ); + curl_exec($ch); + curl_close($ch); + fclose($chfile); + flush(); +} + +function get_content_from_github($repo, $file){ + flush(); + $ch = curl_init(); + $ch_vers = curl_version(); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_TIMEOUT, 30); + curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json', 'Content-Type: application/json')); + curl_setopt($ch, CURLOPT_USERAGENT, 'curl/' . $ch_vers['version'] ); + curl_setopt($ch, CURLOPT_URL, $repo); + $content = curl_exec($ch); + curl_close($ch); + if (!empty($content)) + file_put_contents($file, $content); + flush(); +} +?> diff --git a/source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/PackageDownload.php b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/PackageDownload.php new file mode 100644 index 00000000..e0ed5550 --- /dev/null +++ b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/PackageDownload.php @@ -0,0 +1,46 @@ + diff --git a/source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/PackageQuery.php b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/PackageQuery.php new file mode 100644 index 00000000..cf744e3b --- /dev/null +++ b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/PackageQuery.php @@ -0,0 +1,53 @@ + 4){ //if package name has a subset get it + for ($ii = 1; $ii < sizeof($pkg_NameArray)-3; $ii++) { + $pkg_Name = $pkg_Name."-".$pkg_NameArray[$ii]; + } + } + + $pkg_version = $pkg_NameArray[sizeof($pkg_NameArray)-3]; // get package version + + $pkg_nver = $pkg_Name."-".str_replace(".", "_", $pkg_version); // add underscored version to package name + + $pkg = array(); + + $pkg["name"] = $pkgs_github[$i]["name"]; // add full package name + + $pkg["pkgname"] = $pkg_Name; // add package name only + + $pkg["pkgnver"] = $pkg_nver; // add package name with underscored version + + $pkg["size"] = $pkgs_github[$i]["size"]; // add package size + + $pkg["installed"] = in_array( pathinfo($pkgs_github[$i]["name"], PATHINFO_FILENAME), $pkgs_installed ) ? "yes" : "no"; // checks if package is installed + + $pkg["downloaded"] = in_array( $pkgs_github[$i]["name"], $pkgs_downloaded ) ? "yes" : "no"; // checks if package is downloaded + + $pkg["config"] = isset($pkg_cfg["$pkg_nver"]) ? $pkg_cfg["$pkg_nver"] : "no"; // checks config for install preference + + $pkgs_array[] = $pkg; +} + +echo json_encode($pkgs_array); +?> \ No newline at end of file diff --git a/source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/PackageUpdate.php b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/PackageUpdate.php new file mode 100644 index 00000000..220de3db --- /dev/null +++ b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/include/PackageUpdate.php @@ -0,0 +1,38 @@ + diff --git a/source/NerdPack/usr/local/emhttp/plugins/NerdPack/javascript/jquery.NerdPack.js b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/javascript/jquery.NerdPack.js new file mode 100644 index 00000000..1dbff1b5 --- /dev/null +++ b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/javascript/jquery.NerdPack.js @@ -0,0 +1,215 @@ +$(function(){ + //tablesorter options + $('#tblPackages').tablesorter({headers:{5:{sorter:false}}}); + + // "uninstall package" switch and cookie + $('#removepkg') + .switchButton({ + labels_placement: "right", + on_label: 'uninstall packages On', + off_label: 'uninstall packages Off', + checked: $.cookie('nerdpack_packages') == 'remove' + }) + .change(function () { + $.cookie('nerdpack_packages', $('#removepkg').prop('checked') ? 'remove' : 'donotremove', { expires: 3650 }); + }); + + // select all packages switch + $('#checkall') + .switchButton({ + labels_placement: "right", + on_label: 'select all', + off_label: ' select all', + checked: $.cookie('nerdpack_checkall') == 'yes' + }) + .change(function() { //on change + if(this.checked) { // check select status + $('.pkgcheckbox').each(function() { //loop through each checkbox + $(this).switchButton({checked: true}); + }); + $('.pkgvalue').each(function() { //loop through each value + $(this).val('yes'); + }); + }else{ + $('.pkgcheckbox').each(function() { //loop through each checkbox + $(this).switchButton({checked: false}); + }); + $('.pkgvalue').each(function() { //loop through each value + $(this).val('no'); + }); + } + }); + + // set cookie on apply button press + $('#btnApply').click(function(event) { + $.cookie('nerdpack_checkall', $('#checkall').prop('checked') ? 'yes' : 'no', { expires: 3650 }); + packageManager(); + }); + + packageQuery(); +}); + +function packageManager() { + $.ajax({ + type : "POST", + url : "/update.php", + data : $('#package_form').serializeArray(), + success: function() { + openBox('/plugins/NerdPack/scripts/packagemanager&arg1=webgui&arg2='+$.cookie('nerdpack_packages'),'Install Packages',490,430,true); + } + }); +}; + +//list all available packages in a table +function packageQuery() { + $.ajax({ + type: "GET", + dataType: "json", + url: "/plugins/NerdPack/include/PackageQuery.php", + success: function(data) { + if (data.length > 1){ + for( i in data ) { + $("#tblPackages tbody").append( + ""+ + ""+data[i].name+""+ //package name + ""+ //package status + ""+(data[i].size / 1000).toFixed(0)+""+ //package size + ""+data[i].downloaded+""+ //package installed + ""+data[i].installed+""+ //package installed + ""+ + ""+ + ""); + $('#'+data[i].pkgname) + .switchButton({ + labels_placement: 'right', + on_label: 'On', + off_label: 'Off', + checked: data[i].config == "yes" + }) + .change(function() { + var par = $(this).parent().parent(); + if(this.checked) + par.find('.pkgvalue').val("yes"); + else + par.find('.pkgvalue').val("no"); + $("#btnApply").prop("disabled", false); + checkDepends(); + }); + } + }else { + $("#tblPackages tbody").append( + ""+ + ""+ + ""); + + } + }, + complete : function () { + $("#tblPackages").trigger("update"); + packageCheck() + }, + error: function () { + } + }); +}; + +// check github for newer package and report status +function packageCheck() { + $.ajax({ + type: "GET", + url: "/boot/config/plugins/NerdPack/packages.json", + dataType: "json", + success: function(data) { + $('#tblPackages tbody tr').each(function(row, tr) { + var tblPackage = $(tr).children("td:nth-child(1)").html(); + var tblName = $(tr).children("td:nth-child(6)").find('.pkgcheckbox').attr("id"); + for( i in data ) { + var Package = data[i].name; + var pkgNameArray = Package.split('-'); + var pkgName = pkgNameArray[0]; + if (pkgNameArray.length > 4){ + for( var ii = 1; ii < pkgNameArray.length-3; ii++ ) { + pkgName = pkgName+"-"+pkgNameArray[ii]; + } + } + if ( tblName == pkgName){ + if (tblPackage == Package) + var Update = " up-to-date"; + else + var Update = " update ready"; + } + } + $(tr).children("td:nth-child(2)").html(Update); + }); + + }, + complete : function () { + $("#tblPackages").trigger("update"); + }, + error: function () { + } + }); +}; + +// update packages +function packageUpdate(pkgName, pkgOld, pkgNew, pkgSha) { + $.ajax({ + type: "POST", + dataType: "json", + url: "/plugins/NerdPack/include/PackageUpdate.php", + data: {pkgname: pkgName, pkgold: pkgOld, pkgnew: pkgNew, pkgsha: pkgSha}, + success: function(data) { + alert(data); + }, + complete : function () { + //location.reload(); + }, + error: function () { + } + }); +}; + +function downloadPackages() { + $.ajax({ + type: "POST", + url: "/plugins/NerdPack/include/PackageDownload.php", + dataType: "json", + success: function(data) { + for( i in data ) { + packageUpdate(null,null,data[i].name,data[i].sha); + } + }, + complete : function () { + $("#tblPackages").trigger("update"); + }, + error: function () { + } + }); +}; + + +function checkDepends() { + if ($('#screen').prop('checked') == true){ + $('#utempter').switchButton({checked: true}); + $('#utempter','.pkgvalue').val('yes'); + } + if ($('#iotop').prop('checked') == true){ + $('#python').switchButton({checked: true}); + $('#python','.pkgvalue').val('yes'); + } +}; + +// check github for newer package and report status +function getPackages() { + $.ajax({ + type: "GET", + url: "https://api.github.com/repos/eschultz/unraid6-nerdpack/contents/packages", + dataType: "json", + success: function(data) { + }, + complete : function () { + }, + error: function () { + } + }); +}; \ No newline at end of file diff --git a/source/NerdPack/usr/local/emhttp/plugins/NerdPack/scripts/packagemanager b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/scripts/packagemanager new file mode 100755 index 00000000..46c00cfa --- /dev/null +++ b/source/NerdPack/usr/local/emhttp/plugins/NerdPack/scripts/packagemanager @@ -0,0 +1,111 @@ +#!/usr/bin/php -q + $pkg_pref) { //get preferences for each package + + $pkg_cmd = ''; + + $pkg_name = str_replace("_", ".", $pkg_name); // replace "_" with "." in package names + + $pkg_pattern = "/^".$pkg_name.".*/"; // search patter for packages + + $pkg_install_status = preg_grep($pkg_pattern, $pkgs_installed); // check install status + + if($pkg_pref == "yes" && !$pkg_install_status){ + + //if executing from the wegui check status and download if necessary + if ($argv[1] == "webgui"){ + + if(!preg_grep($pkg_pattern , $pkgs_downloaded)) { + + $pkg_online_status = preg_grep($pkg_pattern , $pkgs_github); + + $pkg_matches = array_filter($pkgs_github, function($a) use($pkg_pattern ) { + return preg_grep($pkg_pattern , $a); + }); + + $pkg_gitname = array_values($pkg_matches)[0]["name"]; + + $pkg_file = $pkg_path.$pkg_gitname; + + $pkg_url = array_values($pkg_matches)[0]["download_url"]; + + $pkg_sha = array_values($pkg_matches)[0]["sha"]; + + $pkg_size = array_values($pkg_matches)[0]["size"]; + + logger("Downloading $pkg_gitname package..."); + get_file_from_url($pkg_file, $pkg_url); + + /*$pkg_msg = "$pkg_name package download failed."; + if (file_put_contents($pkg_new, fopen($pkg_git.$pkg_name, 'r')));{ + $pkg_size = filesize($pkg_new); + $pkg_handle = fopen($pkg_new, "rb"); + $pkg_contents = fread($pkg_handle, $pkg_size); + fclose($pkg_handle); + $pkg_str = "blob ".$pkg_size."\0".$pkg_contents; + $pkg_sha = sha1($pkg_str); + if($pkg_sha == $_POST["pkgsha"]) { + $pkg_msg = "$pkg_name package downloaded."; + if (is_file($pkg_old)) + unlink($pkg_old); + if($pkg_pref == "yes") { + $pkg_msg = "$pkg_name package updated."; + } + }else { + if (is_file($pkg_new)) + unlink($pkg_new); + } + } + echo json_encode($pkg_msg); + */ + + } + } + + $pkg_msg = "Installing"; + $pkg_cmd = "upgradepkg --install-new "; + + }elseif($pkg_pref == "no" && $pkg_install_status && $argv[2] == "remove"){ + + $pkg_msg = "Removing"; + $pkg_cmd = "removepkg "; + + } + if(!empty($pkg_cmd)){ + logger("$pkg_msg $pkg_name package..."); + $pkg_cmd = $pkg_cmd.$pkg_path.$pkg_name."*"; + + exec($pkg_cmd, $output, $return_var); + + for ($i = 0; $i < sizeof($output); $i++) { + logger($output[$i]); + } + } +} + +logger("All packages processed"); +?> \ No newline at end of file