#!/usr/bin/python # -*- coding: utf-8 -*- import sys, os, commands, glob, time import getopt, re, MySQLdb import logging import mv_common , mv_network import inspect #____________________________________________setup the logging______________________________________________________ LOG_FILENAME = '/tmp/systemconfig.log' DEBUGLOG = '/tmp/systemconfig_debug.log' logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%m-%d %H:%M', filename=DEBUGLOG, filemode='w') # define a Handler which writes INFO messages or higher to the sys.stderr console = logging.StreamHandler() console.setLevel(logging.INFO) # set a format which is simpler for console use #formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') formatter = logging.Formatter("%(message)s") # tell the handler to use this format console.setFormatter(formatter) # add the handler to the root logger logging.getLogger('').addHandler(console) #infoformatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") infoformatter = logging.Formatter("%(message)s") infofile = logging.FileHandler(LOG_FILENAME, 'w') infofile.setFormatter(infoformatter) infofile.setLevel(logging.INFO) logging.getLogger('').addHandler(infofile) 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) def main(argv): try: MVROOT = os.environ["MV_ROOT"] except: logging.debug("MVROOT was not defined, using the default value") MVROOT = "/usr/MythVantage" global cmdmodule global systemconfig systemconfig["MVROOT"]=MVROOT restartlcd = False cmdmodule={"misc":False , "sleep":False , "hostype":False , "hostypec":False , "advanced":False , "audio":False , "network":False , "advancedX":False , "webuser":False , "restartfe":False , "reloadfe":False , "ddns":False , "screensaver":False , "ir":False , "this_is_install":False , "user":False, "software":False, "plugins":False, "smolt":False, "all":False, "dhcp_request":False } try: opts, args = getopt.getopt(argv, 'c:hm:d:', ["help","modules" ] ) except getopt.GetoptError, why: print why usage() print "exception happened" sys.exit(2) for opt, arg in opts: if opt in ("-h", "--help"): usage() sys.exit(0) elif opt in ("-m"): for i in arg.split(","): cmdmodule[i]=True elif opt in ("-d"): dhcp_dev = arg if cmdmodule["this_is_install"] or cmdmodule["hostypec"]: systemconfig["hostypec"] = True cmdmodule["smolt"] = True systemconfig["mythip"] = mv_network.setup_MYTH_IP(systemconfig) systemconfig["mythdhcp"] = mv_network.setup_MYTH_DHCP(systemconfig) systemconfig["mythgw"] = mv_network.setup_MYTH_DHCP(systemconfig) systemconfig["mythdns"] = mv_network.setup_MYTH_DHCP(systemconfig) if cmdmodule["all"]: logging.info("*** WILL RUN ALL MODULES ***") cmdmodule["hostype"] = True cmdmodule["ir"]= True cmdmodule["network"] = True cmdmodule["audio"] = True cmdmodule["misc"] = True cmdmodule["sleep"] = True cmdmodule["webuser"] = True cmdmodule["ddns"] = True cmdmodule["screensaver"] = True cmdmodule["advanced"] = True cmdmodule["software"] = True cmdmodule["advancedX"] = True cmdmodule["smolt"] = True cmdmodule["user"] = True if cmdmodule["hostype"]: import mv_hostype cmdmodule["advancedX"] = True setup_x(systemconfig) cmdmodule["ir"] = True mv_hostype.hostypeprint(systemconfig) cmdmodule["smolt"] = 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["ir"] == True: import mv_ir restart = mv_ir.setup_ir(systemconfig,data_config) restartfe = restart[0] restartlcd = restart[1] if restartfe == True : logging.debug(" Setting the frontend to restart due to lirc change") cmdmodule["restartfe"] = True cmdmodule["smolt"] = True 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) 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 cmdmodule["sleep"]: import mv_misc mv_misc.setup_sleep(systemconfig) if cmdmodule["webuser"]: import mv_webuser mv_webuser.setup_web_auth(systemconfig["UseMythWEB_auth"]) if cmdmodule["ddns"]: print " LOOK FOR DDNS" if cmdmodule["screensaver"]: import mv_screensaver mv_screensaver.setup_screensaver(systemconfig, data_config) if cmdmodule["advanced"]: import mv_advanced mv_advanced.setup_advanced(systemconfig, data_config) if cmdmodule["software"] or cmdmodule["plugins"]: import mv_software mv_software.setup_software(systemconfig, data_config) if cmdmodule["advancedX"]: setup_x(systemconfig) if cmdmodule["restartfe"]: mv_common.restartfe(restartlcd) if cmdmodule["reloadfe"]: mv_common.reloadfe(systemconfig["dbhost"],restartlcd) if cmdmodule["smolt"]: import mv_smolt mv_smolt.setup_smolt_type(systemconfig["SystemType"], systemconfig["Remotetype"], systemconfig["RunFrontend"], data_config.MYTHHOME, data_config.SYSTEMTYPE) if cmdmodule["user"]: logging.info("____Start of ssh user____") if systemconfig["rootSSH"] == "1" : logging.info(" Allowing ssh access for root") cmd = '''sed -i "s/^.*PermitRootLogin.*$/PermitRootLogin yes/" /etc/ssh/sshd_config''' mv_common.runcmd(cmd) else: logging.info(" Removing ssh access for root") cmd = '''sed -i "s/^.*PermitRootLogin.*$/PermitRootLogin no/" /etc/ssh/sshd_config''' mv_common.runcmd(cmd) logging.info("__End of ssh user\n") if cmdmodule["dhcp_request"]: cmd = '''dhcpcd -t4 -h' ' -Td %s > /tmp/mvnetwork.dhcpinfo ''' %dhcp_dev mv_common.runcmd(cmd) if __name__ == "__main__": config_file = "mv_config" data_config = __import__(config_file, globals(), locals(), []) #Read in systemconfig global systemconfig systemconfig = {"hostypec":False} file_name = "/etc/systemconfig" try: config_file = open(file_name) except: logging.critical("%s could not be opened", file_name) sys.exit(1) for line in config_file: line = line.strip() if line and line[0] is not "#" and line[-1] is not "=": var, val = line.rsplit("=", 1) val = val.strip('"') systemconfig[var.strip()] = val.strip() try: systemconfig["TEMPLATES"] = os.environ["TEMPLATES"] except: logging.critical(" *TEMPLATES is not defined") logging.critical(" *using default value") systemconfig["TEMPLATES"] = "/usr/MythVantage/templates" logging.debug("______START OF DEBUG______") main(sys.argv[1:]) logging.debug("______cmd line options______") for i in cmdmodule.items(): logging.debug (i) logging.debug("______systemconfig______") for i in systemconfig.items(): logging.debug(i) #pass