diff options
Diffstat (limited to 'abs/core/LinHES-config')
-rw-r--r-- | abs/core/LinHES-config/PKGBUILD | 10 | ||||
-rwxr-xr-x | abs/core/LinHES-config/mv_common.py | 66 | ||||
-rwxr-xr-x | abs/core/LinHES-config/mv_hostype.py | 208 | ||||
-rwxr-xr-x | abs/core/LinHES-config/mv_install.py | 5 | ||||
-rwxr-xr-x | abs/core/LinHES-config/systemconfig.py | 9 |
5 files changed, 263 insertions, 35 deletions
diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD index cc8b151..42597bc 100644 --- a/abs/core/LinHES-config/PKGBUILD +++ b/abs/core/LinHES-config/PKGBUILD @@ -1,6 +1,6 @@ pkgname=LinHES-config pkgver=2.3 -pkgrel=46 +pkgrel=51 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' @@ -101,7 +101,7 @@ build() { install -m 0755 issue $startdir/pkg/etc/issue } -md5sums=('6c0cbf0207f39a961d78861215109044' +md5sums=('f6bca2af75ddb0902f0fa9ff4b6e4fd7' '16b98fcb3753ef6cfc35075c326d30e4' 'e36da536dd651ef182e7642337889e77' '985891a43f7c4c983eb2a362162f1a0f' @@ -123,7 +123,7 @@ md5sums=('6c0cbf0207f39a961d78861215109044' '3d1e4a119f38cff0498bf8a67e94e4b3' '71fd2d0d448fc2fcd15415a1beed7109' '5f3259afe031fda189edae41dd1458f0' - '252ae3a088948a0d125ea6e8daa211f5' + 'dc150c1e2c915a55a616d1af5bb1f6de' 'b845de3e05c1734cce4b9ac5e8f1baaf' '4d0464a1bef1819f6f9c100609eb55ad' '5e69839659d65ddda35b8a9982dc29e9' @@ -132,7 +132,7 @@ md5sums=('6c0cbf0207f39a961d78861215109044' 'fe5e31b833cc6707209e9d656b6eb53c' 'f0988a801216b44c96bf17e24a23e3a9' '23d0e12b7ca1cc6ea6b993c1d7ff20b9' - '8a713ce49211eb0b91c84ba0b9cf52fe' - '5e3e06b31c40fe6b0e74860a8137b720' + '952ddc53f1c1ceee2139888219ce1bdf' + '892ba04c504b9be04b2573d015382eae' '2596460462cf6c889cf8f95485537b20' 'a63ff9ef5250965aeabc74bfa8e43981') diff --git a/abs/core/LinHES-config/mv_common.py b/abs/core/LinHES-config/mv_common.py index 5257a5a..b5939f2 100755 --- a/abs/core/LinHES-config/mv_common.py +++ b/abs/core/LinHES-config/mv_common.py @@ -2,6 +2,7 @@ import logging, os, time import commands import ConfigParser +import urllib2 config_file = "mv_config" data_config = __import__(config_file, globals(), locals(), []) @@ -11,6 +12,38 @@ try: except: logging.info("couldn't read mythvantage.cfg") +class config_extra_reader(object): + def __init__(self,url): + self.url=url + self.Config = ConfigParser.ConfigParser() + req = urllib2.Request(url) + response = urllib2.urlopen(req) + self.Config.readfp(response) + + def print_url(self): + print self.url + + + def print_sections(self): + print self.Config.sections() + + + def read_config(self,data): + rvalue = True + section = "extra" + try: + rvalue = self.Config.get(section, data) + if rvalue == "False": + rvalue = False + if rvalue == "no": + rvalue = False + except: + logging.debug("Couldn't read config_file") + rvalue = True + + return rvalue + + def read_config(module_config,data): rvalue = True @@ -61,6 +94,39 @@ def cp_and_log(srcfile,destfile): cmd = ("rsync -arhp %s %s") %(srcfile,destfile) runcmd(cmd) +def link_file(srcfile,link_name): + logging.info(" Trying to link %s -> %s",srcfile,link_name) + if not os.path.exists(srcfile): + logging.info(" %s is not present, skipping...",srcfile) + elif os.path.exists(link_name): + logging.info(" %s is present, skipping...",link_name) + else: + try: + os.symlink(srcfile, link_name) + except: + logging.info(" Problem linking files occured") + + return + +def mkdir_mythhome(mythhome): + if not os.path.exists(mythhome+"/.mythtv"): + logging.debug(" Creating %s/.mythtv",mythhome) + try: + os.mkdir(mythhome+"/.mythtv") + except: + logging.debug(" Couldn't create .mythtv ") + return + try: + os.chown(mythhome+"/.mythtv", mythuid, mythgid) + logging.debug("* Couldn't chown of %s", mythhome) + except: + cmd = ''' chown -R mythtv %s/.mythtv''' %mythhome + runcmd(cmd) + cmd = ''' chgrp -R mythtv %s/.mythtv''' %mythhome + runcmd(cmd) + pass + + def add_service(daemon): logging.info(" Adding service %s",daemon) diff --git a/abs/core/LinHES-config/mv_hostype.py b/abs/core/LinHES-config/mv_hostype.py index fd04a18..bdc12f4 100755 --- a/abs/core/LinHES-config/mv_hostype.py +++ b/abs/core/LinHES-config/mv_hostype.py @@ -59,15 +59,50 @@ def setup_mysqlnetwork(EnableNetwork): mv_common.runcmd(cmd) mv_common.restart_service("mysqld") + +def generate_config_xml(uuid,dbhost): + configxml_t =''' +<Configuration> + <UPnP> + <UDN> + <MediaRenderer>%s</MediaRenderer> + </UDN> + <MythFrontend> + <DefaultBackend> + <DBHostName>%s</DBHostName> + <DBUserName>mythtv</DBUserName> + <DBPassword>mythtv</DBPassword> + <DBName>mythconverg</DBName> + <DBPort>0</DBPort> + </DefaultBackend> + </MythFrontend> + </UPnP> +</Configuration> + ''' + configxml= configxml_t %(uuid,dbhost) + return configxml + +def gen_uuid(): + cmd = "/usr/bin/uuidgen" + uuid = mv_common.runcmd_output(cmd) + return uuid + def setup_mysql_connection(systemconfig): + #setup mysql.txt and config.xml logging.info(" Configuring database connection") mythip = systemconfig.get("mythip") systemtype = systemconfig.get("SystemType") mv_root = systemconfig.get("MVROOT") mysqltxt = "/usr/share/mythtv/mysql.txt" + configxml_file = "/usr/share/mythtv/config.xml" + templates = systemconfig.get("TEMPLATES") mysqltemplate = templates + "/mysql.txt" dbhost = systemconfig.get("dbhost") + uuid = gen_uuid() + config_xml=generate_config_xml(uuid,dbhost) + mv_common.mkdir_mythhome(data_config.MYTHHOME) + if systemtype == "Master_backend": logging.debug(" Setting dbhost to %s in systemconfig", mythip) @@ -101,6 +136,20 @@ def setup_mysql_connection(systemconfig): if os.path.exists(filecheck): logging.info(" Scrapping all the previous work and using %s for mysql.txt", filecheck) mv_common.cp_and_log(filecheck, mysqltxt) + try: + f = open(configxml_file, 'w') + + for outline in config_xml: + f.write(outline) + f.close() + except: + logging.debug(" Couldn't write config.xml") + + home_xml_file=data_config.MYTHHOME + "/.mythtv/config.xml" + mv_common.link_file(configxml_file,home_xml_file) + + + @@ -110,24 +159,101 @@ def setup_func_key(): cmd="/usr/MythVantage/bin/grabkey.py" mv_common.runcmd(cmd) -def setup_func_minion(dbhost): - logging.info(" Setting up the func minion:") +def setup_func_minion(dbhost,hostname): + logging.info(" Setting up the func minion: %s", hostname) logging.debug(" certmaster is %s:",dbhost) #cmd='''sed -i "s/^certmaster.*$/certmaster = %s/" /etc/func/minion.conf ''' %dbhost #mv_common.runcmd(cmd) cmd='''sed -i "s/^certmaster.*$/certmaster = %s/" /etc/certmaster/minion.conf ''' %dbhost mv_common.runcmd(cmd) + cmd='''sed -i "s/^minion_name.*$/minion_name = %s/" /etc/func/minion.conf ''' %hostname + mv_common.runcmd(cmd) def setup_syslog(dbhost): logging.debug(" Setting syslog to log to %s",dbhost) cmd ='''sed -i "s/^destination d_remote.*$/destination d_remote \{tcp\(\"%s\" port\(514\)\) \;\} \;/" /etc/syslog-ng.conf''' %dbhost return +def setup_rsyslog_server(enable_network): + syslog_conf_file="/etc/rsyslog.d/network.conf" + syslog_client_file="/etc/rsyslog.d/client.conf" + contents=''' +# ######### Receiving Messages from Remote Hosts ########## +# TCP Syslog Server: +# provides TCP syslog reception and GSS-API (if compiled to support it) +$ModLoad imtcp.so # load module +$InputTCPServerRun 514 # start up TCP listener at port 514 +# UDP Syslog Server: +$ModLoad imudp.so # provides UDP syslog reception +$UDPServerRun 514 # start a UDP syslog server at standard port 514 +''' + mv_common.remove_file(syslog_client_file) + if enable_network: + logging.info("____Enabling rsyslog network____") + try: + f = open(syslog_conf_file,'w') + except: + print "%s could not be opened" %syslog_conf_file + logging.debug("could not open %s" %syslog_conf_file) + return + f.write(contents) + f.write("\n") + f.close() + else: + logging.info("____Disabline rsyslog network____") + mv_common.remove_file(syslog_conf_file) + + return + +def setup_rsyslog_client(rsyslog_server): + contents=''' +# Remote Logging (we use TCP for reliable delivery) +# An on-disk queue is created for this action. If the remote host is +# down, messages are spooled to disk and sent when it is up again. +$WorkDirectory /var/spool/rsyslog # where to place spool files +$ActionQueueFileName uniqName # unique name prefix for spool files +$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible) +$ActionQueueSaveOnShutdown on # save messages to disk on shutdown +$ActionQueueType LinkedList # run asynchronously +$ActionResumeRetryCount -1 # infinite retries if host is down +# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional +*.* @@%s:514 +''' + + logging.info("____Enabling rsyslog network client____") + logging.info(" syslog_server: %s", rsyslog_server) + syslog_client_file="/etc/rsyslog.d/client.conf" + syslog_conf_file="/etc/rsyslog.d/network.conf" + try: + f = open(syslog_client_file,'w') + except: + print "%s could not be opened" %syslog_client_file + return + f.write(contents %rsyslog_server) + f.write("\n") + f.close() + mv_common.remove_file(syslog_conf_file) + cmd="mkdir -p /var/spool/rsyslog" + mv_common.runcmd(cmd) + 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_____") + + url = 'http://%s:1337/extra.cfg.txt' %systemconfig.get("dbhost") + try: + ex = mv_common.config_extra_reader(url) + xymon_supported=ex.read_config('xymon') + rsyslog_network=ex.read_config('rsyslog_network') + func_supported=ex.read_config('func') + except: + xymon_supported=False + rsyslog_network=False + func_supported=False + mv_common.services(systemconfig) install_list='' remove_list='' @@ -135,6 +261,9 @@ def hostypeprint(systemconfig): daemon_remove_list='' run_mysqlnetwork = False + profile_status="/etc/profile.d/z_myth_status.sh" + myth_status="/usr/LH/bin/myth_status.sh" + if systemconfig.get("SystemType") == "Standalone": logging.info("Stand alone system being configured") setup_ntp(False,"null") @@ -145,8 +274,16 @@ def hostypeprint(systemconfig): setup_db() install_list=["mysql", "mythdb-initial", "avahi", "rpcbind", "nfs-utils", "local-website", "myth2ipod", "mythtv-status"] daemon_list=["mysql", "mythbackend", "avahi", "rpcbind", "nfs-common", "netfs", "lighttpd"] - if data_config.SYSTEMTYPE == "MythVantage": - install_list.append('ghosd') + + + mv_common.link_file(myth_status,profile_status) + setup_rsyslog_server(False) + if func_supported: + install_list.append('func') + daemon_list.append('funcd') + install_list.append('certmaster') + daemon_list.append('certmaster') + elif systemconfig.get("SystemType") == "Master_backend": logging.info("Master backend system being configured") @@ -156,48 +293,64 @@ def hostypeprint(systemconfig): daemon_list=["mysql", "mythbackend", "avahi", "rpcbind", "nfs-common", "netfs", "lighttpd"] EnableNetwork = True run_mysqlnetwork = True - if data_config.SYSTEMTYPE == "MythVantage": + mv_common.link_file(myth_status,profile_status) + + setup_rsyslog_server(True) + if func_supported: + #if data_config.SYSTEMTYPE == "MythVantage": install_list.append('func') - daemon_list.append('func') + daemon_list.append('funcd') install_list.append('certmaster') daemon_list.append('certmaster') - install_list.append('ghosd') + elif systemconfig.get("SystemType") == "Slave_backend": logging.info("Slave backend system being configured") setup_ntp(True,systemconfig.get("dbhost")) remove_avahi_service() + mv_common.link_file(myth_status,profile_status) + if systemconfig.get("hostypec"): setup_db() - install_list = ["rpcbind", "nfs-utils", "local-website", "avahi", "libmysqlclient" ] - daemon_list = ["mythbackend", "rpcbind", "nfs-common", "netfs", "lighttpd", "avahi" ] + install_list = ["rpcbind", "nfs-utils", "avahi", "libmysqlclient" ] + daemon_list = ["mythbackend", "rpcbind", "nfs-common", "netfs", "avahi" ] + daemon_remove_list=('mysql') - if data_config.SYSTEMTYPE == "MythVantage": - install_list.remove("local-website") - daemon_list.remove("lighttpd") + daemon_list.remove("lighttpd") + remove_list.append("lighttpd") + + if func_supported: install_list.append('func') daemon_list.append('funcd') - remove_list.append("lighttpd") - install_list.append('ghosd') + + if xymon_supported: + install_list.append('xymonclient') + daemon_list.append('xymon-client') + + setup_rsyslog_client(systemconfig.get("dbhost")) elif systemconfig.get("SystemType") == "Frontend_only": logging.info("Frontend only system being configured") setup_ntp(True,systemconfig.get("dbhost")) remove_avahi_service() - install_list=["mysql-clients", "libmysqlclient", "avahi", "rpcbind", "nfs-utils", "local-website"] - remove_list=["mysql"] - daemon_list=["mysql", "mythbackend", "avahi", "rpcbind", "nfs-common", "netfs", "lighttpd"] - daemon_remove_list=("mysql", "mythbackend") - if data_config.SYSTEMTYPE == "MythVantage": - install_list.remove("local-website") - daemon_list.remove("lighttpd") + install_list=["mysql-clients", "libmysqlclient", "avahi", "rpcbind", "nfs-utils"] + remove_list=["mysql","lighttpd"] + + daemon_list=["mysql", "mythbackend", "avahi", "rpcbind", "nfs-common", "netfs" ] + daemon_remove_list=["mysql", "mythbackend","lighttpd"] + if xymon_supported: + install_list.append('xymonclient') + daemon_list.append('xymon-client') + + if func_supported: install_list.append('func') daemon_list.append('funcd') - remove_list.append("lighttpd") - install_list.append('ghosd') + #install_list.append('ghosd') + setup_rsyslog_client(systemconfig.get("dbhost")) + mv_common.restart_service("rsyslog") for pkg in install_list: mv_common.pacinstall(pkg) for pkg in remove_list: @@ -206,6 +359,7 @@ def hostypeprint(systemconfig): mv_common.add_service(daemon) for daemon in daemon_remove_list: mv_common.remove_service(daemon) + if systemconfig.get("RunFrontend") == "1": logging.debug(" Will run the frontend") mv_common.add_service("frontend") @@ -226,8 +380,8 @@ def hostypeprint(systemconfig): logging.debug(" Not running setup_mysql_connection") setup_mysql_connection(systemconfig) - if data_config.SYSTEMTYPE == "MythVantage": - setup_func_minion(systemconfig.get("dbhost")) - setup_func_key() - setup_syslog(systemconfig.get("dbhost")) + if func_supported: + setup_func_minion(systemconfig.get("dbhost"),systemconfig.get("hostname")) + + logging.info("__End of hostype config\n") diff --git a/abs/core/LinHES-config/mv_install.py b/abs/core/LinHES-config/mv_install.py index e251291..85220cf 100755 --- a/abs/core/LinHES-config/mv_install.py +++ b/abs/core/LinHES-config/mv_install.py @@ -555,9 +555,9 @@ def create_fstab(extralines): fstab_list.append(line) line = '''/dev/sr0 /media/cdrom auto ro,user,noauto,unhide 0 0\n''' fstab_list.append(line) - line = '''UUID=ROOTUID / auto defaults,noatime 0 1\n''' + line = '''UUID=ROOTUID / auto defaults,noatime,acl 0 1\n''' fstab_list.append(line) - line = '''UUID=DATAUID %s auto defaults,noatime 0 1\n''' %(data_config.DATAMOUNT) + line = '''UUID=DATAUID %s auto defaults,noatime,acl 0 1\n''' %(data_config.DATAMOUNT) fstab_list.append(line) line = '''UUID=SWAPUID swap swap defaults 0 0 \n''' fstab_list.append(line) @@ -1175,6 +1175,7 @@ def upgrade_mount_search(): runcmd(cmd) fstab_list = [] fstab_data_mount = '' + oldfscontents="#" try: f = open("/tmp/etc/fstab", 'r') oldfscontents = f.readlines() diff --git a/abs/core/LinHES-config/systemconfig.py b/abs/core/LinHES-config/systemconfig.py index 31d2164..aa94aec 100755 --- a/abs/core/LinHES-config/systemconfig.py +++ b/abs/core/LinHES-config/systemconfig.py @@ -92,9 +92,10 @@ def main(argv): if cmdmodule["all"]: logging.info("*** WILL RUN ALL MODULES ***") + cmdmodule["network"] = True cmdmodule["hostype"] = True cmdmodule["ir"]= True - cmdmodule["network"] = True + #cmdmodule["network"] = True cmdmodule["audio"] = True cmdmodule["misc"] = True cmdmodule["sleep"] = True @@ -107,6 +108,12 @@ def main(argv): cmdmodule["smolt"] = True cmdmodule["user"] = True + if cmdmodule["network"]: + restartfe = mv_network.setup_network(systemconfig, cmdmodule["this_is_install"]) + if restartfe == True : + logging.debug(" Setting the frontend to restart due to network change") + cmdmodule["restartfe"] = True + if cmdmodule["hostype"]: import mv_hostype |