179 lines
6.0 KiB
Bash
Executable File
179 lines
6.0 KiB
Bash
Executable File
# openmamba mambawelcome script
|
|
# Copyright (c) 2007-2011 by Silvan Calarco <silvan.calarco@mambasoft.it>
|
|
#
|
|
# Released under the terms of the GNU GPLv3 License
|
|
#
|
|
VERSION=1.1
|
|
TEXTDOMAIN=mambawelcome
|
|
TEXTDOMAINDIR=/opt/kde3/share/locale/
|
|
INSTALL_DATE=`date +%Y%m%d-%H%M`
|
|
INPUT_FILE=/root/.installer.conf
|
|
LOG_FILE=/var/log/mambawelcome-$INSTALL_DATE.log
|
|
KERNEL_RELEASE=`uname -r`
|
|
DCOP=/opt/kde3/bin/dcop
|
|
|
|
function abort() {
|
|
[ "$DCOPID" ] && {
|
|
$DCOP $DCOPID KommanderIf setText progressText $"Installation aborted; press Next to see the error log."
|
|
$DCOP $DCOPID KommanderIf setText finallabel $"Installation aborted :-("
|
|
$DCOP $DCOPID KommanderIf setEnabled next true
|
|
}
|
|
exit 1
|
|
}
|
|
|
|
function dcop_write() {
|
|
[ "$DCOPID" ] && {
|
|
$DCOP $DCOPID KommanderIf setText progressText "$1"
|
|
$DCOP $DCOPID KommanderIf setText progressBar $2
|
|
}
|
|
}
|
|
|
|
|
|
[ "$1" = "-y" ] || {
|
|
echo $"Warning: this script is intended to be run by mambawelcome.kmdr."
|
|
echo $" Use $0 -y to actually start the operation."
|
|
exit 0
|
|
}
|
|
|
|
DCOPID=$2
|
|
|
|
echo $"\
|
|
openmamba mambawelcome script - version $VERSION
|
|
Copyright (c) 2007-2010 by Silvan Calarco <silvan.calarco@mambasoft.it>
|
|
"
|
|
|
|
dcop_write $"Configuring..." 5
|
|
|
|
[ -r $INPUT_FILE ] || {
|
|
echo $"Error: cannot read input file $INPUT_FILE; aborting." >&2
|
|
abort
|
|
}
|
|
|
|
. $INPUT_FILE
|
|
|
|
# now remove sensible information from input file
|
|
sed -i "/^INSTALL_ROOT_PASSWORD=.*/d" $INPUT_FILE
|
|
sed -i "/^INSTALL_USER_PASSWORD=.*/d" $INPUT_FILE
|
|
|
|
# restore original kde config location
|
|
[ -L /opt/kde/share/config ] && {
|
|
rm -f /opt/kde/share/config
|
|
mkdir -p /opt/kde/share/config
|
|
mv /etc/opt/kde/* /opt/kde/share/config/
|
|
rmdir /etc/opt/kde
|
|
ln -s ../../opt/kde/share/config /etc/opt/kde
|
|
}
|
|
|
|
dcop_write $"Configuring users and host..." 50
|
|
echo $"Configuring users and host" | tee -a $LOG_FILE
|
|
# configure user
|
|
[ "$INSTALL_USER" ] && {
|
|
useradd $INSTALL_USER \
|
|
-c "$INSTALL_USER_FULLNAME" \
|
|
-G audio,filesharing,sysadmin,packager,lpadmin,video,nopermfs || {
|
|
echo $"Error: could not create user; skipping." | tee -a $LOG_FILE
|
|
}
|
|
sh -c "echo $INSTALL_USER_PASSWORD | passwd $INSTALL_USER --stdin" || {
|
|
echo $"Error: could not set user password; aborting." | tee -a $LOG_FILE
|
|
abort
|
|
}
|
|
|
|
# configure user for autologin
|
|
if [ "$INSTALL_USER_AUTOLOGIN" = "1" ]; then
|
|
echo $"Info: enabling user autologin" | tee -a $LOG_FILE
|
|
[ -e /opt/kde/share/config/kdm/kdmrc ] && {
|
|
sed -i "s|AutoLoginEnable=.*|AutoLoginEnable=true|" \
|
|
/opt/kde/share/config/kdm/kdmrc
|
|
sed -i "s|AutoLoginUser=.*|AutoLoginUser=$INSTALL_USER|" \
|
|
/opt/kde/share/config/kdm/kdmrc
|
|
}
|
|
[ -e /etc/lxdm/lxdm.conf ] && {
|
|
sed -i "s|[#[:space:]]*autologin=.*|autologin=$INSTALL_USER|" \
|
|
/etc/lxdm/lxdm.conf
|
|
}
|
|
[ -e /etc/gdm/custom.conf ] && {
|
|
sed -i "s|[#[:space:]]*AutomaticLogin=.*|AutomaticLogin=$INSTALL_USER|" \
|
|
/etc/gdm/custom.conf
|
|
sed -i "s|AutomaticLoginEnable=.*|AutomaticLoginEnable=true|" \
|
|
/etc/gdm/custom.conf
|
|
}
|
|
else
|
|
[ -e /opt/kde/share/config/kdm/kdmrc ] &&
|
|
sed -i "s|AutoLoginEnable=.*|AutoLoginEnable=false|" \
|
|
/opt/kde/share/config/kdm/kdmrc
|
|
[ -e /etc/lxdm/lxdm.conf ] &&
|
|
sed -i "s|[#[:space:]]*\(autologin.*\)|#\1|" \
|
|
/etc/lxdm/lxdm.conf
|
|
[ -e /etc/gdm/custom.conf ] &&
|
|
sed -i "s|AutomaticLoginEnable=.*|AutomaticLoginEnable=false|" \
|
|
/etc/gdm/custom.conf
|
|
fi
|
|
|
|
# pre-create user homedir (currently just needed to put TODO txt files on
|
|
# desktop)
|
|
cp -a /etc/skel /home/$INSTALL_USER
|
|
#mkdir /home/$INSTALL_USER/Desktop
|
|
chmod 711 /home/$INSTALL_USER
|
|
#cp /usr/share/openmamba/installer/*.txt /home/$INSTALL_USER/Desktop/
|
|
mkdir -p /home/$INSTALL_USER/.kde4/Autostart
|
|
cp /usr/share/openmamba/mambabase/mambabase-autostart.desktop /home/$INSTALL_USER/.kde4/Autostart/mambabase.desktop
|
|
chmod 711 /home/$INSTALL_USER/.kde4/Autostart/mambabase.desktop
|
|
|
|
# create home kde configuration directory
|
|
mkdir -p /home/$INSTALL_USER/.kde4/share/config
|
|
# copy global settings for localizations
|
|
[ -e /root/.kde4/share/config/kdeglobals ] && \
|
|
cp /root/.kde4/share/config/kdeglobals /home/$INSTALL_USER/.kde4/share/config/
|
|
[ -e /root/.kde4/share/config/kxkbrc ] && \
|
|
cp /root/.kde4/share/config/kxkbrc /home/$INSTALL_USER/.kde4/share/config/
|
|
# disable ktip on startup
|
|
cat > /home/$INSTALL_USER/.kde4/share/config/ktiprc << _EOF
|
|
[TipOfDay]
|
|
RunOnStart=false
|
|
_EOF
|
|
# set user permissions
|
|
chown "$INSTALL_USER".users /home/$INSTALL_USER -R
|
|
}
|
|
|
|
# set root password
|
|
sh -c "echo $INSTALL_ROOT_PASSWORD | passwd --stdin" || {
|
|
echo $"Error: could not set user password; aborting." | tee -a $LOG_FILE
|
|
abort
|
|
}
|
|
|
|
# set hostname and domain
|
|
[[ "$INSTALL_HOSTNAME" ]] && {
|
|
hostname $INSTALL_HOSTNAME
|
|
sed -i "s|HOSTNAME=.*|HOSTNAME=$INSTALL_HOSTNAME|" \
|
|
/etc/sysconfig/network
|
|
|
|
[[ "$INSTALL_DOMAIN" ]] || INSTALL_DOMAIN="localdomain"
|
|
sed -i "s|\(127\.0\.0\.1\W*\)\(.*\)|\1 $INSTALL_HOSTNAME.$INSTALL_DOMAIN $INSTALL_HOSTNAME localhost.localdomain localhost|" \
|
|
/etc/hosts
|
|
}
|
|
|
|
# set samba configuration file
|
|
[[ "$INSTALL_WORKGROUP" ]] && {
|
|
sed -i "s|workgroup =.*|workgroup = $INSTALL_WORKGROUP|" /etc/samba/smb.conf
|
|
sed -i "s|netbios name =.*|netbios name = $INSTALL_HOSTNAME|" /etc/samba/smb.conf
|
|
}
|
|
|
|
# update grub device mappings and config
|
|
/usr/sbin/grub-mkdevicemap -n
|
|
/usr/sbin/update-grub
|
|
|
|
# configure suspend (from suspend rpm post script) and recreate mkinitramfs
|
|
grep path_to_resume_device_file /etc/suspend.conf && {
|
|
SWAPLINE=`/sbin/swapon -s |grep -m1 ^/dev/`
|
|
SWAPDEV=${SWAPLINE/ */}
|
|
[ $SWAPDEV ] && sed -i "s|<path_to_resume_device_file>|$SWAPDEV|" /etc/suspend.conf
|
|
}
|
|
KERNEL_RELEASE=`uname -r`
|
|
#mkinitramfs /boot/initramfs-$KERNEL_RELEASE.img $KERNEL_RELEASE -f
|
|
|
|
dcop_write $"Installation completed." 100
|
|
[ "$DCOPID" ] && $DCOP $DCOPID KommanderIf setEnabled next true
|
|
echo $"Installation done." | tee -a $LOG_FILE
|
|
|
|
exit 0
|