summaryrefslogtreecommitdiffstats
path: root/abs/core/LinHES-config/mv_advanced.py
diff options
context:
space:
mode:
authorCecil Hugh Watson <knoppmyth@gmail.com>2009-09-26 01:57:08 (GMT)
committerCecil Hugh Watson <knoppmyth@gmail.com>2009-09-26 01:57:08 (GMT)
commit7b29169fff9e7c624890c5edffe85def8a293136 (patch)
tree47753889faa3a2063b66d1c7e7681e703eb1b39a /abs/core/LinHES-config/mv_advanced.py
parentc491dea779dac29afff3578bf8245943817c2339 (diff)
downloadlinhes_pkgbuild-7b29169fff9e7c624890c5edffe85def8a293136.zip
linhes_pkgbuild-7b29169fff9e7c624890c5edffe85def8a293136.tar.gz
linhes_pkgbuild-7b29169fff9e7c624890c5edffe85def8a293136.tar.bz2
LinHES 6.01.00
Diffstat (limited to 'abs/core/LinHES-config/mv_advanced.py')
-rwxr-xr-xabs/core/LinHES-config/mv_advanced.py384
1 files changed, 384 insertions, 0 deletions
diff --git a/abs/core/LinHES-config/mv_advanced.py b/abs/core/LinHES-config/mv_advanced.py
new file mode 100755
index 0000000..4790fcf
--- /dev/null
+++ b/abs/core/LinHES-config/mv_advanced.py
@@ -0,0 +1,384 @@
+# -*- 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_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("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["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["Samba_media"]
+ Samba_home = systemconfig["Samba_home"]
+ if systemconfig["Samba_mediareadonly"] == "1":
+ smreadonly = "yes"
+ else:
+ smreadonly = "no"
+
+ if systemconfig["Samba_homereadonly"] == "1":
+ shreadonly = "yes"
+ else:
+ shreadonly = "no"
+ domain = systemconfig["Samba_domain"]
+ servername = systemconfig["hostname"]
+
+ try:
+ f = open(systemconfig["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")
+ 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("portmap")
+ cmd = '''sed -e "s/REPLACEME/*/g" %s >/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"])
+ if data_config.SYSTEMTYPE == "LinHES":
+ setup_rrd(systemconfig["UseRRD"])
+
+ setup_evrouter(systemconfig["UseEvrouter"],
+ systemconfig["EvrouterConfig"],
+ systemconfig["TEMPLATES"])
+
+ 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")