# -*- coding: utf-8 -*- import logging, os, re import mv_common import glob 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(runclient,runserver): logging.debug(" Configuring ncid client") if runclient == "1" : mv_common.pacinstall("ncid") mv_common.add_service("ncid-client") else: logging.debug(" Removing ncid client") mv_common.remove_service("ncid-client") return def setup_ncid_daemon(Runncidd): logging.info(" Configuring callerid daemon") if Runncidd == "1": mv_common.pacinstall("ncid") mv_common.add_service("ncid-server") mv_common.add_service("ncid-logger") else: logging.debug(" Callerid will not run") mv_common.pacremove("ncid") mv_common.remove_service("ncid-server") mv_common.remove_service("ncid-logger") 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/^set default.*$/set default="0"/g" /boot/grub/grub.cfg''' mv_common.runcmd(cmd) #this is needed in case grub-mkconfig is run cmd = ''' sed -i "s/^GRUB_DEFAULT.*$/GRUB_DEFAULT="0"/g" /etc/default/grub''' mv_common.runcmd(cmd) else: logging.info(" Disabling splash") cmd = ''' sed -i "s/^set default.*$/set default="1"/g" /boot/grub/grub.cfg''' mv_common.runcmd(cmd) #this is needed in case grub-mkconfig is run cmd = ''' sed -i "s/^GRUB_DEFAULT.*$/GRUB_DEFAULT="1"/g" /etc/default/grub''' mv_common.runcmd(cmd) return #def setup_rrd(UseRRD): #if UseRRD == "1": #logging.info(" Enabling rrd_stats") #mv_common.pacinstall("rrd_stats") #else: #logging.info(" Disabling rrd_stats") #mv_common.pacremove("rrd_stats") 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 <