summaryrefslogtreecommitdiffstats
path: root/linhes/linhes-system
diff options
context:
space:
mode:
authorBritney Fransen <brfransen@gmail.com>2023-02-01 23:03:36 (GMT)
committerBritney Fransen <brfransen@gmail.com>2023-02-01 23:03:36 (GMT)
commitd5ef6c6e5e06d2e1b0d3a823e0ba11ebc8c0942e (patch)
tree2d26236343d0bcf6fd78c8081178bf9d6d838d8b /linhes/linhes-system
parentf3a5f1cbfcc685d03c859e597cf19260868e2498 (diff)
downloadlinhes_pkgbuild-d5ef6c6e5e06d2e1b0d3a823e0ba11ebc8c0942e.zip
linhes_pkgbuild-d5ef6c6e5e06d2e1b0d3a823e0ba11ebc8c0942e.tar.gz
linhes_pkgbuild-d5ef6c6e5e06d2e1b0d3a823e0ba11ebc8c0942e.tar.bz2
linhes-system: myth_mtc.py: add
add deps and remove from lh_system_start.sh
Diffstat (limited to 'linhes/linhes-system')
-rwxr-xr-xlinhes/linhes-system/PKGBUILD25
-rwxr-xr-xlinhes/linhes-system/lh_system_start.sh12
-rwxr-xr-xlinhes/linhes-system/myth_mtc.py155
-rw-r--r--linhes/linhes-system/rsyslog.hook9
-rw-r--r--linhes/linhes-system/rsyslog.mythtv.conf63
5 files changed, 250 insertions, 14 deletions
diff --git a/linhes/linhes-system/PKGBUILD b/linhes/linhes-system/PKGBUILD
index 4dc0624..e6378b5 100755
--- a/linhes/linhes-system/PKGBUILD
+++ b/linhes/linhes-system/PKGBUILD
@@ -1,16 +1,18 @@
pkgname=linhes-system
pkgver=9.0.0
-pkgrel=30
+pkgrel=32
arch=('x86_64')
#install=$pkgname.install
pkgdesc="Everything that makes LinHES a system"
license=('GPL2')
-depends=('cronie' 'dbus-python' 'kdialog' 'libnotify' 'linhes-templates' 'linhes-theme' 'pacman-contrib'
- 'openssh' 'ttf-overlock')
+depends=('cronie' 'dbus-python' 'flatpak' 'firefox' 'glances' 'kdialog' 'libnotify'
+ 'logrotate' 'linhes-templates' 'linhes-theme' 'linhes-web'
+ 'mythtv' 'mythplugins-mytharchive' 'mythplugins-mythmusic' 'mythplugins-mythweb' 'ncdu'
+ 'openssh' 'pacman-contrib' 'rsyslog' 'ttf-overlock' 'x11vnc')
binfiles="add_storage.py balance_storage_groups.py empty_storage_groups.py remove_storage.py
checkXFSfrag.sh enableIRWake.sh idle.py lh_system_start.sh lh_notify-send
lh_home_check.sh jobqueue_helper.py gen_lib_xml.py
- diskspace.sh find_orphans.py optimize_mythdb.py
+ diskspace.sh find_orphans.py optimize_mythdb.py myth_mtc.py
misc_recent_recordings.pl misc_status_config.py misc_status_info.sh
misc_upcoming_recordings.pl misc_which_recorder.pl
create_media_dirs.sh be_check.py
@@ -18,10 +20,10 @@ binfiles="add_storage.py balance_storage_groups.py empty_storage_groups.py remov
source=($binfiles
'myth_mtc.cron' 'paccache.cron' 'flatpak_update.cron' 'xfs_defrag.cron'
'readme_is_xml' 'add_storage.readme' 'LinHES-release'
- '79-cronie.hook' 'fstrim.hook' 'openssh.hook' 'plex_lib.conf'
+ '79-cronie.hook' 'fstrim.hook' 'openssh.hook' 'plex_lib.conf' 'rsyslog.hook'
'10-monitor.conf' 'x11vnc.override.conf' 'lh_lighttpd.conf' 'lh_php.ini'
'system-sudo.rules' 'linhes-profile.sh' 'lh_sqlserver.cnf'
- 'lh_system_start.sh.desktop' 'rc6_mce.toml')
+ 'lh_system_start.sh.desktop' 'rc6_mce.toml' 'rsyslog.mythtv.conf')
sha256sums=('7f91d2afcb76e8e9063c6bbe05f5c3d134a6f67541aead8894d342c32d34ad98'
'1ec3c266cafb0c1b231e88df88b97fec1a1b7465b5d95a0c1e64c8cb727b7c47'
'97fe9e851c782fa9f85c5b69b110ccff2817dd4fa2a6d9ff6ee225dc558677e4'
@@ -29,7 +31,7 @@ sha256sums=('7f91d2afcb76e8e9063c6bbe05f5c3d134a6f67541aead8894d342c32d34ad98'
'c7a2b2de44645e3a905b39d7411e5b8b27b60bd2944533fd4655c3b175755da1'
'ae34515e144830f424d3bd3f6b1b446892d62beed20bca6f0fb19b0bbb779f27'
'23358a7bff4968eccd469613b81b1415c2ae0ebe77f14f74426697333e4d88d7'
- '7c6485d07ca67d2a4f089ed885c8ae3a9205d6f43f373ae8a32c2da55daa6de8'
+ '721c698a2478edd8dad2bc52422bc2c225d14fc3a4c30823cb4a2afe52b82fc4'
'6d4fb0ed1a5ed961b3a3884dce093118e50c2981a9cd5837d20abc5a6d4fd8aa'
'87875d9e5f5ce18208f419698ce69b6bcbcd08955a57a4a13940e715af58b787'
'91bdec992bb2c933e15625c181f2195c402060b879168ebf35944cb064c904b9'
@@ -37,6 +39,7 @@ sha256sums=('7f91d2afcb76e8e9063c6bbe05f5c3d134a6f67541aead8894d342c32d34ad98'
'ebdb3ee0212e0cc72526bb5e50a032573e1894acb7bf75617243b0b49aa1f8f2'
'4d006f0fe3b13e67de1b961d611e81911905a30d140849dfdb8e5c0dc4da2f7c'
'e371c6a289c68fe200d7da856c20a8c579efa23178f4d62235f7359d7f6e49a1'
+ 'd63ce11809600e77ff187eee3751a8635045ef14c6333f1584f5e35f15a679a1'
'd2d69b2bf6315bd37ff5f5b2f0cde8ab2fb89bae18f8796dc5208ffc1a9d743e'
'a3f8ba840853e4a189dd52520a6958f4030e1cc3391200a6aeef055fb469f0b4'
'1819085bd2c9106482c5f243b95fddf3dae69212330ab76cb493add5c26a45a4'
@@ -57,6 +60,7 @@ sha256sums=('7f91d2afcb76e8e9063c6bbe05f5c3d134a6f67541aead8894d342c32d34ad98'
'4c29e0b71071ae9556cf2dbd75de560d028577fe5eb993113105112c4b445eac'
'890482242434e333024c7819e8bf3c889dc16548d0a1745479c8523930fb32f7'
'71c564a12d9a8e2814a2bf67a1a3d70c1e9d3b50bc108f7043ed8c958c067b01'
+ '6c42b2920c6a37bf3dd05755b9e3fdd80137708cc55a7d1bef2234c17dff0349'
'dead17906b33a7f9d66ad13bb1c083a23438f45ece9bd5ec41ff86eda01c132a'
'2c9152ed542bb9c3aa516c6009125a757065100a060e0fa597243d4cbd92844f'
'73aae13c47223c4ebb45c5cb2aff19a72b6b32cc0d9e7c83de9f97ada593b411'
@@ -65,7 +69,8 @@ sha256sums=('7f91d2afcb76e8e9063c6bbe05f5c3d134a6f67541aead8894d342c32d34ad98'
'47ace62d7e7e651f25dc7c0a2e96d0862f5efe1a583eeda2843b1fc1499141fe'
'3ed91fb5a7894f82fb4895e06d2e3f1df3ac4f82e46c970d4a85aaa4edc24cf1'
'0b9868a563036c81f8fdb8ab8bbad51934aca2a07e9d7634e24214791afda8e2'
- '1b965b5e7eeafdf3815c8f2722587a560693dd780327cca9910dc47fba0f1aef')
+ '1b965b5e7eeafdf3815c8f2722587a560693dd780327cca9910dc47fba0f1aef'
+ '2b91f6eb8c010a0dce1f41149c0549d067915fba93251c7af7e5328a05977f0c')
package() {
cd $srcdir
@@ -102,6 +107,9 @@ package() {
#gen_lib_xml.py files
install -Dm644 ${srcdir}/plex_lib.conf ${pkgdir}/etc/gen_lib_xml.d/plex_lib.conf
+ #rsyslog files
+ install -Dm644 $srcdir/rsyslog.mythtv.conf $pkgdir/etc/rsyslog.d/mythtv.conf
+
#remote files
install -Dm644 $srcdir/rc6_mce.toml $pkgdir/etc/rc_keymaps/rc6_mce.toml
@@ -121,6 +129,7 @@ package() {
install -Dm0644 $srcdir/79-cronie.hook "${pkgdir}"/usr/share/libalpm/hooks/79-cronie.hook
install -Dm0644 $srcdir/fstrim.hook "${pkgdir}"/usr/share/libalpm/hooks/fstrim.hook
install -Dm0644 $srcdir/openssh.hook "${pkgdir}"/usr/share/libalpm/hooks/openssh.hook
+ install -Dm0644 $srcdir/rsyslog.hook "${pkgdir}"/usr/share/libalpm/hooks/rsyslog.hook
#sudo rules
mkdir -p $pkgdir/etc/sudoers.d/
diff --git a/linhes/linhes-system/lh_system_start.sh b/linhes/linhes-system/lh_system_start.sh
index d5a7646..257f800 100755
--- a/linhes/linhes-system/lh_system_start.sh
+++ b/linhes/linhes-system/lh_system_start.sh
@@ -64,11 +64,11 @@ function storage_scan(){
function install_lh_apps(){
#install programs that are not needed on the iso
- /usr/bin/lh_notify-send --app-name="LinHES" --icon=dialog-information --expire-time=40000 "Installing apps." "This could take a few minutes."
- sudo pacman -Syyy --noconfirm archlinux-keyring
- sudo pacman -Syyy --noconfirm flatpak firefox glances mlocate mythtv mythplugins-mytharchive mythplugins-mythmusic mythplugins-mythweb ncdu x11vnc
- status=$?
- [ $status -eq 1 ] && msg "Could not install apps. Check internet connection. Cancelling Setup." && exit 1
+ msg "Installing apps."
+ #sudo pacman -Syyy --noconfirm archlinux-keyring
+ #sudo pacman -Syyy --noconfirm flatpak firefox glances mlocate mythtv mythplugins-mytharchive mythplugins-mythmusic mythplugins-mythweb ncdu x11vnc
+ #status=$?
+ #[ $status -eq 1 ] && msg "Could not install apps. Check internet connection. Cancelling Setup." && exit 1
flatpak install tv.plex.PlexHTPC --noninteractive --assumeyes
gen_lib_xml.py
}
@@ -85,7 +85,7 @@ function sql_setup(){
}
function localweb_setup(){
- sudo pacman -Syyy --noconfirm linhes-web
+ #sudo pacman -Syyy --noconfirm linhes-web
sudo cp /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig
sudo cp /usr/share/linhes/templates/lighttpd.conf.template /etc/lighttpd/lighttpd.conf
sudo systemctl enable --now lighttpd.service
diff --git a/linhes/linhes-system/myth_mtc.py b/linhes/linhes-system/myth_mtc.py
new file mode 100755
index 0000000..953fb96
--- /dev/null
+++ b/linhes/linhes-system/myth_mtc.py
@@ -0,0 +1,155 @@
+#!/usr/bin/python
+import sys, subprocess
+import re
+import socket
+import os
+import datetime,time
+import shlex
+sys.dont_write_bytecode = True
+
+try:
+ from MythTV import MythBE
+ mythtv = MythBE()
+except:
+ mythtv = None
+
+#print mythtv.db.getSetting( 'Theme', socket.gethostname())
+
+def get_timestamp():
+ now = datetime.datetime.now()
+ date = (now.strftime('%Y-%m-%d %H:%M'))
+ return date
+
+def getFreePercentForDir(dir):
+ stats = os.statvfs(dir)
+ total = (stats.f_blocks)
+ avail = (stats.f_bavail)
+ return (total - avail) / float(total)
+
+def check_home():
+ #get the mythtv home dir
+ sys.path.append('/usr/MythVantage/bin/')
+ config_file = "mv_config"
+ data_config = __import__(config_file, globals(), locals(), [])
+
+ freePcent = getFreePercentForDir(data_config.MYTHHOME)
+ print(" Home directory percent used: " + str(freePcent * 100) + "%")
+ if float(freePcent) > .9:
+ print(" Home directory is greater than 90% used. Clearing caches...")
+ cmd = "/usr/bin/rm -rf " + data_config.MYTHHOME + "/.mythtv/{*cache,Cache-*,tmp/*,MythMusic/AlbumArt/*}"
+ subprocess.call(["sh", "-c", cmd])
+ print(" Restarting mythfrontend...")
+ subprocess.call(["killall", "mythfrontend"])
+ cmd = "/usr/bin/rm -rf " + data_config.MYTHHOME + "/.cache/*"
+ subprocess.call(["sh", "-c", cmd])
+ cmd = "/usr/bin/rm -rf " + data_config.MYTHHOME + "/.plexht/userdata/Thumbnails/*"
+ subprocess.call(["sh", "-c", cmd])
+ cmd = "/usr/bin/rm -rf " + data_config.MYTHHOME + "/.plexht/userdata/ThemeMusicCache/*"
+ subprocess.call(["sh", "-c", cmd])
+ freePcent = getFreePercentForDir(data_config.MYTHHOME)
+ print(" Home directory percent used: " + str(freePcent * 100) + "%")
+ else:
+ print(" Home directory is less than 90% used. Not clearing caches.")
+ return 0
+
+def optimize():
+ try:
+ cursor = mythtv.db.cursor()
+ cursor.execute("SHOW tables")
+ result = cursor.fetchall()
+ except:
+ print("\n%s Problem getting tables from the database" %(get_timestamp()))
+ return 1
+ ops=["REPAIR","OPTIMIZE","ANALYZE"]
+ for row in result:
+ ctable=row[0]
+ for op in ops:
+ print(" %s %s" %(op,ctable))
+ cmd= "%s table %s" %(op,ctable)
+ cursor.execute(cmd)
+ return 0
+
+def cleanup_inuseprograms():
+ fourHoursAgo=datetime.datetime.today() - datetime.timedelta(hours=4)
+ cmd="DELETE FROM inuseprograms WHERE lastupdatetime < '%s';" %fourHoursAgo
+ try:
+ cursor = mythtv.db.cursor()
+ cursor.execute(cmd)
+ except:
+ print("\n%s Problem cleaning inuseprograms in database" %(get_timestamp()))
+
+
+def bail_if_another_is_running():
+ cmd = shlex.split("pgrep -u {} -f {}".format(os.getuid(), __file__))
+ pids = subprocess.check_output(cmd).strip().split('\n')
+ if len(pids) > 1:
+ pids.remove("{}".format(os.getpid()))
+ print("Exiting! Found {} is already running (pids): {}".format(
+ __file__, " ".join(pids)))
+ raise SystemExit(1)
+
+def run_stuff():
+ print("\n%s" %get_timestamp())
+
+ if (len(sys.argv) == 1) or ("--noidlecheck" in sys.argv) and (len(sys.argv) == 2):
+ runall = True
+ else:
+ runall = False
+
+ if ("--noidlecheck" in sys.argv):
+ print("No system idle check will be done.")
+ idle = 0
+ else:
+ idle = subprocess.call(["/usr/bin/python2", "/usr/LH/bin/idle.py"])
+
+ if not idle:
+ if ("--check_home" in sys.argv) or runall:
+ print("\n#######################################")
+ print("\n%s Checking size of MythTV home" %(get_timestamp()))
+ if not check_home():
+ print("\nFinished checking size of MythTV home")
+ else:
+ return True
+
+ if ("--optimize" in sys.argv) or runall:
+ print("\n#######################################")
+ print("\n%s Running Optimize" %(get_timestamp()))
+ if not optimize():
+ print("\nFinished Optimize")
+ else:
+ return True
+
+ if ("--backup" in sys.argv) or runall:
+ print("\n#######################################")
+ print("\n%s Running Backup" %(get_timestamp()))
+ if not os.system('/usr/LH/bin/lh_system_backup_job'):
+ print("\nFinished Backup")
+
+ if ("--update" in sys.argv) or runall:
+ print("\n#######################################")
+ print("\n%s Running System Update" %(get_timestamp()))
+ if not os.system('/usr/LH/bin/lh_system_host_update'):
+ print("\nFinished Update")
+
+ print("\n#######################################")
+ continue_loop=False
+ else:
+ continue_loop=True
+ return continue_loop
+
+#---------------------------------
+bail_if_another_is_running()
+starttime=time.time()
+ctin=True
+while ctin:
+ cleanup_inuseprograms()
+ ctin=run_stuff()
+ if ctin:
+ print("\n%s Waiting 10 minutes before trying again." %(get_timestamp()))
+ time.sleep(600)
+
+ current_time=time.time()
+ if (current_time - starttime) > 3000 :
+ ctin = False
+ print("\n%s Time Exceeded 50 minutes. Quitting.)" %(get_timestamp()))
+ exit(1)
diff --git a/linhes/linhes-system/rsyslog.hook b/linhes/linhes-system/rsyslog.hook
new file mode 100644
index 0000000..00e3b5f
--- /dev/null
+++ b/linhes/linhes-system/rsyslog.hook
@@ -0,0 +1,9 @@
+[Trigger]
+Operation = Install
+Type = Package
+Target = linhes-system
+
+[Action]
+Description = Enable and start rsyslog...
+When = PostTransaction
+Exec = /usr/bin/systemctl enable --now rsyslog.service
diff --git a/linhes/linhes-system/rsyslog.mythtv.conf b/linhes/linhes-system/rsyslog.mythtv.conf
new file mode 100644
index 0000000..9f3efe7
--- /dev/null
+++ b/linhes/linhes-system/rsyslog.mythtv.conf
@@ -0,0 +1,63 @@
+# MythTV 0.26 and later rsyslog.d conf
+
+# Control-code conversion. The default is on.
+#$EscapeControlCharactersOnReceive off
+
+$template DynMythFormat,"%TIMESTAMP:::date-rfc3339%%msg%\n"
+$template DynMythBackend,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythbackend.log"
+$template DynMythFrontend,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythfrontend.log"
+$template DynMythJobQueue,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythjobqueue.log"
+$template DynMythMediaServer,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythmediaserver.log"
+$template DynMythSetup,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythtv_setup.log"
+$template DynMythFillDatabase,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythfilldatabase.log"
+$template DynMythCommflag,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythcommflag.log"
+$template DynMythPreviewGen,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythpreviewgen.log"
+$template DynMythTranscode,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythtranscode.log"
+$template DynMythMetadataLookup,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythmetadatalookup.log"
+$template DynMythUtil,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythutil.log"
+$template DynMythWelcome,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythwelcome.log"
+$template DynMythShutdown,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythshutdown.log"
+$template DynMythLCDServer,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythlcdserver.log"
+$template DynMythccExtractor,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythccextractor.log"
+$template DynMythAVTest,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythavtest.log"
+$template DynMythLogServer,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_mythlogserver.log"
+$template DynMythNoLogServer,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%_%programname%.log"
+
+
+
+if $syslogfacility-text == 'local6' and $msg startswith ' mythbackend' then ?DynMythBackend;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythfrontend' then ?DynMythFrontend;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythjobqueue' then ?DynMythJobQueue;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythmediaserver' then ?DynMythMediaServer;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythtv-setup' then ?DynMythSetup;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythfilldatabase' then ?DynMythFillDatabase;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythcommflag' then ?DynMythCommflag;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythpreviewgen' then ?DynMythPreviewGen;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythtranscode' then ?DynMythTranscode;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythmetadatalookup' then ?DynMythMetadataLookup;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythutil' then ?DynMythUtil;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythwelcome' then ?DynMythWelcome;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythshutdown' then ?DynMythShutdown;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythlcdserver' then ?DynMythLCDServer;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythccextractor' then ?DynMythccExtractor;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythavtest' then ?DynMythAVTest;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $msg startswith ' mythlogserver' then ?DynMythLogServer;DynMythFormat
+& stop
+if $syslogfacility-text == 'local6' and $programname startswith 'myth' then ?DynMythNoLogServer
+& stop