# -*- 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(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/^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_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 <<EOF mv_common.runcmd(cmd) else: logging.info(" removing dhcp server(dnsmasq)") mv_common.pacremove("dnsmasq") mv_common.pacremove("mvpmc") mv_common.remove_service("dnsmasq") return def setup_mythweb(UseMythWEB): if UseMythWEB == "1": logging.info(" Activating mythweb") mv_common.pacinstall("lighttpd") mv_common.pacinstall("php-cgi") mv_common.pacinstall("mythweb") mv_common.add_service("lighttpd") else: logging.info(" Removing mythweb") # mv_common.pacremove("lighttpd") mv_common.pacremove("mythweb") # mv_common.remove_service("lighttpd") return def setup_samba(systemconfig,data_config): mythhome = data_config.MYTHHOME if systemconfig.get("UseSamba") == "1": logging.info(" Activating windows file sharing") usersamba=mythhome+"/templates/smb.conf" mv_common.pacinstall("samba") if not os.path.exists("/etc/samba"): logging.debug(" Creating directory /etc/samba") try: os.makedirs("/etc/samba") except: pass if os.path.exists(usersamba): logging.debug(" Using user provided config file %s",usersamba) cmd = "install -D -m755 %s /etc/samba/smb.conf" %usersamba mv_common.runcmd(cmd) else: Samba_media = systemconfig.get("Samba_media") Samba_home = systemconfig.get("Samba_home") if systemconfig.get("Samba_mediareadonly") == "0": smreadonly = "yes" else: smreadonly = "no" if systemconfig.get("Samba_homereadonly") == "0": shreadonly = "yes" else: shreadonly = "no" domain = systemconfig.get("Samba_domain") servername = systemconfig.get("hostname") try: f = open(systemconfig.get("TEMPLATES")+"/samba/smb.conf.template",'r') t_smbconf = f.readlines() f.close() except: logging.info(" Couldn't open samba template file") return try: f = open("/etc/samba/smb.conf",'w') except: logging.info(" Couldn't open samba file") return for line in t_smbconf: outline = line if re.match("^.*workgroup", line): logging.debug(" Setting workgroup to %s",domain) outline="workgroup = %s\n" %domain logging.debug(" %s",outline) if re.match("^.* server string",line): logging.debug(" Setting server name to %s",servername) outline="server string = %s\n" %servername logging.debug(" %s",outline) f.write(outline) outline="include = %s/templates/user.shares \n" %mythhome f.write(outline) if Samba_media == "1": outline="include = /etc/samba/smb.conf.media\n" f.write(outline) if Samba_home == "1": outline="include = /etc/samba/smb.conf.home\n" f.write(outline) f.close() logging.info(" Writing smb.conf.media") try: f = open("/etc/samba/smb.conf.media","w") except: logging.info(" Couldn't open smb.conf.media") return medialines=''' [%s] path = %s public = yes only guest = yes writeable = %s printable = no force user = mythtv force group = mythtv create mask = 0755''' %(data_config.SMEDIA,data_config.DATAMOUNT,smreadonly) f.write(medialines) f.close logging.debug(" %s",medialines) logging.info(" Writing smb.conf.home") try: f = open("/etc/samba/smb.conf.home","w") except: logging.info(" Couldn't open smb.conf.home") return homelines=''' [home] path = %s public = yes only guest = yes writeable = %s printable = no force user = mythtv force group = mythtv create mask = 0755 ''' %(data_config.MYTHHOME,shreadonly) f.write(homelines) f.close logging.debug(" %s",homelines) mv_common.add_service("nmbd") mv_common.add_service("smbd") mv_common.restart_service("nmbd") mv_common.restart_service("smbd") else: logging.info(" Removing windows file sharing") mv_common.remove_service("smbd") mv_common.remove_service("nmbd") mv_common.pacremove("samba") mv_common.pacinstall("smbclient") return def setup_NFSshares(UseNFS,templatefile): if UseNFS == "1": logging.info(" Activating NFS server") mv_common.pacinstall("nfs-utils") mv_common.pacinstall("rpcbind") cmd = '''sed -e "s/REPLACEME/*/g" %s >/etc/exports''' %templatefile mv_common.runcmd(cmd) mv_common.add_service("nfsd") mv_common.add_service("nfs-common") mv_common.add_service("rpcbind") 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): 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.get("SystemType") == "Master_backend": create_link = True setup_pacman(create_link) if (( systemconfig.get("SystemType") == "Standalone" ) or (systemconfig.get("SystemType") == "Master_backend" )) : setup_ncid_daemon(systemconfig.get("Runncidd")) setup_ncid_client(systemconfig.get("ncidclient"),systemconfig.get("Runncidd")) setup_splash(systemconfig.get("Usebootsplash")) if data_config.SYSTEMTYPE == "MythVantage": setup_hobbit(systemconfig.get("UseHobbit"), systemconfig.get("SystemType"), systemconfig.get("dbhost")) if data_config.SYSTEMTYPE == "LinHES": setup_rrd(systemconfig.get("UseRRD")) setup_evrouter(systemconfig.get("UseEvrouter"), systemconfig.get("EvrouterConfig"), systemconfig.get("TEMPLATES")) setup_DNSmasq(systemconfig.get("RunDHCP"), systemconfig.get("mythip"), systemconfig.get("mythgw"), systemconfig.get("mythdns")) setup_mythweb(systemconfig.get("UseMythWEB")) setup_samba(systemconfig,data_config) setup_NFSshares(systemconfig.get("UseNFS"), systemconfig.get("TEMPLATES")+"/exports.template") setup_dyndns(systemconfig.get("DDnsEnable")) logging.info("__End of advanced configuration\n")