diff options
Diffstat (limited to 'abs/core-testing/LinHES-config-SVN/systemconfig.sh')
-rwxr-xr-x | abs/core-testing/LinHES-config-SVN/systemconfig.sh | 1368 |
1 files changed, 1368 insertions, 0 deletions
diff --git a/abs/core-testing/LinHES-config-SVN/systemconfig.sh b/abs/core-testing/LinHES-config-SVN/systemconfig.sh new file mode 100755 index 0000000..6d63f5c --- /dev/null +++ b/abs/core-testing/LinHES-config-SVN/systemconfig.sh @@ -0,0 +1,1368 @@ +#!/bin/bash +################################################################### +#Script to configure your system based off the values in /etc/systemconfig +#Any changes made to config files will be removed when systemconfig.sh is run +# +#JM +################################################################### +#set -x +. /etc/profile +#MVRELEASE=`cat /etc/mythvantage-release |cut -d" " -f -2` +MVRELEASE=`cat /etc/LinHES-release ` +echo $@ >/tmp/systemconfig.call +echo "----------------------start of systemconfig $@ ----------------------" +BASE="" + +#TEMPLATES="/usr/share/templates" +. /etc/profile +. $MV_ROOT/bin/networkconfig.sh +PACMAN="pacman --noconfirm" +postfix=`cat ${BASE}/usr/local/share/mythtv/.releasetype` +PKGBLACKLIST=$BASE/etc/blacklist.package + +if [ x$1 = x"Mysql_only" ] + then + rm -f /tmp/mysql.txt + sed -e "s/^DBHostName=.*$/DBHostName=$2/" $TEMPLATES/mysql.txt > /tmp/mysql.txt + exit 0 + fi + + +if [ -f /etc/systemconfig ] +then + . /etc/systemconfig + setup_MYTH_vars +TEMPNET="Hostip"$default_interface +echo $TEMPNET +eval MYTHIP=\$${TEMPNET} +else + echo "could not find /etc/systemconfig" + exit 1 +fi + + +function cp_and_log () { + if [ -e $1 ] + then + echo "copying $1 to $2" + cp -rfp "$1" "$2" + else + echo "$1 is not present, skipping..." + fi + +} + + +#----------------------------------------------------- + + +function setupmysql { +#setup mysql.txt to find the database servers +echo "running setup mysql" + if [ $SystemType = "Master_backend" ] + then + if [ $MYTHDHCP = 0 ] + then + #this grabs eth0, as that is all thats supported. +# dbhost=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1` + dbhost=`ifconfig | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'` + sed -e "s/^dbhost=.*$/dbhost=\"$dbhost\"/" /etc/systemconfig >/tmp/systemconfig.old + cp_and_log /tmp/systemconfig.old ${BASE}/etc/systemconfig + ##logic to change master_serverip and backend_serverip in db + + ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s master -a $dbhost + else + + dbhost=$MYTHIP + sed -e "s/^dbhost=.*$/dbhost=\"$dbhost\"/" /etc/systemconfig >/tmp/systemconfig.old + cp_and_log /tmp/systemconfig.old ${BASE}/etc/systemconfig + #logic to change dbhost in db + ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s master -a $dbhost + fi + fi + + if [ $SystemType = "Slave_backend" ] + then + if [ $MYTHDHCP = 0 ] + then + #this grabs eth0, as that is all thats supported. + #slavehost=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1` + slavehost=`ifconfig | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'` + ##logic to change backend_serverip in db + ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s slave -a $slavehost + else + slavehost=$MYTHIP + + #logic to change backend_serverif in db + ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s slave -a $slavehost + fi + fi + + MYSQLTXT=${BASE}/usr/share/mythtv/mysql.txt + if [ $SystemType = "Standalone" ] + then + sed -e "s/^DBHostName=.*$/DBHostName="localhost"/" $TEMPLATES/mysql.txt > $MYSQLTXT + else + sed -e "s/^DBHostName=.*$/DBHostName=$dbhost/" $TEMPLATES/mysql.txt > $MYSQLTXT + fi + rm ${BASE}/home/mythtv/.mythtv/mysql.txt + rm ${BASE}${MV_ROOT}/bin/mythtv/.mythtv/mysql.txt + if [ -f ${BASE}/home/mythtv/templates/mysql.txt ] + then + cp_and_log ${BASE}/home/mythtv/templates/mysql.txt $MYSQLTXT + fi + + chmod 755 $MYSQLTXT + chown mythtv $MYSQLTXT + +} + +function setupmysqlnetwork(){ +MFILE=etc/my.cnf +grep "#skip-networking" $BASE/$MFILE +status=$? + + + + if [ $SystemType = "Standalone" ] + then + sed -ie "s/^#skip-networking/skip-networking/g" $BASE/$MFILE + if [ $status = 0 ] + then + sudo sv restart mysql + echo "restarting mysql with no network" + fi + + fi + + if [ $SystemType = "Master_backend" ] + then + sed -ie "s/^skip-networking/#skip-networking/g" $BASE/$MFILE + if [ $status = 1 ] + then + sudo sv restart mysql + echo "restarting mysql with network" + fi + + fi + + +} + + +function settimezone { +#set the timezone +if [ x"$timezone" = x ] +then + timezone="unknown" +fi +rm ${BASE}/etc/localtime +echo $timezone +ln -s "/usr/share/zoneinfo/$timezone" ${BASE}/etc/localtime + sed -e "s~^TIMEZONE=.*$~TIMEZONE=\"${timezone}\"~" ${BASE}/etc/rc.conf > $TEMPLATES/rc.conf + + # echo CLOCK="UTC" > ${BASE}/etc/conf.dclock + # echo CLOCK_SYSTOCH="yes" >> ${BASE}/etc/conf.d/clock + # echo TIMEZONE="$timezone" >> ${BASE}/etc/conf.d/clock +cp_and_log $TEMPLATES/rc.conf ${BASE}/etc/rc.conf +#Check for Atomic Ant + if grep disablemodules=agpart,intel_agp /proc/cmdline >/dev/null + then + cat /etc/rc.conf | sed -e '/MOD_BLACKLIST/ c\MOD_BLACKLIST=($ALSABLACKLIST agpart intel_agp)' > /etc/rc.conf.aa + mv /etc/rc.conf /etc/rc.conf.preaa + mv /etc/rc.conf.aa /etc/rc.conf +# else +# exit 1 + fi + +} + + +function setupreceiver { + case $ReceiverType in + tinker) echo "do nothing" + ;; + Serial) echo "setup serial lirc" + sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage + echo "lirc_serial #lirc" >> ${BASE}/etc/modules.mythvantage + load-modules-mythvantage.sh + ;; + Usb-imon) echo "setup receiver-usb-imon" + sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage + echo "lirc_imon #lirc" >> ${BASE}/etc/modules.mythvantage + load-modules-mythvantage.sh + ;; + Hauppauge) echo "setup hauppauge reciever (lirc_i2c)" + sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage + echo "lirc_i2c #lirc" >> ${BASE}/etc/modules.mythvantage + cp_and_log $TEMPLATES/modules/lirc_i2c.conf ${BASE}/etc/modprobe.d/lirc_i2c.conf + rmmod lirc_i2c 2>/dev/null + load-modules-mythvantage.sh + ;; + *) sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage + ;; + esac + + +} + +function setupremote { + case $Remotetype in + no_remote) echo "No remote selected" + daemon_remove="lircd $daemon_remove" + ;; + tinker) echo "Remote in tinker mode" + ;; + *) echo "Setup remote" + mv ${BASE}/etc/lircd.conf ${BASE}/etc/lircd.conf.`date +%Y-%m-%d-%H-%M` + cd $TEMPLATES/remotes/$Remotetype + for i in lircd* + do + cat $i >> ${BASE}/etc/lircd.conf + done + cp -f lircrc* $BASE/etc/lircrc 2> /dev/null + if [ -f $TEMPLATES/LCD/$LCDtype/lircrc ] + then + cat $TEMPLATES/LCD/$LCDtype/lircrc >> /etc/lircrc + cat $TEMPLATES/LCD/$LCDtype/lircd.conf >> /etc/lircd.conf + fi + if [ -f $TEMPLATES/transmit/$Blastertype/lircd.conf ] + then + cat $TEMPLATES/transmit/$Blastertype/lircd.conf >> ${BASE}/etc/lircd.conf + fi + chmod 755 /etc/lircrc + daemon_add="lircd $daemon_add" + sv hup lircd + + if [ ! -e /home/mythtv/.mythtv/lircrc ] + then + if [ ! -d /home/mythtv/.mythtv ] + then + mkdir /home/mythtv/.mythtv + chown mythtv:mythtv /home/mythtv/.mythtv + fi + + ln -s /etc/lircrc /home/mythtv/.mythtv/lircrc 2> /dev/null + fi + if [ ! -e /home/mythtv/.lircrc ] + then + + ln -s /etc/lircrc /home/mythtv/.lircrc 2> /dev/null + fi + + + ;; +esac + +} + +function setupblaster { + #cd $TEMPLATES/transmit/$Blastertype + #for i in lircd* + #do + # cat lircd.conf >> ${BASE}/etc/lircd.conf + #done + # REMOTE_NAME${BASE}/usr/bin/change_chan.sh=`grep name lircd.conf* |awk -F" " ' { print $2 } '` + sed -e "s/^REMOTE_NAME=.*$/REMOTE_NAME=${Blastertype} /" $TEMPLATES/change_chan.sh > ${BASE}/usr/bin/change_chan.sh + chmod 755 ${BASE}/usr/bin/change_chan.sh + #channel change script change + setupremote + +} + +function setupevrouter { + if [ x$UseEvrouter = x1 ] + then + case x$EvrouterConfig in + xtinker ) + echo "do nothing for evrouter" + ;; + x ) echo "empty evrouter" + ;; + * ) echo "setup evrouter for $EvrouterConfig " + cp_and_log $TEMPLATES/evrouter/$EvrouterConfig /etc/evrouter.cfg + daemon_add="evrouter Xvfb $daemon_remove" + + ;; + esac + else + # disable evrouter + daemon_remove="evrouter Xvfb $daemon_remove" + fi + + + + +} + +function setupLCD { + case x$LCDtype in + xtinker) echo "do nothing" + ;; + xno_lcd) echo "disabling lcd" + sv down lcdd + load-modules-mythvantage.sh UNLOAD LCD + sed -i -e '/.*#LCD/d' ${BASE}/etc/modules.mythvantage + daemon_remove="lcdd $daemon_remove" + ;; + x) echo "empty lcd" ;; + + *) echo "setup lcd" + if [ -f $TEMPLATES/LCD/$LCDtype/modules ] + then + sed -i -e '/.*#LCD/d' ${BASE}/etc/modules.mythvantage + cat $TEMPLATES/LCD/$LCDtype/modules >> ${BASE}/etc/modules.mythvantage + #should also modprobe + fi + + + if [ -f $TEMPLATES/LCD/$LCDtype/LCDd.conf ] + then + cp_and_log $TEMPLATES/LCD/$LCDtype/LCDd.conf /etc + # install="lcdproc $install" + daemon_add="lcdd $daemon_add" + load-modules-mythvantage.sh + RESTART_FE="true" + RESTART_LCD="true" + fi + #check if lirc capable,if so then call setupremote + if [ -f $TEMPLATES/LCD/$LCDtype/lircrc ] + then + setupremote + fi + ;; + esac + +} + + + +function scrubnfs { + cp_and_log /etc/fstab $TEMPLATES/fstab.conf.template + grep -v nfs $TEMPLATES/fstab.conf.template > ${BASE}/etc/fstab + } + +function setupfstab () { +# setupfstab $NFSserver $NFSshare $NFSmount + echo "$1 $2 nfs" >> ${BASE}/etc/fstab + if [ ! -e "$2" ] + then + mkdir -p "$2" + chown mythtv:mythtv "$2" + fi + if [ x$DCONFIG = x ] + then + mount $2 & + fi + +} + +function setupncidclient +{ + sed -e "s/^set Host.*$/set Host $dbhost /" $TEMPLATES/ncid.conf.template >${BASE}/etc/ncid/ncid.conf +} + +function setupnciddaemon { + if [ x$Runncidd = x1 ] + then + cp_and_log /etc/ncid/ncidd.conf $TEMPLATES/ncidd.conf.template + sed -e "s/.*set ttyport.*$/set ttyport = \/dev\/$nciddSerialPort /" $TEMPLATES/ncidd.conf.template >${BASE}/etc/ncid/ncidd.conf + fi + +} + +function setupntp () { + #this is used for backend or standlone types + if [ $1 = "1" ] + then + #MBE/STD use deafult + echo "Not changing ntp config" + else + #echo "server $dbhost" >> ${BASE}/etc/ntp.conf + echo "setting ntp to $dbhost" + sed -i "s/pool.ntp.org/$dbhost/g" ${BASE}/etc/ntp.conf + fi + + +} + +function setupplugins (){ + +pkglistinstall="" +pkglistremove="" +#default enabled +for i in mythcontrols mythgallery mythmovietime mythmusic mythsmolt mythvideo +do + eval pkgvalue=\$${i} + if [ x$pkgvalue = x ] + then + pkglistinstall="$pkglistinstall $i$postfix" + else + if [ x$pkgvalue = x1 ] + then + pkglistinstall="$pkglistinstall $i$postfix" + else + pkglistremove="$pkglistremove $i$postfix" + fi + fi +done + +#default disabled +for i in mythphone mytharchive mythbrowser mythnews mythgame mythflix mythweather mythappletrailers mythstream mythvodka +do + eval pkgvalue=\$${i} + if [ x$pkgvalue = x ] + then + pkglistremove="$pkglistremove $i$postfix" + else + if [ x$pkgvalue = x1 ] + then + pkglistinstall="$pkglistinstall $i$postfix" + else + pkglistremove="$pkglistremove $i$postfix" + fi + fi +done +#everything else +for i in miro xe romdb xine dvdcss webmin +do + eval pkgvalue=\$${i} + case $i in + xine) + if [ x$pkgvalue = x1 ] + then + pkglistinstall="$pkglistinstall xine-ui" + else + pkglistremove="$pkglistremove xine-ui" + fi + ;; + dvdcss) + if [ x$pkgvalue = x1 ] + then + pkglistinstall="$pkglistinstall libdvdcss" + else + pkglistremove="$pkglistremove libdvdcss" + fi + ;; + webmin) + ##Daemon_add is here because webmin is on the software page instead of the advanced screen + if [ x$pkgvalue = x1 ] + then + pkglistinstall="$pkglistinstall webmin" + daemon_add="webmin $daemon_add" + else + pkglistremove="$pkglistremove webmin" + daemon_remove="webmin $daemon_remove" + fi + ;; + *) + if [ x$pkgvalue = x1 ] + then + pkglistinstall="$pkglistinstall $i" + else + pkglistremove="$pkglistremove $i" + fi + ;; +esac + +done + + +install="$pkglistinstall $install" +remove="$pkglistremove $remove" + +} +function LCDcheck () { + case x$LCDtype in + xtinker) echo "do nothing lcd " + ;; + xno_lcd) echo "no lcd " + ;; + xxosd) install="xosd lcdproc $install" + ;; + x) echo "lcd empty " + ;; + *) + install="lcdproc $install" + ;; +esac +} + + +function packages () { +#see which plugins need to be installed +echo " Starting to install Packages" +setupplugins +LCDcheck +if [ ! -f $PKGBLACKLIST ] +then + touch $PKGBLACKLIST +fi + for i in $remove + do + if [ ! x$i = xnone ] + then + echo "-----------$i --------------" + grep -q $i $PKGBLACKLIST + if [ $? = 1 ] + then + pacman -Q $i 2>/dev/null + #VAR=`pacman -Q $i 2>&1 ` + if [ $? = 0 ] + then + if [ $i = "mythweb$postfix" ] + then + pacman --noconfirm -R mythweb$postfix + echo removed $i + else + pacman --noconfirm -Rs $i + echo removed $i + fi + fi + else + echo "$i is black listed" + fi + fi + done + + + for i in $install + do + if [ ! x$i = xnone ] + then + echo "-----------$i --------------" + grep -q $i $PKGBLACKLIST + if [ $? = 1 ] + then + pacman -Q $i 2>/dev/null + #VAR=`pacman -Q $i 2>&1 ` + # echo $VAR |grep -vq error: + + if [ ! $? = 0 ] + then + pacman --noconfirm -Sf $i + echo installed $i + else + echo "$i already installed" + fi + else + echo "$i is black listed" + fi + fi + done +} + +function daemons { +echo "Daemons on boot" + + for i in $daemon_remove + do + sv check $i 1>/dev/null + status=$? + if [ $status -eq 0 ] + then + sv down $i + fi + remove_service.sh $i + done + + + for i in $daemon_add + do + sv check $i 1>/dev/null + status=$? + add_service.sh $i + + if [ $status -eq 0 ] + then + case $i in + mysql*) sv hup $i + ;; + mythback*) sv hup $i + ;; + lirc* ) sv hup $i + ;; + frontend) sv check frontend 1>/dev/null + ;; + + smbd ) sv hup $i + ;; + nmbd ) sv hup $i + ;; + evrouter) sv restart $i + ;; + *) sv down $i + sleep 1 + sv up $i + ;; + esac + fi + + done + +} + + +function services +{ +ser_install="" +ser_daemon_add="" +ser_remove="" +ser_daemon_remove="" +if [ x$UseEvrouter = x1 ] +then + ser_daemon_add="evrouter Xvfb $ser_daemon_add" +else + ser_daemon_remove="evrouter Xvfb $ser_remove" +fi + +if [ x$RunDHCP = x1 ] +then + ser_daemon_add="dnsmasq $ser_daemon_add" + ser_install="dnsmasq mvpmc $ser_install" + +else + ser_daemon_remove="dnsmasq $ser_daemon_remove" + ser_remove="dnsmasq mvpmc $ser_remove" +fi + +if [ x$RunFrontend = x1 ] +then + ser_daemon_add="frontend hal $ser_daemon_add" + ser_install=" $ser_install" + showX=true + else + ser_daemon_remove="frontend hal $ser_daemon_remove" + ser_remove="$ser_remove" + fi + +if [ x$UseMythWEB = x1 ] +then + ser_install="lighttpd mythweb$postfix $ser_install" + ser_daemon_add="lighttpd $ser_daemon_add" + else + ser_remove="mythweb$postfix $ser_remove" + ser_daemon_remove="$ser_daemon_remove" + fi + +#samba +if [ x$UseSamba = x1 ] +then + ser_install="samba $ser_install" + ser_daemon_add="nmbd smbd $ser_daemon_add " + if [ x$Samba_mediareadonly = x1 ] + then + smreadonly="no" + else + smreadonly="yes" + fi + + if [ x$Samba_homereadonly = x1 ] + then + shreadonly="no" + else + shreadonly="yes" + fi + + if [ ! -d ${BASE}/etc/samba ] + then + mkdir ${BASE}/etc/samba + fi + + if [ -f ${BASE}/data/home/mythtv/templates/smb.conf ] + then + install -D -m755 ${BASE}/data/home/mythtv/templates/smb.conf ${BASE}/etc/samba/smb.conf + else + sed -e "s/^.*workgroup =.*$/ workgroup = $Samba_domain/g " \ + -e "s/^.*server string = .*$/ server string = $hostname/g" $TEMPLATES/samba/smb.conf.template > ${BASE}/etc/samba/smb.conf + + if [ x$Samba_media = "x1" ] + then + echo "include = /etc/samba/smb.conf.media" >> ${BASE}/etc/samba/smb.conf + sed -e "s/^.*writeable.*$/writeable = $smreadonly/g" $TEMPLATES/samba/smb.conf.media > ${BASE}/etc/samba/smb.conf.media + fi + + if [ x$Samba_home = "x1" ] + then + echo "include = /etc/samba/smb.conf.home" >> ${BASE}/etc/samba/smb.conf + sed -e "s/^.*writeable.*$/writeable = $shreadonly/g" $TEMPLATES/samba/smb.conf.home > ${BASE}/etc/samba/smb.conf.home + + fi + + fi +else + ser_remove="samba $ser_remove" + ser_install="smbclient $ser_install" + ser_daemon_remove="smbd nmbd $ser_daemon_remove" +fi + + +if [ x$UseNFS = x1 ] +then + ser_install="nfs-utils portmap $ser_install" + ser_daemon_add="nfsd nfslock portmap $ser_daemon_add" + sed -e "s/REPLACEME/*/g" $TEMPLATES/exports.template > ${BASE}/etc/exports + +else + ser_remove="$ser_remove" + ser_daemon_remove="nfsd $ser_daemon_remove" +fi + +if [ x$Runncidd = x1 ] +then + ser_daemon_add="ncidd ncid $ser_daemon_add" + ser_install="ncid $ser_install" +else + ser_daemon_remove="ncidd ncid $ser_daemon_remove" + ser_remove="ncid $ser_remove" +fi + + +if [ x$UseEvrouter = x1 ] +then + ser_install="evrouter Xvfb $ser_install" + else + ser_remove="evrouter $ser_remove" +fi + + + + +#Setting the default, just to avoid the or statement.. +#if [ x$UseHobbit = x ] +#then +# UseHobbit=0 +#fi + +#if [ x$UseHobbit = x1 ] +#then +# case $SystemType in +# Standalone|Master_backend ) +# ser_daemon_add="hobbit $ser_daemon_add" +# ser_install="hobbitserver $ser_install" +# ;; +# +# *) ser_daemon_add="hobbit-client $ser_daemon_add" +# ser_install="hobbit-client $ser_install" +# ;; +# esac +#else +# ser_daemon_remove="hobbit hobbit-client $ser_daemon_remove" +# ser_remove="hobbit-client hobbitserver $ser_remove" +# rm -f /data/srv/httpd/htdocs/hobbit/index.html +# +# fi + + + +} + + + +function setupsleep { +if [ x$AutoShutdown = x1 ] +then + cronshutdowntime="" + if [ x$Shutdowntime != x-1 ] + then + cronshutdowntime=$Shutdowntime + fi + if [ x$Shutdowntime2 != x-1 ] + then + if [ x$cronshutdowntime = x ] + then + cronshutdowntime=$Shutdowntime2 + else + cronshutdowntime="${cronshutdowntime},${Shutdowntime2}" + fi + fi + + sed -e "s/HOUR/$cronshutdowntime/g" $TEMPLATES/cron.template | crontab - -u mythtv +else + sed -e "/00 HOUR.*/d" $TEMPLATES/cron.template | crontab - -u mythtv +fi + +} + + +function setuppacman () { +#setup link to httpd dir +echo "Configuring pacman" + 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 + + #sed -e "s/REPLACEME/$dbhost/g" $TEMPLATES/sources/svc_pkg > /etc/pacman.d/svc_pkg + + +} + + +function setupzipcode () { + if [ ! x$zipcode = x ] + then + ${MV_ROOT}/bin/restore_default_settings.sh -c ZIP -z $zipcode + #Let's also speed things up for those in North America + mkdir /usr/bin/perlbin/vendor/tv_grabbers_non_na + mv /usr/bin/perlbin/vendor/tv_grab_* /usr/bin/perlbin/vendor/tv_grabbers_non_na + mv /usr/bin/perlbin/vendor/tv_grabbers_non_na/tv_grab_na* /usr/bin/perlbin/vendor/ + fi +} + +function process_nfsmap () { +#first look for a local copy of nfsmap +if [ $1 = noip ] +then + if [ -f /data/home/mythtv/templates/nfsmap ] + then + NFSMAP="/data/home/mythtv/templates/nfsmap" + else + mv -f /tmp/nfsmap /tmp/nfsmap.old + wget -O /tmp/nfsmap http://$dbhost:1337/templates/nfsmap + if [ $? = 0 ] + then + NFSMAP="/tmp/nfsmap" + fi + fi +else + mv -f /tmp/nfsmap /tmp/nfsmap.old + wget -O /tmp/nfsmap http://$1:1337/templates/nfsmap + if [ $? = 0 ] + then + NFSMAP="/tmp/nfsmap" + fi +fi + + if [ -f $NFSMAP ] + then + #read in file + while read line + do + NFSserver=`echo "$line"|cut -d" " -f1` + NFSmount=`echo "$line"|cut -d" " -f2` + setupfstab $NFSserver $NFSmount + done <$NFSMAP + else + echo "couldn't find nfsmap" + + fi +} + +function setupcnfs () { + scrubnfs + if [ $HaveCentralNFS = "yes" ] + then + case x$NFSserver in + xfile:nfsmap ) + process_nfsmap noip + ;; + *:nfsmap ) + nfsmapip=`echo "$NFSserver" | cut -d: -f1 ` + process_nfsmap $nfsmapip + ;; + *) setupfstab $NFSserver $NFSmount + esac + + #if [ ! x"$NFSserver" = "xfile:nfsmap" ] + #then + # setupfstab $NFSserver $NFSmount + #else + # process_nfsmap + #fi + else + echo "fe_nfs" + #if no central nfs found, then use the mbe. + if [ $SystemType = "Frontend_only" ] + then + setupfstab ${dbhost}:/myth /myth + fi + fi + +} + +function setupbootsplash () { + +if [ x$Usebootsplash = x1 ] +then + COMMAND="%s/^default.*0/default 1/g" +else + COMMAND="%s/^default.*1/default 0/g" +fi + +ex ${BASE}/boot/grub/menu.lst <<EOF +:$COMMAND +:wq +EOF + +} + +function setuphobbitclient () { +COMMAND="%s/^BBDISP=.*$/BBDISP=$dbhost/g" + + +ex ${BASE}/data/srv/hobbit/client/etc/hobbitclient.cfg <<EOF +:$COMMAND +:wq +EOF + +} + +function setupSyslog () { +COMMAND="%s/^destination d_remote.*$/destination d_remote \{tcp\(\"${dbhost}\" port\(514\)\) \;\} \;/" +ex ${BASE}/etc/syslog-ng.conf <<EOF +:$COMMAND +:wq +EOF + + + + +} + +function setupfuncminion () { +COMMAND="%s/^certmaster.*$/certmaster = ${dbhost}/" +ex ${BASE}/etc/func/minion.conf <<EOF +:$COMMAND +:wq +EOF +} + +function setupDNSMASQ(){ +if [ x$RunDHCP = x1 ] +then + echo "DNSMASQ setup" + +#set default route to my GW +COMMAND="%s/^dhcp-option=3.*$/dhcp-option=3,${route}/" +ex ${BASE}/etc/dnsmasq.conf <<EOF +:$COMMAND +:wq +EOF + +#setup dns to my ip +COMMAND="%s/^dhcp-option=6.*$/dhcp-option=6,${ip}/" +ex ${BASE}/etc/dnsmasq.conf <<EOF +:$COMMAND +:wq +EOF + + +#change nfsroot to my ip +COMMAND="%s/nfsroot=.*:/nfsroot=${ip}:/" +ex ${BASE}/data/srv/tftp/pxelinux.cfg/default <<EOF +:$COMMAND +:wq +EOF + +#add 127.0.0.1 to /etc/resolv.conf + echo "search lan" > ${BASE}/etc/resolv.conf + echo "nameserver 127.0.0.1" >> ${BASE}/etc/resolv.conf + echo "nameserver $nameserver" >> ${BASE}/etc/resolv.conf +fi + +#setup dongle.config +COMMAND="%s/mvpmc -f .*/mvpmc -f \/etc\/helvR10.fon -s ${ip} \& /" +ex ${BASE}/data/srv/tftp/dongle.bin.config <<EOF +:$COMMAND +:wq +EOF + + + +#setup dongle.config + +} + +function reloadfe(){ + PID=`ps -ef |grep mythfrontend|grep -v grep |awk '{print $2 }'` + /usr/bin/backend_control.sh clearcache behost $dbhost + if [ x$RESTART_LCD = xtrue ] + then + killall -9 mythlcdserver + fi + if [ x = x$PID ] + then + echo "Mythfrontend not running, will not reload" + else + kill -s USR1 $PID + fi + exit 0 + +} + + +function setup_db (){ + + install="mysql avahli" + daemon_add="mysql" + packages + daemons +status=1 +mysqlstatus=1 +while [ ! $status = 0 ] +do + sv stop mysql + sleep 1 + sv start mysql + mysqlstatus=$? + if [ $mysqlstatus = 0 ] + then + mysql -e "show databases;" + showstatus=$? + if [ $showstatus = 0 ] + then + pacman --noconfirm -R mythdb-initial + pacman --noconfirm -S mythdb-initial + $MV_ROOT/bin/restore_default_settings.sh -c load + if [ $SystemType = "Master_backend" ] + then + $MV_ROOT/bin/restore_default_settings.sh -c BECONFIG -s master -a $dbhost + fi + #update database to allow user jobs on this host. + $MV_ROOT/bin/restore_default_settings.sh -c USERJOBALLOW + $MV_ROOT/bin/restore_default_settings.sh -c ACCESSCONTROL + if [ -d /data/srv/mysql/mythconverg ] + then + pacman --noconfirm -R webcalendar + pacman --noconfirm --nodeps -S webcalendar + status=0 + fi + fi + fi +done +} + +function setup_web_auth { + if [ x$UseMythWEB_auth = x1 ] + then + #enable auth + sed -ie "s/^.*include.*auth-inc.conf.*$/include \"\/etc\/lighttpd\/auth-inc.conf\"/g" /etc/lighttpd/lighttpd.conf + else + #disable auth + sed -ie "s/^.*include.*auth-inc.conf.*$/#include \"\/etc\/lighttpd\/auth-inc.conf\"/g" /etc/lighttpd/lighttpd.conf + fi + sudo sv restart lighttpd + +} + +#----------------------------------------------------MAIN PROGRAM------------------------------------------- +#misc,sleep,hostype,advanced,audio +eval LAST=\$$# +LIST=`echo $LAST | tr , " " ` + +hosttypechange="false" + + +for i in $LIST +do +echo $i +case $i in + misc) showmisc="true" + ;; + sleep) showsleep="true" + ;; + hostype) showhost="true" + showX="true" + ;; + hostypec) hosttypechange="true" + ;; + advanced) showadvanced="true" + ;; + audio) showaudio="true" + ;; + network) shownetwork="true" + ;; + advancedX) showX="true" + ;; + webuser) setup_web_auth + ;; + restartfe) killall -9 mythfrontend + killall -9 mythwelcome + exit 0 + ;; + reloadfe) reloadfe + ;; + + this_is_install) MV_NEW_INSTALL="true" + ;; + + esac +done + +if [ x$MV_NEW_INSTALL = xtrue ] +then + hosttypechange="false" +fi + + + +# exit 1 + +#network +if [ x"$shownetwork" = xtrue ] +then + OLDHOSTNAME=`hostname` + NEWHOSTNAME=$hostname + if [ ! $OLDHOSTNAME = $NEWHOSTNAME ] + then + + ${MV_ROOT}/bin/restore_default_settings.sh -cuhostname -o -h$OLDHOSTNAME + RESTART_FE="true" + hostname $NEWHOSTNAME + if [ $SystemType != "Frontend_only" ] + then + sv restart mythbackend + fi + + fi + + setup_network + CMDLINE=$(cat /proc/cmdline) + echo $CMDLINE |grep -q netboot + NETBOOT=$? + if [ x$NETBOOT = x1 ] + then + echo "loading network" + ${BASE}/etc/net/scripts/network.init reload + ${BASE}/etc/net/scripts/network.init restart + else + echo "netboot, will not start network" + fi +fi + + +if [ x$showhost = "xtrue" ] +then +case $SystemType in + Standalone) + setupntp 1 + services + if [ x$hosttypechange = "xtrue" ] + then + setup_db + fi + if [ -f ${BASE}/etc/avahi/services/mysql.service ] + then + rm -f ${BASE}/etc/avahi/services/mysql.service + sudo sv restart avahi + fi + + install="mysql mythdb-initial avahli portmap nfslock local-website $ser_install" + + + remove="none $ser_remove" + + daemon_add="mysql mythbackend avahi portmap nfslock netfs lighttpd $ser_daemon_add" + daemon_remove="none $ser_daemon_remove" + + ;; + Master_backend) + setupntp 1 + services + + if [ ! -f ${BASE}/etc/avahi/services/mysql.service ] + then + mkdir ${BASE}/etc/avahi/services + cp $TEMPLATES/mysql.service ${BASE}/etc/avahi/services/mysql.service + sudo sv restart avahi + fi + + install="mysql mythdb-initial avahi portmap nfslock local-website myth2ipod mythtv-status $ser_install " + remove="$ser_remove" + + daemon_add="mysql mythbackend avahi portmap nfslock netfs lighttpd $ser_daemon_add" + daemon_remove="$ser_daemon_remove" + ;; + Slave_backend) + setupntp 0 + services + if [ x$hosttypechange = "xtrue" ] + then + setup_db + fi + if [ -f ${BASE}/etc/avahi/services/mysql.service ] + then + rm -f ${BASE}/etc/avahi/services/mysql.service + sudo sv restart avahi + fi + + #cp $TEMPLATES/mysql.service ${BASE}/etc/avahi/services/mysql.service + install="mysql avahi local-website portmap nfslock $ser_install " + remove=" $ser_remove" + + daemon_add="mythbackend avahi portmap nfslock netfs lighttpd $ser_daemon_add" + daemon_remove="$ser_daemon_remove" + ;; + Frontend_only) + #Add values for services + setupntp 0 + services + if [ -f ${BASE}/etc/avahi/services/mysql.service ] + then + rm -f ${BASE}/etc/avahi/services/mysql.service + sudo sv restart avahi + fi + + install="libmysqlclient mysql-clients portmap nfslock avahi local-website $ser_install" + remove="mysql mythweb$postfix $ser_remove" + + daemon_add="avahi portmap nfslock netfs lighttpd $ser_daemon_add " + daemon_remove="mysql mythbackend $ser_daemon_remove" + ;; + + +esac +#setupSyslog + +fi + +#apply these to ALL types + + + + +#systemtype + +if [ x$showhost = "xtrue" ] +then + setupmysqlnetwork + setupmysql + setupremote + #grab the new dbhost key + #/usr/bin/grabkey.py +fi + +#audio + +if [ x$showaudio = "xtrue" ] +then + #setupsoundtype + if [ ! x$Audiotype = xtinker ] + then + ${MV_ROOT}/bin/soundconfig.sh -t real -i $Audiotype -d $SoundDevice + fi +fi + +#should always run +packages + +#misc + +if [ x$showmisc = "xtrue" ] +then + setupzipcode + settimezone + setupcnfs +fi + +#sleep +if [ x$showsleep = "xtrue" ] +then + setupsleep +fi + +if [ x$showX = "xtrue" ] +then + ${MV_ROOT}/bin/xconfig.sh +fi + +#advanced +if [ x$showadvanced = "xtrue" ] +then + if [ ! x$showhost = "xtrue" ] + then + services + install="none $ser_install" + remove="none $ser_remove" + daemon_add=" none $ser_daemon_add" + daemon_remove="none $ser_daemon_remove" + packages + + + if [ x$SystemType = xMaster_backend ] + then + setuppacman link + else + setuppacman + fi + fi + setupncidclient + setupnciddaemon + setupbootsplash + setuphobbitclient + setupreceiver + setupevrouter + setupblaster + setupLCD + setupDNSMASQ + +fi + + + +daemons +#add check for lcd, and restart if needed. + +if [ x$RESTART_FE = xtrue ] +then + reloadfe +fi + + + + + +case $SystemType in + Standalone) smoltsystem=6 + MVRELEASE="$MVRELEASE (Standalone)" + ;; + Master_backend) + if [ x$RunFrontend = x1 ] + then + smoltsystem=2 + MVRELEASE="$MVRELEASE (MBE with Frontend)" + else + smoltsystem=1 + MVRELEASE="$MVRELEASE (MBE)" + fi + ;; + Slave_backend) + if [ x$RunFrontend = x1 ] + then + smoltsystem=5 + MVRELEASE="$MVRELEASE (SLAVE with Frontend)" + else + smoltsystem=5 + MVRELEASE="$MVRELEASE (SLAVE)" + fi + ;; + Frontend_only) + smoltsystem=3 + MVRELEASE="$MVRELEASE ( Frontend only)" + ;; +esac +echo $MVRELEASE > /etc/os_myth_release +echo "systemtype=$smoltsystem" > /home/mythtv/.mythtv/smolt.info 2>/dev/null +echo "remote=$Remotetype" >> /home/mythtv/.mythtv/smolt.info 2>/dev/null + |