diff --git a/QPKGs/ClamAV/build/ClamAV_240206.qpkg b/QPKGs/ClamAV/build/ClamAV_240206.qpkg new file mode 100644 index 000000000..ec2a1691c Binary files /dev/null and b/QPKGs/ClamAV/build/ClamAV_240206.qpkg differ diff --git a/QPKGs/ClamAV/build/ClamAV_240206.qpkg.md5 b/QPKGs/ClamAV/build/ClamAV_240206.qpkg.md5 new file mode 100644 index 000000000..95b68c5e1 --- /dev/null +++ b/QPKGs/ClamAV/build/ClamAV_240206.qpkg.md5 @@ -0,0 +1 @@ +552bded76370d35ed9511fd4928d187d build/ClamAV_240206.qpkg diff --git a/QPKGs/ClamAV/qpkg.cfg b/QPKGs/ClamAV/qpkg.cfg index 977459fb5..44e22dfbb 100644 --- a/QPKGs/ClamAV/qpkg.cfg +++ b/QPKGs/ClamAV/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="ClamAV" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="clamav.sh" diff --git a/QPKGs/ClamAV/shared/clamav.sh b/QPKGs/ClamAV/shared/clamav.sh index a19f900bb..63a0aa7b3 100755 --- a/QPKGs/ClamAV/shared/clamav.sh +++ b/QPKGs/ClamAV/shared/clamav.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=ClamAV -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=4 InitService() { diff --git a/QPKGs/Glances/build/Glances_240206.qpkg b/QPKGs/Glances/build/Glances_240206.qpkg new file mode 100644 index 000000000..33aa0db95 Binary files /dev/null and b/QPKGs/Glances/build/Glances_240206.qpkg differ diff --git a/QPKGs/Glances/build/Glances_240206.qpkg.md5 b/QPKGs/Glances/build/Glances_240206.qpkg.md5 new file mode 100644 index 000000000..832bce182 --- /dev/null +++ b/QPKGs/Glances/build/Glances_240206.qpkg.md5 @@ -0,0 +1 @@ +626f1d1886cb3f8b160ba8499f83d127 build/Glances_240206.qpkg diff --git a/QPKGs/Glances/qpkg.cfg b/QPKGs/Glances/qpkg.cfg index fcb05fdf6..8fadc3b68 100644 --- a/QPKGs/Glances/qpkg.cfg +++ b/QPKGs/Glances/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="Glances" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="glances.sh" diff --git a/QPKGs/Glances/shared/glances.sh b/QPKGs/Glances/shared/glances.sh index 2fc534a68..621a98837 100755 --- a/QPKGs/Glances/shared/glances.sh +++ b/QPKGs/Glances/shared/glances.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=Glances -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=6 InitService() { diff --git a/QPKGs/Headphones/build/Headphones_240206.qpkg b/QPKGs/Headphones/build/Headphones_240206.qpkg new file mode 100644 index 000000000..0a536b984 Binary files /dev/null and b/QPKGs/Headphones/build/Headphones_240206.qpkg differ diff --git a/QPKGs/Headphones/build/Headphones_240206.qpkg.md5 b/QPKGs/Headphones/build/Headphones_240206.qpkg.md5 new file mode 100644 index 000000000..89ce3cc53 --- /dev/null +++ b/QPKGs/Headphones/build/Headphones_240206.qpkg.md5 @@ -0,0 +1 @@ +572f1553fdd6d63f33f363c1b5afcd8b build/Headphones_240206.qpkg diff --git a/QPKGs/Headphones/qpkg.cfg b/QPKGs/Headphones/qpkg.cfg index dbc654eb6..3b919306a 100644 --- a/QPKGs/Headphones/qpkg.cfg +++ b/QPKGs/Headphones/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="Headphones" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="headphones.sh" diff --git a/QPKGs/Headphones/shared/headphones.sh b/QPKGs/Headphones/shared/headphones.sh index fe9b5db19..536452487 100755 --- a/QPKGs/Headphones/shared/headphones.sh +++ b/QPKGs/Headphones/shared/headphones.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=Headphones -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=1 InitService() { diff --git a/QPKGs/Kapowarr/build/Kapowarr_240206_arm_64.qpkg b/QPKGs/Kapowarr/build/Kapowarr_240206_arm_64.qpkg new file mode 100644 index 000000000..ecfa5836f Binary files /dev/null and b/QPKGs/Kapowarr/build/Kapowarr_240206_arm_64.qpkg differ diff --git a/QPKGs/Kapowarr/build/Kapowarr_240206_arm_64.qpkg.md5 b/QPKGs/Kapowarr/build/Kapowarr_240206_arm_64.qpkg.md5 new file mode 100644 index 000000000..2efe3fa0d --- /dev/null +++ b/QPKGs/Kapowarr/build/Kapowarr_240206_arm_64.qpkg.md5 @@ -0,0 +1 @@ +c6affe83fdd7d9e377373d18b05e57b8 build/Kapowarr_240206_arm_64.qpkg diff --git a/QPKGs/Kapowarr/build/Kapowarr_240206_x86.qpkg b/QPKGs/Kapowarr/build/Kapowarr_240206_x86.qpkg new file mode 100644 index 000000000..076653a5b Binary files /dev/null and b/QPKGs/Kapowarr/build/Kapowarr_240206_x86.qpkg differ diff --git a/QPKGs/Kapowarr/build/Kapowarr_240206_x86.qpkg.md5 b/QPKGs/Kapowarr/build/Kapowarr_240206_x86.qpkg.md5 new file mode 100644 index 000000000..99dd3c939 --- /dev/null +++ b/QPKGs/Kapowarr/build/Kapowarr_240206_x86.qpkg.md5 @@ -0,0 +1 @@ +bd9393f936522cba2f751e659e6680ee build/Kapowarr_240206_x86.qpkg diff --git a/QPKGs/Kapowarr/build/Kapowarr_240206_x86_64.qpkg b/QPKGs/Kapowarr/build/Kapowarr_240206_x86_64.qpkg new file mode 100644 index 000000000..5b85e97ee Binary files /dev/null and b/QPKGs/Kapowarr/build/Kapowarr_240206_x86_64.qpkg differ diff --git a/QPKGs/Kapowarr/build/Kapowarr_240206_x86_64.qpkg.md5 b/QPKGs/Kapowarr/build/Kapowarr_240206_x86_64.qpkg.md5 new file mode 100644 index 000000000..879a8f751 --- /dev/null +++ b/QPKGs/Kapowarr/build/Kapowarr_240206_x86_64.qpkg.md5 @@ -0,0 +1 @@ +c5fc7abae9fda7d84d93e695eb1db1d7 build/Kapowarr_240206_x86_64.qpkg diff --git a/QPKGs/Kapowarr/qpkg.cfg b/QPKGs/Kapowarr/qpkg.cfg index 1b7265211..2031e6aeb 100644 --- a/QPKGs/Kapowarr/qpkg.cfg +++ b/QPKGs/Kapowarr/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="Kapowarr" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="kapowarr.sh" diff --git a/QPKGs/Kapowarr/shared/kapowarr.sh b/QPKGs/Kapowarr/shared/kapowarr.sh index 35d9779a7..f3c6383f7 100755 --- a/QPKGs/Kapowarr/shared/kapowarr.sh +++ b/QPKGs/Kapowarr/shared/kapowarr.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=Kapowarr -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=1 InitService() { diff --git a/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_arm_64.qpkg b/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_arm_64.qpkg new file mode 100644 index 000000000..4367d71bb Binary files /dev/null and b/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_arm_64.qpkg differ diff --git a/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_arm_64.qpkg.md5 b/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_arm_64.qpkg.md5 new file mode 100644 index 000000000..130c5549d --- /dev/null +++ b/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_arm_64.qpkg.md5 @@ -0,0 +1 @@ +bf58d3154e810bc3371e7b7b745cbaba build/LazyLibrarian_240206_arm_64.qpkg diff --git a/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_x86.qpkg b/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_x86.qpkg new file mode 100644 index 000000000..d6f70e01e Binary files /dev/null and b/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_x86.qpkg differ diff --git a/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_x86.qpkg.md5 b/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_x86.qpkg.md5 new file mode 100644 index 000000000..8585bcf29 --- /dev/null +++ b/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_x86.qpkg.md5 @@ -0,0 +1 @@ +885d76a1305c5ccdd0da081d0c6ea181 build/LazyLibrarian_240206_x86.qpkg diff --git a/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_x86_64.qpkg b/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_x86_64.qpkg new file mode 100644 index 000000000..f2d4eae3f Binary files /dev/null and b/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_x86_64.qpkg differ diff --git a/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_x86_64.qpkg.md5 b/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_x86_64.qpkg.md5 new file mode 100644 index 000000000..48427f6d8 --- /dev/null +++ b/QPKGs/LazyLibrarian/build/LazyLibrarian_240206_x86_64.qpkg.md5 @@ -0,0 +1 @@ +77c7bf23daa933a978812c6f89ca5c9c build/LazyLibrarian_240206_x86_64.qpkg diff --git a/QPKGs/LazyLibrarian/qpkg.cfg b/QPKGs/LazyLibrarian/qpkg.cfg index 502ad6d66..547a30db4 100644 --- a/QPKGs/LazyLibrarian/qpkg.cfg +++ b/QPKGs/LazyLibrarian/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="LazyLibrarian" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="lazylibrarian.sh" diff --git a/QPKGs/LazyLibrarian/shared/lazylibrarian.sh b/QPKGs/LazyLibrarian/shared/lazylibrarian.sh index f3321918a..1494cd2d7 100755 --- a/QPKGs/LazyLibrarian/shared/lazylibrarian.sh +++ b/QPKGs/LazyLibrarian/shared/lazylibrarian.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=LazyLibrarian -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=1 InitService() { diff --git a/QPKGs/Mylar3/build/Mylar3_240206_arm_64.qpkg b/QPKGs/Mylar3/build/Mylar3_240206_arm_64.qpkg new file mode 100644 index 000000000..c8e58b300 Binary files /dev/null and b/QPKGs/Mylar3/build/Mylar3_240206_arm_64.qpkg differ diff --git a/QPKGs/Mylar3/build/Mylar3_240206_arm_64.qpkg.md5 b/QPKGs/Mylar3/build/Mylar3_240206_arm_64.qpkg.md5 new file mode 100644 index 000000000..f9b1f64d7 --- /dev/null +++ b/QPKGs/Mylar3/build/Mylar3_240206_arm_64.qpkg.md5 @@ -0,0 +1 @@ +bdec86930fc211936c892e408e1af9d5 build/Mylar3_240206_arm_64.qpkg diff --git a/QPKGs/Mylar3/build/Mylar3_240206_x86.qpkg b/QPKGs/Mylar3/build/Mylar3_240206_x86.qpkg new file mode 100644 index 000000000..0b944aaa5 Binary files /dev/null and b/QPKGs/Mylar3/build/Mylar3_240206_x86.qpkg differ diff --git a/QPKGs/Mylar3/build/Mylar3_240206_x86.qpkg.md5 b/QPKGs/Mylar3/build/Mylar3_240206_x86.qpkg.md5 new file mode 100644 index 000000000..da65e9414 --- /dev/null +++ b/QPKGs/Mylar3/build/Mylar3_240206_x86.qpkg.md5 @@ -0,0 +1 @@ +b7c18b1b75129db1cc39baef8adb0edb build/Mylar3_240206_x86.qpkg diff --git a/QPKGs/Mylar3/build/Mylar3_240206_x86_64.qpkg b/QPKGs/Mylar3/build/Mylar3_240206_x86_64.qpkg new file mode 100644 index 000000000..fd9747c2e Binary files /dev/null and b/QPKGs/Mylar3/build/Mylar3_240206_x86_64.qpkg differ diff --git a/QPKGs/Mylar3/build/Mylar3_240206_x86_64.qpkg.md5 b/QPKGs/Mylar3/build/Mylar3_240206_x86_64.qpkg.md5 new file mode 100644 index 000000000..62a2b80d1 --- /dev/null +++ b/QPKGs/Mylar3/build/Mylar3_240206_x86_64.qpkg.md5 @@ -0,0 +1 @@ +e779b18e84f219cd369551c7eb2af502 build/Mylar3_240206_x86_64.qpkg diff --git a/QPKGs/Mylar3/qpkg.cfg b/QPKGs/Mylar3/qpkg.cfg index 9e09a3575..e123c5c59 100644 --- a/QPKGs/Mylar3/qpkg.cfg +++ b/QPKGs/Mylar3/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="Mylar3" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="mylar3.sh" diff --git a/QPKGs/Mylar3/shared/mylar3.sh b/QPKGs/Mylar3/shared/mylar3.sh index 229f7eedc..3437a0655 100755 --- a/QPKGs/Mylar3/shared/mylar3.sh +++ b/QPKGs/Mylar3/shared/mylar3.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=Mylar3 -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=1 InitService() { diff --git a/QPKGs/NZBGet/build/NZBGet_240206.qpkg b/QPKGs/NZBGet/build/NZBGet_240206.qpkg new file mode 100644 index 000000000..f179bde9b Binary files /dev/null and b/QPKGs/NZBGet/build/NZBGet_240206.qpkg differ diff --git a/QPKGs/NZBGet/build/NZBGet_240206.qpkg.md5 b/QPKGs/NZBGet/build/NZBGet_240206.qpkg.md5 new file mode 100644 index 000000000..c79e54310 --- /dev/null +++ b/QPKGs/NZBGet/build/NZBGet_240206.qpkg.md5 @@ -0,0 +1 @@ +af890c99522dd1def6462afaba84222a build/NZBGet_240206.qpkg diff --git a/QPKGs/NZBGet/qpkg.cfg b/QPKGs/NZBGet/qpkg.cfg index 30ff2394e..538b2d25a 100644 --- a/QPKGs/NZBGet/qpkg.cfg +++ b/QPKGs/NZBGet/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="NZBGet" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="nzbget.sh" diff --git a/QPKGs/NZBGet/shared/nzbget.sh b/QPKGs/NZBGet/shared/nzbget.sh index a3ab23f5f..1baa1a110 100755 --- a/QPKGs/NZBGet/shared/nzbget.sh +++ b/QPKGs/NZBGet/shared/nzbget.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=NZBGet -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=3 InitService() { diff --git a/QPKGs/NZBHydra2/arm_64/nzbhydra2.sh b/QPKGs/NZBHydra2/arm_64/nzbhydra2.sh index a330f3782..93ec45ab5 100755 --- a/QPKGs/NZBHydra2/arm_64/nzbhydra2.sh +++ b/QPKGs/NZBHydra2/arm_64/nzbhydra2.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=NZBHydra2 -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=5 InitService() { diff --git a/QPKGs/NZBHydra2/build/NZBHydra2_240206_arm_64.qpkg b/QPKGs/NZBHydra2/build/NZBHydra2_240206_arm_64.qpkg new file mode 100644 index 000000000..5856c658f Binary files /dev/null and b/QPKGs/NZBHydra2/build/NZBHydra2_240206_arm_64.qpkg differ diff --git a/QPKGs/NZBHydra2/build/NZBHydra2_240206_arm_64.qpkg.md5 b/QPKGs/NZBHydra2/build/NZBHydra2_240206_arm_64.qpkg.md5 new file mode 100644 index 000000000..ef757f19b --- /dev/null +++ b/QPKGs/NZBHydra2/build/NZBHydra2_240206_arm_64.qpkg.md5 @@ -0,0 +1 @@ +3b24f799577e79b5047cdd10e9be7df0 build/NZBHydra2_240206_arm_64.qpkg diff --git a/QPKGs/NZBHydra2/build/NZBHydra2_240206_x86_64.qpkg b/QPKGs/NZBHydra2/build/NZBHydra2_240206_x86_64.qpkg new file mode 100644 index 000000000..86a61ae77 Binary files /dev/null and b/QPKGs/NZBHydra2/build/NZBHydra2_240206_x86_64.qpkg differ diff --git a/QPKGs/NZBHydra2/build/NZBHydra2_240206_x86_64.qpkg.md5 b/QPKGs/NZBHydra2/build/NZBHydra2_240206_x86_64.qpkg.md5 new file mode 100644 index 000000000..e4529256d --- /dev/null +++ b/QPKGs/NZBHydra2/build/NZBHydra2_240206_x86_64.qpkg.md5 @@ -0,0 +1 @@ +600d57a94f758adcf9cf22831fe14230 build/NZBHydra2_240206_x86_64.qpkg diff --git a/QPKGs/NZBHydra2/qpkg.cfg b/QPKGs/NZBHydra2/qpkg.cfg index 493aea6a3..f5126b2e2 100644 --- a/QPKGs/NZBHydra2/qpkg.cfg +++ b/QPKGs/NZBHydra2/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="NZBHydra2" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="nzbhydra2.sh" diff --git a/QPKGs/NZBHydra2/x86_64/nzbhydra2.sh b/QPKGs/NZBHydra2/x86_64/nzbhydra2.sh index f93ea5a6d..97681cd9c 100755 --- a/QPKGs/NZBHydra2/x86_64/nzbhydra2.sh +++ b/QPKGs/NZBHydra2/x86_64/nzbhydra2.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=NZBHydra2 -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=5 InitService() { diff --git a/QPKGs/OLidarr/arm_64/olidarr.sh b/QPKGs/OLidarr/arm_64/olidarr.sh index 32c88ff45..6334d854e 100755 --- a/QPKGs/OLidarr/arm_64/olidarr.sh +++ b/QPKGs/OLidarr/arm_64/olidarr.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OLidarr -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=5 InitService() { diff --git a/QPKGs/OLidarr/build/OLidarr_240206_arm_64.qpkg b/QPKGs/OLidarr/build/OLidarr_240206_arm_64.qpkg new file mode 100644 index 000000000..51cc67580 Binary files /dev/null and b/QPKGs/OLidarr/build/OLidarr_240206_arm_64.qpkg differ diff --git a/QPKGs/OLidarr/build/OLidarr_240206_arm_64.qpkg.md5 b/QPKGs/OLidarr/build/OLidarr_240206_arm_64.qpkg.md5 new file mode 100644 index 000000000..29b1d440f --- /dev/null +++ b/QPKGs/OLidarr/build/OLidarr_240206_arm_64.qpkg.md5 @@ -0,0 +1 @@ +b2fd3bd1b4bbead13bad578846da8613 build/OLidarr_240206_arm_64.qpkg diff --git a/QPKGs/OLidarr/build/OLidarr_240206_x86_64.qpkg b/QPKGs/OLidarr/build/OLidarr_240206_x86_64.qpkg new file mode 100644 index 000000000..53d9fcadc Binary files /dev/null and b/QPKGs/OLidarr/build/OLidarr_240206_x86_64.qpkg differ diff --git a/QPKGs/OLidarr/build/OLidarr_240206_x86_64.qpkg.md5 b/QPKGs/OLidarr/build/OLidarr_240206_x86_64.qpkg.md5 new file mode 100644 index 000000000..7a6be2dac --- /dev/null +++ b/QPKGs/OLidarr/build/OLidarr_240206_x86_64.qpkg.md5 @@ -0,0 +1 @@ +a5f5e46a08cd9f052c15b6a27c8ad5fc build/OLidarr_240206_x86_64.qpkg diff --git a/QPKGs/OLidarr/qpkg.cfg b/QPKGs/OLidarr/qpkg.cfg index 5c570ecc4..28b9b5221 100644 --- a/QPKGs/OLidarr/qpkg.cfg +++ b/QPKGs/OLidarr/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="OLidarr" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="olidarr.sh" diff --git a/QPKGs/OLidarr/x86_64/olidarr.sh b/QPKGs/OLidarr/x86_64/olidarr.sh index 508a550eb..235e6bb59 100755 --- a/QPKGs/OLidarr/x86_64/olidarr.sh +++ b/QPKGs/OLidarr/x86_64/olidarr.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OLidarr -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=5 InitService() { diff --git a/QPKGs/OMedusa/build/OMedusa_240206.qpkg b/QPKGs/OMedusa/build/OMedusa_240206.qpkg new file mode 100644 index 000000000..076ed68fc Binary files /dev/null and b/QPKGs/OMedusa/build/OMedusa_240206.qpkg differ diff --git a/QPKGs/OMedusa/build/OMedusa_240206.qpkg.md5 b/QPKGs/OMedusa/build/OMedusa_240206.qpkg.md5 new file mode 100644 index 000000000..63d55196c --- /dev/null +++ b/QPKGs/OMedusa/build/OMedusa_240206.qpkg.md5 @@ -0,0 +1 @@ +36a9a6e2c3e6155fbd5af06641f53f55 build/OMedusa_240206.qpkg diff --git a/QPKGs/OMedusa/qpkg.cfg b/QPKGs/OMedusa/qpkg.cfg index 389068ee6..39c826530 100644 --- a/QPKGs/OMedusa/qpkg.cfg +++ b/QPKGs/OMedusa/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="OMedusa" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="omedusa.sh" diff --git a/QPKGs/OMedusa/shared/omedusa.sh b/QPKGs/OMedusa/shared/omedusa.sh index 7b7a93d66..deed124da 100755 --- a/QPKGs/OMedusa/shared/omedusa.sh +++ b/QPKGs/OMedusa/shared/omedusa.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OMedusa -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=1 InitService() { diff --git a/QPKGs/OReadarr/arm_64/oreadarr.sh b/QPKGs/OReadarr/arm_64/oreadarr.sh index a65914f6d..2516de4dc 100755 --- a/QPKGs/OReadarr/arm_64/oreadarr.sh +++ b/QPKGs/OReadarr/arm_64/oreadarr.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OReadarr -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=5 InitService() { diff --git a/QPKGs/OReadarr/build/OReadarr_240206_arm_64.qpkg b/QPKGs/OReadarr/build/OReadarr_240206_arm_64.qpkg new file mode 100644 index 000000000..367b3fca6 Binary files /dev/null and b/QPKGs/OReadarr/build/OReadarr_240206_arm_64.qpkg differ diff --git a/QPKGs/OReadarr/build/OReadarr_240206_arm_64.qpkg.md5 b/QPKGs/OReadarr/build/OReadarr_240206_arm_64.qpkg.md5 new file mode 100644 index 000000000..cd5c92cee --- /dev/null +++ b/QPKGs/OReadarr/build/OReadarr_240206_arm_64.qpkg.md5 @@ -0,0 +1 @@ +5dff415f6104ec237eb21a6f6544523d build/OReadarr_240206_arm_64.qpkg diff --git a/QPKGs/OReadarr/build/OReadarr_240206_x86_64.qpkg b/QPKGs/OReadarr/build/OReadarr_240206_x86_64.qpkg new file mode 100644 index 000000000..a23010a62 Binary files /dev/null and b/QPKGs/OReadarr/build/OReadarr_240206_x86_64.qpkg differ diff --git a/QPKGs/OReadarr/build/OReadarr_240206_x86_64.qpkg.md5 b/QPKGs/OReadarr/build/OReadarr_240206_x86_64.qpkg.md5 new file mode 100644 index 000000000..4f8f3916e --- /dev/null +++ b/QPKGs/OReadarr/build/OReadarr_240206_x86_64.qpkg.md5 @@ -0,0 +1 @@ +3347efc4ea9fd4cc2661f3d43f0bd057 build/OReadarr_240206_x86_64.qpkg diff --git a/QPKGs/OReadarr/qpkg.cfg b/QPKGs/OReadarr/qpkg.cfg index ec0f259dd..e7b7bcbee 100644 --- a/QPKGs/OReadarr/qpkg.cfg +++ b/QPKGs/OReadarr/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="OReadarr" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="oreadarr.sh" diff --git a/QPKGs/OReadarr/x86_64/oreadarr.sh b/QPKGs/OReadarr/x86_64/oreadarr.sh index a6c5f8ccd..86aaae16a 100755 --- a/QPKGs/OReadarr/x86_64/oreadarr.sh +++ b/QPKGs/OReadarr/x86_64/oreadarr.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OReadarr -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=5 InitService() { diff --git a/QPKGs/OSickGear/build/OSickGear_240206_arm_64.qpkg b/QPKGs/OSickGear/build/OSickGear_240206_arm_64.qpkg new file mode 100644 index 000000000..b7de43334 Binary files /dev/null and b/QPKGs/OSickGear/build/OSickGear_240206_arm_64.qpkg differ diff --git a/QPKGs/OSickGear/build/OSickGear_240206_arm_64.qpkg.md5 b/QPKGs/OSickGear/build/OSickGear_240206_arm_64.qpkg.md5 new file mode 100644 index 000000000..881125882 --- /dev/null +++ b/QPKGs/OSickGear/build/OSickGear_240206_arm_64.qpkg.md5 @@ -0,0 +1 @@ +fe8dd4dc6d439955aa29b267c0685839 build/OSickGear_240206_arm_64.qpkg diff --git a/QPKGs/OSickGear/build/OSickGear_240206_x86.qpkg b/QPKGs/OSickGear/build/OSickGear_240206_x86.qpkg new file mode 100644 index 000000000..4b62d629f Binary files /dev/null and b/QPKGs/OSickGear/build/OSickGear_240206_x86.qpkg differ diff --git a/QPKGs/OSickGear/build/OSickGear_240206_x86.qpkg.md5 b/QPKGs/OSickGear/build/OSickGear_240206_x86.qpkg.md5 new file mode 100644 index 000000000..f456abc79 --- /dev/null +++ b/QPKGs/OSickGear/build/OSickGear_240206_x86.qpkg.md5 @@ -0,0 +1 @@ +14eb22a5defb051d0f7d95deb84ea9d7 build/OSickGear_240206_x86.qpkg diff --git a/QPKGs/OSickGear/build/OSickGear_240206_x86_64.qpkg b/QPKGs/OSickGear/build/OSickGear_240206_x86_64.qpkg new file mode 100644 index 000000000..4389e7aee Binary files /dev/null and b/QPKGs/OSickGear/build/OSickGear_240206_x86_64.qpkg differ diff --git a/QPKGs/OSickGear/build/OSickGear_240206_x86_64.qpkg.md5 b/QPKGs/OSickGear/build/OSickGear_240206_x86_64.qpkg.md5 new file mode 100644 index 000000000..67ae35ec2 --- /dev/null +++ b/QPKGs/OSickGear/build/OSickGear_240206_x86_64.qpkg.md5 @@ -0,0 +1 @@ +c6b416519344d245a5f0c60d48775c57 build/OSickGear_240206_x86_64.qpkg diff --git a/QPKGs/OSickGear/qpkg.cfg b/QPKGs/OSickGear/qpkg.cfg index 2704ccca3..94a19fbf8 100644 --- a/QPKGs/OSickGear/qpkg.cfg +++ b/QPKGs/OSickGear/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="OSickGear" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="osickgear.sh" diff --git a/QPKGs/OSickGear/shared/osickgear.sh b/QPKGs/OSickGear/shared/osickgear.sh index b195d5ac5..bd2bc55ae 100755 --- a/QPKGs/OSickGear/shared/osickgear.sh +++ b/QPKGs/OSickGear/shared/osickgear.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OSickGear -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=1 InitService() { diff --git a/QPKGs/OSonarr/arm_64/osonarr.sh b/QPKGs/OSonarr/arm_64/osonarr.sh index f8a17ef21..8e7df1f35 100755 --- a/QPKGs/OSonarr/arm_64/osonarr.sh +++ b/QPKGs/OSonarr/arm_64/osonarr.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OSonarr -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=5 InitService() { diff --git a/QPKGs/OSonarr/build/OSonarr_240206_arm_64.qpkg b/QPKGs/OSonarr/build/OSonarr_240206_arm_64.qpkg new file mode 100644 index 000000000..2bf0424d5 Binary files /dev/null and b/QPKGs/OSonarr/build/OSonarr_240206_arm_64.qpkg differ diff --git a/QPKGs/OSonarr/build/OSonarr_240206_arm_64.qpkg.md5 b/QPKGs/OSonarr/build/OSonarr_240206_arm_64.qpkg.md5 new file mode 100644 index 000000000..4e62b7f5d --- /dev/null +++ b/QPKGs/OSonarr/build/OSonarr_240206_arm_64.qpkg.md5 @@ -0,0 +1 @@ +22093db791b0f92970415d49efe76208 build/OSonarr_240206_arm_64.qpkg diff --git a/QPKGs/OSonarr/build/OSonarr_240206_x86_64.qpkg b/QPKGs/OSonarr/build/OSonarr_240206_x86_64.qpkg new file mode 100644 index 000000000..60f801afe Binary files /dev/null and b/QPKGs/OSonarr/build/OSonarr_240206_x86_64.qpkg differ diff --git a/QPKGs/OSonarr/build/OSonarr_240206_x86_64.qpkg.md5 b/QPKGs/OSonarr/build/OSonarr_240206_x86_64.qpkg.md5 new file mode 100644 index 000000000..3617380a1 --- /dev/null +++ b/QPKGs/OSonarr/build/OSonarr_240206_x86_64.qpkg.md5 @@ -0,0 +1 @@ +12da134c64b41ff5a1568db074fa8f62 build/OSonarr_240206_x86_64.qpkg diff --git a/QPKGs/OSonarr/qpkg.cfg b/QPKGs/OSonarr/qpkg.cfg index 70468f21f..073720b4d 100644 --- a/QPKGs/OSonarr/qpkg.cfg +++ b/QPKGs/OSonarr/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="OSonarr" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="osonarr.sh" diff --git a/QPKGs/OSonarr/x86_64/osonarr.sh b/QPKGs/OSonarr/x86_64/osonarr.sh index 6a3131910..2c3b9af01 100755 --- a/QPKGs/OSonarr/x86_64/osonarr.sh +++ b/QPKGs/OSonarr/x86_64/osonarr.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OSonarr -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=5 InitService() { diff --git a/QPKGs/OTautulli/build/OTautulli_240206_arm_64.qpkg b/QPKGs/OTautulli/build/OTautulli_240206_arm_64.qpkg new file mode 100644 index 000000000..958b96f8f Binary files /dev/null and b/QPKGs/OTautulli/build/OTautulli_240206_arm_64.qpkg differ diff --git a/QPKGs/OTautulli/build/OTautulli_240206_arm_64.qpkg.md5 b/QPKGs/OTautulli/build/OTautulli_240206_arm_64.qpkg.md5 new file mode 100644 index 000000000..237399acd --- /dev/null +++ b/QPKGs/OTautulli/build/OTautulli_240206_arm_64.qpkg.md5 @@ -0,0 +1 @@ +8908be4c98ba95b464ce3184f4091765 build/OTautulli_240206_arm_64.qpkg diff --git a/QPKGs/OTautulli/build/OTautulli_240206_x86.qpkg b/QPKGs/OTautulli/build/OTautulli_240206_x86.qpkg new file mode 100644 index 000000000..281db312b Binary files /dev/null and b/QPKGs/OTautulli/build/OTautulli_240206_x86.qpkg differ diff --git a/QPKGs/OTautulli/build/OTautulli_240206_x86.qpkg.md5 b/QPKGs/OTautulli/build/OTautulli_240206_x86.qpkg.md5 new file mode 100644 index 000000000..a9ee65525 --- /dev/null +++ b/QPKGs/OTautulli/build/OTautulli_240206_x86.qpkg.md5 @@ -0,0 +1 @@ +c46718c02e26c81fd912d74efd678356 build/OTautulli_240206_x86.qpkg diff --git a/QPKGs/OTautulli/build/OTautulli_240206_x86_64.qpkg b/QPKGs/OTautulli/build/OTautulli_240206_x86_64.qpkg new file mode 100644 index 000000000..2ef0c5f00 Binary files /dev/null and b/QPKGs/OTautulli/build/OTautulli_240206_x86_64.qpkg differ diff --git a/QPKGs/OTautulli/build/OTautulli_240206_x86_64.qpkg.md5 b/QPKGs/OTautulli/build/OTautulli_240206_x86_64.qpkg.md5 new file mode 100644 index 000000000..6c911715d --- /dev/null +++ b/QPKGs/OTautulli/build/OTautulli_240206_x86_64.qpkg.md5 @@ -0,0 +1 @@ +a22f15a08e36ab5b27c8e367dba746e4 build/OTautulli_240206_x86_64.qpkg diff --git a/QPKGs/OTautulli/qpkg.cfg b/QPKGs/OTautulli/qpkg.cfg index e476d57b7..972304b30 100644 --- a/QPKGs/OTautulli/qpkg.cfg +++ b/QPKGs/OTautulli/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="OTautulli" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="otautulli.sh" diff --git a/QPKGs/OTautulli/shared/otautulli.sh b/QPKGs/OTautulli/shared/otautulli.sh index 36620541e..a1bae3d1b 100755 --- a/QPKGs/OTautulli/shared/otautulli.sh +++ b/QPKGs/OTautulli/shared/otautulli.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OTautulli -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=1 InitService() { diff --git a/QPKGs/OTransmission/build/OTransmission_240206.qpkg b/QPKGs/OTransmission/build/OTransmission_240206.qpkg new file mode 100644 index 000000000..adcb05fce Binary files /dev/null and b/QPKGs/OTransmission/build/OTransmission_240206.qpkg differ diff --git a/QPKGs/OTransmission/build/OTransmission_240206.qpkg.md5 b/QPKGs/OTransmission/build/OTransmission_240206.qpkg.md5 new file mode 100644 index 000000000..25b7dc6ce --- /dev/null +++ b/QPKGs/OTransmission/build/OTransmission_240206.qpkg.md5 @@ -0,0 +1 @@ +8c5c60acbfadb9ed82d23f231323a7a8 build/OTransmission_240206.qpkg diff --git a/QPKGs/OTransmission/qpkg.cfg b/QPKGs/OTransmission/qpkg.cfg index 35a6540eb..e1e0038f0 100644 --- a/QPKGs/OTransmission/qpkg.cfg +++ b/QPKGs/OTransmission/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="OTransmission" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="otransmission.sh" diff --git a/QPKGs/OTransmission/shared/otransmission.sh b/QPKGs/OTransmission/shared/otransmission.sh index 402875e1b..1240b3567 100755 --- a/QPKGs/OTransmission/shared/otransmission.sh +++ b/QPKGs/OTransmission/shared/otransmission.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OTransmission -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=3 InitService() { diff --git a/QPKGs/OWatcher3/build/OWatcher3_240206.qpkg b/QPKGs/OWatcher3/build/OWatcher3_240206.qpkg new file mode 100644 index 000000000..7de336615 Binary files /dev/null and b/QPKGs/OWatcher3/build/OWatcher3_240206.qpkg differ diff --git a/QPKGs/OWatcher3/build/OWatcher3_240206.qpkg.md5 b/QPKGs/OWatcher3/build/OWatcher3_240206.qpkg.md5 new file mode 100644 index 000000000..09eea7264 --- /dev/null +++ b/QPKGs/OWatcher3/build/OWatcher3_240206.qpkg.md5 @@ -0,0 +1 @@ +b36be515c3db17993e078eb31a63a106 build/OWatcher3_240206.qpkg diff --git a/QPKGs/OWatcher3/qpkg.cfg b/QPKGs/OWatcher3/qpkg.cfg index e56600bc0..7c876770a 100644 --- a/QPKGs/OWatcher3/qpkg.cfg +++ b/QPKGs/OWatcher3/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="OWatcher3" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="owatcher3.sh" diff --git a/QPKGs/OWatcher3/shared/owatcher3.sh b/QPKGs/OWatcher3/shared/owatcher3.sh index 041407e2a..d25aabe79 100755 --- a/QPKGs/OWatcher3/shared/owatcher3.sh +++ b/QPKGs/OWatcher3/shared/owatcher3.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OWatcher3 -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=1 InitService() { diff --git a/QPKGs/OWhisparr/arm_64/owhisparr.sh b/QPKGs/OWhisparr/arm_64/owhisparr.sh index b5b3ee31d..858b68d76 100755 --- a/QPKGs/OWhisparr/arm_64/owhisparr.sh +++ b/QPKGs/OWhisparr/arm_64/owhisparr.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OWhisparr -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=5 InitService() { diff --git a/QPKGs/OWhisparr/build/OWhisparr_240206_arm_64.qpkg b/QPKGs/OWhisparr/build/OWhisparr_240206_arm_64.qpkg new file mode 100644 index 000000000..a7cb0cedc Binary files /dev/null and b/QPKGs/OWhisparr/build/OWhisparr_240206_arm_64.qpkg differ diff --git a/QPKGs/OWhisparr/build/OWhisparr_240206_arm_64.qpkg.md5 b/QPKGs/OWhisparr/build/OWhisparr_240206_arm_64.qpkg.md5 new file mode 100644 index 000000000..35cc3ecfa --- /dev/null +++ b/QPKGs/OWhisparr/build/OWhisparr_240206_arm_64.qpkg.md5 @@ -0,0 +1 @@ +68abacc6ac8359a81871cfb57c78c138 build/OWhisparr_240206_arm_64.qpkg diff --git a/QPKGs/OWhisparr/build/OWhisparr_240206_x86_64.qpkg b/QPKGs/OWhisparr/build/OWhisparr_240206_x86_64.qpkg new file mode 100644 index 000000000..b6d4d58c5 Binary files /dev/null and b/QPKGs/OWhisparr/build/OWhisparr_240206_x86_64.qpkg differ diff --git a/QPKGs/OWhisparr/build/OWhisparr_240206_x86_64.qpkg.md5 b/QPKGs/OWhisparr/build/OWhisparr_240206_x86_64.qpkg.md5 new file mode 100644 index 000000000..6857d6b85 --- /dev/null +++ b/QPKGs/OWhisparr/build/OWhisparr_240206_x86_64.qpkg.md5 @@ -0,0 +1 @@ +cf8c74e6bdc2a9929b44d34a94053c41 build/OWhisparr_240206_x86_64.qpkg diff --git a/QPKGs/OWhisparr/qpkg.cfg b/QPKGs/OWhisparr/qpkg.cfg index 1b5e01e75..4bb4a9169 100644 --- a/QPKGs/OWhisparr/qpkg.cfg +++ b/QPKGs/OWhisparr/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="OWhisparr" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="owhisparr.sh" diff --git a/QPKGs/OWhisparr/x86_64/owhisparr.sh b/QPKGs/OWhisparr/x86_64/owhisparr.sh index 98c6cca04..b39582fa0 100755 --- a/QPKGs/OWhisparr/x86_64/owhisparr.sh +++ b/QPKGs/OWhisparr/x86_64/owhisparr.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OWhisparr -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=5 InitService() { diff --git a/QPKGs/OliveTin/arm-x19/olivetin.sh b/QPKGs/OliveTin/arm-x19/olivetin.sh index 17aead94e..9cfecacfd 100755 --- a/QPKGs/OliveTin/arm-x19/olivetin.sh +++ b/QPKGs/OliveTin/arm-x19/olivetin.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OliveTin -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=5 InitService() { diff --git a/QPKGs/OliveTin/arm-x31/olivetin.sh b/QPKGs/OliveTin/arm-x31/olivetin.sh index e48b94a2c..370df28d1 100755 --- a/QPKGs/OliveTin/arm-x31/olivetin.sh +++ b/QPKGs/OliveTin/arm-x31/olivetin.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OliveTin -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=5 InitService() { diff --git a/QPKGs/OliveTin/arm-x41/olivetin.sh b/QPKGs/OliveTin/arm-x41/olivetin.sh index e48b94a2c..370df28d1 100755 --- a/QPKGs/OliveTin/arm-x41/olivetin.sh +++ b/QPKGs/OliveTin/arm-x41/olivetin.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OliveTin -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=5 InitService() { diff --git a/QPKGs/OliveTin/arm_64/olivetin.sh b/QPKGs/OliveTin/arm_64/olivetin.sh index 3dd90f545..84647530c 100755 --- a/QPKGs/OliveTin/arm_64/olivetin.sh +++ b/QPKGs/OliveTin/arm_64/olivetin.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OliveTin -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=5 InitService() { diff --git a/QPKGs/OliveTin/build/OliveTin_240206_arm-x19.qpkg b/QPKGs/OliveTin/build/OliveTin_240206_arm-x19.qpkg new file mode 100644 index 000000000..7610fce61 Binary files /dev/null and b/QPKGs/OliveTin/build/OliveTin_240206_arm-x19.qpkg differ diff --git a/QPKGs/OliveTin/build/OliveTin_240206_arm-x19.qpkg.md5 b/QPKGs/OliveTin/build/OliveTin_240206_arm-x19.qpkg.md5 new file mode 100644 index 000000000..21122f4f3 --- /dev/null +++ b/QPKGs/OliveTin/build/OliveTin_240206_arm-x19.qpkg.md5 @@ -0,0 +1 @@ +419a08e8ee49a49e439f5a3ca3c53760 build/OliveTin_240206_arm-x19.qpkg diff --git a/QPKGs/OliveTin/build/OliveTin_240206_arm-x31.qpkg b/QPKGs/OliveTin/build/OliveTin_240206_arm-x31.qpkg new file mode 100644 index 000000000..6a6746f97 Binary files /dev/null and b/QPKGs/OliveTin/build/OliveTin_240206_arm-x31.qpkg differ diff --git a/QPKGs/OliveTin/build/OliveTin_240206_arm-x31.qpkg.md5 b/QPKGs/OliveTin/build/OliveTin_240206_arm-x31.qpkg.md5 new file mode 100644 index 000000000..ae509a8fa --- /dev/null +++ b/QPKGs/OliveTin/build/OliveTin_240206_arm-x31.qpkg.md5 @@ -0,0 +1 @@ +70990757e503dfea7e31eb9dad54f0a5 build/OliveTin_240206_arm-x31.qpkg diff --git a/QPKGs/OliveTin/build/OliveTin_240206_arm-x41.qpkg b/QPKGs/OliveTin/build/OliveTin_240206_arm-x41.qpkg new file mode 100644 index 000000000..96e3f296f Binary files /dev/null and b/QPKGs/OliveTin/build/OliveTin_240206_arm-x41.qpkg differ diff --git a/QPKGs/OliveTin/build/OliveTin_240206_arm-x41.qpkg.md5 b/QPKGs/OliveTin/build/OliveTin_240206_arm-x41.qpkg.md5 new file mode 100644 index 000000000..9f7c9974a --- /dev/null +++ b/QPKGs/OliveTin/build/OliveTin_240206_arm-x41.qpkg.md5 @@ -0,0 +1 @@ +123167e573459c9cbd173b1a093697e9 build/OliveTin_240206_arm-x41.qpkg diff --git a/QPKGs/OliveTin/build/OliveTin_240206_arm_64.qpkg b/QPKGs/OliveTin/build/OliveTin_240206_arm_64.qpkg new file mode 100644 index 000000000..cd7b2c27c Binary files /dev/null and b/QPKGs/OliveTin/build/OliveTin_240206_arm_64.qpkg differ diff --git a/QPKGs/OliveTin/build/OliveTin_240206_arm_64.qpkg.md5 b/QPKGs/OliveTin/build/OliveTin_240206_arm_64.qpkg.md5 new file mode 100644 index 000000000..22577f217 --- /dev/null +++ b/QPKGs/OliveTin/build/OliveTin_240206_arm_64.qpkg.md5 @@ -0,0 +1 @@ +8f91ce986b9c4b33964ac08a5f85ebde build/OliveTin_240206_arm_64.qpkg diff --git a/QPKGs/OliveTin/build/OliveTin_240206_x86_64.qpkg b/QPKGs/OliveTin/build/OliveTin_240206_x86_64.qpkg new file mode 100644 index 000000000..7e9ba8129 Binary files /dev/null and b/QPKGs/OliveTin/build/OliveTin_240206_x86_64.qpkg differ diff --git a/QPKGs/OliveTin/build/OliveTin_240206_x86_64.qpkg.md5 b/QPKGs/OliveTin/build/OliveTin_240206_x86_64.qpkg.md5 new file mode 100644 index 000000000..2bf31752d --- /dev/null +++ b/QPKGs/OliveTin/build/OliveTin_240206_x86_64.qpkg.md5 @@ -0,0 +1 @@ +35cab715645034d7f05c5f77b0cbcb28 build/OliveTin_240206_x86_64.qpkg diff --git a/QPKGs/OliveTin/qpkg.cfg b/QPKGs/OliveTin/qpkg.cfg index c2cc7bc40..52e07b794 100644 --- a/QPKGs/OliveTin/qpkg.cfg +++ b/QPKGs/OliveTin/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="OliveTin" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="olivetin.sh" diff --git a/QPKGs/OliveTin/x86_64/olivetin.sh b/QPKGs/OliveTin/x86_64/olivetin.sh index 0ba0485e6..e8e4c4d82 100755 --- a/QPKGs/OliveTin/x86_64/olivetin.sh +++ b/QPKGs/OliveTin/x86_64/olivetin.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OliveTin -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=5 InitService() { diff --git a/QPKGs/OqBittorrent/build/OqBittorrent_240206.qpkg b/QPKGs/OqBittorrent/build/OqBittorrent_240206.qpkg new file mode 100644 index 000000000..82d33590d Binary files /dev/null and b/QPKGs/OqBittorrent/build/OqBittorrent_240206.qpkg differ diff --git a/QPKGs/OqBittorrent/build/OqBittorrent_240206.qpkg.md5 b/QPKGs/OqBittorrent/build/OqBittorrent_240206.qpkg.md5 new file mode 100644 index 000000000..a49361de5 --- /dev/null +++ b/QPKGs/OqBittorrent/build/OqBittorrent_240206.qpkg.md5 @@ -0,0 +1 @@ +0a5147080ec10caf0dd22f67149fcfa9 build/OqBittorrent_240206.qpkg diff --git a/QPKGs/OqBittorrent/qpkg.cfg b/QPKGs/OqBittorrent/qpkg.cfg index aa39f2c39..34d792c27 100644 --- a/QPKGs/OqBittorrent/qpkg.cfg +++ b/QPKGs/OqBittorrent/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="OqBittorrent" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="oqbittorrent.sh" diff --git a/QPKGs/OqBittorrent/shared/oqbittorrent.sh b/QPKGs/OqBittorrent/shared/oqbittorrent.sh index 0553e1561..6fd1408b8 100755 --- a/QPKGs/OqBittorrent/shared/oqbittorrent.sh +++ b/QPKGs/OqBittorrent/shared/oqbittorrent.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=OqBittorrent -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=3 InitService() { diff --git a/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x19.qpkg b/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x19.qpkg new file mode 100644 index 000000000..319b5b728 Binary files /dev/null and b/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x19.qpkg differ diff --git a/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x19.qpkg.md5 b/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x19.qpkg.md5 new file mode 100644 index 000000000..4efecc196 --- /dev/null +++ b/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x19.qpkg.md5 @@ -0,0 +1 @@ +41d05a52af6d6fc6f43528168e65ae97 build/SABnzbd_240206_arm-x19.qpkg diff --git a/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x31.qpkg b/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x31.qpkg new file mode 100644 index 000000000..5c493256d Binary files /dev/null and b/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x31.qpkg differ diff --git a/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x31.qpkg.md5 b/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x31.qpkg.md5 new file mode 100644 index 000000000..f57153797 --- /dev/null +++ b/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x31.qpkg.md5 @@ -0,0 +1 @@ +d60dc44803540dedc2692ca88307304c build/SABnzbd_240206_arm-x31.qpkg diff --git a/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x41.qpkg b/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x41.qpkg new file mode 100644 index 000000000..baa73792b Binary files /dev/null and b/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x41.qpkg differ diff --git a/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x41.qpkg.md5 b/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x41.qpkg.md5 new file mode 100644 index 000000000..995b8c392 --- /dev/null +++ b/QPKGs/SABnzbd/build/SABnzbd_240206_arm-x41.qpkg.md5 @@ -0,0 +1 @@ +5c7bd15e0d9788898ba47334dff7e535 build/SABnzbd_240206_arm-x41.qpkg diff --git a/QPKGs/SABnzbd/build/SABnzbd_240206_arm_64.qpkg b/QPKGs/SABnzbd/build/SABnzbd_240206_arm_64.qpkg new file mode 100644 index 000000000..cb82e48b9 Binary files /dev/null and b/QPKGs/SABnzbd/build/SABnzbd_240206_arm_64.qpkg differ diff --git a/QPKGs/SABnzbd/build/SABnzbd_240206_arm_64.qpkg.md5 b/QPKGs/SABnzbd/build/SABnzbd_240206_arm_64.qpkg.md5 new file mode 100644 index 000000000..2e8c9baa4 --- /dev/null +++ b/QPKGs/SABnzbd/build/SABnzbd_240206_arm_64.qpkg.md5 @@ -0,0 +1 @@ +882c43570353f7883330a2e88c9f1381 build/SABnzbd_240206_arm_64.qpkg diff --git a/QPKGs/SABnzbd/build/SABnzbd_240206_x86.qpkg b/QPKGs/SABnzbd/build/SABnzbd_240206_x86.qpkg new file mode 100644 index 000000000..e09f406a6 Binary files /dev/null and b/QPKGs/SABnzbd/build/SABnzbd_240206_x86.qpkg differ diff --git a/QPKGs/SABnzbd/build/SABnzbd_240206_x86.qpkg.md5 b/QPKGs/SABnzbd/build/SABnzbd_240206_x86.qpkg.md5 new file mode 100644 index 000000000..341db4656 --- /dev/null +++ b/QPKGs/SABnzbd/build/SABnzbd_240206_x86.qpkg.md5 @@ -0,0 +1 @@ +e53ce67a3ac65d109f0733851fb6bb33 build/SABnzbd_240206_x86.qpkg diff --git a/QPKGs/SABnzbd/build/SABnzbd_240206_x86_64.qpkg b/QPKGs/SABnzbd/build/SABnzbd_240206_x86_64.qpkg new file mode 100644 index 000000000..277b075a3 Binary files /dev/null and b/QPKGs/SABnzbd/build/SABnzbd_240206_x86_64.qpkg differ diff --git a/QPKGs/SABnzbd/build/SABnzbd_240206_x86_64.qpkg.md5 b/QPKGs/SABnzbd/build/SABnzbd_240206_x86_64.qpkg.md5 new file mode 100644 index 000000000..2d42e909e --- /dev/null +++ b/QPKGs/SABnzbd/build/SABnzbd_240206_x86_64.qpkg.md5 @@ -0,0 +1 @@ +3bd41691d587d77fcdac53a846ea864c build/SABnzbd_240206_x86_64.qpkg diff --git a/QPKGs/SABnzbd/qpkg.cfg b/QPKGs/SABnzbd/qpkg.cfg index d20e2490f..9759d817f 100644 --- a/QPKGs/SABnzbd/qpkg.cfg +++ b/QPKGs/SABnzbd/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="SABnzbd" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="sabnzbd.sh" diff --git a/QPKGs/SABnzbd/shared/sabnzbd.sh b/QPKGs/SABnzbd/shared/sabnzbd.sh index d595d0729..738d51ebc 100755 --- a/QPKGs/SABnzbd/shared/sabnzbd.sh +++ b/QPKGs/SABnzbd/shared/sabnzbd.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=SABnzbd -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=1 InitService() { diff --git a/QPKGs/WebSSH/build/WebSSH_240206_arm_64.qpkg b/QPKGs/WebSSH/build/WebSSH_240206_arm_64.qpkg new file mode 100644 index 000000000..17e2b1a97 Binary files /dev/null and b/QPKGs/WebSSH/build/WebSSH_240206_arm_64.qpkg differ diff --git a/QPKGs/WebSSH/build/WebSSH_240206_arm_64.qpkg.md5 b/QPKGs/WebSSH/build/WebSSH_240206_arm_64.qpkg.md5 new file mode 100644 index 000000000..7140681c3 --- /dev/null +++ b/QPKGs/WebSSH/build/WebSSH_240206_arm_64.qpkg.md5 @@ -0,0 +1 @@ +7effc5cb68aa7185675ee8099d7d1e7f build/WebSSH_240206_arm_64.qpkg diff --git a/QPKGs/WebSSH/build/WebSSH_240206_x86.qpkg b/QPKGs/WebSSH/build/WebSSH_240206_x86.qpkg new file mode 100644 index 000000000..375bb1c51 Binary files /dev/null and b/QPKGs/WebSSH/build/WebSSH_240206_x86.qpkg differ diff --git a/QPKGs/WebSSH/build/WebSSH_240206_x86.qpkg.md5 b/QPKGs/WebSSH/build/WebSSH_240206_x86.qpkg.md5 new file mode 100644 index 000000000..efe007ee4 --- /dev/null +++ b/QPKGs/WebSSH/build/WebSSH_240206_x86.qpkg.md5 @@ -0,0 +1 @@ +8dbc166944aa366e13f12b94278e20ca build/WebSSH_240206_x86.qpkg diff --git a/QPKGs/WebSSH/build/WebSSH_240206_x86_64.qpkg b/QPKGs/WebSSH/build/WebSSH_240206_x86_64.qpkg new file mode 100644 index 000000000..6ea838ec6 Binary files /dev/null and b/QPKGs/WebSSH/build/WebSSH_240206_x86_64.qpkg differ diff --git a/QPKGs/WebSSH/build/WebSSH_240206_x86_64.qpkg.md5 b/QPKGs/WebSSH/build/WebSSH_240206_x86_64.qpkg.md5 new file mode 100644 index 000000000..db848b975 --- /dev/null +++ b/QPKGs/WebSSH/build/WebSSH_240206_x86_64.qpkg.md5 @@ -0,0 +1 @@ +ba11141d0dc82533d90b33edc7aaa121 build/WebSSH_240206_x86_64.qpkg diff --git a/QPKGs/WebSSH/qpkg.cfg b/QPKGs/WebSSH/qpkg.cfg index 6151645ac..25f2561b6 100644 --- a/QPKGs/WebSSH/qpkg.cfg +++ b/QPKGs/WebSSH/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="WebSSH" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="webssh.sh" diff --git a/QPKGs/WebSSH/shared/webssh.sh b/QPKGs/WebSSH/shared/webssh.sh index 4aa9c9bc1..7d9dd0c03 100755 --- a/QPKGs/WebSSH/shared/webssh.sh +++ b/QPKGs/WebSSH/shared/webssh.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=WebSSH -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=6 InitService() { diff --git a/QPKGs/pyLoad/build/pyLoad_240206_arm-x19.qpkg b/QPKGs/pyLoad/build/pyLoad_240206_arm-x19.qpkg new file mode 100644 index 000000000..940f5da6c Binary files /dev/null and b/QPKGs/pyLoad/build/pyLoad_240206_arm-x19.qpkg differ diff --git a/QPKGs/pyLoad/build/pyLoad_240206_arm-x19.qpkg.md5 b/QPKGs/pyLoad/build/pyLoad_240206_arm-x19.qpkg.md5 new file mode 100644 index 000000000..2b0d159be --- /dev/null +++ b/QPKGs/pyLoad/build/pyLoad_240206_arm-x19.qpkg.md5 @@ -0,0 +1 @@ +7d814a2578c53cb2b1e530020188eba0 build/pyLoad_240206_arm-x19.qpkg diff --git a/QPKGs/pyLoad/build/pyLoad_240206_arm-x41.qpkg b/QPKGs/pyLoad/build/pyLoad_240206_arm-x41.qpkg new file mode 100644 index 000000000..f756cad74 Binary files /dev/null and b/QPKGs/pyLoad/build/pyLoad_240206_arm-x41.qpkg differ diff --git a/QPKGs/pyLoad/build/pyLoad_240206_arm-x41.qpkg.md5 b/QPKGs/pyLoad/build/pyLoad_240206_arm-x41.qpkg.md5 new file mode 100644 index 000000000..0c09b4f8a --- /dev/null +++ b/QPKGs/pyLoad/build/pyLoad_240206_arm-x41.qpkg.md5 @@ -0,0 +1 @@ +1abf1794233192763bdf321d39777303 build/pyLoad_240206_arm-x41.qpkg diff --git a/QPKGs/pyLoad/build/pyLoad_240206_arm_64.qpkg b/QPKGs/pyLoad/build/pyLoad_240206_arm_64.qpkg new file mode 100644 index 000000000..f184d878a Binary files /dev/null and b/QPKGs/pyLoad/build/pyLoad_240206_arm_64.qpkg differ diff --git a/QPKGs/pyLoad/build/pyLoad_240206_arm_64.qpkg.md5 b/QPKGs/pyLoad/build/pyLoad_240206_arm_64.qpkg.md5 new file mode 100644 index 000000000..e39a53ed5 --- /dev/null +++ b/QPKGs/pyLoad/build/pyLoad_240206_arm_64.qpkg.md5 @@ -0,0 +1 @@ +f4cbea86bec76a1d69dcfb30d5d23efd build/pyLoad_240206_arm_64.qpkg diff --git a/QPKGs/pyLoad/build/pyLoad_240206_x86.qpkg b/QPKGs/pyLoad/build/pyLoad_240206_x86.qpkg new file mode 100644 index 000000000..6325af52f Binary files /dev/null and b/QPKGs/pyLoad/build/pyLoad_240206_x86.qpkg differ diff --git a/QPKGs/pyLoad/build/pyLoad_240206_x86.qpkg.md5 b/QPKGs/pyLoad/build/pyLoad_240206_x86.qpkg.md5 new file mode 100644 index 000000000..eb4576a7c --- /dev/null +++ b/QPKGs/pyLoad/build/pyLoad_240206_x86.qpkg.md5 @@ -0,0 +1 @@ +08b04e6ef09560dc32629ae14dbd6fba build/pyLoad_240206_x86.qpkg diff --git a/QPKGs/pyLoad/build/pyLoad_240206_x86_64.qpkg b/QPKGs/pyLoad/build/pyLoad_240206_x86_64.qpkg new file mode 100644 index 000000000..3acf46e0c Binary files /dev/null and b/QPKGs/pyLoad/build/pyLoad_240206_x86_64.qpkg differ diff --git a/QPKGs/pyLoad/build/pyLoad_240206_x86_64.qpkg.md5 b/QPKGs/pyLoad/build/pyLoad_240206_x86_64.qpkg.md5 new file mode 100644 index 000000000..61a67a16e --- /dev/null +++ b/QPKGs/pyLoad/build/pyLoad_240206_x86_64.qpkg.md5 @@ -0,0 +1 @@ +e90455c38eea67174102258b039fcd07 build/pyLoad_240206_x86_64.qpkg diff --git a/QPKGs/pyLoad/qpkg.cfg b/QPKGs/pyLoad/qpkg.cfg index bf4471e81..c0df1e2e4 100644 --- a/QPKGs/pyLoad/qpkg.cfg +++ b/QPKGs/pyLoad/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="pyLoad" -QPKG_VER="240205" +QPKG_VER="240206" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="100" QPKG_SERVICE_PROGRAM="pyload.sh" diff --git a/QPKGs/pyLoad/shared/pyload.sh b/QPKGs/pyLoad/shared/pyload.sh index 5465459cb..353128208 100755 --- a/QPKGs/pyLoad/shared/pyload.sh +++ b/QPKGs/pyLoad/shared/pyload.sh @@ -21,7 +21,7 @@ #* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ readonly USER_ARGS_RAW=$* readonly QPKG_NAME=pyLoad -readonly SERVICE_SCRIPT_VERSION='240205' +readonly SERVICE_SCRIPT_VERSION='240206' readonly SERVICE_SCRIPT_TYPE=6 InitService() { diff --git a/QPKGs/sherpa/build/sherpa_240206.qpkg b/QPKGs/sherpa/build/sherpa_240206.qpkg index b8a3a2192..0b998349a 100644 Binary files a/QPKGs/sherpa/build/sherpa_240206.qpkg and b/QPKGs/sherpa/build/sherpa_240206.qpkg differ diff --git a/QPKGs/sherpa/build/sherpa_240206.qpkg.md5 b/QPKGs/sherpa/build/sherpa_240206.qpkg.md5 index f9000ab1c..85f9938a5 100644 --- a/QPKGs/sherpa/build/sherpa_240206.qpkg.md5 +++ b/QPKGs/sherpa/build/sherpa_240206.qpkg.md5 @@ -1 +1 @@ -28d901e9ff045e1ab2a0d58d967531c7 build/sherpa_240206.qpkg +930a21819b11df651ae289d910301b6c build/sherpa_240206.qpkg diff --git a/QPKGs/sherpa/build/sherpa_240207.qpkg b/QPKGs/sherpa/build/sherpa_240207.qpkg new file mode 100644 index 000000000..908727a88 Binary files /dev/null and b/QPKGs/sherpa/build/sherpa_240207.qpkg differ diff --git a/QPKGs/sherpa/build/sherpa_240207.qpkg.md5 b/QPKGs/sherpa/build/sherpa_240207.qpkg.md5 new file mode 100644 index 000000000..034e84b52 --- /dev/null +++ b/QPKGs/sherpa/build/sherpa_240207.qpkg.md5 @@ -0,0 +1 @@ +8d3093edfe06771b81e7c15256d564c9 build/sherpa_240207.qpkg diff --git a/QPKGs/sherpa/build/sherpa_240208.qpkg b/QPKGs/sherpa/build/sherpa_240208.qpkg new file mode 100644 index 000000000..9640cbdbc Binary files /dev/null and b/QPKGs/sherpa/build/sherpa_240208.qpkg differ diff --git a/QPKGs/sherpa/build/sherpa_240208.qpkg.md5 b/QPKGs/sherpa/build/sherpa_240208.qpkg.md5 new file mode 100644 index 000000000..9f9f993a0 --- /dev/null +++ b/QPKGs/sherpa/build/sherpa_240208.qpkg.md5 @@ -0,0 +1 @@ +f92632c2ebe46a38982248d46c1b8af4 build/sherpa_240208.qpkg diff --git a/QPKGs/sherpa/qpkg.cfg b/QPKGs/sherpa/qpkg.cfg index d40c507b9..3ae7643be 100644 --- a/QPKGs/sherpa/qpkg.cfg +++ b/QPKGs/sherpa/qpkg.cfg @@ -1,5 +1,5 @@ QPKG_NAME="sherpa" -QPKG_VER="240206" +QPKG_VER="240208" QPKG_AUTHOR="OneCD" QPKG_RC_NUM="500" QPKG_SERVICE_PROGRAM="sherpa-service.sh" diff --git a/QPKGs/sherpa/shared/sherpa-loader.sh b/QPKGs/sherpa/shared/sherpa-loader.sh index b10f1e0ac..4dfdb8482 100755 --- a/QPKGs/sherpa/shared/sherpa-loader.sh +++ b/QPKGs/sherpa/shared/sherpa-loader.sh @@ -24,7 +24,7 @@ readonly USER_ARGS_RAW=$* Init() { -export LOADER_SCRIPT_VER='240206' +export LOADER_SCRIPT_VER='240208' export LOADER_SCRIPT_PPID=$PPID readonly QPKG_NAME=sherpa readonly CHARS_REGULAR_PROMPT='$ ' diff --git a/docs/QNAP-forum-announcement.bbcode b/docs/QNAP-forum-announcement.bbcode index a3e76ad60..6736fc2d5 100644 --- a/docs/QNAP-forum-announcement.bbcode +++ b/docs/QNAP-forum-announcement.bbcode @@ -15,7 +15,7 @@ That said: the majority of development is now complete, and I'm currently workin [b][u][size=120]Installation[/size][/u][/b] -[list=1][*][url=https://github.com/OneCDOnly/sherpa/releases/download/v240206/sherpa_240206.qpkg]Click here to download the [b]sherpa[/b] QPKG[/url]. +[list=1][*][url=https://github.com/OneCDOnly/sherpa/releases/download/v240208/sherpa_240208.qpkg]Click here to download the [b]sherpa[/b] QPKG[/url]. [*]Install the QPKG manually through your QTS App Center UI. This QPKG is not digitally signed, so you'll need to allow unsigned packages to be installed in your App Center before installing it. It can "sign" itself (and all supported QPKGs) after installation. [/list] diff --git a/docs/README.md b/docs/README.md index df75655ce..b94507b8d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -18,7 +18,7 @@ That said: the majority of development is now complete, and I'm currently workin ## Installation -1) [Click here to download the **sherpa** QPKG](https://github.com/OneCDOnly/sherpa/releases/download/v240206/sherpa_240206.qpkg). +1) [Click here to download the **sherpa** QPKG](https://github.com/OneCDOnly/sherpa/releases/download/v240208/sherpa_240208.qpkg). 2) Install the QPKG manually through your QTS App Center UI. This QPKG is not digitally signed, so you'll need to allow unsigned packages to be installed in your App Center before installing it. It can "sign" itself (and all supported QPKGs) after installation. diff --git a/objects.tar.gz b/objects.tar.gz index c50e6b73e..a68205fbc 100644 Binary files a/objects.tar.gz and b/objects.tar.gz differ diff --git a/packages.tar.gz b/packages.tar.gz index 765fdb479..7ff64865e 100644 Binary files a/packages.tar.gz and b/packages.tar.gz differ diff --git a/sherpa-manager.tar.gz b/sherpa-manager.tar.gz index 3f66f4fc3..021a71875 100644 Binary files a/sherpa-manager.tar.gz and b/sherpa-manager.tar.gz differ diff --git a/support/build-objects.sh b/support/build-objects.sh index d2147e577..fd6546242 100755 --- a/support/build-objects.sh +++ b/support/build-objects.sh @@ -22,7 +22,7 @@ IPK_STATES=(downgraded downloaded installed reinstalled upgraded) # ordered PIP_ACTIONS=(download uninstall upgrade reinstall install) IPK_ACTIONS=(downgrade download uninstall upgrade reinstall install) -QPKG_ACTIONS=(status list rebuild reassign download backup deactivate disable uninstall upgrade reinstall install sign restore clean enable activate reactivate) +QPKG_ACTIONS=(status list rebuild reassign download backup deactivate disable uninstall upgrade reinstall install enableau disableau sign restore clean enable activate reactivate) # these actions, states and scopes may be specified by the user ----------------------------------------------------- # sorted @@ -30,7 +30,7 @@ USER_QPKG_SC_GROUPS=(all canbackup canclean canrestarttoupdate dependent hasdepe USER_QPKG_SCNT_GROUPS=(canclean installable upgradable) USER_QPKG_IS_STATES=(active backedup enabled installed missing) USER_QPKG_ISNT_STATES=(active backedup enabled installed) -USER_QPKG_ACTIONS=(activate backup clean enable deactivate disable install list reactivate reassign rebuild reinstall restore status uninstall upgrade) +USER_QPKG_ACTIONS=(activate backup clean deactivate disable disableau enable enableau install list reactivate reassign rebuild reinstall restore sign status uninstall upgrade) AddFlagObj() { @@ -170,8 +170,6 @@ done # session list objects. -AddListObj ARGs-unknown - for group in "${USER_QPKG_SC_GROUPS[@]}"; do AddListObj QPKGs-SC"$group" done diff --git a/support/highest_package_versions_found.tbl b/support/highest_package_versions_found.tbl index 2378075a8..8a8752558 100644 --- a/support/highest_package_versions_found.tbl +++ b/support/highest_package_versions_found.tbl @@ -1,5 +1,5 @@ # checksum_filename qpkg_filename package_name version arch hash -ClamAV_240205.qpkg.md5 ClamAV_240205.qpkg ClamAV 240205 all a94c24a657abb87c44bec3bb6e7562c1 +ClamAV_240206.qpkg.md5 ClamAV_240206.qpkg ClamAV 240206 all 552bded76370d35ed9511fd4928d187d Deluge-server_240205.qpkg.md5 Deluge-server_240205.qpkg Deluge-server 240205 all 9d6370b7cc37cb074ff1509c9688f618 Deluge-web_240205.qpkg.md5 Deluge-web_240205.qpkg Deluge-web 240205 all 0145f7e17997ffa1e92a5934c8c67a3a duf_220809_arm_64.qpkg.md5 duf_220809_arm_64.qpkg duf 220809 a64 7684a8940ba63704b95cbc713cd55b35 @@ -8,77 +8,77 @@ duf_220809_arm-x41.qpkg.md5 duf_220809_arm-x41.qpkg duf duf_220809_x86_64.qpkg.md5 duf_220809_x86_64.qpkg duf 220809 i64 dac17d3e9f29f058f9e024e7f5ff4a4b duf_220809_x86.qpkg.md5 duf_220809_x86.qpkg duf 220809 i86 e351230ffde4a6040d423fe73d7ee5fc Entware_1.03a_std.qpkg.md5 Entware_1.03a_std.qpkg Entware 1.03a all deb88a170716d39309d124ad77875b4d -Glances_240205.qpkg.md5 Glances_240205.qpkg Glances 240205 all 1a4098df07a5cfbee67fccb6297e0672 +Glances_240206.qpkg.md5 Glances_240206.qpkg Glances 240206 all 626f1d1886cb3f8b160ba8499f83d127 gpt-engineer_240202.qpkg.md5 gpt-engineer_240202.qpkg gpt-engineer 240202 all f04fde0d2eab15a4ff645f8d99ca9b2f -Headphones_240205.qpkg.md5 Headphones_240205.qpkg Headphones 240205 all bdea95afaf54f4efa9c1aca55458fd79 +Headphones_240206.qpkg.md5 Headphones_240206.qpkg Headphones 240206 all 572f1553fdd6d63f33f363c1b5afcd8b HideThatBanner_240205.qpkg.md5 HideThatBanner_240205.qpkg HideThatBanner 240205 all a2d6d70756ab37a5b1af42b21f3c2b45 IncreaseTimeouts_240126.qpkg.md5 IncreaseTimeouts_240126.qpkg IncreaseTimeouts 240126 all 1e98f7add6ad9efa37e0593eeedbb2da inxi_240108.qpkg.md5 inxi_240108.qpkg inxi 240108 all adb5eef01a027c9478ae8ffc0e199c1b -Kapowarr_240205_arm_64.qpkg.md5 Kapowarr_240205_arm_64.qpkg Kapowarr 240205 a64 6a4b561324f14487636c8b053266f5b5 -Kapowarr_240205_x86_64.qpkg.md5 Kapowarr_240205_x86_64.qpkg Kapowarr 240205 i64 999f34e30d569014a8fa8c9804f64031 -Kapowarr_240205_x86.qpkg.md5 Kapowarr_240205_x86.qpkg Kapowarr 240205 i86 b2914d3315474bd4118f3b5144ea64e3 -LazyLibrarian_240205_arm_64.qpkg.md5 LazyLibrarian_240205_arm_64.qpkg LazyLibrarian 240205 a64 4d246ee639f9e84c4fc8fb591707badf -LazyLibrarian_240205_x86_64.qpkg.md5 LazyLibrarian_240205_x86_64.qpkg LazyLibrarian 240205 i64 8e7b4bfa26e40671dea9de3272eb9b43 -LazyLibrarian_240205_x86.qpkg.md5 LazyLibrarian_240205_x86.qpkg LazyLibrarian 240205 i86 ad870f52419546b57883a9128e315b9b -Mylar3_240205_arm_64.qpkg.md5 Mylar3_240205_arm_64.qpkg Mylar3 240205 a64 908382b0e0ad92a66d642a8e5bcf6ffd -Mylar3_240205_x86_64.qpkg.md5 Mylar3_240205_x86_64.qpkg Mylar3 240205 i64 def40132e5ef88b4851bd65a40891621 -Mylar3_240205_x86.qpkg.md5 Mylar3_240205_x86.qpkg Mylar3 240205 i86 d0eaadb5786e839bb96528adb3938f07 -NZBGet_240205.qpkg.md5 NZBGet_240205.qpkg NZBGet 240205 all 5885177c8f4e2e84abda90abb41452d1 -NZBHydra2_240205_arm_64.qpkg.md5 NZBHydra2_240205_arm_64.qpkg NZBHydra2 240205 a64 2710322fe6ea36349c4d5293a62c0029 -NZBHydra2_240205_x86_64.qpkg.md5 NZBHydra2_240205_x86_64.qpkg NZBHydra2 240205 i64 a2e52073d86c77538863adf80a1f0764 +Kapowarr_240206_arm_64.qpkg.md5 Kapowarr_240206_arm_64.qpkg Kapowarr 240206 a64 c6affe83fdd7d9e377373d18b05e57b8 +Kapowarr_240206_x86_64.qpkg.md5 Kapowarr_240206_x86_64.qpkg Kapowarr 240206 i64 c5fc7abae9fda7d84d93e695eb1db1d7 +Kapowarr_240206_x86.qpkg.md5 Kapowarr_240206_x86.qpkg Kapowarr 240206 i86 bd9393f936522cba2f751e659e6680ee +LazyLibrarian_240206_arm_64.qpkg.md5 LazyLibrarian_240206_arm_64.qpkg LazyLibrarian 240206 a64 bf58d3154e810bc3371e7b7b745cbaba +LazyLibrarian_240206_x86_64.qpkg.md5 LazyLibrarian_240206_x86_64.qpkg LazyLibrarian 240206 i64 77c7bf23daa933a978812c6f89ca5c9c +LazyLibrarian_240206_x86.qpkg.md5 LazyLibrarian_240206_x86.qpkg LazyLibrarian 240206 i86 885d76a1305c5ccdd0da081d0c6ea181 +Mylar3_240206_arm_64.qpkg.md5 Mylar3_240206_arm_64.qpkg Mylar3 240206 a64 bdec86930fc211936c892e408e1af9d5 +Mylar3_240206_x86_64.qpkg.md5 Mylar3_240206_x86_64.qpkg Mylar3 240206 i64 e779b18e84f219cd369551c7eb2af502 +Mylar3_240206_x86.qpkg.md5 Mylar3_240206_x86.qpkg Mylar3 240206 i86 b7c18b1b75129db1cc39baef8adb0edb +NZBGet_240206.qpkg.md5 NZBGet_240206.qpkg NZBGet 240206 all af890c99522dd1def6462afaba84222a +NZBHydra2_240206_arm_64.qpkg.md5 NZBHydra2_240206_arm_64.qpkg NZBHydra2 240206 a64 3b24f799577e79b5047cdd10e9be7df0 +NZBHydra2_240206_x86_64.qpkg.md5 NZBHydra2_240206_x86_64.qpkg NZBHydra2 240206 i64 600d57a94f758adcf9cf22831fe14230 nzbToMedia_240205.qpkg.md5 nzbToMedia_240205.qpkg nzbToMedia 240205 all 6a43a3e6a7b04762034a1ad7918addad OFlexGet_240202_arm_64.qpkg.md5 OFlexGet_240202_arm_64.qpkg OFlexGet 240202 a64 48dbc690e008ada06eab04af92109982 OFlexGet_240202_x86_64.qpkg.md5 OFlexGet_240202_x86_64.qpkg OFlexGet 240202 i64 c43edf0eadadb7f522d3193a60c7e8e3 OFlexGet_240202_x86.qpkg.md5 OFlexGet_240202_x86.qpkg OFlexGet 240202 i86 e68ef644d2b9803a444ca99f6da96c0b -OLidarr_240205_arm_64.qpkg.md5 OLidarr_240205_arm_64.qpkg OLidarr 240205 a64 08ec5f51cb42b8affb9b4854d19b776f -OLidarr_240205_x86_64.qpkg.md5 OLidarr_240205_x86_64.qpkg OLidarr 240205 i64 3be56c41709d612bd5c3e19c689da0b7 -OliveTin_240205_arm_64.qpkg.md5 OliveTin_240205_arm_64.qpkg OliveTin 240205 a64 071c777d338b437f59f07a9628629a2e -OliveTin_240205_arm-x19.qpkg.md5 OliveTin_240205_arm-x19.qpkg OliveTin 240205 a19 1d77a47fe7ea51581f3c2b617b78b403 -OliveTin_240205_arm-x31.qpkg.md5 OliveTin_240205_arm-x31.qpkg OliveTin 240205 a31 b2d216412f75bd2db56daa2917fdec02 -OliveTin_240205_arm-x41.qpkg.md5 OliveTin_240205_arm-x41.qpkg OliveTin 240205 a41 b81649040805609ac31e931e84aec598 -OliveTin_240205_x86_64.qpkg.md5 OliveTin_240205_x86_64.qpkg OliveTin 240205 i64 2f8d5cc59fe4118a60163e27d58d4c4b -OMedusa_240205.qpkg.md5 OMedusa_240205.qpkg OMedusa 240205 all 7110a11ce732c2b81cb3b55ee7569015 -OqBittorrent_240205.qpkg.md5 OqBittorrent_240205.qpkg OqBittorrent 240205 all 7439aeed2102ef8b21fe4b5fc9d90926 -OReadarr_240205_arm_64.qpkg.md5 OReadarr_240205_arm_64.qpkg OReadarr 240205 a64 b120672c799dc8926ac411773b49d523 -OReadarr_240205_x86_64.qpkg.md5 OReadarr_240205_x86_64.qpkg OReadarr 240205 i64 d7a44be69b79f57f33a884dd66cdebb7 -OSickGear_240205_arm_64.qpkg.md5 OSickGear_240205_arm_64.qpkg OSickGear 240205 a64 bcf7a31a7ed30a03bda915ac951a1ced -OSickGear_240205_x86_64.qpkg.md5 OSickGear_240205_x86_64.qpkg OSickGear 240205 i64 83b4c53ebcf3ffca4c93089b2454a233 -OSickGear_240205_x86.qpkg.md5 OSickGear_240205_x86.qpkg OSickGear 240205 i86 5dba858e0ba65547c7277403816e2786 -OSonarr_240205_arm_64.qpkg.md5 OSonarr_240205_arm_64.qpkg OSonarr 240205 a64 20a80e50e5f4adfdc179d0ff8ef480bc -OSonarr_240205_x86_64.qpkg.md5 OSonarr_240205_x86_64.qpkg OSonarr 240205 i64 76c21a5a9f0e89f14281045b71b63246 -OTautulli_240205_arm_64.qpkg.md5 OTautulli_240205_arm_64.qpkg OTautulli 240205 a64 d7dd0a232ed60f14e52ddf7103e5647e -OTautulli_240205_x86_64.qpkg.md5 OTautulli_240205_x86_64.qpkg OTautulli 240205 i64 a2eab173a8cd4ce3bd5814b004f093f7 -OTautulli_240205_x86.qpkg.md5 OTautulli_240205_x86.qpkg OTautulli 240205 i86 23ac0a65e4b7aa9716a0428666adebdc -OTransmission_240205.qpkg.md5 OTransmission_240205.qpkg OTransmission 240205 all bf75799104ec811788cd58e2fc0df39f -OWatcher3_240205.qpkg.md5 OWatcher3_240205.qpkg OWatcher3 240205 all 1d5c514a5f8273c52cc7fe4bbc780449 -OWhisparr_240205_arm_64.qpkg.md5 OWhisparr_240205_arm_64.qpkg OWhisparr 240205 a64 93bfa1ecb43af181af88bc70c952c734 -OWhisparr_240205_x86_64.qpkg.md5 OWhisparr_240205_x86_64.qpkg OWhisparr 240205 i64 8b6c5ee3816432f0d39ae6db9a8a7df1 +OLidarr_240206_arm_64.qpkg.md5 OLidarr_240206_arm_64.qpkg OLidarr 240206 a64 b2fd3bd1b4bbead13bad578846da8613 +OLidarr_240206_x86_64.qpkg.md5 OLidarr_240206_x86_64.qpkg OLidarr 240206 i64 a5f5e46a08cd9f052c15b6a27c8ad5fc +OliveTin_240206_arm_64.qpkg.md5 OliveTin_240206_arm_64.qpkg OliveTin 240206 a64 8f91ce986b9c4b33964ac08a5f85ebde +OliveTin_240206_arm-x19.qpkg.md5 OliveTin_240206_arm-x19.qpkg OliveTin 240206 a19 419a08e8ee49a49e439f5a3ca3c53760 +OliveTin_240206_arm-x31.qpkg.md5 OliveTin_240206_arm-x31.qpkg OliveTin 240206 a31 70990757e503dfea7e31eb9dad54f0a5 +OliveTin_240206_arm-x41.qpkg.md5 OliveTin_240206_arm-x41.qpkg OliveTin 240206 a41 123167e573459c9cbd173b1a093697e9 +OliveTin_240206_x86_64.qpkg.md5 OliveTin_240206_x86_64.qpkg OliveTin 240206 i64 35cab715645034d7f05c5f77b0cbcb28 +OMedusa_240206.qpkg.md5 OMedusa_240206.qpkg OMedusa 240206 all 36a9a6e2c3e6155fbd5af06641f53f55 +OqBittorrent_240206.qpkg.md5 OqBittorrent_240206.qpkg OqBittorrent 240206 all 0a5147080ec10caf0dd22f67149fcfa9 +OReadarr_240206_arm_64.qpkg.md5 OReadarr_240206_arm_64.qpkg OReadarr 240206 a64 5dff415f6104ec237eb21a6f6544523d +OReadarr_240206_x86_64.qpkg.md5 OReadarr_240206_x86_64.qpkg OReadarr 240206 i64 3347efc4ea9fd4cc2661f3d43f0bd057 +OSickGear_240206_arm_64.qpkg.md5 OSickGear_240206_arm_64.qpkg OSickGear 240206 a64 fe8dd4dc6d439955aa29b267c0685839 +OSickGear_240206_x86_64.qpkg.md5 OSickGear_240206_x86_64.qpkg OSickGear 240206 i64 c6b416519344d245a5f0c60d48775c57 +OSickGear_240206_x86.qpkg.md5 OSickGear_240206_x86.qpkg OSickGear 240206 i86 14eb22a5defb051d0f7d95deb84ea9d7 +OSonarr_240206_arm_64.qpkg.md5 OSonarr_240206_arm_64.qpkg OSonarr 240206 a64 22093db791b0f92970415d49efe76208 +OSonarr_240206_x86_64.qpkg.md5 OSonarr_240206_x86_64.qpkg OSonarr 240206 i64 12da134c64b41ff5a1568db074fa8f62 +OTautulli_240206_arm_64.qpkg.md5 OTautulli_240206_arm_64.qpkg OTautulli 240206 a64 8908be4c98ba95b464ce3184f4091765 +OTautulli_240206_x86_64.qpkg.md5 OTautulli_240206_x86_64.qpkg OTautulli 240206 i64 a22f15a08e36ab5b27c8e367dba746e4 +OTautulli_240206_x86.qpkg.md5 OTautulli_240206_x86.qpkg OTautulli 240206 i86 c46718c02e26c81fd912d74efd678356 +OTransmission_240206.qpkg.md5 OTransmission_240206.qpkg OTransmission 240206 all 8c5c60acbfadb9ed82d23f231323a7a8 +OWatcher3_240206.qpkg.md5 OWatcher3_240206.qpkg OWatcher3 240206 all b36be515c3db17993e078eb31a63a106 +OWhisparr_240206_arm_64.qpkg.md5 OWhisparr_240206_arm_64.qpkg OWhisparr 240206 a64 68abacc6ac8359a81871cfb57c78c138 +OWhisparr_240206_x86_64.qpkg.md5 OWhisparr_240206_x86_64.qpkg OWhisparr 240206 i64 cf8c74e6bdc2a9929b44d34a94053c41 Par2_0.8.1.1_arm-x19.qpkg.md5 Par2_0.8.1.1_arm-x19.qpkg Par2 0.8.1.1 a19 d312d8bd2dee43e62a720f0d209905f8 Par2_0.8.1.1_x86.qpkg.md5 Par2_0.8.1.1_x86.qpkg Par2 0.8.1.1 i86 6c685f4d0571467afbf00f5371c9ac68 Par2turbo_1.1.0_arm_64.qpkg.md5 Par2turbo_1.1.0_arm_64.qpkg Par2turbo 1.1.0 a64 2617e5739f17ff557b817a20c2ae38e9 Par2turbo_1.1.0_arm-x31.qpkg.md5 Par2turbo_1.1.0_arm-x31.qpkg Par2turbo 1.1.0 a31 fafa50f9fe67d7798e2261ec8408cf1a Par2turbo_1.1.0_arm-x41.qpkg.md5 Par2turbo_1.1.0_arm-x41.qpkg Par2turbo 1.1.0 a41 da1a48d4674453c5116870ad35c0b899 Par2turbo_1.1.0_x86_64.qpkg.md5 Par2turbo_1.1.0_x86_64.qpkg Par2turbo 1.1.0 i64 574f2d84284fe1c1f2e66d104e16ae8b -pyLoad_240205_arm_64.qpkg.md5 pyLoad_240205_arm_64.qpkg pyLoad 240205 a64 2e94725b16ee5e4edc82edadeaf0d1ac -pyLoad_240205_arm-x19.qpkg.md5 pyLoad_240205_arm-x19.qpkg pyLoad 240205 a19 0ccc5aea829afb14b7389940a4d35ff4 -pyLoad_240205_arm-x41.qpkg.md5 pyLoad_240205_arm-x41.qpkg pyLoad 240205 a41 f8b915830328903558aa6a92c8126aa3 -pyLoad_240205_x86_64.qpkg.md5 pyLoad_240205_x86_64.qpkg pyLoad 240205 i64 32e2a07c9c578b38e6c3cd6a4cfed8d5 -pyLoad_240205_x86.qpkg.md5 pyLoad_240205_x86.qpkg pyLoad 240205 i86 2c570ec14097d14f9cdda7b0e9ee6758 +pyLoad_240206_arm_64.qpkg.md5 pyLoad_240206_arm_64.qpkg pyLoad 240206 a64 f4cbea86bec76a1d69dcfb30d5d23efd +pyLoad_240206_arm-x19.qpkg.md5 pyLoad_240206_arm-x19.qpkg pyLoad 240206 a19 7d814a2578c53cb2b1e530020188eba0 +pyLoad_240206_arm-x41.qpkg.md5 pyLoad_240206_arm-x41.qpkg pyLoad 240206 a41 1abf1794233192763bdf321d39777303 +pyLoad_240206_x86_64.qpkg.md5 pyLoad_240206_x86_64.qpkg pyLoad 240206 i64 e90455c38eea67174102258b039fcd07 +pyLoad_240206_x86.qpkg.md5 pyLoad_240206_x86.qpkg pyLoad 240206 i86 08b04e6ef09560dc32629ae14dbd6fba QDK_2.3.13.zip.qpkg.md5 QDK_2.3.13.zip QDK 2.3.13 all 0b003e703a29520e98a0aca41ed0e585 RunLast_230224.qpkg.md5 RunLast_230224.qpkg RunLast 230224 all 6cb5415fe56592ca1f4e8a4f2dcc5f17 -SABnzbd_240205_arm_64.qpkg.md5 SABnzbd_240205_arm_64.qpkg SABnzbd 240205 a64 60aa58305e50dae29f49470de066052e -SABnzbd_240205_arm-x19.qpkg.md5 SABnzbd_240205_arm-x19.qpkg SABnzbd 240205 a19 8c65708446a8a4d0f0e37e3a3748a092 -SABnzbd_240205_arm-x31.qpkg.md5 SABnzbd_240205_arm-x31.qpkg SABnzbd 240205 a31 2dddfe2724ba652bb694c698a3ad82e1 -SABnzbd_240205_arm-x41.qpkg.md5 SABnzbd_240205_arm-x41.qpkg SABnzbd 240205 a41 9b089187649a996d97a9da296051f764 -SABnzbd_240205_x86_64.qpkg.md5 SABnzbd_240205_x86_64.qpkg SABnzbd 240205 i64 eda2c2e8770c34bba807b1c6801b3b08 -SABnzbd_240205_x86.qpkg.md5 SABnzbd_240205_x86.qpkg SABnzbd 240205 i86 f5459dba76cd088b03b3e84094a8522b +SABnzbd_240206_arm_64.qpkg.md5 SABnzbd_240206_arm_64.qpkg SABnzbd 240206 a64 882c43570353f7883330a2e88c9f1381 +SABnzbd_240206_arm-x19.qpkg.md5 SABnzbd_240206_arm-x19.qpkg SABnzbd 240206 a19 41d05a52af6d6fc6f43528168e65ae97 +SABnzbd_240206_arm-x31.qpkg.md5 SABnzbd_240206_arm-x31.qpkg SABnzbd 240206 a31 d60dc44803540dedc2692ca88307304c +SABnzbd_240206_arm-x41.qpkg.md5 SABnzbd_240206_arm-x41.qpkg SABnzbd 240206 a41 5c7bd15e0d9788898ba47334dff7e535 +SABnzbd_240206_x86_64.qpkg.md5 SABnzbd_240206_x86_64.qpkg SABnzbd 240206 i64 3bd41691d587d77fcdac53a846ea864c +SABnzbd_240206_x86.qpkg.md5 SABnzbd_240206_x86.qpkg SABnzbd 240206 i86 e53ce67a3ac65d109f0733851fb6bb33 sha3sum_230312_x86_64.qpkg.md5 sha3sum_230312_x86_64.qpkg sha3sum 230312 i64 6ceba9116e0dbcbdb4e6112f0c02f8c0 sha3sum_230312_x86.qpkg.md5 sha3sum_230312_x86.qpkg sha3sum 230312 i86 fdba9d16b88a5b6e3b04483ca77706dd -sherpa_240206.qpkg.md5 sherpa_240206.qpkg sherpa 240206 all 28d901e9ff045e1ab2a0d58d967531c7 +sherpa_240208.qpkg.md5 sherpa_240208.qpkg sherpa 240208 all f92632c2ebe46a38982248d46c1b8af4 SortMyQPKGs_240112.qpkg.md5 SortMyQPKGs_240112.qpkg SortMyQPKGs 240112 all 0fa5518749bd72c76da040162a0be3d6 Unrar_6.2.5_arm_64.qpkg.md5 Unrar_6.2.5_arm_64.qpkg Unrar 6.2.5 a64 e2382b80908fc9549bbb00058968082a Unrar_6.2.5_arm-x41.qpkg.md5 Unrar_6.2.5_arm-x41.qpkg Unrar 6.2.5 a41 ac1ff1149258db5e4c0b8165774eda37 Unrar_6.2.5_x86_64.qpkg.md5 Unrar_6.2.5_x86_64.qpkg Unrar 6.2.5 i64 f29dc4c271a0a1341d2dad78eb34d2ca -WebSSH_240205_arm_64.qpkg.md5 WebSSH_240205_arm_64.qpkg WebSSH 240205 a64 b280c7527fbea8f6a13c7baf88e4a6a8 -WebSSH_240205_x86_64.qpkg.md5 WebSSH_240205_x86_64.qpkg WebSSH 240205 i64 7e32d7a346a74ae345d58ed29c880bd6 -WebSSH_240205_x86.qpkg.md5 WebSSH_240205_x86.qpkg WebSSH 240205 i86 89114f9a0b0d8f738ca89f3a7f386c92 +WebSSH_240206_arm_64.qpkg.md5 WebSSH_240206_arm_64.qpkg WebSSH 240206 a64 7effc5cb68aa7185675ee8099d7d1e7f +WebSSH_240206_x86_64.qpkg.md5 WebSSH_240206_x86_64.qpkg WebSSH 240206 i64 ba11141d0dc82533d90b33edc7aaa121 +WebSSH_240206_x86.qpkg.md5 WebSSH_240206_x86.qpkg WebSSH 240206 i86 8dbc166944aa366e13f12b94278e20ca diff --git a/support/packages.source b/support/packages.source index 55358ca73..9324ea101 100644 --- a/support/packages.source +++ b/support/packages.source @@ -1082,7 +1082,7 @@ QPKG_CONFLICTS_WITH+=(none) QPKG_DEPENDS_ON+=(Entware) QPKG_REQUIRES_IPKS+=('python3-cryptography python3-curl python3-dev python3-pip python3-setuptools python3-six tesseract') QPKG_CAN_BACKUP+=(true) -QPKG_CAN_RESTART_TO_UPDATE+=(false) +QPKG_CAN_RESTART_TO_UPDATE+=(true) QPKG_CAN_CLEAN+=(true) QPKG_CAN_LOG_SERVICE_OPERATIONS+=(true) QPKG_TEST_FOR_ACTIVE+=(builtin) @@ -1907,7 +1907,7 @@ QPKG_CONFLICTS_WITH+=(none) QPKG_DEPENDS_ON+=(Entware) QPKG_REQUIRES_IPKS+=('python3-bcrypt python3-cffi python3-cryptography python3-pip python3-setuptools python3-six') QPKG_CAN_BACKUP+=(false) -QPKG_CAN_RESTART_TO_UPDATE+=(false) +QPKG_CAN_RESTART_TO_UPDATE+=(true) QPKG_CAN_CLEAN+=(true) QPKG_CAN_LOG_SERVICE_OPERATIONS+=(true) QPKG_TEST_FOR_ACTIVE+=(builtin) diff --git a/support/service-library.source b/support/service-library.source index a9e5ad5a0..1dd420e6a 100644 --- a/support/service-library.source +++ b/support/service-library.source @@ -307,7 +307,7 @@ StartQPKGLibrary() [[ -e $source_archive_pathfile ]] && download_opts+=" --time-cond $source_archive_pathfile" download_opts+=" --show-error --location --output $source_archive_pathfile" - DisplayRunAndLog 'refresh release package' "/sbin/curl${download_opts} '$release_url'" || { SetError; return 1 ;} + DisplayRunAndLog 'refresh release package' "/sbin/curl${download_opts} '$release_url'" log:failure-only || { SetError; return 1 ;} fi fi @@ -326,7 +326,7 @@ StartQPKGLibrary() unzip_extract_opts="$unzip_extract_verbose -o $source_archive_pathfile -d $qpkg_repo_path" # Try '.zip' first, then '.tar.gz' - DisplayRunAndLog 'extract release package' "/usr/bin/unzip${unzip_extract_opts} 2>/dev/null || /bin/tar${tar_extract_opts}" || { SetError; return 1 ;} + DisplayRunAndLog 'extract release package' "/usr/bin/unzip${unzip_extract_opts} 2>/dev/null || /bin/tar${tar_extract_opts}" log:failure-only || { SetError; return 1 ;} fi fi @@ -357,7 +357,14 @@ StartQPKGLibrary() return 1 fi - if ! DisplayRunAndLog 'start daemon' "$daemon_launch_cmd" log:failure-only "$run_daemon_in_screen_session"; then + local msg='start daemon' + + if [[ $run_daemon_in_screen_session = true ]]; then + msg+=' (in screen session)' + rm -f "${SCREEN_LOG_PATHFILE:?}" + fi + + if ! DisplayRunAndLog "$msg" "$daemon_launch_cmd" log:failure-only "$run_daemon_in_screen_session"; then SetError return 1 fi @@ -368,12 +375,14 @@ StartQPKGLibrary() if ! IsDaemonActive; then DisplayErrCommitAllLogs 'IsDaemonActive() failed!' SetError + [[ $run_daemon_in_screen_session = true ]] && AddFileToDebug "$SCREEN_LOG_PATHFILE" return 1 fi if ! CheckPorts; then DisplayErrCommitAllLogs 'CheckPorts() failed!' SetError + [[ $run_daemon_in_screen_session = true ]] && AddFileToDebug "$SCREEN_LOG_PATHFILE" return 1 fi @@ -415,12 +424,14 @@ StopQPKGLibrary() local acc=0 local pid=0 - SetRestartPending + local msg='stop daemon' + [[ $run_daemon_in_screen_session = true ]] && msg+=' (in screen session)' pid=$(<$daemon_pid_pathfile) + + DisplayWaitCommitToLog "$msg (PID:${pid}) with SIGTERM (no-more than $DAEMON_STOP_TIMEOUT_SECONDS second$(Pluralise "$DAEMON_STOP_TIMEOUT_SECONDS")):" + kill "$pid" - DisplayWaitCommitToLog "stop daemon PID '${pid}' with SIGTERM:" - DisplayWait "(no-more than $DAEMON_STOP_TIMEOUT_SECONDS second$(Pluralise "$DAEMON_STOP_TIMEOUT_SECONDS")):" while true; do while [[ -d /proc/$pid ]]; do @@ -430,8 +441,10 @@ StopQPKGLibrary() if [[ $acc -ge $DAEMON_STOP_TIMEOUT_SECONDS ]]; then DisplayCommitToLog 'failed!' - DisplayCommitToLog "stop daemon PID '${pid}' with SIGKILL:" + DisplayCommitToLog "$msg (PID:${pid}) with SIGKILL:" + kill -9 "$pid" 2> /dev/null + [[ -f $daemon_pid_pathfile ]] && rm -f "$daemon_pid_pathfile" break 2 fi @@ -442,7 +455,7 @@ StopQPKGLibrary() Display OK CommitToLog "stopped in $acc second$(Pluralise "$acc")" - CommitInfoToSysLog 'stop daemon: OK' + CommitInfoToSysLog "$msg: OK" break done @@ -622,7 +635,7 @@ StripComments() BackupConfig() { - DisplayRunAndLog 'update configuration backup' "/bin/tar --create --gzip --file=$qpkg_backup_pathfile --directory=$QPKG_PATH/config ." || SetError + DisplayRunAndLog 'update configuration backup' "/bin/tar --create --gzip --file=$qpkg_backup_pathfile --directory=$QPKG_PATH/config ." log:failure-only || SetError return 0 @@ -637,7 +650,7 @@ RestoreConfig() return 1 fi - DisplayRunAndLog 'restore configuration backup' "/bin/tar --extract --gzip --file=$qpkg_backup_pathfile --directory=$QPKG_PATH/config" || SetError + DisplayRunAndLog 'restore configuration backup' "/bin/tar --extract --gzip --file=$qpkg_backup_pathfile --directory=$QPKG_PATH/config" log:failure-only || SetError return 0 @@ -646,7 +659,7 @@ RestoreConfig() ResetConfig() { - DisplayRunAndLog 'reset configuration' "mv $qpkg_ini_default_pathfile $QPKG_PATH; rm -rf $QPKG_PATH/config/*; mv $QPKG_PATH/$(/usr/bin/basename "$qpkg_ini_default_pathfile") $qpkg_ini_default_pathfile" || SetError + DisplayRunAndLog 'reset configuration' "mv $qpkg_ini_default_pathfile $QPKG_PATH; rm -rf $QPKG_PATH/config/*; mv $QPKG_PATH/$(/usr/bin/basename "$qpkg_ini_default_pathfile") $qpkg_ini_default_pathfile" log:failure-only || SetError return 0 @@ -993,7 +1006,7 @@ WaitForDaemon() if IsProcessActive "$target_proc" "$daemon_pid_pathfile"; then Display OK - CommitToLog "active after $i second$(Pluralise "$i")" + CommitToLog "appeared in $i second$(Pluralise "$i")" true exit # only this sub-shell fi @@ -1183,6 +1196,7 @@ RunAndLog() fi if [[ ${5:-false} = true ]]; then + FormatAsCommand "$1" >> "$SCREEN_LOG_PATHFILE" /usr/sbin/screen -c "$SCREEN_CONF_PATHFILE" -dmLS "$QPKG_NAME" bash -c "$1" z=$? fi @@ -1744,7 +1758,7 @@ IsDaemonActive() # $? = 0 : $daemon_pathfile is in memory # $? = 1 : $daemon_pathfile is not in memory - DisplayWaitCommitToLog 'daemon active:' + DisplayWaitCommitToLog 'daemon:' local target_proc='' @@ -1755,12 +1769,11 @@ IsDaemonActive() fi if IsProcessActive "$target_proc" "$daemon_pid_pathfile"; then - DisplayCommitToLog true - DisplayCommitToLog "daemon: PID '$(<"$daemon_pid_pathfile")'" + DisplayCommitToLog "active (PID:$(<"$daemon_pid_pathfile"))" return 0 fi - DisplayCommitToLog false + DisplayCommitToLog inactive rm -f "$daemon_pid_pathfile" return 1 @@ -1907,8 +1920,7 @@ IsPortResponds() local acc=0 - DisplayWaitCommitToLog "test for port '$port' response:" - DisplayWait "(no-more than $PORT_CHECK_TIMEOUT_SECONDS second$(Pluralise "$PORT_CHECK_TIMEOUT_SECONDS")):" + DisplayWaitCommitToLog "test for port '$port' response (no-more than $PORT_CHECK_TIMEOUT_SECONDS second$(Pluralise "$PORT_CHECK_TIMEOUT_SECONDS")):" local target_proc='' @@ -1929,7 +1941,7 @@ IsPortResponds() case $? in 0|22|52) # accept these exitcodes as evidence of valid responses Display OK - CommitToLog "port responded after $acc second$(Pluralise "$acc")" + CommitToLog "responded in $acc second$(Pluralise "$acc")" return 0 ;; 28) # timed-out diff --git a/support/service.lib b/support/service.lib index 5c1c01cfa..6995264e5 100644 --- a/support/service.lib +++ b/support/service.lib @@ -22,7 +22,7 @@ #* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. #* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 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, see http://www.gnu.org/licenses/ -readonly SERVICE_LIB_VERSION='240205' +readonly SERVICE_LIB_VERSION='240206' InitLibrary() { IsQNAP || exit @@ -270,7 +270,7 @@ fi if [[ -n $release_url ]]; then [[ -e $source_archive_pathfile ]] && download_opts+=" --time-cond $source_archive_pathfile" download_opts+=" --show-error --location --output $source_archive_pathfile" -DisplayRunAndLog 'refresh release package' "/sbin/curl${download_opts} '$release_url'" || { SetError; return 1 ;} +DisplayRunAndLog 'refresh release package' "/sbin/curl${download_opts} '$release_url'" log:failure-only || { SetError; return 1 ;} fi fi local tar_extract_verbose='' @@ -283,7 +283,7 @@ fi if [[ ! -e $daemon_pathfile || ! -e $source_archive_pathfile || $(($(/bin/date +%s)-$(/usr/bin/stat "$source_archive_pathfile" -c %Y))) -lt 60 ]]; then tar_extract_opts="$tar_extract_verbose --extract --gzip --file=$source_archive_pathfile --directory=$qpkg_repo_path" unzip_extract_opts="$unzip_extract_verbose -o $source_archive_pathfile -d $qpkg_repo_path" -DisplayRunAndLog 'extract release package' "/usr/bin/unzip${unzip_extract_opts} 2>/dev/null || /bin/tar${tar_extract_opts}" || { SetError; return 1 ;} +DisplayRunAndLog 'extract release package' "/usr/bin/unzip${unzip_extract_opts} 2>/dev/null || /bin/tar${tar_extract_opts}" log:failure-only || { SetError; return 1 ;} fi fi WaitForLaunchTarget || { SetError; return 1 ;} @@ -307,7 +307,12 @@ DisplayErrCommitAllLogs "unable to start daemon: 'virtual environment does not e SetError return 1 fi -if ! DisplayRunAndLog 'start daemon' "$daemon_launch_cmd" log:failure-only "$run_daemon_in_screen_session"; then +local msg='start daemon' +if [[ $run_daemon_in_screen_session = true ]]; then +msg+=' (in screen session)' +rm -f "${SCREEN_LOG_PATHFILE:?}" +fi +if ! DisplayRunAndLog "$msg" "$daemon_launch_cmd" log:failure-only "$run_daemon_in_screen_session"; then SetError return 1 fi @@ -316,11 +321,13 @@ WaitForStartPID if ! IsDaemonActive; then DisplayErrCommitAllLogs 'IsDaemonActive() failed!' SetError +[[ $run_daemon_in_screen_session = true ]] && AddFileToDebug "$SCREEN_LOG_PATHFILE" return 1 fi if ! CheckPorts; then DisplayErrCommitAllLogs 'CheckPorts() failed!' SetError +[[ $run_daemon_in_screen_session = true ]] && AddFileToDebug "$SCREEN_LOG_PATHFILE" return 1 fi CommitInfoToSysLog 'start daemon: OK' @@ -350,11 +357,11 @@ SetRestartPending fi local acc=0 local pid=0 -SetRestartPending +local msg='stop daemon' +[[ $run_daemon_in_screen_session = true ]] && msg+=' (in screen session)' pid=$(<$daemon_pid_pathfile) +DisplayWaitCommitToLog "$msg (PID:${pid}) with SIGTERM (no-more than $DAEMON_STOP_TIMEOUT_SECONDS second$(Pluralise "$DAEMON_STOP_TIMEOUT_SECONDS")):" kill "$pid" -DisplayWaitCommitToLog "stop daemon PID '${pid}' with SIGTERM:" -DisplayWait "(no-more than $DAEMON_STOP_TIMEOUT_SECONDS second$(Pluralise "$DAEMON_STOP_TIMEOUT_SECONDS")):" while true; do while [[ -d /proc/$pid ]]; do /bin/sleep 1 @@ -362,7 +369,7 @@ while [[ -d /proc/$pid ]]; do DisplayWait "$acc," if [[ $acc -ge $DAEMON_STOP_TIMEOUT_SECONDS ]]; then DisplayCommitToLog 'failed!' -DisplayCommitToLog "stop daemon PID '${pid}' with SIGKILL:" +DisplayCommitToLog "$msg (PID:${pid}) with SIGKILL:" kill -9 "$pid" 2> /dev/null [[ -f $daemon_pid_pathfile ]] && rm -f "$daemon_pid_pathfile" break 2 @@ -371,7 +378,7 @@ done [[ -f $daemon_pid_pathfile ]] && rm -f "$daemon_pid_pathfile" Display OK CommitToLog "stopped in $acc second$(Pluralise "$acc")" -CommitInfoToSysLog 'stop daemon: OK' +CommitInfoToSysLog "$msg: OK" break done WaitForKillPID @@ -489,7 +496,7 @@ echo "$a" } BackupConfig() { -DisplayRunAndLog 'update configuration backup' "/bin/tar --create --gzip --file=$qpkg_backup_pathfile --directory=$QPKG_PATH/config ." || SetError +DisplayRunAndLog 'update configuration backup' "/bin/tar --create --gzip --file=$qpkg_backup_pathfile --directory=$QPKG_PATH/config ." log:failure-only || SetError return 0 } RestoreConfig() @@ -499,12 +506,12 @@ DisplayErrCommitAllLogs "unable to restore configuration: 'no backup file was fo SetError return 1 fi -DisplayRunAndLog 'restore configuration backup' "/bin/tar --extract --gzip --file=$qpkg_backup_pathfile --directory=$QPKG_PATH/config" || SetError +DisplayRunAndLog 'restore configuration backup' "/bin/tar --extract --gzip --file=$qpkg_backup_pathfile --directory=$QPKG_PATH/config" log:failure-only || SetError return 0 } ResetConfig() { -DisplayRunAndLog 'reset configuration' "mv $qpkg_ini_default_pathfile $QPKG_PATH; rm -rf $QPKG_PATH/config/*; mv $QPKG_PATH/$(/usr/bin/basename "$qpkg_ini_default_pathfile") $qpkg_ini_default_pathfile" || SetError +DisplayRunAndLog 'reset configuration' "mv $qpkg_ini_default_pathfile $QPKG_PATH; rm -rf $QPKG_PATH/config/*; mv $QPKG_PATH/$(/usr/bin/basename "$qpkg_ini_default_pathfile") $qpkg_ini_default_pathfile" log:failure-only || SetError return 0 } MakePaths() @@ -736,7 +743,7 @@ for ((i=1; i<=MAX_SECONDS; i++)); do DisplayWait "$i," if IsProcessActive "$target_proc" "$daemon_pid_pathfile"; then Display OK -CommitToLog "active after $i second$(Pluralise "$i")" +CommitToLog "appeared in $i second$(Pluralise "$i")" true exit fi @@ -852,6 +859,7 @@ z=$? fi fi if [[ ${5:-false} = true ]]; then +FormatAsCommand "$1" >> "$SCREEN_LOG_PATHFILE" /usr/sbin/screen -c "$SCREEN_CONF_PATHFILE" -dmLS "$QPKG_NAME" bash -c "$1" z=$? fi @@ -1171,7 +1179,7 @@ IsNotDaemon() } IsDaemonActive() { -DisplayWaitCommitToLog 'daemon active:' +DisplayWaitCommitToLog 'daemon:' local target_proc='' if [[ $daemon_proc_is_name_only = true ]]; then target_proc=$(/usr/bin/basename "$(GetLaunchTarget)") @@ -1179,11 +1187,10 @@ else target_proc=$(GetLaunchTarget) fi if IsProcessActive "$target_proc" "$daemon_pid_pathfile"; then -DisplayCommitToLog true -DisplayCommitToLog "daemon: PID '$(<"$daemon_pid_pathfile")'" +DisplayCommitToLog "active (PID:$(<"$daemon_pid_pathfile"))" return 0 fi -DisplayCommitToLog false +DisplayCommitToLog inactive rm -f "$daemon_pid_pathfile" return 1 } @@ -1255,8 +1262,7 @@ Display "port '0': not testing for response" return 1 fi local acc=0 -DisplayWaitCommitToLog "test for port '$port' response:" -DisplayWait "(no-more than $PORT_CHECK_TIMEOUT_SECONDS second$(Pluralise "$PORT_CHECK_TIMEOUT_SECONDS")):" +DisplayWaitCommitToLog "test for port '$port' response (no-more than $PORT_CHECK_TIMEOUT_SECONDS second$(Pluralise "$PORT_CHECK_TIMEOUT_SECONDS")):" local target_proc='' if [[ $daemon_proc_is_name_only = true ]]; then target_proc=$(/usr/bin/basename "$daemon_pathfile") @@ -1272,7 +1278,7 @@ fi case $? in 0|22|52) Display OK -CommitToLog "port responded after $acc second$(Pluralise "$acc")" +CommitToLog "responded in $acc second$(Pluralise "$acc")" return 0 ;; 28) diff --git a/support/sherpa-manager.source b/support/sherpa-manager.source index 1050d2f0b..5537e8f31 100755 --- a/support/sherpa-manager.source +++ b/support/sherpa-manager.source @@ -31,80 +31,57 @@ # Display functions should never finish by putting an empty line on-screen for spacing. set -o nounset -o pipefail -readonly USER_ARGS_RAW=$* +readonly ARGS_USER_RAW=$* readonly SCRIPT_STARTSECONDS=$(/bin/date +%s) -Self:Init() +Init() { OS.IsOk || return + User.IsOk || return Consts:Load Vars:Load - User.IsOk || return CMDs:Load CMDs.IsOk || return Keystrokes:Hide Cursor:Hide Env:Load - Self.LockFile:Claim || return - - trap RunOnEXIT EXIT - trap RunOnSIGINT INT - - sess_active_pathfile=$THIS_PACKAGE_PATH/session.$$.active.log - rm -f "$REPORT_OUTPUT_PATHFILE" "$RAMDISKS_FREESPACE_PATHFILE" "$DISPLAY_INHIBIT_PATHFILE" - - # KLUDGE: `/dev/fd` isn't always created by QTS. - ln -fns /proc/self/fd /dev/fd - - # KLUDGE: just in-case `python` has disappeared again ... ¯\_(ツ)_/¯ - [[ -e $PYTHON3_CMD && ! -L $PYTHON_CMD ]] && ln -s "$PYTHON3_CMD" "$PYTHON_CMD" - - EnableVerboseIfRequested - EnableDebugIfRequested + LockFile:Claim || return + Traps:Set + ParseOptionArgs || return Lists:Load - CreatePaths || return + Paths:Create || return ArchivePriorSessLogs - EnableResetIfRequested - TerminalDimensions:Load Debug.Log:Init - Objects:Load || return - QPKGs.States:Clear - QPKG.IsInstalled Entware && [[ $ENTWARE_VER = none ]] && DebugAsWarn "$(ShowAsPackageName Entware) appears to be installed but is inactive. Please consider starting the $(ShowAsPackageName Entware) QPKG." + if [[ $load_objects = true ]]; then + Objects:Load || return + fi - if [[ -z $USER_ARGS_RAW ]]; then - opts_show_basic_help=true - skip_package_actions=true - task_check=false - DisableDebugToArchiveAndFile - else + if [[ $load_packages = true ]]; then + QPKGs.States:Clear Packages:Load || return - ParseArgs + ParseActionArgs fi - ShowTitle - - if ! QPKGs.Conflicts:Check; then - skip_package_actions=true - return 1 - fi + Title:Show + QPKGs.Conflicts:Check || return QPKGs.Warnings:Check ArgSuggestions:Show Debug.Log:Env - Self.Tasks:Check - Self:Validate + Tasks:Check + Validate } -Self.Results:Show() +Results:Show() { Func:Init display_last_action_datetime=false - if ARGs-unknown.IsNone; then + if [[ ${#args_unknown[@]} -eq 0 ]]; then if [[ $opts_show_abbreviations = true ]]; then Report.Abbreviations:Show elif [[ $opts_show_actions = true ]]; then @@ -162,35 +139,37 @@ Self.Results:Show() elif [[ $opts_paste_log_tail = true ]]; then Log.Tail:Paste elif [[ $opts_show_log_last = true ]]; then - Self.LockFile:Release + LockFile:Release Log.Last:View elif [[ $opts_show_log_tail = true ]]; then - Self.LockFile:Release + LockFile:Release Log.Tail:View fi - if QPKGs.AClist.ISbackedup.IsSet; then - QPKGs.IsBackedUp:Show - elif QPKGs.AClist.ISNTbackedup.IsSet; then - QPKGs.IsNtBackedUp:Show - elif QPKGs.AClist.ISinstalled.IsSet; then - QPKGs.IsInstalled:Show - elif QPKGs.AClist.ISNTinstalled.IsSet; then - QPKGs.IsNtInstalled:Show - elif QPKGs.AClist.ISactive.IsSet; then - QPKGs.IsActive:Show - elif QPKGs.AClist.ISNTactive.IsSet; then - QPKGs.IsNtActive:Show - elif QPKGs.AClist.SCinstallable.IsSet; then - QPKGs.ScInstallable:Show - elif QPKGs.AClist.SCNTinstallable.IsSet; then - QPKGs.ScNtInstallable:Show - elif QPKGs.AClist.SCupgradable.IsSet; then - QPKGs.ScUpgradable:Show - elif QPKGs.AClist.SCindependent.IsSet; then - QPKGs.ScIndependent:Show - elif QPKGs.AClist.SCdependent.IsSet; then - QPKGs.ScDependent:Show + if [[ $load_packages = true ]]; then + if QPKGs.AClist.ISbackedup.IsSet; then + QPKGs.IsBackedUp:Show + elif QPKGs.AClist.ISNTbackedup.IsSet; then + QPKGs.IsNtBackedUp:Show + elif QPKGs.AClist.ISinstalled.IsSet; then + QPKGs.IsInstalled:Show + elif QPKGs.AClist.ISNTinstalled.IsSet; then + QPKGs.IsNtInstalled:Show + elif QPKGs.AClist.ISactive.IsSet; then + QPKGs.IsActive:Show + elif QPKGs.AClist.ISNTactive.IsSet; then + QPKGs.IsNtActive:Show + elif QPKGs.AClist.SCinstallable.IsSet; then + QPKGs.ScInstallable:Show + elif QPKGs.AClist.SCNTinstallable.IsSet; then + QPKGs.ScNtInstallable:Show + elif QPKGs.AClist.SCupgradable.IsSet; then + QPKGs.ScUpgradable:Show + elif QPKGs.AClist.SCindependent.IsSet; then + QPKGs.ScIndependent:Show + elif QPKGs.AClist.SCdependent.IsSet; then + QPKGs.ScDependent:Show + fi fi fi @@ -206,14 +185,13 @@ Self.Results:Show() [[ $opts_show_backuploc = true ]] && Help.BackupLocation:Show [[ $show_zero_qpkgs = true ]] && ShowZeroQpkgs [[ $show_suggest_raise_issue = true ]] && Help.Issue:Show - DebugInfoMinSepr DebugScript finished "$(/bin/date)" DebugScript 'elapsed time' "$(FormatSecsToHoursMinutesSecs "$(($(/bin/date +%s)-SCRIPT_STARTSECONDS))")" DebugInfoMajSepr Func:Exit - [[ $self_archive_debug_afterward = true ]] && ArchiveActiveSessLog + [[ $archive_debug_afterward = true ]] && ArchiveActiveSessLog ResetActiveSessLog [[ $show_bland = false && $opts_verbose = false ]] && WriteEmptyLineIfNoneExists # Final on-screen linespace. @@ -314,30 +292,32 @@ Vars:Load() # Default values. action_msg_pipe_fd=none + archive_debug_afterward=false backup_stdin_fd=none + check_tasks=true colourful=true + fork_pid='' ipks_downgrade=false ipks_install=false ipks_upgrade=false linespace_visible=false + load_objects=true + load_packages=true + package_ver_final_col_width=0 pips_install=false + proc_counts_path='' qpkg_timeouts_increased=false - self_archive_debug_afterward=false show_bland=false show_suggest_raise_issue=false show_zero_qpkgs=true skip_package_actions=false - task_check=true title_shown=false # User-selectable options. opts_check=false opts_debug=false - opts_verbose=false - opts_paste_log_last=false opts_paste_log_tail=false - opts_show_abbreviations=false opts_show_actions=false opts_show_actions_all=false @@ -360,12 +340,9 @@ Vars:Load() opts_show_status=false opts_show_tips=false opts_show_versions=false + opts_switch_follow_branch=false + opts_verbose=false - fork_pid='' - package_ver_final_col_width=0 - proc_counts_path='' - - OS.IsSupportSecureDownload && curl_insecure_arg='' || curl_insecure_arg=' --insecure' UpdateColourisation } @@ -392,7 +369,7 @@ CMDs:Load() readonly AWK_CMD=/bin/awk readonly BASENAME_CMD=/usr/bin/basename readonly CAT_CMD=/bin/cat - readonly CURL_CMD=/sbin/curl + CURL_CMD=/sbin/curl # Set as readonly later when secure download ability has been checked. # Don't assign a const for `/bin/date` as it's already been called before arriving here. readonly DF_CMD=/bin/df readonly DIRNAME_CMD=/usr/bin/dirname @@ -442,7 +419,7 @@ CMDs.IsOk() IsSysFileExist $MD5SUM_CMD || return IsSysFileExist $MKNOD_CMD || return IsSysFileExist $MKTEMP_CMD || return - # Don't check for `/bin/more` because it's a very low-priority command (not essential). + # Don't check for `/bin/more` because it's a very low-priority utility (non-essential). IsSysFileExist $PS_CMD || return IsSysFileExist $READLINK_CMD || return IsSysFileExist $SCREEN_CMD || return @@ -525,11 +502,18 @@ Env:Load() readonly NAS_RAM_KB=$(GetInstalledRAM) readonly NAS_UPSTATE=$(GetUpState) - source_branch=stable # default branch to follow + OS.IsSupportSecureDownload || CURL_CMD+=' --insecure' + readonly CURL_CMD + + args_user=() # command-line argument array. + args_incomplete=() + args_unknown=() + source_branch=stable # Default branch. + local test_branch=$(/sbin/getcfg sherpa Git_Branch -d unknown -f /etc/config/qpkg.conf) if [[ $test_branch = unknown ]]; then - /sbin/setcfg sherpa Git_Branch $source_branch -f /etc/config/qpkg.conf + /sbin/setcfg sherpa Git_Branch "$source_branch" -f /etc/config/qpkg.conf else source_branch=$test_branch fi @@ -561,6 +545,7 @@ Env:Load() readonly SESS_TAIL_PATHFILE=$LOGS_PATH/session.tail.log readonly REPORTS_PATH=$THIS_PACKAGE_PATH/reports readonly REPORT_OUTPUT_PATHFILE=$REPORTS_PATH/report.ansi + sess_active_pathfile=$THIS_PACKAGE_PATH/session.$$.active.log readonly STATES_PATH=$THIS_PACKAGE_PATH/states readonly THIS_PACKAGE_VER=$(QPKG.Local.GetVer) readonly THIS_SCRIPT_VER=''-$source_branch @@ -569,6 +554,23 @@ Env:Load() readonly EXTERNAL_PACKAGES_ARCHIVE_PATHFILE=/opt/var/opkg-lists/entware readonly EXTERNAL_PACKAGES_PATHFILE=$CACHE_PATH/Packages + # KLUDGE: `/dev/fd` isn't always created by QTS. + ln -fns /proc/self/fd /dev/fd + + # KLUDGE: just in-case `python` has disappeared again ... ¯\_(ツ)_/¯ + [[ -e $PYTHON3_CMD && ! -L $PYTHON_CMD ]] && ln -s "$PYTHON3_CMD" "$PYTHON_CMD" + + rm -f "$REPORT_OUTPUT_PATHFILE" "$RAMDISKS_FREESPACE_PATHFILE" "$DISPLAY_INHIBIT_PATHFILE" + + if [[ -e $GNU_STTY_CMD && -t 0 ]]; then + local terminal_dimensions=$($GNU_STTY_CMD size) + readonly SESS_ROWS=${terminal_dimensions% *} + readonly SESS_COLS=${terminal_dimensions#* } + else + readonly SESS_ROWS=40 + readonly SESS_COLS=156 + fi + } Lists:Load() @@ -590,7 +592,7 @@ Lists:Load() # ordered PIP_ACTIONS=(download uninstall upgrade reinstall install) IPK_ACTIONS=(download uninstall upgrade reinstall install) - QPKG_ACTIONS=(status rebuild reassign download backup deactivate disable uninstall upgrade reinstall install sign restore clean enable activate reactivate) + QPKG_ACTIONS=(status list rebuild reassign download backup deactivate disable uninstall upgrade reinstall install enableau disableau sign restore clean enable activate reactivate) # These actions, states and scopes may be specified by the user. # sorted @@ -598,7 +600,7 @@ Lists:Load() USER_QPKG_SCNT_GROUPS=(canclean installable upgradable) USER_QPKG_IS_STATES=(active backedup enabled installed missing) USER_QPKG_ISNT_STATES=(active backedup enabled installed) - USER_QPKG_ACTIONS=(activate backup clean enable deactivate disable install list reactivate reassign rebuild reinstall restore status uninstall upgrade) + USER_QPKG_ACTIONS=(activate backup clean deactivate disable disableau enable enableau install list reactivate reassign rebuild reinstall restore sign status uninstall upgrade) # KLUDGE: for some reason, setting `readonly` while populating arrays causes their scope to become local, so need to set as `readonly` afterward to ensure global scope. GNU bash, version 3.2.57(1)-release (aarch64-QNAP-linux-gnu) readonly PACKAGE_TIERS @@ -628,7 +630,7 @@ Lists:Load() } -CreatePaths() +Paths:Create() { ClearPath "$CACHE_PATH" "$IPK_CACHE_PATH" @@ -778,12 +780,12 @@ Debug.Log:Env() } -Self.Tasks:Check() +Tasks:Check() { # Establish whether there's something to-do. - [[ $task_check = true ]] || return + [[ $check_tasks = true ]] || return Func:Init ShowAsProc checking @@ -793,56 +795,58 @@ Self.Tasks:Check() local something_to_do=false local build_states=false - if [[ $opts_check = true || $opts_show_dependencies = true || $opts_show_packages = true || $opts_show_packages_failed = true || $opts_show_packages_ok = true || $opts_show_packages_skipped = true || $opts_show_reassign = true || $opts_show_repos = true || $opts_show_status = true ]]; then - something_to_do=true - build_states=true - elif [[ $opts_debug = true || $opts_paste_log_last = true || $opts_paste_log_tail = true || $opts_show_abbreviations = true || $opts_show_actions = true || $opts_show_actions_all = true || $opts_show_backups = true || $opts_show_groups = true || $opts_show_log_last = true || $opts_show_log_tail = true || $opts_show_options = true || $opts_show_problems = true || $opts_show_results = true || $opts_show_tips = true || $opts_show_versions = true || $opts_verbose = true ]]; then - something_to_do=true - else - for action in "${USER_QPKG_ACTIONS[@]}"; do - if QPKGs-AC${action}-to.IsAny; then + for action in "${USER_QPKG_ACTIONS[@]}"; do + if QPKGs-AC${action}-to.IsAny; then + something_to_do=true + build_states=true + break + fi + + for group in "${USER_QPKG_SC_GROUPS[@]}"; do + if QPKGs.AC${action}.SC${group}.IsSet; then something_to_do=true build_states=true - break + break 2 fi + done - for group in "${USER_QPKG_SC_GROUPS[@]}"; do - if QPKGs.AC${action}.SC${group}.IsSet; then - something_to_do=true - build_states=true - break 2 - fi - done - - for group in "${USER_QPKG_SCNT_GROUPS[@]}"; do - if QPKGs.AC${action}.SCNT${group}.IsSet; then - something_to_do=true - build_states=true - break 2 - fi - done + for group in "${USER_QPKG_SCNT_GROUPS[@]}"; do + if QPKGs.AC${action}.SCNT${group}.IsSet; then + something_to_do=true + build_states=true + break 2 + fi + done - for state in "${USER_QPKG_IS_STATES[@]}"; do - if QPKGs.AC${action}.IS${state}.IsSet; then - something_to_do=true - build_states=true - break 2 - fi - done + for state in "${USER_QPKG_IS_STATES[@]}"; do + if QPKGs.AC${action}.IS${state}.IsSet; then + something_to_do=true + build_states=true + break 2 + fi + done - for state in "${USER_QPKG_ISNT_STATES[@]}"; do - if QPKGs.AC${action}.ISNT${state}.IsSet; then - something_to_do=true - build_states=true - break 2 - fi - done + for state in "${USER_QPKG_ISNT_STATES[@]}"; do + if QPKGs.AC${action}.ISNT${state}.IsSet; then + something_to_do=true + build_states=true + break 2 + fi done + done + + if [[ $something_to_do = false ]]; then + if [[ $opts_check = true || $opts_show_dependencies = true || $opts_show_packages = true || $opts_show_packages_failed = true || $opts_show_packages_ok = true || $opts_show_packages_skipped = true || $opts_show_reassign = true || $opts_show_repos = true || $opts_show_status = true ]]; then + something_to_do=true + build_states=true + elif [[ $opts_debug = true || $opts_paste_log_last = true || $opts_paste_log_tail = true || $opts_show_abbreviations = true || $opts_show_actions = true || $opts_show_actions_all = true || $opts_show_backups = true || $opts_show_groups = true || $opts_show_log_last = true || $opts_show_log_tail = true || $opts_show_options = true || $opts_show_problems = true || $opts_show_results = true || $opts_show_tips = true || $opts_show_versions = true || $opts_verbose = true ]]; then + something_to_do=true + fi fi if [[ $something_to_do = false ]]; then - show_bland=false; ShowTitle - ShowAsError "supplied arguments were incomplete, or didn't make sense. Please check the argument list again" + show_bland=false; Title:Show + ShowAsError "supplied arguments didn't make sense. Please check the argument list again" opts_show_basic_help=true skip_package_actions=true Func:Exit 1; return @@ -853,7 +857,7 @@ Self.Tasks:Check() } -Self:Validate() +Validate() { # This function handles most of the high-level logic for package actions. @@ -868,6 +872,8 @@ Self:Validate() local prospect='' local target_packages='' + QPKG.IsInstalled Entware && [[ $ENTWARE_VER = none ]] && DebugAsWarn "$(ShowAsPackageName Entware) appears to be installed but is inactive. Please consider starting the $(ShowAsPackageName Entware) QPKG." + UpdateEntwarePackageList & # Let's try launching this early. # Decide if particular IPKs and PIPs should be installed/upgraded. @@ -881,7 +887,7 @@ Self:Validate() installed_ver=$(GetPython3Ver "$PYTHON3_CMD") if [[ ${installed_ver//./} -lt $MIN_PYTHON_VER ]]; then - ShowAsInfo "the $(TextBrightOrange Python) environment will be auto-upgraded" + ShowAsNote "the $(TextBrightOrange Python) environment will be auto-upgraded" IPKs-ACuninstall-to:Add 'python*' fi fi @@ -890,7 +896,7 @@ Self:Validate() installed_ver=$(GetPerlVer "$PERL_CMD") if [[ ${installed_ver//./} -lt $MIN_PERL_VER ]]; then - ShowAsInfo "the $(TextBrightOrange Perl) environment will be auto-upgraded" + ShowAsNote "the $(TextBrightOrange Perl) environment will be auto-upgraded" IPKs-ACuninstall-to:Add 'perl*' fi fi @@ -908,7 +914,7 @@ Self:Validate() if [[ ${installed_version//.} -gt 238 ]]; then ipks_downgrade=true - ShowAsInfo "IPKs will be downgraded to suit $KERNEL_PAGE_SIZE kernel page size" + ShowAsNote "IPKs will be downgraded to suit $KERNEL_PAGE_SIZE kernel page size" IPKs-ACdowngrade-to:Add "$target_packages" else IPKs-ACdowngrade-sk:Add "$target_packages" @@ -923,7 +929,7 @@ Self:Validate() AllocPackStatesToAcs if QPKGs-SCupgradable.Exist sherpa; then - ShowAsInfo "the $(TextBrightOrange sherpa) QPKG will be auto-upgraded" + ShowAsNote "the $(TextBrightOrange sherpa) QPKG will be auto-upgraded" QPKGs-ACupgrade-to:Add sherpa fi @@ -935,7 +941,7 @@ Self:Validate() local entware_install_date=$(QPKG.GetInstallDate Entware) if [[ $entware_install_date = undefined || ${entware_install_date//[!0-9]/} -le 20230604 ]]; then - ShowAsInfo "the $(TextBrightOrange Entware) QPKG will be auto-reinstalled (Entware packages were updated early June 2023)" + ShowAsNote "the $(TextBrightOrange Entware) QPKG will be auto-reinstalled (Entware packages were updated early June 2023)" QPKGs-ACreinstall-to:Add Entware fi fi @@ -1104,22 +1110,26 @@ Self:Validate() # 11. upgrade independents # 12. reinstall independents # 13. install independents -# 14. "sign" independents -# 15. restore independents -# 16. clean independents -# 17. enable independents -# 18. restart/reactivate independents -# 19. start/activate independents +# 14. enable-auto-update independents +# 15. disable-auto-update independents +# 16. "sign" independents +# 17. restore independents +# 18. clean independents +# 19. enable independents +# 20. restart/reactivate independents +# 21. start/activate independents # -# 20. upgrade dependents -# 21. reinstall dependents -# 22. install dependents -# 23. "sign" dependents -# 24. restore dependents -# 25. clean dependents (supported by most dependent packages, but not all) -# 26. enable dependents -# 27. restart/reactivate dependents -# 28. start/activate dependents +# 22. upgrade dependents +# 23. reinstall dependents +# 24. install dependents +# 25. enable-auto-update dependents +# 26. disable-auto-update dependents +# 27. "sign" dependents +# 28. restore dependents +# 29. clean dependents (supported by most dependent packages, but not all) +# 30. enable dependents +# 31. restart/reactivate dependents +# 32. start/activate dependents # Actions:Proc() @@ -1163,15 +1173,19 @@ Actions:Proc() Action:Proc upgrade $tier QPKG upgrading upgraded Action:Proc reinstall $tier QPKG reinstalling reinstalled Action:Proc install $tier QPKG installing installed + Action:Proc enableau $tier QPKG 'enabling auto-update' 'enabled auto-update' + Action:Proc disableau $tier QPKG 'disabling auto-update' 'disabled auto-update' + + if OS.IsSupportSignedPackages; then + Action:Proc sign $tier QPKG '"signing"' '"signed"' + fi + Action:Proc restore $tier QPKG restoring restored Action:Proc clean $tier QPKG cleaning cleaned Action:Proc enable $tier QPKG enabling enabled Action:Proc reactivate $tier QPKG reactivating reactivated Action:Proc activate $tier QPKG activating activated - if OS.IsSupportSignedPackages; then - Action:Proc sign $tier QPKG '"signing"' '"signed"' - fi ;; auxiliary) for action in install reinstall upgrade activate; do @@ -1201,7 +1215,7 @@ Actions:Proc() fi if [[ $show_bland = false && $skip_package_actions = false ]]; then - if Self.Error.IsNt; then + if Error.IsNt; then ShowAsDone 'processing complete' else ShowAsFail 'processing complete' @@ -1284,12 +1298,12 @@ Action:Proc() Keystrokes:Show # Enable this before removing Entware & GNU `stty`. fi - _LaunchSingleActionWithManyForks_ "_${PACKAGE_TYPE}:${TARGET_ACTION}_" "${target_packages[@]}" & + _LaunchOneActionWithManyForks_ "_${PACKAGE_TYPE}:${TARGET_ACTION}_" "${target_packages[@]}" & fork_pid=$! # Read message pipe and process QPKGs and actions as-per requests contained within. while [[ ${#target_packages[@]} -gt 0 ]]; do - ReadMsgFromActionPipe msg1_key msg1_value msg2_key msg2_value + ReadFromActionMsgPipe msg1_key msg1_value msg2_key msg2_value case $msg1_key in env) # Change the state of the sherpa environment. @@ -1386,7 +1400,7 @@ Action:Proc() done [[ $ok_count -gt 0 ]] && opts_show_packages_ok=true - [[ $skip_count -gt 0 || $skip_error_count -gt 0 || $skip_abort_count -gt 0 ]] && opts_show_packages_skipped=true + [[ $skip_count -gt 0 || $skip_ok_count -gt 0 || $skip_error_count -gt 0 || $skip_abort_count -gt 0 ]] && opts_show_packages_skipped=true [[ $fail_count -gt 0 ]] && opts_show_packages_failed=true [[ ${#target_packages[@]} -gt 0 ]] && KillActiveFork # Should only be needed if an action fork didn't exit properly. @@ -1402,7 +1416,7 @@ Action:Proc() EraseForkCountPaths Func:Exit - Self.Error.IsNt + Error.IsNt } @@ -1477,15 +1491,11 @@ AdjustMaxForks() max_forks=1 reason="'$1'" ;; - sign) # Precautionary: don't create multiple writes to the certificate database at the same time. - max_forks=1 - reason="'$1'" - ;; backup|deactivate|download|uninstall) # Low-resource actions, so allow multiple forks, even on ARMv5. max_forks=4 reason="'$1'" ;; - disable|enable|status) # Really-low-resource actions. + disable|disableau|enable|enableau|sign|status) # Really-low-resource actions. max_forks=8 reason="'$1'" esac @@ -1498,16 +1508,114 @@ AdjustMaxForks() } -ParseArgs() +ParseOptionArgs() + { + + # Basic argument syntax: + # scriptname [action] [groups] [options] + + # output: + # $args_user (global) + # $args_incomplete (global) + + local user_args_fixed=$(Lowercase "${ARGS_USER_RAW//,/ }") + local -a user_args_trimmed=(${user_args_fixed/--/}) + local -a user_args_filtered=() + local arg='' + local awaiting_follow_branch=false + local awaiting_paste_source=false + local something_to_do=false + + if [[ -n ${user_args_trimmed[*]:-} ]]; then + for arg in "${user_args_trimmed[@]}"; do + case $arg in + c|check) + opts_check=true + skip_package_actions=false + something_to_do=true + ;; + debug|dbug) + EnableDebugToArchiveAndFile + ;; + follow) + awaiting_follow_branch=true + load_objects=false + load_packages=false + skip_package_actions=true + check_tasks=false + something_to_do=true + # Assume next arg will be specified branch. + ;; + paste) + awaiting_paste_source=true + load_objects=false + load_packages=false + skip_package_actions=true + check_tasks=false + something_to_do=true + # Assume next arg will be paste source. + ;; + reset) + Reset + ;; + v|verbose) + Verbose:Enable + EnableDebugToArchiveAndFile + ;; + *) + if [[ $awaiting_follow_branch = true ]]; then + source_branch=$arg + opts_switch_follow_branch=true + awaiting_follow_branch=false + SwitchSourceBranch || return + elif [[ $awaiting_paste_source = true ]]; then + case $arg in + all|log|tail) + opts_paste_log_tail=true + awaiting_paste_source=false + ;; + l|last) + opts_paste_log_last=true + awaiting_paste_source=false + esac + else + user_args_filtered+=($arg) + fi + + something_to_do=true + esac + done + fi + + [[ $awaiting_follow_branch = true ]] && args_incomplete+=(follow) + [[ $awaiting_paste_source = true ]] && args_incomplete+=(paste) + + args_user=(${user_args_filtered[@]:-}) + + if [[ $something_to_do = false ]]; then + load_objects=false + load_packages=false + skip_package_actions=true + check_tasks=false + opts_show_basic_help=true + opts_show_packages_ok=false + opts_show_packages_skipped=false + opts_show_packages_failed=false + DisableDebugToArchiveAndFile + fi + + return 0 + + } + +ParseActionArgs() { # Basic argument syntax: # scriptname [action] [groups] [options] Func:Init - DebugVar USER_ARGS_RAW - local user_args_fixed=$(Lowercase "${USER_ARGS_RAW//,/ }") - local -a user_args=(${user_args_fixed/--/}) + local arg='' local arg_identified=false local action='' @@ -1516,33 +1624,39 @@ ParseArgs() local group_identified=false local package='' - for arg in "${user_args[@]}"; do + for arg in "${args_user[@]:-}"; do + [[ -n $arg ]] || continue + arg_identified=false # Identify action: everytime action changes, must clear group. case $arg in # These cases use only a single word to specify a single action. - backup|clean|enable|disable|reassign|rebuild|reinstall|restore) + backup|clean|enable|disable|reassign|rebuild|reinstall|restore|sign) action=${arg} arg_identified=true group='' group_identified=false ;; - list) - action=list + disable-auto-update) + action=disableau arg_identified=true group='' group_identified=false - show_bland=true ;; - paste) - action=paste + enable-auto-update) + action=enableau arg_identified=true group='' group_identified=false - show_bland=false - skip_package_actions=true + ;; + list) + action=list + arg_identified=true + group='' + group_identified=false + show_bland=true ;; # All cases below can use multiple words or chars to specify a single action. activate|start) @@ -1561,14 +1675,6 @@ ParseArgs() show_bland=false skip_package_actions=false ;; - c|check) - action=check - arg_identified=true - group='' - group_identified=false - show_bland=false - skip_package_actions=false - ;; deactivate|stop) action=deactivate arg_identified=true @@ -1618,9 +1724,9 @@ ParseArgs() skip_package_actions=false esac - # Identify group in two stages: stage 1 for when user didn't supply an action before group, stage 2 is after an action has been defined. + # Identify group in two stages: - # stage 1 + # Stage 1: when user didn't supply an action before group. if [[ -z $action ]]; then case $arg in @@ -1642,12 +1748,12 @@ ParseArgs() DebugVar action fi - # stage 2 + # Stage 2: after an action has been defined. if [[ -n $action ]]; then case $arg in # These cases use only a single word or char to specify a single group. - backedup|installable|installed|missing|ok|problems|results|skipped|tail|tips) + backedup|follow|installable|installed|missing|ok|problems|results|skipped|tail|tips) group=${arg} ;; failed) @@ -1696,12 +1802,6 @@ ParseArgs() inactive|not-active|stopped) group=NTactive ;; - l|last) - group=last - ;; - log) - group=log - ;; new|updatable|updateable|upgradable) group=upgradable ;; @@ -1730,10 +1830,6 @@ ParseArgs() # Identify options. case $arg in - v|debug|dbug|verbose) - group_identified=true - arg_identified=true - ;; force) action_force=true arg_identified=true @@ -1747,10 +1843,10 @@ ParseArgs() arg_identified=true fi - [[ $arg_identified = false ]] && ARGs-unknown:Add "$arg" + [[ $arg_identified = false ]] && args_unknown+=("$arg") case $action in - activate|backup|clean|deactivate|disable|enable|install|reactivate|reassign|rebuild|reinstall|restore|upgrade) + activate|backup|clean|deactivate|disable|disableau|enable|enableau|install|reactivate|reassign|rebuild|reinstall|restore|sign|upgrade) case $group in all|dependent|disabled|installable|independent|NTinstallable|upgradable) QPKGs.AC${action}.SC${group}:Set @@ -1764,12 +1860,9 @@ ParseArgs() QPKGs-AC${action}-to:Add "$package" esac ;; - check) - opts_check=true - ;; help) skip_package_actions=true - task_check=false + check_tasks=false case $group in abs) @@ -1846,19 +1939,6 @@ ParseArgs() opts_show_versions=true esac ;; - paste) - skip_package_actions=true - - case $group in - all|log|tail) - opts_paste_log_tail=true - action='' - ;; - last) - opts_paste_log_last=true - action='' - esac - ;; status) opts_show_status=true @@ -1911,7 +1991,7 @@ ParseArgs() if [[ -n $action && $group_identified = false ]]; then case $action in - help|paste) + help) opts_show_basic_help=true esac fi @@ -1920,10 +2000,9 @@ ParseArgs() QPKGs.ACstatus.SCall:Set fi - if ARGs-unknown.IsAny; then + if [[ -n ${args_incomplete[*]:-} || -n ${args_unknown[*]:-} ]]; then opts_show_basic_help=true skip_package_actions=true - show_bland=false fi Func:Exit @@ -1936,11 +2015,30 @@ ArgSuggestions:Show() Func:Init local arg='' - if ARGs-unknown.IsAny; then - ShowAsError "unknown argument$(Pluralise "$(ARGs-unknown:Count)"): \"$(ARGs-unknown:List)\". Please check the argument list again" - task_check=false + if [[ ${#args_incomplete[@]} -gt 0 ]]; then + ShowAsError "incomplete argument$(Pluralise "${#args_incomplete[@]}"): \"${args_incomplete[*]}\". Please check the argument list again" + check_tasks=false + + for arg in "${args_incomplete[@]}"; do + case $arg in + paste) + DisplayAsProjSynExam "please provide a valid source to paste online after 'paste' like" 'paste log' + DisplayAsProjSynIndentExam '' 'paste last' + opts_show_basic_help=false + ;; + follow) + DisplayAsProjSynExam "please provide a valid source branch to track after 'follow' like" 'follow stable' + DisplayAsProjSynIndentExam '' 'follow unstable' + opts_show_basic_help=false + esac + done + fi + + if [[ ${#args_unknown[@]} -gt 0 ]]; then + ShowAsError "unknown argument$(Pluralise "${#args_unknown[@]}"): \"${args_unknown[*]}\". Please check the argument list again" + check_tasks=false - for arg in $(ARGs-unknown:Array); do + for arg in "${args_unknown[@]}"; do case $arg in all) DisplayAsProjSynExam "please provide a valid $(ShowAction) before 'all' like" 'activate all' @@ -2034,7 +2132,7 @@ AllocPackGroupsToAcs() DebugAsWarn "group 'SC$group' has no positive allocation handler for action '$action'" esac ;; - activate|deactivate|enable|disable|reactivate|reinstall|stop|uninstall) + activate|deactivate|disable|diableau|enable|enableau|reactivate|reinstall|stop|uninstall) case $group in all|dependent|independent) found=true @@ -2088,7 +2186,7 @@ AllocPackGroupsToAcs() if QPKGs-AC${action}-to.IsAny; then DebugAsDone "action: '$action', group: 'SC$group': found $(QPKGs-AC${action}-to:Count) package$(Pluralise "$(QPKGs-AC${action}-to:Count)") to process" else - ShowAsWarn "unable to find any packages to '$(Lowercase "$action")'" + ShowAsWarn "unable to find any packages to '$(Lowercase "$action")': positive allocation handler" fi fi done @@ -2111,7 +2209,7 @@ AllocPackGroupsToAcs() if QPKGs-AC${action}-to.IsAny; then DebugAsDone "action: '$action', group: 'SCNT${group}': found $(QPKGs-AC${action}-to:Count) package$(Pluralise "$(QPKGs-AC${action}-to:Count)") to process" else - ShowAsWarn "unable to find any packages to '$(Lowercase "$action")'" + ShowAsWarn "unable to find any packages to '$(Lowercase "$action")': negative allocation handler" fi fi done @@ -2174,7 +2272,7 @@ AllocPackStatesToAcs() if QPKGs.AC${action}.ISNT${state}.IsSet; then case $action in - activate|backup|clean|install|uninstall) + activate|backup|clean|disableau|enableau|install|uninstall) case $state in active|enabled|installed) found=true @@ -2510,7 +2608,7 @@ IPKs:upgrade() [[ $ipks_upgrade = true ]] || return QPKGs-ISenabled.Exist Entware || return - Self.Error.IsNt || return + Error.IsNt || return Func:Init local desc='' @@ -2564,7 +2662,7 @@ IPKs:install() [[ $ipks_install = true ]] || return QPKGs-ISenabled.Exist Entware || return - Self.Error.IsNt || return + Error.IsNt || return Func:Init local desc='' @@ -2649,7 +2747,7 @@ IPKs:downgrade() [[ $ipks_downgrade = true ]] || return QPKGs-ISenabled.Exist Entware || return - Self.Error.IsNt || return + Error.IsNt || return Func:Init local desc='' @@ -2695,7 +2793,7 @@ IPKs:downgrade() remote_url=${url_prefix}${name}${url_suffix} local_pathfile=$IPK_DOWNGRADE_DL_PATH/$($BASENAME_CMD "$remote_url") - RunAndLog "${CURL_CMD}${curl_insecure_arg} --location --output $local_pathfile $remote_url" "$log_pathfile" log:failure-only + RunAndLog "$CURL_CMD --location --output $local_pathfile $remote_url" "$log_pathfile" log:failure-only done @@ -2737,7 +2835,7 @@ PIPs:install() [[ $pips_install = true ]] || return QPKGs-ISenabled.Exist Entware || return $OPKG_CMD status python3-pip | $GREP_CMD -q "Status:.*installed" || return - Self.Error.IsNt || return + Error.IsNt || return Func:Init local desc='' @@ -2806,7 +2904,7 @@ CloseIpkArchive() } -_LaunchSingleActionWithManyForks_() +_LaunchOneActionWithManyForks_() { # Execute actions concurrently, but only as many as $max_forks will allow given the circumstances. @@ -2976,55 +3074,38 @@ KillActiveFork() } &>/dev/null -EnableResetIfRequested() +Reset() { - local re='' - re=\\breset\\b # bash 3.2 regex with word boundaries: https://stackoverflow.com/a/9793094 - - if [[ $USER_ARGS_RAW =~ $re ]]; then - ResetCachePath - ResetReportsPath - ResetArchivedLogs - ArchiveActiveSessLog - ResetActiveSessLog - exit 0 - fi - - return 1 + ResetCachePath + ResetReportsPath + ResetArchivedLogs + ArchiveActiveSessLog + ResetActiveSessLog + exit 0 } -EnableVerboseIfRequested() +SwitchSourceBranch() { - local re='' + if [[ $opts_switch_follow_branch = true && -n $source_branch ]]; then + # Validate $source_branch before writing. - for re in \\bverbose\\b \\bv\\b; do - if [[ $USER_ARGS_RAW =~ $re ]]; then - Self.Verbose:Enable - EnableDebugToArchiveAndFile - return 0 - fi - done - - return 1 - - } + for branch in stable unstable; do + [[ $branch != "$source_branch" ]] && continue -EnableDebugIfRequested() - { - - local re='' + /sbin/setcfg sherpa Git_Branch "$source_branch" -f /etc/config/qpkg.conf + ShowAsDone "now following the '$source_branch' branch" + Reset + done - for re in \\bdebug\\b \\bdbug\\b; do - if [[ $USER_ARGS_RAW =~ $re ]]; then - EnableDebugToArchiveAndFile - return 0 - fi - done + ShowAsAbort "'$source_branch' is not a valid branch to follow" + skip_package_actions=true + return 1 + fi - return 1 + return } @@ -3034,7 +3115,7 @@ User.IsOk() if ! User.IsSU; then if OS.IsSupportSudo; then ShowAsError 'this utility must be run with superuser privileges. Try again as:' - echo "${CHARS_SUDO_PROMPT}sherpa $USER_ARGS_RAW" >&2 + echo "${CHARS_SUDO_PROMPT}sherpa $ARGS_USER_RAW" >&2 else ShowAsError "this utility must be run as the 'admin' user. Please login via SSH as 'admin' and try again" fi @@ -3053,22 +3134,6 @@ User.IsSU() } -TerminalDimensions:Load() - { - - if [[ -e $GNU_STTY_CMD && -t 0 ]]; then - local terminal_dimensions=$($GNU_STTY_CMD size) - readonly SESS_ROWS=${terminal_dimensions% *} - readonly SESS_COLS=${terminal_dimensions#* } - else - readonly SESS_ROWS=40 - readonly SESS_COLS=156 - fi - - return 0 - - } - DebugBinPathVerAndMinVer() { @@ -3114,8 +3179,10 @@ IsSysFileExist() [[ -n ${1:?${FUNCNAME[0]}'()': undefined} ]] || exit - if ! [[ -f $1 || -L $1 ]]; then - ShowAsAbort "a required NAS system file is missing $(ShowAsFileName "$1")" + a=${1%% *} # Extract first word-group. + + if ! [[ -f $a || -L $a ]]; then + ShowAsAbort "a required NAS system file is missing $(ShowAsFileName "$a")" return 1 fi @@ -4144,16 +4211,30 @@ DisplayAsIndentActionResultDurationReason() # $3 = duration in milliseconds (optional) # $4 = reason message (optional) + [[ -n ${1:-} && -n ${2:-} ]] || return + + local action='' local duration='' + case $1 in + enableau) + action='enable auto-update' + ;; + disableau) + action='disable auto-update' + ;; + *) + action=$1 + esac + [[ -n ${3:-} ]] && duration=$(FormatMillisecsToMinutesSecs "$3") printf "%${ACTION_RESULT_INDENT}s" '' if [[ -z ${4:-} ]]; then - printf "%s %s%s" "$(Lowercase "${1:-}")" "${2:-}" "$([[ -n $duration ]] && printf ' in %s' "$duration")." + printf "%s %s%s" "$(Lowercase "$action")" "$2" "$([[ -n $duration ]] && printf ' in %s' "$duration")." else - printf "%s %s%s: %s" "$(Lowercase "${1:-}")" "${2:-}" "$([[ -n $duration ]] && printf ' in %s' "$duration")." "$4" + printf "%s %s%s: %s" "$(Lowercase "$action")" "$2" "$([[ -n $duration ]] && printf ' in %s' "$duration")" "$4" fi printf '\n'; linespace_visible=false @@ -4195,34 +4276,41 @@ Report.Actions:Show() Help.Basic:Show DisplayAsHelpTitle "$(ShowAction) usage examples:" - DisplayAsProjSynIndentExam 'show package statuses' status - DisplayAsProjSynIndentExam '' s - DisplayAsProjSynIndentExam 'show current package repository assignments' repos - DisplayAsProjSynIndentExam '' r - DisplayAsProjSynIndentExam 'ensure all application dependencies are installed' check + DisplayAsProjSynIndentExam 'activate these packages, enabling them first (this will upgrade internal applications where-supported)' "activate $(ShowPackages)" + DisplayAsProjSynIndentExam '' "start $(ShowPackages)" + DisplayAsProjSynIndentExam 'backup these application configurations to the backup location' "backup $(ShowPackages)" + DisplayAsProjSynIndentExam 'check all application dependencies are installed' check DisplayAsProjSynIndentExam '' c - DisplayAsProjSynIndentExam 'show QPKG dependencies' dependencies + DisplayAsProjSynIndentExam 'clean local repository files from these packages (your config is safe, application files will be downloaded again)' "clean $(ShowPackages)" + DisplayAsProjSynIndentExam 'deactivate these packages' "deactivate $(ShowPackages)" + DisplayAsProjSynIndentExam '' "stop $(ShowPackages)" + DisplayAsProjSynIndentExam 'generate QPKG dependencies report' dependencies DisplayAsProjSynIndentExam '' d + DisplayAsProjSynIndentExam 'disable these packages (this will prevent them activating/starting on reboot)' "disable $(ShowPackages)" + DisplayAsProjSynIndentExam 'disable auto-updating the application on QPKG activation (where-supported)' "disable-auto-update $(ShowPackages)" + DisplayAsProjSynIndentExam 'enable these packages' "enable $(ShowPackages)" + DisplayAsProjSynIndentExam 'enable auto-updating the application on QPKG activation (where-supported)' "enable-auto-update $(ShowPackages)" DisplayAsProjSynIndentExam 'install these packages' "install $(ShowPackages)" - DisplayAsProjSynIndentExam 'uninstall these packages' "uninstall $(ShowPackages)" - DisplayAsProjSynIndentExam 'reinstall these packages' "reinstall $(ShowPackages)" + DisplayAsProjSynIndentExam '' "add $(ShowPackages)" + DisplayAsProjSynIndentExam 'show application backup files' 'list backups' + DisplayAsProjSynIndentExam '' b + DisplayAsProjSynIndentExam "list $(ShowTitleName) object version numbers" 'list versions' DisplayAsProjSynIndentExam "rebuild these packages ('install' packages, then 'restore' configuration backups)" "rebuild $(ShowPackages)" - DisplayAsProjSynIndentExam 'upgrade these packages (this will upgrade internal applications where-supported)' "upgrade $(ShowPackages)" - DisplayAsProjSynIndentExam 'enable these packages' "enable $(ShowPackages)" - DisplayAsProjSynIndentExam 'disable these packages (disabling will prevent them activating on reboot)' "disable $(ShowPackages)" - DisplayAsProjSynIndentExam 'enable, then activate these packages (this will upgrade internal applications where-supported)' "activate $(ShowPackages)" - DisplayAsProjSynIndentExam '' "start $(ShowPackages)" - DisplayAsProjSynIndentExam 'deactivate these packages' "deactivate $(ShowPackages)" - DisplayAsProjSynIndentExam '' "stop $(ShowPackages)" + DisplayAsProjSynIndentExam 'reinstall these packages' "reinstall $(ShowPackages)" DisplayAsProjSynIndentExam 'reactivate these packages (this will upgrade internal applications where-supported)' "reactivate $(ShowPackages)" DisplayAsProjSynIndentExam '' "restart $(ShowPackages)" Report.Action.Reassign:Show - DisplayAsProjSynIndentExam 'clear local repository files from these packages' "clean $(ShowPackages)" - DisplayAsProjSynIndentExam 'backup these application configurations to the backup location' "backup $(ShowPackages)" + DisplayAsProjSynIndentExam 'generate QPKG repository assignments report' repos + DisplayAsProjSynIndentExam '' r DisplayAsProjSynIndentExam 'restore these application configurations from the backup location' "restore $(ShowPackages)" - DisplayAsProjSynIndentExam 'show application backup files' 'list backups' - DisplayAsProjSynIndentExam '' b - DisplayAsProjSynIndentExam "list $(ShowTitleName) object version numbers" 'list versions' + DisplayAsProjSynIndentExam 'digitally "sign" these QPKGs' "sign $(ShowPackages)" + DisplayAsProjSynIndentExam 'generate QPKG status report' status + DisplayAsProjSynIndentExam '' s + DisplayAsProjSynIndentExam 'uninstall these packages' "uninstall $(ShowPackages)" + DisplayAsProjSynIndentExam '' "remove $(ShowPackages)" + DisplayAsProjSynIndentExam '' "rm $(ShowPackages)" + DisplayAsProjSynIndentExam 'upgrade these packages (this will upgrade internal applications where-supported)' "upgrade $(ShowPackages)" + DisplayAsProjSynExam "$(ShowAction)s to affect all packages can be seen with" 'all-actions' DisplayAsProjSynExam "multiple $(ShowAction)s are supported like this" "$(ShowAction) $(ShowPackages) $(ShowAction) $(ShowPackages)" DisplayAsProjSynIndentExam '' 'install sabnzbd sickgear reactivate transmission uninstall lazy nzbget upgrade nzbtomedia' @@ -4327,7 +4415,7 @@ Help.Basic.Examples:Show() DisplayAsProjSynIndentExam '' p DisplayAsProjSynIndentExam "to list available $(ShowPackageGroup)s" 'help groups' DisplayAsProjSynIndentExam "or, for more $(ShowOptions)" 'help options' - DisplayAsHelpTitle "more in the wiki: $(ShowAsURL "https://github.com/OneCDOnly/sherpa/wiki")" + DisplayAsHelpTitle "more in the wiki: $(ShowAsURL 'https://github.com/OneCDOnly/sherpa/wiki')" return 0 @@ -4378,8 +4466,8 @@ Report.Groups:Show() Help.Issue:Show() { - DisplayAsHelpTitle "please consider creating a new issue for this on GitHub:\n\thttps://github.com/OneCDOnly/sherpa/issues." - DisplayAsHelpTitle "alternatively, post on the QNAP NAS Community Forum:\n\thttps://forum.qnap.com/viewtopic.php?f=320&t=132373" + DisplayAsHelpTitle "please consider creating a new issue for this on GitHub: $(ShowAsURL 'https://github.com/OneCDOnly/sherpa/issues')" + DisplayAsHelpTitle "alternatively, post on the QNAP NAS Community Forum: $(ShowAsURL 'https://forum.qnap.com/viewtopic.php?f=320&t=132373')" DisplayAsProjSynIndentExam "view only the most recent $(ShowTitleName) session log" last DisplayAsProjSynIndentExam "view the entire $(ShowTitleName) session log" log DisplayAsProjSynIndentExam "upload the most-recent $(FormatAsThous "$LOG_TAIL_LINES") lines in your $(ShowTitleName) log to the $(ShowAsURL 'https://termbin.com') public pastebin. A URL will be generated afterward" 'paste log' @@ -4419,12 +4507,12 @@ Report.Results:Show() display_last_action_datetime=false fi - if [[ $result = "$1" ]] || [[ $1 = skipped && ($result = 'skipped-error' || $result = 'skipped-abort') ]]; then + if [[ $result = "$1" ]] || [[ $1 = skipped && ($result = 'skipped-ok' || $result = 'skipped-error' || $result = 'skipped-abort') ]]; then case $result in ok) [[ $found = false ]] && DisplayAsHelpTitle "$plural completed $(TextBrightGreen OK):" ;; - skipped|skipped-error|skipped-abort) + skipped*) [[ $found = false ]] && DisplayAsHelpTitle "$plural were $(TextBrightOrange skipped):" ;; failed) @@ -4883,16 +4971,16 @@ InitForkCounts() proc_fork_count_path=$proc_counts_path/fork.count proc_ok_count_path=$proc_counts_path/ok.count - proc_skip_ok_count_path=$proc_counts_path/skip.ok.count proc_skip_count_path=$proc_counts_path/skip.count + proc_skip_ok_count_path=$proc_counts_path/skip.ok.count proc_skip_error_count_path=$proc_counts_path/skip.error.count proc_skip_abort_count_path=$proc_counts_path/skip.abort.count proc_fail_count_path=$proc_counts_path/fail.count mkdir -p "$proc_fork_count_path" mkdir -p "$proc_ok_count_path" - mkdir -p "$proc_skip_ok_count_path" mkdir -p "$proc_skip_count_path" + mkdir -p "$proc_skip_ok_count_path" mkdir -p "$proc_skip_error_count_path" mkdir -p "$proc_skip_abort_count_path" mkdir -p "$proc_fail_count_path" @@ -4909,8 +4997,8 @@ IncForkProgressIndex() proc_fork_pathfile=$proc_fork_count_path/$a proc_ok_pathfile=$proc_ok_count_path/$a - proc_skip_ok_pathfile=$proc_skip_ok_count_path/$a proc_skip_pathfile=$proc_skip_count_path/$a + proc_skip_ok_pathfile=$proc_skip_ok_count_path/$a proc_skip_error_pathfile=$proc_skip_error_count_path/$a proc_skip_abort_pathfile=$proc_skip_abort_count_path/$a proc_fail_pathfile=$proc_fail_count_path/$a @@ -4922,8 +5010,8 @@ RefreshForkCounts() fork_count=$(ls -A -1 "$proc_fork_count_path" 2>/dev/null | $WC_CMD -l | $SED_CMD 's|^ *||') ok_count=$(ls -A -1 "$proc_ok_count_path" 2>/dev/null | $WC_CMD -l | $SED_CMD 's|^ *||') - skip_ok_count=$(ls -A -1 "$proc_skip_ok_count_path" 2>/dev/null | $WC_CMD -l | $SED_CMD 's|^ *||') skip_count=$(ls -A -1 "$proc_skip_count_path" 2>/dev/null | $WC_CMD -l | $SED_CMD 's|^ *||') + skip_ok_count=$(ls -A -1 "$proc_skip_ok_count_path" 2>/dev/null | $WC_CMD -l | $SED_CMD 's|^ *||') skip_error_count=$(ls -A -1 "$proc_skip_error_count_path" 2>/dev/null | $WC_CMD -l | $SED_CMD 's|^ *||') skip_abort_count=$(ls -A -1 "$proc_skip_abort_count_path" 2>/dev/null | $WC_CMD -l | $SED_CMD 's|^ *||') fail_count=$(ls -A -1 "$proc_fail_count_path" 2>/dev/null | $WC_CMD -l | $SED_CMD 's|^ *||') @@ -4954,33 +5042,35 @@ UpdateForkProgress() # All input vars are global. local a='' + local b='' RefreshForkCounts [[ $opts_verbose = false && ! -e $DISPLAY_INHIBIT_PATHFILE ]] || return # Don't display progress, it's difficult to read with so-many other writes to the screen. - a=$(PercFrac "$ok_count" "$((skip_count+skip_ok_count+skip_error_count+skip_abort_count))" "$fail_count" "$total_count") + a=$((skip_count+skip_ok_count+skip_error_count+skip_abort_count)) + b=$(PercFrac "$ok_count" "$a" "$fail_count" "$total_count") if [[ $ok_count -gt 0 ]]; then - [[ -n $a ]] && a+=', ' - a+="$(TextBrightGreen "$ok_count") OK" + [[ -n $b ]] && b+=', ' + b+="$(TextBrightGreen "$ok_count") OK" fi - if [[ $skip_count -gt 0 || $skip_error_count -gt 0 || $skip_abort_count -gt 0 ]]; then # Don't include skipped packages that were OK. - [[ -n $a ]] && a+=', ' - a+="$(TextBrightOrange "$((skip_count+skip_error_count+skip_abort_count))") skipped" + if [[ $a -gt 0 ]]; then + [[ -n $b ]] && b+=', ' + b+="$(TextBrightOrange "$a") skipped" fi if [[ $fail_count -gt 0 ]]; then - [[ -n $a ]] && a+=', ' - a+="$(TextBrightRed "$fail_count") failed" + [[ -n $b ]] && b+=', ' + b+="$(TextBrightRed "$fail_count") failed" fi if [[ $fork_count -gt 0 ]]; then - [[ -n $a ]] && a+=', ' - a+="$(TextBrightYellow "$fork_count") in-progress" + [[ -n $b ]] && b+=', ' + b+="$(TextBrightYellow "$fork_count") in-progress" fi - [[ -n $a ]] && ShowAsProc "${fork_progress_prefix:-}" "$a" + [[ -n $b && ! -e $DISPLAY_INHIBIT_PATHFILE ]] && ShowAsProc "${fork_progress_prefix:-}" "$b" return 0 @@ -5032,7 +5122,7 @@ QPKGs.Missing:Show() sufmsg='them' fi - ShowAsInfo "$a QPKG${premsg} missing or broken. Please reinstall $sufmsg" + ShowAsNote "$a QPKG${premsg} missing or broken. Please reinstall $sufmsg" return 1 } @@ -5073,7 +5163,7 @@ QPKGs.NewVers:Show() fi done - ShowAsInfo "new QPKG version$(Pluralise "${#packages[@]}") available for $a" + ShowAsNote "new QPKG version$(Pluralise "${#packages[@]}") available for $a" return 1 } @@ -5081,6 +5171,8 @@ QPKGs.NewVers:Show() QPKGs.Conflicts:Check() { + [[ $skip_package_actions = true ]] || return 0 + local a='' if [[ -n ${BASE_QPKG_CONFLICTS_WITH:-} ]]; then @@ -5088,6 +5180,7 @@ QPKGs.Conflicts:Check() for a in "${BASE_QPKG_CONFLICTS_WITH[@]}"; do if QPKG.IsEnabled "$a"; then ShowAsError "the '$a' QPKG is enabled. $(ShowTitleName) is incompatible with this package. Please consider stopping this QPKG in your App Center" + skip_package_actions=true return 1 fi done @@ -5107,6 +5200,7 @@ QPKGs.Warnings:Check() for a in "${BASE_QPKG_WARNINGS[@]}"; do if QPKG.IsEnabled "$a"; then ShowAsWarn "the '$a' QPKG is enabled. This may cause problems with $(ShowTitleName) applications. Please consider stopping this QPKG in your App Center" + return 1 fi done fi @@ -5332,7 +5426,7 @@ QPKGs.States:Build() elif OS.IsLoadAverageHigh; then ShowAsWarn "the NAS currently has an unusually-high system-load, so this will take a while" elif OS.IsLoadAverageElevated; then - ShowAsInfo "the NAS currently has an elevated system-load, this will take a little longer than usual" + ShowAsNote "the NAS currently has an elevated system-load, this will take a little longer than usual" fi ShowAsProc 'QPKG states' @@ -6068,7 +6162,7 @@ SendParentChangeEnv() # input: # $1 = action request - WriteMsgToActionPipe env "$1" '' '' + WriteToActionMsgPipe env "$1" '' '' } @@ -6082,7 +6176,7 @@ SendPackageStateChange() # input: # $1 = action request - WriteMsgToActionPipe change "$1" package "$PACKAGE_NAME" + WriteToActionMsgPipe change "$1" package "$PACKAGE_NAME" } @@ -6096,11 +6190,11 @@ SendActionStatus() # input: # $1 = status update - WriteMsgToActionPipe status "$1" package "$PACKAGE_NAME" + WriteToActionMsgPipe status "$1" package "$PACKAGE_NAME" } -WriteMsgToActionPipe() +WriteToActionMsgPipe() { # Send a message into message stream to update sherpa parent shell environment. @@ -6111,7 +6205,7 @@ WriteMsgToActionPipe() } -ReadMsgFromActionPipe() +ReadFromActionMsgPipe() { local _msg1_key @@ -6410,7 +6504,7 @@ GetCPUCores() [[ $n -eq 0 ]] && n=$($GREP_CMD -c '^Processor' /proc/cpuinfo) - echo "$n" + echo -n "$n" } @@ -6455,9 +6549,9 @@ GetQnapOS() { if $GREP_CMD -q zfs /proc/filesystems; then - echo 'QuTS hero' + printf 'QuTS hero' else - echo QTS + printf QTS fi } @@ -6469,31 +6563,31 @@ GetQpkgArch() case $NAS_ARCH in x86_64) - [[ ${NAS_FIRMWARE_VER//.} -ge 430 ]] && echo i64 || echo i86 + [[ ${NAS_FIRMWARE_VER//.} -ge 430 ]] && printf i64 || printf i86 ;; i686|x86) - echo i86 + printf i86 ;; armv5tel) - echo a19 + printf a19 ;; armv7l) case $NAS_PLATFORM in ARM_MS) - echo a31 + printf a31 ;; ARM_AL) - echo a41 + printf a41 ;; *) - echo none + printf none esac ;; aarch64) - echo a64 + printf a64 ;; *) - echo none + printf none esac } @@ -6504,15 +6598,15 @@ GetEntwareType() if QPKG.IsInstalled Entware; then if [[ -e /opt/etc/passwd ]]; then if [[ -L /opt/etc/passwd ]]; then - echo std + printf std else - echo alt + printf alt fi else - echo none + printf none fi else - echo 'not-installed' + printf 'not-installed' fi } 2>/dev/null @@ -6528,11 +6622,11 @@ GetUpState() { if OS.IsStarting; then - echo -n 'starting-up' + printf 'starting-up' elif OS.IsStopping; then - echo -n 'shutting-down' + printf 'shutting-down' else - echo -n stable + printf stable fi } @@ -6670,24 +6764,24 @@ OS.IsLoadAverageInsane() } -Self.Error:Set() +Error:Set() { skip_package_actions=true - Self.Error.IsSet && return + Error.IsSet && return _script_error_flag_=true DebugVar _script_error_flag_ } -Self.Error.IsSet() +Error.IsSet() { [[ ${_script_error_flag_:=false} = true ]] } -Self.Error.IsNt() +Error.IsNt() { [[ ${_script_error_flag_:=false} != true ]] @@ -6700,6 +6794,8 @@ ShowZeroQpkgs() local a='' local b='' + [[ $load_packages = true ]] || return + for a in "${USER_QPKG_IS_STATES[@]}"; do for b in "${USER_QPKG_ACTIONS[@]}"; do [[ $b = list ]] && continue # action results lists are unavailable for these @@ -6712,7 +6808,7 @@ ShowZeroQpkgs() } -Self.LockFile:Claim() +LockFile:Claim() { readonly LOCK_PATHFILE=/var/run/sherpa.lock # global @@ -6732,14 +6828,14 @@ Self.LockFile:Claim() } -Self.LockFile:Release() +LockFile:Release() { rm -f "$LOCK_PATHFILE" } -Self.Verbose:Enable() +Verbose:Enable() { opts_verbose=true @@ -6756,10 +6852,10 @@ EnableDebugToArchiveAndFile() opts_debug=true DebugVar opts_debug - ShowAsInfo "debug mode activated, $(ShowTitleName) will run a little slower than usual" + ShowAsNote "debug mode activated, $(ShowTitleName) will run a little slower than usual" - self_archive_debug_afterward=true - DebugVar self_archive_debug_afterward + archive_debug_afterward=true + DebugVar archive_debug_afterward } @@ -6767,7 +6863,7 @@ DisableDebugToArchiveAndFile() { opts_debug=false - self_archive_debug_afterward=false + archive_debug_afterward=false } @@ -6922,7 +7018,7 @@ _QPKG:download_() rm -f "$LOG_PATHFILE" - RunAndLog "${CURL_CMD}${curl_insecure_arg} --location --output $LOCAL_PATHFILE $REMOTE_URL" "$LOG_PATHFILE" log:failure-only + RunAndLog "$CURL_CMD --location --output $LOCAL_PATHFILE $REMOTE_URL" "$LOG_PATHFILE" log:failure-only z=$? if [[ $z -eq 0 ]]; then @@ -7643,6 +7739,116 @@ _QPKG:disable_() } +_QPKG:enableau_() + { + + # * This function runs autonomously * + # Enables auto-updating of the QPKG named in $1. + + # input: + # $1 = QPKG name + + # output: + # $? = none, this function executes in the background. + + [[ $opts_verbose != true ]] && exec &>/dev/null + FuncFork:Init + + PACKAGE_NAME=${1:?${FUNCNAME[0]}'()': undefined} + local a='' + local -i z=0 + + if QPKGs-ISNTinstalled.Exist "$PACKAGE_NAME"; then + SaveActionResultToLog QPKG "$PACKAGE_NAME" enableau skipped 'not installed' + MarkThisActionForkAsSkipped + z=2 + elif ! QPKG.IsCanRestartToUpdate "$PACKAGE_NAME"; then + SaveActionResultToLog QPKG "$PACKAGE_NAME" enableau skipped 'does not support auto-updating' + MarkThisActionForkAsSkipped + z=2 + elif ! QPKG.IsRepoOk "$PACKAGE_NAME"; then + SaveActionResultToLog QPKG "$PACKAGE_NAME" enableau skipped "assigned to another repository, please 'reassign' it first" + MarkThisActionForkAsSkipped + z=2 + fi + + [[ $z -eq 0 ]] || FuncFork:Exit $z + + DebugAsProc "enabling auto-update $(ShowAsPackageName "$PACKAGE_NAME")" + [[ $opts_debug = true ]] && a='DEBUG_QPKG=true ' + + RunAndLog "${a}$(QPKG.GetServicePathFile) enable-auto-update" "$LOGS_PATH/$PACKAGE_NAME.$ENABLEAU_LOG_FILE" log:failure-only + z=$? + + if [[ $z -eq 0 ]]; then + QPKG.ServiceStatus:Log + SaveActionResultToLog QPKG "$PACKAGE_NAME" enableau ok + MarkThisActionForkAsOk + else + SaveActionResultToLog QPKG "$PACKAGE_NAME" enableau failed "$z" + MarkThisActionForkAsFailed + z=1 # Remap to 1. + fi + + FuncFork:Exit $z + + } + +_QPKG:disableau_() + { + + # * This function runs autonomously * + # Disables auto-updating of the QPKG named in $1. + + # input: + # $1 = QPKG name + + # output: + # $? = none, this function executes in the background. + + [[ $opts_verbose != true ]] && exec &>/dev/null + FuncFork:Init + + PACKAGE_NAME=${1:?${FUNCNAME[0]}'()': undefined} + local a='' + local -i z=0 + + if QPKGs-ISNTinstalled.Exist "$PACKAGE_NAME"; then + SaveActionResultToLog QPKG "$PACKAGE_NAME" disableau skipped 'not installed' + MarkThisActionForkAsSkipped + z=2 + elif ! QPKG.IsCanRestartToUpdate "$PACKAGE_NAME"; then + SaveActionResultToLog QPKG "$PACKAGE_NAME" disableau skipped 'does not support auto-updating' + MarkThisActionForkAsSkipped + z=2 + elif ! QPKG.IsRepoOk "$PACKAGE_NAME"; then + SaveActionResultToLog QPKG "$PACKAGE_NAME" disableau skipped "assigned to another repository, please 'reassign' it first" + MarkThisActionForkAsSkipped + z=2 + fi + + [[ $z -eq 0 ]] || FuncFork:Exit $z + + DebugAsProc "disabling auto-update $(ShowAsPackageName "$PACKAGE_NAME")" + [[ $opts_debug = true ]] && a='DEBUG_QPKG=true ' + + RunAndLog "${a}$(QPKG.GetServicePathFile) disable-auto-update" "$LOGS_PATH/$PACKAGE_NAME.$DISABLEAU_LOG_FILE" log:failure-only + z=$? + + if [[ $z -eq 0 ]]; then + QPKG.ServiceStatus:Log + SaveActionResultToLog QPKG "$PACKAGE_NAME" disableau ok + MarkThisActionForkAsOk + else + SaveActionResultToLog QPKG "$PACKAGE_NAME" disableau failed "$z" + MarkThisActionForkAsFailed + z=1 # Remap to 1. + fi + + FuncFork:Exit $z + + } + _QPKG:backup_() { @@ -7867,7 +8073,7 @@ _QPKG:sign_() b=$($SQLITE_CMD "$CERT_DB_PATHFILE" "$a") if [[ $b = 1 ]]; then - SaveActionResultToLog QPKG "$PACKAGE_NAME" '"sign"' skipped 'already signed' + SaveActionResultToLog QPKG "$PACKAGE_NAME" '"sign"' skipped-ok 'already signed' MarkThisActionForkAsSkippedOk z=2 fi @@ -7882,8 +8088,19 @@ _QPKG:sign_() # a="INSERT INTO Certificate (Type, QpkgName, Cert, DigitalSignature) SELECT 'qpkg','$PACKAGE_NAME','$QPKG_CERTIFICATE','$QPKG_SIGNATURE' WHERE NOT EXISTS (SELECT * FROM Certificate WHERE QpkgName = '$PACKAGE_NAME');" a="INSERT INTO Certificate (Type,QpkgName,Cert,DigitalSignature) VALUES ('qpkg','$PACKAGE_NAME','$QPKG_CERTIFICATE','$QPKG_SIGNATURE');" - $SQLITE_CMD "$CERT_DB_PATHFILE" "$a" - z=$? + + for ((retries=0; retries<10; retries++)); do + $SQLITE_CMD "$CERT_DB_PATHFILE" "$a" + z=$? + + case $z in + 5) # SQLITE_BUSY + sleep 0.5 + ;; + *) + break + esac + done if [[ $z -eq 0 ]]; then SaveActionResultToLog QPKG "$PACKAGE_NAME" '"sign"' ok @@ -8099,7 +8316,7 @@ QPKG.App.GetVer() [[ $a = default ]] && a=${QPKG_APP_VERSION[$(QPKG.GetDefaultArchIndex "$1")]} [[ $a = version ]] && a=${QPKG_VERSION[$(QPKG.GetDefaultArchIndex "$1")]} - echo "$a" + echo -n "$a" return 0 } @@ -8675,7 +8892,7 @@ QPKG.GetNote() for i in "${!QPKG_NAME[@]}"; do if [[ ${QPKG_NAME[$i]} = "${1:?${FUNCNAME[0]}'()': undefined}" ]]; then a=${QPKG_NOTE[$i]} - [[ $a != none ]] && echo "$a" + [[ $a != none ]] && echo -n "$a" return 0 fi done @@ -9410,19 +9627,16 @@ FormatAsIsoBytes() } -ShowTitle() +Title:Show() { [[ $title_shown = false && $show_bland = false && $opts_verbose = false ]] || return - local a=false - - # Only show ASCII title when no other arguments have been specified. - [[ $opts_show_basic_help = true && $skip_package_actions = true && $task_check = false ]] && a=true - EraseThisLine - if [[ $a = true ]]; then + # Only show ASCII title when no arguments have been specified. + + if [[ -z ${ARGS_USER_RAW[*]:-} ]]; then Display "$(ShowTitleArt)" else Display "$(ShowTitleName) $(ShowVersion)" @@ -10002,15 +10216,10 @@ ShowAsProc() local a='' local b='' - if [[ -n ${1:-} ]]; then - a="${1:-} " - else - return - fi - + [[ -n ${1:-} ]] && a=$1 || return [[ -n ${2:-} ]] && b=${2:-} - OpStepClearWait "$(TextBrightYellow proc)" "${a}${CHARS_ELLIPSIS} ${b}" + OpStepClearWait "$(TextBrightYellow proc)" "${a} ${CHARS_ELLIPSIS} ${b}" WriteToLog proc "${a}${b}" [[ ${opts_verbose:=false} = true ]] && Display @@ -10025,15 +10234,14 @@ ShowAsDebug() } -ShowAsInfo() +ShowAsNote() { # Note to user. - [[ -n ${1:-} ]] || return + local a='' - local a=$(Capitalise "$1") - a=$(AddPeriod "$a") + [[ -n ${1:-} ]] && a=$(AddPeriod "$1") || return OpStepClear "$(TextBrightYellow note)" "$a" WriteToLog note "$a" @@ -10045,10 +10253,9 @@ ShowAsDone() # Process completed OK. - [[ -n ${1:-} ]] || return + local a='' - local a=$(Capitalise "$1") - a=$(AddPeriod "$a") + [[ -n ${1:-} ]] && a=$(AddPeriod "$1") || return OpStepClear "$(TextBrightGreen 'done')" "$a" WriteToLog 'done' "$a" @@ -10060,10 +10267,9 @@ ShowAsWarn() # Warning only. - [[ -n ${1:-} ]] || return + local a='' - local a=$(Capitalise "$1") - a=$(AddPeriod "$a") + [[ -n ${1:-} ]] && a=$(AddPeriod "$1") || return OpStepClear "$(TextBrightOrange warn)" "$a" WriteToLog warn "$a" @@ -10075,14 +10281,13 @@ ShowAsAbort() # Fatal abort. - [[ -n ${1:-} ]] || return + local a='' - local a=$(Capitalise "$1") - a=$(AddPeriod "$a") + [[ -n ${1:-} ]] && a=$(AddPeriod "$1") || return OpStepClear "$(TextBrightRed bort)" "$a" WriteToLog bort "$a" - Self.Error:Set + Error:Set } >&2 @@ -10091,10 +10296,9 @@ ShowAsFail() # Non-fatal error. - [[ -n ${1:-} ]] || return + local a='' - local a=$(Capitalise "$1") - a=$(AddPeriod "$a") + [[ -n ${1:-} ]] && a=$(AddPeriod "$1") || return OpStepClear "$(TextBrightRed fail)" "$a" WriteToLog fail "$a" @@ -10106,14 +10310,13 @@ ShowAsError() # Fatal error. - [[ -n ${1:-} ]] || return + local a='' - local a=$(Capitalise "$1") - a=$(AddPeriod "$a") + [[ -n ${1:-} ]] && a=$(AddPeriod "$1") || return OpStepClear "$(TextBrightRed derp)" "$a" WriteToLog derp "$a" - Self.Error:Set + Error:Set } >&2 @@ -10280,7 +10483,7 @@ ShowAsActionLogDetail() DisplayAsIndentActionResultDurationReason "$3" "$2" "$5" 'no reason was provided by the service script.' fi ;; - skipped|skipped-failed|skipped-abort) + skipped*) if [[ -n "${6:-}" ]]; then DisplayAsIndentActionResultDurationReason "$3" "$2" '' "$6." else @@ -10624,7 +10827,7 @@ sleep() if [[ -e $GNU_SLEEP_CMD && -L /opt/etc/passwd ]]; then # Try to ensure Entware is active before using this utility. $GNU_SLEEP_CMD "$n" elif [[ $DECIMAL_SLEEP_SECONDS_SUPPORTED = false ]]; then - $SLEEP_CMD "$((${n%.*}+1))" # Ensure decimal seconds are rounded-up to next integer. + $SLEEP_CMD "$((${n%.*}+1))" # Ensure decimal seconds are rounded-up to next integer. else $SLEEP_CMD "$n" fi @@ -10636,7 +10839,7 @@ sleep() Objects:Load() { - # Ensure `objects` in the local cache path is up-to-date, then source it. + # Ensure `objects` in the local cache is up-to-date, then source it. [[ ${objects_loaded:=false} = true ]] && return @@ -10646,7 +10849,7 @@ Objects:Load() if [[ ! -e $OBJECTS_PATHFILE ]] || ! IsThisFileRecent "$OBJECTS_PATHFILE" "$FILE_CHANGE_THRESHOLD_MINUTES"; then ShowAsProc 'downloading objects' - if ${CURL_CMD}${curl_insecure_arg} --silent --fail "$OBJECTS_ARCHIVE_URL" > "$OBJECTS_ARCHIVE_PATHFILE"; then + if $CURL_CMD --silent --fail "$OBJECTS_ARCHIVE_URL" > "$OBJECTS_ARCHIVE_PATHFILE"; then $TAR_CMD --extract --gzip --no-same-owner --file="$OBJECTS_ARCHIVE_PATHFILE" --directory="$CACHE_PATH" fi fi @@ -10670,7 +10873,7 @@ Objects:Load() Packages:Load() { - # Ensure `packages` in the local cache path is up-to-date, then source it. + # Ensure `packages` in the local cache is up-to-date, then source it. [[ ${packages_loaded:=false} = true ]] && return @@ -10680,7 +10883,7 @@ Packages:Load() if [[ ! -e $PACKAGES_PATHFILE ]] || ! IsThisFileRecent "$PACKAGES_PATHFILE" "$FILE_CHANGE_THRESHOLD_MINUTES"; then ShowAsProc 'downloading QPKG list' - if ${CURL_CMD}${curl_insecure_arg} --silent --fail "$PACKAGES_ARCHIVE_URL" > "$PACKAGES_ARCHIVE_PATHFILE"; then + if $CURL_CMD --silent --fail "$PACKAGES_ARCHIVE_URL" > "$PACKAGES_ARCHIVE_PATHFILE"; then $TAR_CMD --extract --gzip --no-same-owner --file="$PACKAGES_ARCHIVE_PATHFILE" --directory="$CACHE_PATH" fi fi @@ -10736,6 +10939,14 @@ Packages:Load() } +Traps:Set() + { + + trap RunOnEXIT EXIT + trap RunOnSIGINT INT + + } + RunOnSIGINT() { @@ -10754,11 +10965,11 @@ RunOnEXIT() trap - INT Keystrokes:Show Cursor:Show - Self.LockFile:Release + LockFile:Release } -Self:Init || exit +Init || exit Actions:Proc -Self.Results:Show -Self.Error.IsNt +Results:Show +Error.IsNt diff --git a/workshop/ideas.txt b/workshop/ideas.txt index 8d039311b..316c60221 100644 --- a/workshop/ideas.txt +++ b/workshop/ideas.txt @@ -1,21 +1,23 @@ -* Include skipped-ok count in progress display? +* In addition to the usual QPKG actions, there should be: + - 'debug' (dbug) + - 'verbose' (v) + - 'follow': stable, unstable + - 'reset' + - 'check' (c) + - 'paste': last (l), log + + - 'help': actions, tips, options, groups, about(?), + - 'list': installed, not-installed, installable, upgradable, versions, missing, etc.... + - 'report': status (s), results, dependencies (d), backups, packages (p), repositories (r), log, last, * Service scripts should show current auto-update setting when displaying basic help. -* When launching sherpa in basic help mode only, skip loading objects and packages? - -* Service-scripts launching applications in screen sessions should include screen.log in service-script log when 'start' fails. - - Better than having to separately go and find the screen log. - * Automate generation of Packages.md in wiki using details from packages.source ? - Would need to store full application description, port numbers, application source. - Maybe consider another local source file, that builds packages.source first? * Don't start deactivated QPKGs (unless requested) during 'install all'. -* Add 'sign' as new user action? - - Not sure about this. If a 'sign' action is added, then need to support signing of unsigned QPKGs as a group, which means must check their current signed status first (slow). - * sherpa 'stable' branch should only update once per-day. - 'unstable' should update once per 10 minutes. @@ -44,7 +46,7 @@ * Show results report in file viewport. -* Results report text should account for single QPKG actions. +* Results report wording should account for single QPKG actions. - Don't pluralise "package actions" when there was only one. * QDK looks like it will now write installation scripts that extract to unique paths. diff --git a/workshop/issues.txt b/workshop/issues.txt index 8b71da36f..23c4d8240 100644 --- a/workshop/issues.txt +++ b/workshop/issues.txt @@ -1,20 +1,5 @@ Observed issues: - * Needs improvement. - ------------------------------------------------------------------------------------------------------------------------- - [/share/Public] # ./sherpa-manager.source debug - note: Debug mode activated, sherpa will run a little slower than usual. - sherpa v-unstable - - done: Finished. - ------------------------------------------------------------------------------------------------------------------------- - [/share/Public] # ./sherpa-manager.source help debug - note: Debug mode activated, sherpa will run a little slower than usual. - sherpa v-unstable - - [/share/Public] # - ------------------------------------------------------------------------------------------------------------------------- - * 'sherpa start inactive' fails to find any inactive packages. - Must get 'status' of each package first. @@ -63,8 +48,5 @@ Reported issues: Hypothetical issues: - * If package signing fails, the cert database might already be open. - - Check for this and abort signing. - * If a forked action hangs, it might not be killed by its caller. - Need to test this. diff --git a/workshop/Bazarr.txt b/workshop/potential-packages/Bazarr.txt similarity index 100% rename from workshop/Bazarr.txt rename to workshop/potential-packages/Bazarr.txt diff --git a/workshop/Jackett.txt b/workshop/potential-packages/Jackett.txt similarity index 100% rename from workshop/Jackett.txt rename to workshop/potential-packages/Jackett.txt diff --git a/workshop/Prowlarr.txt b/workshop/potential-packages/Prowlarr.txt similarity index 100% rename from workshop/Prowlarr.txt rename to workshop/potential-packages/Prowlarr.txt diff --git a/workshop/Radarr.txt b/workshop/potential-packages/Radarr.txt similarity index 100% rename from workshop/Radarr.txt rename to workshop/potential-packages/Radarr.txt diff --git a/workshop/new-packages.txt b/workshop/potential-packages/new-packages.txt similarity index 100% rename from workshop/new-packages.txt rename to workshop/potential-packages/new-packages.txt diff --git a/workshop/pyload.cfg.def b/workshop/pyload.cfg.def deleted file mode 100644 index 238c72df1..000000000 --- a/workshop/pyload.cfg.def +++ /dev/null @@ -1,73 +0,0 @@ -version: 2 - -download - "Download": - int chunks : "Maximum connections for one download" = 3 - time end_time : "End time" = 0:00 - ip interface : "Download interface to bind (IP Address)" = - bool ipv6 : "Allow IPv6" = False - bool limit_speed : "Limit download speed" = False - int max_downloads : "Maximum parallel downloads" = 3 - int max_speed : "Maximum download speed in KiB/s" = -1 - bool skip_existing : "Skip already existing files" = False - time start_time : "Start time" = 0:00 - -general - "General": - debug;trace;stack debug_level : "Debug level" = trace - bool debug_mode : "Debug mode" = False - bool folder_per_package : "Create folder for each package" = True - en; language : "Language" = en - int min_free_space : "Minimum free space in MiB" = 1024 - bool ssl_verify : "Verify SSL certificates" = True - folder storage_folder : "Download folder" = /share/Public/Downloads/pyLoad - -log - "Log": - bool console : "Print log to console" = True - bool console_color : "Colorize console" = True - bool filelog : "Save log to file" = True - int filelog_entries : "Maximum log files" = 10 - folder filelog_folder : "Log file folder" = - bool filelog_rotate : "Log rotate" = True - int filelog_size : "Maximum file size (in KiB)" = 5120 - bool syslog : "Sent log to syslog" = False - folder syslog_folder : "Syslog local folder" = - ip syslog_host : "Syslog remote IP address" = localhost - local;remote syslog_location : "Syslog location" = local - int syslog_port : "Syslog remote port" = 514 - -permission - "Permissions": - bool change_dl : "Change ownership of downloads" = False - bool change_file : "Change permissions of downloads" = False - bool change_group : "Change group of running process" = False - bool change_user : "Change user of running process" = False - str file : "Permission mode for downloaded files" = 0644 - str folder : "Permission mode for created folders" = 0755 - str group : "Groupname for ownership" = everyone - str user : "Username for ownership" = everyone - -proxy - "Proxy": - bool enabled : "Activated" = False - ip host : "IP address" = localhost - password password : "Password" = - int port : "Port" = 7070 - http;https,socks4;socks5 type : "Protocol" = http - str username : "Username" = - -reconnect - "Reconnection": - bool enabled : "Activated" = False - time end_time : "End time" = 0:00 - str script : "Script" = - time start_time : "Start time" = 0:00 - -webui - "Web Interface": - bool autologin : "Skip login if single user" = True - bool develop : "Development mode" = False - bool enabled : "Activated" = True - ip host : "IP address" = 0.0.0.0 - int port : "Port" = 9665 - str prefix : "Path prefix" = - int session_lifetime : "Session lifetime (minutes)" = 44640 - file ssl_certchain : "CA's intermediate certificate bundle (optional)" = - file ssl_certfile : "SSL Certificate" = - file ssl_keyfile : "SSL Key" = - Default;modern;pyplex theme : "Theme" = modern - bool use_ssl : "Use HTTPS" = False