#!/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