# -*- coding: utf-8 -*- import logging, os, re import mv_common def setup_pacman(create_link): if create_link: logging.info(" Creating pacman link") #LOOK #This is not implmented yet, below is the bash code for reference #if [ ! x$1 = x ] #then #ln -s ${BASE}/data/var ${BASE}/data/srv/httpd/htdocs/repo #echo "creating the link for the pacman repo mirror" #fi #for i in mv-core mv-core-testing mv-extra mv-extra-testing #do #echo "[$i]" > ${BASE}/etc/pacman.d/$i ##add mirror if needed #if [ x$PKG_MIRROR = x1 ] #then #echo " Server = http://$dbhost/repo/$i " >> ${BASE}/etc/pacman.d/$i #fi ##add user templates #USERTEMPLATES="/data/home/mythtv/templates" #if [ -f $USERTEMPLATES/sources/$i ] #then #echo "Adding user $i" #cat $USERTEMPLATES/sources/$i >> ${BASE}/etc/pacman.d/$i #fi #cat $TEMPLATES/sources/$i >> ${BASE}/etc/pacman.d/$i #echo "setting local mirror to $dbhost for $i " #done else: logging.info(" Pacman link will not be created") return def setup_ncid_client(dbhost,templatefile): #This always runs logging.debug(" Configuring ncid client with server %s",dbhost) cmd = '''sed -e "s/^set Host.*$/set Host %s /" %s >/etc/ncid/ncid.conf''' %(dbhost, templatefile) return def setup_ncid_daemon(port,templatefile,Runncidd): logging.info(" Configuring callerid daemon") if Runncidd == "1": logging.debug(" Port: %s",port) mv_common.cp_and_log("/etc/ncid/ncidd.conf",templatefile) cmd = '''sed -e "s/.*set ttyport.*$/set ttyport = \/dev\/%s /" %s >/etc/ncid/ncidd.conf''' %(port,templatefile) mv_common.runcmd(cmd) mv_common.pacinstall("ncidd") mv_common.add_service("ncidd") else: logging.debug(" Callerid will not run") mv_common.pacremove("ncidd") mv_common.remove_service("ncidd") return def setup_splash(Usebootsplash): if Usebootsplash == "1": logging.info(" Enabling splash") cmd = ''' sed -i "s/^default.*0/default 1/g" /boot/grub/menu.lst''' mv_common.runcmd(cmd) else: logging.info(" Disabling splash") cmd = ''' sed -i "s/^default.*1/default 0/g" /boot/grub/menu.lst''' mv_common.runcmd(cmd) return def setup_hobbit(UseHobbit,SystemType,dbhost): if UseHobbit == "1": if SystemType == "Standalone" or SystemType == "Master_backend": logging.info(" Installing hobbit server") mv_common.pacinstall("hobbitserver") mv_common.add_service("hobbit") else: logging.info(" Installing hobbit client") mv_common.pacinstall("hobbit-client") setup_hobbit_client(dbhost) mv_common.add_service("hobbit-client") else: logging.info(" Removing Hobbit") mv_common.pacremove("hobbit") mv_common.pacremove("hobbit-client") mv_common.remove_service("hobbit-client") mv_common.remove_service("hobbitserver") cmd = "rm -f /data/srv/httpd/htdocs/hobbit/index.html" mv_common.runcmd(cmd) return def setup_hobbit_client(dbhost): logging.info(" Configuring hobbit client") logging.debug(" hobbit server is %s:", dbhost) cmd='''sed -i "s/^BBDISP.*$/BBDISP=%s/g" /data/srv/hobbit/client/etc/hobbitclient.cfg ''' %dbhost mv_common.runcmd(cmd) return def setup_evrouter(UseEvrouter,EvrouterConfig,template): if UseEvrouter == "1": logging.info(" Configuring everouter") logging.debug(" EvrouterConfig is %s:",EvrouterConfig) if EvrouterConfig == "tinker": logging.debug(" tinker mode, not changing the config") return mv_common.pacinstall("evrouter") mv_common.pacinstall("Xvfb") mv_common.cp_and_log(template+"/evrouter/"+EvrouterConfig,"/etc/evrouter.cfg") mv_common.add_service("evrouter") mv_common.add_service("Xvfb") else: logging.info(" Not using evrouter") mv_common.pacremove("evrouter") mv_common.remove_service("evrouter") mv_common.remove_service("Xvfb") return def setup_DNSmasq(RunDHCP,ip,gw,nameserver): if RunDHCP == "1": logging.info(" Configuring dhcp server(dnsmasq)") logging.debug(" ip: %s", ip) logging.debug(" gw: %s", gw) logging.debug(" ns: %s", nameserver) mv_common.pacinstall("dnsmasq") mv_common.pacinstall("mvpmc") mv_common.add_service("dnsmasq") logging.debug(" Setting default route to my gw: %s",gw) try: f = open("/etc/dnsmasq.conf",'r') dnsconf = f.readlines() f.close() except: logging.info(" Couldn't open dnsmasq.conf") return for line in dnsconf: outline = line if re.match("^dhcp-option=3",line): logging.debug(" Setting default route to my gw: %s",gw) outline = "dhcp-option=3,%s\n" %gw if re.match("^dhcp-option=6",line): logging.debug(" Setting dns to my ip: %s",ip) outline = "dhcp-option=6,%s\n" %ip f.write(outline) f.close() logging.debug(" change nfsroot to my ip:%s",ip) cmd = '''sed -i "s/nfsroot=.*:/nfsroot=%s:/g" /data/srv/tftp/pxelinux.cfg/default''' %ip mv_common.runcmd(cmd) logging.debug(" Adding 127.0.0.1 to resolv.conf") logging.debug(" other nameserver is %s",nameserver) try: f = open("/etc/resolv.conf",'r') dns = f.readlines() f.close() except: dns='' logging.debug(" Couldn't open resolv.conf for reading") try: f = open("/etc/resolv.conf",'w') line="search lan\n" f.write(line) line="nameserver 127.0.0.1\n" f.write(line) line="nameserver %s\n" %nameserver f.write(line) for line in dns: f.write(line) f.close() except: logging.debug(" Couldn't open resolv.conf for writing") logging.debug(" setup dongle.config") cmd = ''' sed -i "s/mvpmc -f .*/mvpmc -f \/etc\/helvR10.fon -s %s \& /" /data/srv/tftp/dongle.bin.config ''' %ip #COMMAND="%s/mvpmc -f .*/mvpmc -f \/etc\/helvR10.fon -s ${ip} \& /" #ex ${BASE}/data/srv/tftp/dongle.bin.config </etc/exports''' %templatefile mv_common.add_service("nfsd") mv_common.add_service("nfs-utils") mv_common.add_service("portmap") else: logging.info(" Removing NFS server") mv_common.remove_service("nfsd") return def setup_dyndns(DDnsEnable): if DDnsEnable == "1": logging.info(" Installing Dynamic DNS client") mv_common.pacinstall("inadyn") mv_common.add_service("inadyn") else: logging.info(" Removing Dynamic DNS client") mv_common.pacremove("inadyn") mv_common.remove_service("inadyn") def setup_advanced(systemconfig,data_config): logging.info("____Start of advanced configuration____") create_link = False if systemconfig["SystemType"] == "Master_backend": create_link = True setup_pacman(create_link) setup_ncid_client(systemconfig["dbhost"], systemconfig["TEMPLATES"]+"/ncid.conf.template") setup_ncid_daemon(systemconfig["nciddSerialPort"], systemconfig["TEMPLATES"]+"/ncidd.conf.template", systemconfig["Runncidd"]) setup_splash(systemconfig["Usebootsplash"]) if data_config.SYSTEMTYPE == "MythVantage": setup_hobbit(systemconfig["UseHobbit"], systemconfig["SystemType"], systemconfig["dbhost"]) setup_evrouter(systemconfig["UseEvrouter"], systemconfig["EvrouterConfig"], systemconfig["TEMPLATES"]) systemconfig["mythip"]="192.168.100.myip" systemconfig["mythgw"]="192.168.100.mygw" systemconfig["mythdns"]="192.168.100.100" setup_DNSmasq(systemconfig["RunDHCP"], systemconfig["mythip"], systemconfig["mythgw"], systemconfig["mythdns"]) setup_mythweb(systemconfig["UseMythWEB"]) setup_samba(systemconfig,data_config) setup_NFSshares(systemconfig["UseNFS"], systemconfig["TEMPLATES"]+"/exports.template") setup_dyndns(systemconfig["DDnsEnable"]) logging.info("__End of advanced configuration\n")