From 26444d35e3ce38da0504600900d4775eb7a5970b Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Sat, 27 Mar 2010 19:54:01 -0500
Subject: linhes-systemconfig: add ability to enable or disable modules based
 on configfile /etc/mythvantage.cfg is the config file Changing any value to
 False will make systemconfig.py skip that module and print what section is
 being skipped.

closes #663
---
 abs/core-testing/LinHES-config/PKGBUILD          | 126 ++++++++++++-----------
 abs/core-testing/LinHES-config/mv_advanced.py    |   3 +
 abs/core-testing/LinHES-config/mv_common.py      |  25 +++++
 abs/core-testing/LinHES-config/mv_ddns.py        |   5 +-
 abs/core-testing/LinHES-config/mv_hostype.py     |   3 +
 abs/core-testing/LinHES-config/mv_ir.py          |   6 +-
 abs/core-testing/LinHES-config/mv_network.py     |   3 +
 abs/core-testing/LinHES-config/mv_screensaver.py |   3 +
 abs/core-testing/LinHES-config/mv_smolt.py       |   3 +
 abs/core-testing/LinHES-config/mv_software.py    |   4 +
 abs/core-testing/LinHES-config/mv_webuser.py     |   4 +
 abs/core-testing/LinHES-config/mythvantage.cfg   |  21 ++++
 abs/core-testing/LinHES-config/systemconfig.py   |  45 +++++---
 13 files changed, 173 insertions(+), 78 deletions(-)
 create mode 100644 abs/core-testing/LinHES-config/mythvantage.cfg

diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD
index 942dc4d..ce6d7d8 100644
--- a/abs/core-testing/LinHES-config/PKGBUILD
+++ b/abs/core-testing/LinHES-config/PKGBUILD
@@ -1,49 +1,51 @@
 pkgname=LinHES-config
 pkgver=2.1
-pkgrel=28
+pkgrel=32
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
-depends=('bc' 'libstatgrab'  'mysql-python' 'expect' 'curl' 'dnsutils' 'parted' 
-	 'sg3_utils' 'nmbscan' 'system-templates' 'rsync' 'python-parted' 
-	 'ddcxinfo' 'python-pexpect' 'python-netifaces' 'LinHES-timezone' 
+depends=('bc' 'libstatgrab'  'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
+	 'sg3_utils' 'nmbscan' 'system-templates' 'rsync' 'python-parted'
+	 'ddcxinfo' 'python-pexpect' 'python-netifaces' 'LinHES-timezone'
 	 'python-iplib' 'mythinstall>=2-10')
 arch=('i686')
 
-source=(mv_install.py 
-	mv_config.py 
-	myth_user_call 
-	file_time_offset.py 
-	install_proxy.sh 
-	install_functions.sh 
-	systemconfig.sh 
-	install_db_chroot.sh 
-	restore_default_settings.sh 
-	xconfig.sh 
-	timezip.py 
-	soundconfig.sh 
-	LinHES-release 
-	issue 
-	MythVantage.sh 
-	create_master.sh 
-	build_diskless.sh 
-	networkconfig.sh 
-	autocard.py 
-	restore_km_db_chroot.sh 
-	README 
-	mv_advanced.py 
-	mv_common.py 
-	mv_ddns.py 
-	mv_ir.py 
-	mv_misc.py 
-	mv_network.py 
-	mv_screensaver.py 
-	mv_smolt.py 
-	mv_software.py 
-	mv_webuser.py 
-	mv_hostype.py 
-	systemconfig.py 
-	myth_user_call.py)
+source=(mv_install.py
+	mv_config.py
+	myth_user_call
+	file_time_offset.py
+	install_proxy.sh
+	install_functions.sh
+	systemconfig.sh
+	install_db_chroot.sh
+	restore_default_settings.sh
+	xconfig.sh
+	timezip.py
+	soundconfig.sh
+	LinHES-release
+	issue
+	MythVantage.sh
+	create_master.sh
+	build_diskless.sh
+	networkconfig.sh
+	autocard.py
+	restore_km_db_chroot.sh
+	README
+	mv_advanced.py
+	mv_common.py
+	mv_ddns.py
+	mv_ir.py
+	mv_misc.py
+	mv_network.py
+	mv_screensaver.py
+	mv_smolt.py
+	mv_software.py
+	mv_webuser.py
+	mv_hostype.py
+	systemconfig.py
+	myth_user_call.py
+	mythvantage.cfg)
 
+backup=(etc/mythvantage.cfg)
 install=LinHES.install
 
 build() {
@@ -75,17 +77,18 @@ build() {
     install -m 0755 mv_config.py $MVDIR/bin/mv_config.py
     install -m 0755 mv_install.py $MVDIR/bin/mv_install.py
     install -m 0755 mv_advanced.py  $MVDIR/bin/
-    install -m 0755 mv_common.py $MVDIR/bin/ 
-    install -m 0755 mv_ddns.py  $MVDIR/bin/ 
-    install -m 0755 mv_ir.py  $MVDIR/bin/ 
-    install -m 0755 mv_misc.py  $MVDIR/bin/ 
-    install -m 0755 mv_network.py  $MVDIR/bin/ 
-    install -m 0755 mv_screensaver.py  $MVDIR/bin/ 
-    install -m 0755 mv_smolt.py  $MVDIR/bin/ 
-    install -m 0755 mv_software.py  $MVDIR/bin/ 
-    install -m 0755 mv_webuser.py $MVDIR/bin/ 
-    install -m 0755 mv_hostype.py $MVDIR/bin/ 
-    install -m 0755 systemconfig.py $MVDIR/bin/ 
+    install -m 0755 mv_common.py $MVDIR/bin/
+    install -m 0755 mv_ddns.py  $MVDIR/bin/
+    install -m 0755 mv_ir.py  $MVDIR/bin/
+    install -m 0755 mv_misc.py  $MVDIR/bin/
+    install -m 0755 mv_network.py  $MVDIR/bin/
+    install -m 0755 mv_screensaver.py  $MVDIR/bin/
+    install -m 0755 mv_smolt.py  $MVDIR/bin/
+    install -m 0755 mv_software.py  $MVDIR/bin/
+    install -m 0755 mv_webuser.py $MVDIR/bin/
+    install -m 0755 mv_hostype.py $MVDIR/bin/
+    install -m 0755 systemconfig.py $MVDIR/bin/
+    install -m 0755 mythvantage.cfg $startdir/pkg/etc/
 
     #README file displayed on install
     install -m 0755 README $MVDIR/README
@@ -119,16 +122,17 @@ md5sums=('297441b8d85820698c19e7c0ad5a3dfe'
          '687555968d4ca688d8f95c8f13e1d8d4'
          '3d1e4a119f38cff0498bf8a67e94e4b3'
          '37401edf67296d3a4467ad178958d177'
-         '4fa90a581278115c914fd356391b656f'
-         '322cd6d5ce36f5d21bd84c3ca4ddfeec'
-         '86d6d1672bf2bc1bdde18dd35b31383d'
-         '8eb056f2ba0045e9f95578915dfecd22'
+         'ee7c8e1f025ce1527ecfffabafb26806'
+         '41b03fb1e0a9d9ae7588e3b813212772'
+         'a9ffe72c3ede99d505fdc97572a7c256'
+         'f1c98a4acb01d9284d192149914c1e18'
          '65d93f15ac85adf8299552581789a731'
-         '5d774c28dbee0f495ff6eabd30b459f6'
-         '32385482ecc1275409b71f08d8b03acc'
-         'da0a2fb1e3cdbabac1f62e8b908c5d7f'
-         '1afc8d33021852d0254ae4a4d1f60888'
-         'f19917bed3a1e00cbe08838bee18b4b7'
-         '3c9adbbc1242d4e0a646af2e723924c7'
-         '4ae4b8cd9d40e072697d29ef85d18dc8'
-         'cf60e7ba4cf3467bb5539d5c51da61b6')
+         '4badc3c664c55f87396a473e6c14d4bc'
+         'e2aa772fe0bf366e26eaaf663f9257bd'
+         'fe5e31b833cc6707209e9d656b6eb53c'
+         'd328d63eaa4252f3d4888476c79bbff6'
+         '23d0e12b7ca1cc6ea6b993c1d7ff20b9'
+         '88059ef8c4a2926bb6fde14d810e1336'
+         'cf35353141b70145f3ee8b0bd852c9f1'
+         'cf60e7ba4cf3467bb5539d5c51da61b6'
+         'a63ff9ef5250965aeabc74bfa8e43981')
diff --git a/abs/core-testing/LinHES-config/mv_advanced.py b/abs/core-testing/LinHES-config/mv_advanced.py
index d07b7cb..bc0d19e 100755
--- a/abs/core-testing/LinHES-config/mv_advanced.py
+++ b/abs/core-testing/LinHES-config/mv_advanced.py
@@ -349,6 +349,9 @@ def setup_dyndns(DDnsEnable):
 
 
 def setup_advanced(systemconfig,data_config):
+    if  mv_common.read_config(mv_common.module_config,"advanced")  == False  :
+        logging.info("____Skipping of Advanced, config disabled____")
+        return
     logging.info("____Start of advanced configuration____")
     create_link = False
     if systemconfig["SystemType"] == "Master_backend":
diff --git a/abs/core-testing/LinHES-config/mv_common.py b/abs/core-testing/LinHES-config/mv_common.py
index 28b53d7..0272809 100755
--- a/abs/core-testing/LinHES-config/mv_common.py
+++ b/abs/core-testing/LinHES-config/mv_common.py
@@ -1,9 +1,34 @@
 # -*- coding: utf-8 -*-
 import logging, os, time
 import commands
+import ConfigParser
 config_file = "mv_config"
 data_config = __import__(config_file, globals(), locals(), [])
 
+module_config = ConfigParser.RawConfigParser()
+try:
+    module_config.read('/etc/mythvantage.cfg')
+except:
+    logging.info("couldn't read mythvantage.cfg")
+
+
+def read_config(module_config,data):
+    rvalue = True
+    section = "mythvantage"
+    try:
+        rvalue = module_config.get(section, data)
+        if rvalue == "False":
+            rvalue = False
+        if rvalue == "no":
+            rvalue = False
+
+
+    except:
+        logging.debug("Couldn't read mythvantage.cfg")
+        rvalue = True
+
+    return rvalue
+
 def runcmd(cmd):
     if data_config.NOOPDEBUG=="FALSE":
         pass
diff --git a/abs/core-testing/LinHES-config/mv_ddns.py b/abs/core-testing/LinHES-config/mv_ddns.py
index 7ac7d3a..9695f76 100755
--- a/abs/core-testing/LinHES-config/mv_ddns.py
+++ b/abs/core-testing/LinHES-config/mv_ddns.py
@@ -5,12 +5,15 @@ import os, re
 config_file = "mv_config"
 
 def setup_ddns(systemconfig):
+    if  mv_common.read_config(mv_common.module_config,"ddns")  == False  :
+        logging.info("____Skipping of DDNS, config disabled____")
+        return
     logging.info("____Start of setup_ddns____")
 
     if systemconfig["DDnsEnable"] == "1":
         logging.debug("    Enabling DDNS")
 	mv_common.pacinstall("ddclient")
-	mv_common.cp_and_log("/etc/ddclient/ddclient.conf.dynamic.dyndns.sample", 
+	mv_common.cp_and_log("/etc/ddclient/ddclient.conf.dynamic.dyndns.sample",
 	  		     "/etc/ddclient/ddclient.conf")
 	cmd = ''' sed -i -e "s/your-dynamic-dyndns-login/%s/g" /etc/ddclient/ddclient.conf''' %(systemconfig["DDnslogin"])
 	mv_common.runcmd(cmd)
diff --git a/abs/core-testing/LinHES-config/mv_hostype.py b/abs/core-testing/LinHES-config/mv_hostype.py
index d6ec0ed..c6f4a36 100755
--- a/abs/core-testing/LinHES-config/mv_hostype.py
+++ b/abs/core-testing/LinHES-config/mv_hostype.py
@@ -124,6 +124,9 @@ def setup_syslog(dbhost):
     return
 
 def hostypeprint(systemconfig):
+    if  mv_common.read_config(mv_common.module_config,"hostype")  == False  :
+        logging.info("____Skipping of hostype, config disabled____")
+        return
     logging.info("______Start of hostype config_____")
     mv_common.services(systemconfig)
     install_list=''
diff --git a/abs/core-testing/LinHES-config/mv_ir.py b/abs/core-testing/LinHES-config/mv_ir.py
index bc1ae37..3573ee3 100755
--- a/abs/core-testing/LinHES-config/mv_ir.py
+++ b/abs/core-testing/LinHES-config/mv_ir.py
@@ -281,7 +281,11 @@ def setup_lcd(LCDtype, TEMPLATES, Remotetype):
     logging.debug("__End of setup_lcd")
 
 def setup_ir(systemconfig, data_config):
-    rc = False
+    rc = [ False , False ]
+    if  mv_common.read_config(mv_common.module_config,"ir")  == False  :
+        logging.info("____Skipping of IR, config disabled____")
+        return rc
+
     logging.info("____Start of IR____")
     if systemconfig["Remotetype"] == "tinker":
         logging.info("    Tinker mode detected")
diff --git a/abs/core-testing/LinHES-config/mv_network.py b/abs/core-testing/LinHES-config/mv_network.py
index 2a55c63..f256785 100755
--- a/abs/core-testing/LinHES-config/mv_network.py
+++ b/abs/core-testing/LinHES-config/mv_network.py
@@ -482,6 +482,9 @@ def hostname_change_check(systemconfig):
 
 
 def setup_network (systemconfig,this_is_install):
+    if  mv_common.read_config(mv_common.module_config,"network")  == False  :
+        logging.info("____Skipping of network, config disabled____")
+        return False
     logging.info("____Start of network____")
     logging.info("    Setting up the network")
     restartfe = hostname_change_check(systemconfig)
diff --git a/abs/core-testing/LinHES-config/mv_screensaver.py b/abs/core-testing/LinHES-config/mv_screensaver.py
index 2da970c..4068832 100755
--- a/abs/core-testing/LinHES-config/mv_screensaver.py
+++ b/abs/core-testing/LinHES-config/mv_screensaver.py
@@ -163,6 +163,9 @@ def setup_gnome_screensaver(theme,idletime):
 
 
 def setup_screensaver (systemconfig,data_config):
+    if  mv_common.read_config(mv_common.module_config,"screensaver")  == False  :
+        logging.info("____Skipping of Screensaver, config disabled____")
+        return
     logging.info("____Start of screensaver configuration____")
     screensavertype = systemconfig["Screensavertype"]
     theme = systemconfig["Screensavertheme"]
diff --git a/abs/core-testing/LinHES-config/mv_smolt.py b/abs/core-testing/LinHES-config/mv_smolt.py
index 5fd3722..cfc697e 100755
--- a/abs/core-testing/LinHES-config/mv_smolt.py
+++ b/abs/core-testing/LinHES-config/mv_smolt.py
@@ -20,6 +20,9 @@ def read_release(stype):
 
 
 def setup_smolt_type(SystemType,Remotetype,RunFrontend,mythhome,stype):
+    if  mv_common.read_config(mv_common.module_config,"smolt")  == False  :
+        logging.info("____Skipping of smolt, config disabled____")
+        return
     logging.debug("____Start of setup_smolt_type____")
     releasename = read_release(stype)
 
diff --git a/abs/core-testing/LinHES-config/mv_software.py b/abs/core-testing/LinHES-config/mv_software.py
index 4ee2e4d..c0f5a5b 100755
--- a/abs/core-testing/LinHES-config/mv_software.py
+++ b/abs/core-testing/LinHES-config/mv_software.py
@@ -3,6 +3,10 @@ import logging, mv_common
 import os, re
 
 def setup_software(systemconfig, data_config):
+    if  mv_common.read_config(mv_common.module_config,"software")  == False  :
+        logging.info("____Skipping of software, config disabled____")
+        return
+
     logging.info("____Start of Software install____")
     postfix=''
     if data_config.SYSTEMTYPE == "MythVantage":
diff --git a/abs/core-testing/LinHES-config/mv_webuser.py b/abs/core-testing/LinHES-config/mv_webuser.py
index a8517a8..3e383f2 100755
--- a/abs/core-testing/LinHES-config/mv_webuser.py
+++ b/abs/core-testing/LinHES-config/mv_webuser.py
@@ -3,6 +3,10 @@ import logging, mv_common
 #import os
 
 def setup_web_auth(UseMythWEB_auth):
+    if  mv_common.read_config(mv_common.module_config,"webuser")  == False  :
+        logging.info("____Skipping of webuser, config disabled____")
+        return
+
     logging.info("____Start of setup_web_auth____")
     if UseMythWEB_auth == str(1):
         #enable auth
diff --git a/abs/core-testing/LinHES-config/mythvantage.cfg b/abs/core-testing/LinHES-config/mythvantage.cfg
new file mode 100644
index 0000000..eaa4865
--- /dev/null
+++ b/abs/core-testing/LinHES-config/mythvantage.cfg
@@ -0,0 +1,21 @@
+[mythvantage]
+#change any of the following to False or True
+# True will allow systemconfig to run that module
+# False will skip the module
+misc = True
+sleep = True
+hostype = True
+advanced = True
+audio = True
+network = True
+xorg = True
+webuser = True
+restartfe = True
+reloadfe = True
+ddns = True
+screensaver = True
+ir = True
+user = True
+software = True
+smolt = True
+
diff --git a/abs/core-testing/LinHES-config/systemconfig.py b/abs/core-testing/LinHES-config/systemconfig.py
index 28e2e7a..2e07b2f 100755
--- a/abs/core-testing/LinHES-config/systemconfig.py
+++ b/abs/core-testing/LinHES-config/systemconfig.py
@@ -36,8 +36,11 @@ def usage():
     logging.info("tell people how to use this")
 
 def setup_x(systemconfig):
-    cmd = "%s/bin/xconfig.sh" %systemconfig["MVROOT"]
-    mv_common.runcmd(cmd)
+    if  mv_common.read_config(mv_common.module_config,"xorg")  == False  :
+        logging.info("____Skipping of Xorg, config disabled____")
+    else:
+        cmd = "%s/bin/xconfig.sh" %systemconfig["MVROOT"]
+        mv_common.runcmd(cmd)
 
 def main(argv):
     try:
@@ -124,23 +127,32 @@ def main(argv):
 
 
     if cmdmodule["audio"] == True:
-        logging.debug("______Start of Audio Configuration______")
-        if not systemconfig["Audiotype"] == "tinker":
-            cmd="%s/bin/soundconfig.sh -t real -i %s -d %s" %(MVROOT,systemconfig["Audiotype"],systemconfig["SoundDevice"])
-            mv_common.runcmd(cmd)
+        if  mv_common.read_config(mv_common.module_config,"audio")  == False  :
+            logging.info("____Skipping of Audio, config disabled____")
         else:
-            logging.debug("    Tinker mode(audio), not changing configuration")
-        logging.debug("__End of audio")
+            logging.debug("______Start of Audio Configuration______")
+            if not systemconfig["Audiotype"] == "tinker":
+                cmd="%s/bin/soundconfig.sh -t real -i %s -d %s" %(MVROOT,systemconfig["Audiotype"],systemconfig["SoundDevice"])
+                mv_common.runcmd(cmd)
+            else:
+                logging.debug("    Tinker mode(audio), not changing configuration")
+            logging.debug("__End of audio")
 
     if cmdmodule["misc"]:
-        import mv_misc
-        mv_misc.setup_zip(MVROOT,systemconfig["zipcode"])
-        mv_misc.setup_tz(systemconfig["timezone"],systemconfig["TEMPLATES"])
-        mv_misc.setup_nfs(systemconfig)
+        if  mv_common.read_config(mv_common.module_config,"misc")  == False  :
+            logging.info("____Skipping of misc, config disabled____")
+        else:
+            import mv_misc
+            mv_misc.setup_zip(MVROOT,systemconfig["zipcode"])
+            mv_misc.setup_tz(systemconfig["timezone"],systemconfig["TEMPLATES"])
+            mv_misc.setup_nfs(systemconfig)
 
     if cmdmodule["sleep"]:
-        import mv_misc
-        mv_misc.setup_sleep(systemconfig)
+        if  mv_common.read_config(mv_common.module_config,"sleep")  == False  :
+            logging.info("____Skipping of sleep, config disabled____")
+        else:
+            import mv_misc
+            mv_misc.setup_sleep(systemconfig)
 
     if cmdmodule["webuser"]:
         import mv_webuser
@@ -163,7 +175,10 @@ def main(argv):
         mv_software.setup_software(systemconfig, data_config)
 
     if cmdmodule["advancedX"]:
-        setup_x(systemconfig)
+        if  mv_common.read_config(mv_common.module_config,"xorg")  == False  :
+            logging.info("____Skipping of advancedX, config disabled____")
+        else:
+            setup_x(systemconfig)
 
     if cmdmodule["restartfe"]:
         mv_common.restartfe(restartlcd)
-- 
cgit v0.12