summaryrefslogtreecommitdiffstats
path: root/abs/core/live-installer/systemconfig.sh
diff options
context:
space:
mode:
authorJames Meyer <James.meyer@operamail.com>2008-10-02 03:19:12 (GMT)
committerJames Meyer <James.meyer@operamail.com>2008-10-02 03:19:12 (GMT)
commit0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a (patch)
treec0aa2c0b53c317be87eacfcb77b63f53f1f415e7 /abs/core/live-installer/systemconfig.sh
downloadlinhes_pkgbuild-0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a.zip
linhes_pkgbuild-0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a.tar.gz
linhes_pkgbuild-0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a.tar.bz2
initial import
Diffstat (limited to 'abs/core/live-installer/systemconfig.sh')
-rwxr-xr-xabs/core/live-installer/systemconfig.sh1255
1 files changed, 1255 insertions, 0 deletions
diff --git a/abs/core/live-installer/systemconfig.sh b/abs/core/live-installer/systemconfig.sh
new file mode 100755
index 0000000..909119e
--- /dev/null
+++ b/abs/core/live-installer/systemconfig.sh
@@ -0,0 +1,1255 @@
+#!/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`
+
+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
+TEMPNET="Hostip"$default_interface
+echo $TEMPNET
+eval MYTHIP=\$${TEMPNET}
+else
+ echo "could not find /etc/systemconfig"
+ exit 1
+fi
+
+
+
+#-----------------------------------------------------
+
+
+function setupmysql {
+#setup mysql.txt to find the database servers
+ 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 /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 /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/local/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}/data/home/mythtv/.mythtv/mysql.txt
+ rm ${BASE}${MV_ROOT}/bin/mythtv/.mythtv/mysql.txt
+ if [ -f ${BASE}/data/home/mythtv/templates/mysql.txt ]
+ then
+ cp ${BASE}/data/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 $TEMPLATES/rc.conf /etc/rc.conf
+
+}
+
+
+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
+ /usr/bin/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
+ /usr/bin/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 lircrc ${BASE}/etc/lircrc
+ 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
+ ;;
+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 $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
+ /usr/bin/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 -f $TEMPLATES/LCD/$LCDtype/LCDd.conf /etc
+ # install="lcdproc $install"
+ daemon_add="lcdd $daemon_add"
+ /usr/bin/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 /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 {
+ cp -f /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
+
+}
+
+function setupntp () {
+cat > ${BASE}/etc/ntp.conf << EOF
+# default restrictions
+restrict default noquery notrust nomodify
+# NTP drift file - used to keep track of your system clocks
+# time deviation
+driftfile /etc/ntp.drift
+
+# NTP log file
+logfile /var/log/ntp.log
+# override the default restrictions here, servers that can query
+restrict 192.168.0.0 mask 255.255.0.0 nomodify
+restrict 10.0.0.0 mask 255.0.00 nomodify
+
+#servers to sync with
+EOF
+ #this is used for backend or standlone types
+ if [ $1 = "1" ]
+ then
+ echo "server ntp1.cs.wisc.edu" >> ${BASE}/etc/ntp.conf
+ echo "server ntp3.sf-bay.org" >> ${BASE}/etc/ntp.conf
+ echo "restrict ntp1.cs.wisc.edu noquery nomodify" >> ${BASE}/etc/ntp.conf
+ echo "restrict ntp3.sf-bay.org noquery nomodify" >> ${BASE}/etc/ntp.conf
+
+ else
+ echo "server $dbhost" >> ${BASE}/etc/ntp.conf
+ echo "restrict $dbhost noquery nomodify" >> ${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
+ 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
+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
+ 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
+ done
+ # fi
+
+ for i in $install
+ do
+ 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
+ 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 nfslock $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
+
+#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
+ 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}:/data/media /data/media
+ 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
+ kill -s USR1 $PID
+
+}
+
+
+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
+}
+
+
+#----------------------------------------------------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"
+ #showhost="true"
+ ;;
+ audio) showaudio="true"
+ ;;
+ network) shownetwork="true"
+ ;;
+ advancedX) showX="true"
+ ;;
+ 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
+ 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 $ser_install"
+
+
+ remove="none $ser_remove"
+
+ daemon_add="mysql mythbackend avahi portmap $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 myth2ipod mythtv-status $ser_install "
+ remove="$ser_remove"
+
+ daemon_add="mysql mythbackend avahi portmap certmaster $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 $ser_install "
+ remove=" $ser_remove"
+
+ daemon_add="mythbackend avahi portmap $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 avahi $ser_install"
+ remove="mysql mythweb$postfix $ser_remove"
+
+ daemon_add="avahi portmap $ser_daemon_add "
+ daemon_remove="mysql mythbackend $ser_daemon_remove"
+ ;;
+
+
+esac
+setupSyslog
+setupfuncminion
+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" > /data/home/mythtv/.mythtv/smolt.info
+echo "remote=$Remotetype" >> /data/home/mythtv/.mythtv/smolt.info
+