--- alx-src/trunk/alxconfig-ng/init.d/alxsettings 2005/09/01 18:30:28 319 +++ alx-src/branches/alxconf-060/init.d/alxsettings 2011/05/17 21:41:48 2156 @@ -1,8 +1,8 @@ #!/bin/bash - +# $Id$ # -#%rlevels: 7:s 0:k 6:k +#%rlevels: 7:s 0:k #%start: 41 #%stop: 01 @@ -11,8 +11,6 @@ #%before: #%after: -# $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/init.d/alxsettings,v 1.21 2005-09-01 18:30:28 niro Exp $ - # checks first if the client was already configured and if it has an valid serial # if not it runs the autoconfiguration script # these settings will be used for client setup @@ -21,13 +19,14 @@ # if no changes are at server side they will be kept, if yes the get updated. # the server settings has higher priority. -source /etc/sysconfig/rc +source /etc/conf.d/rc source $rc_functions # mysql settings source /etc/alxconfig-ng/config.rc # helper functions +source /usr/lib/alxconfig-ng/functions/common source /usr/lib/alxconfig-ng/functions/mysqlfunctions source /usr/lib/alxconfig-ng/functions/serial_functions source /usr/lib/alxconfig-ng/functions/config_modules @@ -37,13 +36,13 @@ source /usr/lib/alxconfig-ng/functions/config_x11 source /usr/lib/alxconfig-ng/functions/config_auth source /usr/lib/alxconfig-ng/functions/config_ssh_auth - -# check if mysql is available -[ -x /usr/bin/mysql ] && MYSQL_ALX=true +source /usr/lib/alxconfig-ng/functions/config_versions # other needed vars ALX_HW_DETECT=false ALX_FORCED_RECHECK=false +ALX_RESET_SETTINGS=false +ALX_CONFD_NETWORKING=false # unset vars which may kill us unset ALX_SERIAL ALX_STATE @@ -53,8 +52,22 @@ [ ! -d /etc/alxconfig-ng/state ] && install -d /etc/alxconfig-ng/state -update_system_settings(){ - echo -e ${COLMAGENTA}"Checking system setup ..."${COLDEFAULT} +# read_cmdline ${item} +read_cmdline() +{ + local i + + for i in $(< /proc/cmdline) + do + [[ ${i} = $1 ]] && return 0 + done + + return 1 +} + +update_system_settings() +{ + rc_mecho Checking system setup ... # get the modules settings # ! is the first thing that must be configured ! @@ -77,14 +90,24 @@ # exchange ssh rsa keys HOME=/root config_ssh_auth + + # import version info + config_version } -get_system_serial(){ +get_system_serial() +{ + local CUR_IP CUR_MAC CUR_MTIME ALX_IFACE - local CUR_IP CUR_MAC CUR_MTIME + if [[ ${ALX_CONFD_NETWORKING} = true ]] + then + ALX_IFACE="$(< ${SETTINGSPATH}/confd-networking)" + else + ALX_IFACE="eth0" + fi # check if serial file exists - if [ -f /etc/alxconfig-ng/serial ] && [ ! -f /hardware-auto-detection ] + if [ -f /etc/alxconfig-ng/serial ] && [[ ${ALX_FORCED_RECHECK} = false ]] then source /etc/alxconfig-ng/serial @@ -99,11 +122,11 @@ exit 1 fi - CUR_IP=$(/sbin/ifconfig eth0 | sed -n '/addr:/s/ [^r]*..//gp') - CUR_MAC=$(/sbin/ifconfig eth0 | grep HWaddr | cut -d ' ' -f11) + CUR_IP=$(ifconfig ${ALX_IFACE} | sed -n '/addr:/s/ [^r]*..//gp') + CUR_MAC=$(ifconfig ${ALX_IFACE} | grep HWaddr | cut -d ' ' -f11) CUR_MTIME=$(date +%s) - echo -e ${COLOREDSTAR} "Trying to validate my serial ..." + rc_print "Trying to validate my serial ..." # nice serial output $CURS_UP @@ -116,7 +139,7 @@ else # abort on non valid serial ALX_STATE="invalid serial" - echo "ALX_STATE=${ALX_STATE}" > /etc/alxconfig-ng/state/state + echo "ALX_STATE=\"${ALX_STATE}\"" > /etc/alxconfig-ng/state/state show_invalid_serial_msg exit 1 fi @@ -124,18 +147,20 @@ else # run hardware detection echo - if [ -f /hardware-auto-detection ] + if [[ ${ALX_FORCED_RECHECK} = true ]] then - echo -e ${COLMAGENTA}"Hardware autodetection forced by system-administrator"${COLDEFAULT} + rc_mecho "Hardware autodetection forced by system-administrator" + # always disable CONFD_NETWORKING here + export ALX_CONFD_NETWORKING="false" else - echo -e ${COLMAGENTA}"Preparing system for first boot"${COLDEFAULT} + rc_mecho "Preparing system for first boot" fi ALX_HW_DETECT=true - /etc/init.d/hwdetect start + hwsetup # set hostname to alx_default_hostname # use old hostname if this is a forced re-check - [ -f /hardware-auto-detection ] && ALX_DEFAULT_HOSTNAME="$(< /etc/hostname)" + [[ ${ALX_FORCED_RECHECK} = true ]] && ALX_DEFAULT_HOSTNAME="$(< /etc/hostname)" [ -z "${ALX_DEFAULT_HOSTNAME}" ] && ALX_DEFAULT_HOSTNAME=magellan-alx HOSTNAME="${ALX_DEFAULT_HOSTNAME}" @@ -153,17 +178,18 @@ exit 1 fi + CUR_IP=$(/sbin/ifconfig eth0 | sed -n '/addr:/s/ [^r]*..//gp') CUR_MAC=$(/sbin/ifconfig eth0 | grep HWaddr | cut -d ' ' -f11) CUR_MTIME=$(date +%s) # abort now if this is a forced re-check - if [ -f /hardware-auto-detection ] + if [[ ${ALX_FORCED_RECHECK} = true ]] then # but first check the serial source /etc/alxconfig-ng/serial - echo -e ${COLOREDSTAR} "Trying to validate my serial ..." + rc_print "Trying to validate my serial ..." # nice serial output $CURS_UP @@ -182,8 +208,8 @@ fi # write current state to temp file - echo "ALX_STATE=${ALX_STATE}" > /etc/alxconfig-ng/state/state - rm /hardware-auto-detection + echo "ALX_STATE=\"${ALX_STATE}\"" > /etc/alxconfig-ng/state/state + [ -f /hardware-auto-detection ] && rm /hardware-auto-detection # now export ALX_FORCED_RECHECK=true # that the setting will be updated not inserted ! @@ -191,49 +217,24 @@ return 0 fi - echo -e ${COLOREDSTAR} "Trying to get new serial ..." - - # request new serial - # ALX_REG_DATE="$(date +%F)" - - # we're using the mtime now (better for validating the serial) -# mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ -# "insert into client_serials( -# mtime, -# mac -# ) -# values( -# '${CUR_MTIME}', -# '${CUR_MAC}' -# );" -# -# # then validate and retrieve serial -# -# ### warning must be changed that only the LAST ID will be fetched, ### -# ### or you get error if the computer name and date are the same ### -# ### you have more than one serial number then ### -# -# # select highest id only (added max) -# ALX_SERIAL=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ -# "select max(serial) from client_serials where mtime='${CUR_MTIME}' and mac='${CUR_MAC}'") + rc_print "Trying to get new serial ..." # request a new serial; one command now (cause must be done in the same session) - ALX_SERIAL=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "insert into client_serials (mtime, mac) values('${CUR_MTIME}','${CUR_MAC}'); + ALX_SERIAL=$(mysqldo "insert into client_serials (mtime, mac) values('${CUR_MTIME}','${CUR_MAC}'); select last_insert_id();") - if [ "${ALX_SERIAL}" != NULL ] + if [[ ${ALX_SERIAL} != NULL ]] then # nice serial output $CURS_UP $SET_WCOL echo "[ SN: ${ALX_SERIAL} ]" - # set ALX_STATE to ok so everybody that everything was ok + # set ALX_STATE to ok so everybody knows that everything was ok ALX_STATE=ok - echo "ALX_SERIAL=${ALX_SERIAL}" > /etc/alxconfig-ng/serial - echo "ALX_REG_DATE=${CUR_MTIME}" >> /etc/alxconfig-ng/serial + echo "ALX_SERIAL=\"${ALX_SERIAL}\"" > /etc/alxconfig-ng/serial + echo "ALX_REG_DATE=\"${CUR_MTIME}\"" >> /etc/alxconfig-ng/serial evaluate_retval else @@ -252,11 +253,13 @@ fi # write current state to temp file - echo "ALX_STATE=${ALX_STATE}" > /etc/alxconfig-ng/state/state + echo "ALX_STATE=\"${ALX_STATE}\"" > /etc/alxconfig-ng/state/state + echo "ALX_IFACE=\"${ALX_IFACE}\"" >> /etc/alxconfig-ng/state/state } -check_is_configured() { +check_is_configured() +{ if [ -f /etc/alxconfig-ng/state/configured ] then export ALX_CONFIGURED=true @@ -267,7 +270,8 @@ # imports current settings to the database resolved by the hardware detection -import_settings_to_db() { +import_settings_to_db() +{ # note: networking is always 'dhcp' if hw was autodetected # note: default_domain/hostname is set in config.rc @@ -275,67 +279,125 @@ [ -z "${ALX_DEFAULT_DOMAIN}" ] && ALX_DEFAULT_DOMAIN=localdomain [ -z "${ALX_DEFAULT_HOSTNAME}" ] && ALX_DEFAULT_HOSTNAME=magellan-alx - # vars used by hwdetect + # vars used by hwsetup local NETCARD_FULLNAME NETCARD_DRIVER MOUSE_FULLNAME MOUSE_DEVICE SOUND_FULLNAME local SOUND_DRIVER XSERVER XMODULE XDESC FLOPPY_FULLNAME FLOPPY_DEVICE FLOPPY_DRIVER local MOUSETYPE XMOUSETYPE FULLNAME DEVICE - # get setting from hwdetect - source /etc/sysconfig/hwsetup/knoppix - source /etc/sysconfig/hwsetup/mouse + # get setting from hwsetup + source /etc/conf.d/hwsetup/knoppix + source /etc/conf.d/hwsetup/mouse echo - echo -e ${COLMAGENTA}"Importing detected settings to database"${COLDEFAULT} + rc_mecho "Importing detected settings to database" # network - echo -e " Network settings ..." - mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "insert into cfg_network( - hostname, - serial, - module, - domain, - networking - ) - values( - '${ALX_DEFAULT_HOSTNAME}', - '${ALX_SERIAL}', - '${NETCARD_DRIVER}', - '${ALX_DEFAULT_DOMAIN}', - 'dhcp' - );" + rc_mecho " Network settings ..." + if [[ ${ALX_CONFD_NETWORKING} = true ]] + then + # get settings + for iface in $(onboot_interface_list ${network_settings}/net.*) + do + [[ $(< ${SETTINGSPATH}/confd-networking) != ${iface} ]] && continue + rc_echo "WARNING: only importing settings for interface [ ${iface} ] !" + source ${network_settings}/net.${iface} || echo "Error: could not read '${network_settings}/net.${iface}'" + NETCARD_DRIVER="$(cat /etc/modprobe.d/net.${iface}.conf | cut -d' ' -f3)" + + mysqldo "insert into cfg_network( + hostname, + serial, + module, + domain, + networking, + netmask, + dns, + gateway, + broadcast, + ip, + forcemacto, + wireless_bitrate, + wireless_channel, + wireless_essid, + wireless_frequency, + wireless_mode, + wireless_nick, + wireless_auth_mode, + wireless_key_length, + wireless_key, + wireless_key_ascii + ) + values( + '${ALX_DEFAULT_HOSTNAME}', + '${ALX_SERIAL}', + '${NETCARD_DRIVER}', + '${ALX_DEFAULT_DOMAIN}', + '${NETWORKING}', + '${NETMASK}', + '${NAMESERVER}', + '${GATEWAY}', + '${BROADCAST}', + '${IP}', + '${FORCE_MAC_TO}', + '${WIRELESS_BITRATE}', + '${WIRELESS_CHANNEL}', + '${WIRELESS_ESSID}', + '${WIRELESS_FREQUENCY}', + '${WIRELESS_MODE}', + '${WIRELESS_NICK}', + '${WIRELESS_AUTH_MODE}', + '${WIRELESS_KEY_LENGTH}', + '${WIRELESS_KEY}', + '${WIRELESS_KEY_ASCII}' + );" + + # only insert the *FIRST* iface + break + done + else + mysqldo "insert into cfg_network( + hostname, + serial, + module, + domain, + networking + ) + values( + '${ALX_DEFAULT_HOSTNAME}', + '${ALX_SERIAL}', + '${NETCARD_DRIVER}', + '${ALX_DEFAULT_DOMAIN}', + 'dhcp' + );" + fi evaluate_retval # xserver - echo -e " Graphic settings ..." + rc_mecho " Graphic settings ..." # xserver general - ( mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "insert into cfg_graphic( + ( mysqldo "insert into cfg_graphic( serial, module, resolution, depth, - monitorid + refresh_rate ) values( '${ALX_SERIAL}', '${XMODULE}', '1024x768', '16', - '0' + '60' );"; ) evaluate_retval # input - echo -e " Input settings ..." - mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "insert into cfg_input(serial,mouse) values('${ALX_SERIAL}','${XMOUSETYPE}');" + rc_mecho " Input settings ..." + mysqldo "insert into cfg_input(serial,mouse) values('${ALX_SERIAL}','${XMOUSETYPE}');" evaluate_retval # auth - echo -e " Authentifcation settings ..." - mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "insert into client_auth( + rc_mecho " Authentification settings ..." + mysqldo "insert into client_auth( serial, username, shell, @@ -355,19 +417,33 @@ # exchange ssh rsa keys - the first boot needs this ! # or no reboot will work via the webadmin - echo -e " SSH authentifcation settings ..." + rc_mecho " SSH authentification settings ..." HOME=/root config_ssh_auth evaluate_retval - # input - echo -e " Autostart settings ..." - mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "insert into cfg_autostart(serial,session) values('${ALX_SERIAL}','');" + # autostart + rc_mecho " Autostart settings ..." + mysqldo "insert into cfg_autostart(serial,session) values('${ALX_SERIAL}','');" + + # screensaver + rc_mecho " Screensaver settings ..." + mysqldo "insert into cfg_screensaver(serial,screensaver) values('${ALX_SERIAL}','')" + + # version info + rc_mecho " OS version info ..." + local alx_os + local alx_utils + alx_os="$(< /etc/mageversion)" + alx_utils="$(magequery -n alxconfig-ng-alx | sed 's:.*\[\ \(.*\)\ \].*:\1:')" + alx_utils="${alx_utils/alxconfig-ng-alx-}" + mysqldo "insert into client_version(serial,os,utils) values('${ALX_SERIAL}','${alx_os}','${alx_utils}')" + evaluate_retval } # imports current settings to the database resolved by the hardware detection -update_settings_in_db() { +update_settings_in_db() +{ # note: networking is always 'dhcp' if hw was autodetected # note: default_domain/hostname is set in config.rc or exported # note: we updating only hardware settings here ! @@ -376,54 +452,97 @@ [ -z "${ALX_DEFAULT_DOMAIN}" ] && ALX_DEFAULT_DOMAIN=localdomain [ -z "${ALX_DEFAULT_HOSTNAME}" ] && ALX_DEFAULT_HOSTNAME=magellan-alx - # vars used by hwdetect + # vars used by hwsetup local NETCARD_FULLNAME NETCARD_DRIVER MOUSE_FULLNAME MOUSE_DEVICE SOUND_FULLNAME local SOUND_DRIVER XSERVER XMODULE XDESC FLOPPY_FULLNAME FLOPPY_DEVICE FLOPPY_DRIVER local MOUSETYPE XMOUSETYPE FULLNAME DEVICE - # get setting from hwdetect - source /etc/sysconfig/hwsetup/knoppix - source /etc/sysconfig/hwsetup/mouse + # get setting from hwsetup + source /etc/conf.d/hwsetup/knoppix + source /etc/conf.d/hwsetup/mouse echo - echo -e ${COLMAGENTA}"Updating detected settings in database"${COLDEFAULT} + rc_mecho "Updating detected settings in database" # network - echo -e " Network settings ..." - - mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "update cfg_network set - hostname='${ALX_DEFAULT_HOSTNAME}', - module='${NETCARD_DRIVER}', - domain='${ALX_DEFAULT_DOMAIN}', - networking='dhcp' - where serial=${ALX_SERIAL};" + rc_mecho " Network settings ..." + if [[ ${ALX_CONFD_NETWORKING} = true ]] + then + # get settings + #source ${rc_base}/init.d/network &> /dev/null + for iface in $(onboot_interface_list ${network_settings}/net.*) + do + [[ $(< ${SETTINGSPATH}/confd-networking) != ${iface} ]] && continue + rc_echo "WARNING: only importing settings for interface [ ${iface} ] !" + source ${network_settings}/net.${iface} || exit 1 + NETCARD_DRIVER="$(cat /etc/modprobe.d/net.${iface}.conf | cut -d' ' -f3)" + + mysqldo "update cfg_network set + hostname='${ALX_DEFAULT_HOSTNAME}', + module='${NETCARD_DRIVER}', + domain='${ALX_DEFAULT_DOMAIN}', + networking='${NETWORKING}', + netmask='${NETMASK}', + dns='${NAMESERVER}', + gateway='${GATEWAY}', + broadcast='${BROADCAST}', + ip='${IP}', + forcemacto='${FORCE_MAC_TO}', + wireless_bitrate='${WIRELESS_BITRATE}', + wireless_channel='${WIRELESS_CHANNEL}', + wireless_essid='${WIRELESS_ESSID}', + wireless_frequency='${WIRELESS_FREQUENCY}', + wireless_mode='${WIRELESS_MODE}', + wireless_nick='${WIRELESS_NICK}', + wireless_auth_mode='${WIRELESS_AUTH_MODE}', + wireless_key_length='${WIRELESS_KEY_LENGTH}', + wireless_key='${WIRELESS_KEY}', + wireless_key_ascii='${WIRELESS_KEY_ASCII}' + where serial=${ALX_SERIAL};" + + # only insert the *FIRST* iface + break + done + else + mysqldo "update cfg_network set + hostname='${ALX_DEFAULT_HOSTNAME}', + module='${NETCARD_DRIVER}', + domain='${ALX_DEFAULT_DOMAIN}', + networking='dhcp' + where serial=${ALX_SERIAL};" + fi evaluate_retval # xserver - echo -e " Graphic settings ..." + rc_mecho " Graphic settings ..." # xserver general - mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "update cfg_graphic set + mysqldo "update cfg_graphic set module='${XMODULE}', resolution='1024x768', depth='16', - monitorid='0' + refresh_rate='60' where serial=${ALX_SERIAL};" evaluate_retval # input - echo -e " Input settings ..." - mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "update cfg_input set - mouse='${XMOUSETYPE}' - where serial=${ALX_SERIAL};" + rc_mecho " Input settings ..." + mysqldo "update cfg_input set mouse='${XMOUSETYPE}' where serial=${ALX_SERIAL};" evaluate_retval + + # version info + rc_mecho " OS version info ..." + local alx_os + local alx_utils + alx_os="$(< /etc/mageversion)" + alx_utils="$(magequery -n alxconfig-ng-alx | sed 's:.*\[\ \(.*\)\ \].*:\1:')" + alx_utils="${alx_utils/alxconfig-ng-alx-}" + mysqldo "update client_version set os='${alx_os}', utils='${alx_utils}' where serial=${ALX_SERIAL};" } # imports current settings to the local system resolved by the hardware detection -# we only need the network settings -import_settings_local(){ +# we only need the network settings +import_settings_local() +{ # note: networking is always 'dhcp' if hw was autodetected # note: default_domain/hostname is set in config.rc @@ -431,24 +550,34 @@ [ -z "${ALX_DEFAULT_DOMAIN}" ] && ALX_DEFAULT_DOMAIN=localdomain [ -z "${ALX_DEFAULT_HOSTNAME}" ] && ALX_DEFAULT_HOSTNAME=magellan-alx - # vars used by hwdetect + # vars used by hwsetup local NETCARD_FULLNAME NETCARD_DRIVER MOUSE_FULLNAME MOUSE_DEVICE SOUND_FULLNAME local SOUND_DRIVER XSERVER XMODULE XDESC FLOPPY_FULLNAME FLOPPY_DEVICE FLOPPY_DRIVER local MOUSETYPE XMOUSETYPE FULLNAME DEVICE - # get setting from hwdetect - source /etc/sysconfig/hwsetup/knoppix + # get setting from hwsetup + source /etc/conf.d/hwsetup/knoppix echo - echo -e ${COLMAGENTA}"Importing detected settings to local system"${COLDEFAULT} + rc_mecho "Importing detected settings to local system" - [ ! -d ${SETTINGSPATH} ] && install -d ${SETTINGSPATH} - echo "${NETCARD_DRIVER}" > ${SETTINGSPATH}/modules - evaluate_retval + if [[ ${ALX_CONFD_NETWORKING} = false ]] + then + # set an device alias for modprobe.conf + [ ! -d /etc/modprobe.d ] && install -d /etc/modprobe.d + echo "alias eth0 ${NETCARD_DRIVER}" > /etc/modprobe.d/net.eth0.conf + + # regenerate modprobe.conf + [ -x $(which modules-update) ] && modules-update || rc_echo "modules-update not found!" + evaluate_retval + fi # set system state to 'already configured' touch /etc/alxconfig-ng/state/configured + # install slim desktopmanager configuration + config_display_manager + # if only an recheck was forced than abort now [[ ${ALX_FORCED_RECHECK} = true ]] && return 0 @@ -459,28 +588,23 @@ # now generate fluxbox config files # fluxbox main config - cat ${ALX_SKELETONS}/fluxbox/init \ - > ${ALX_UNPRIV_HOME}/.fluxbox/init + cat ${ALX_SKELETONS}/fluxbox/init > ${ALX_UNPRIV_HOME}/.fluxbox/init # fluxbox autostart - cat ${ALX_SKELETONS}/fluxbox/apps \ - > ${ALX_UNPRIV_HOME}/.fluxbox/apps + cat ${ALX_SKELETONS}/fluxbox/apps > ${ALX_UNPRIV_HOME}/.fluxbox/apps # fluxbox menu header - cat ${ALX_SKELETONS}/fluxbox/menu.header \ - > ${ALX_UNPRIV_HOME}/.fluxbox/menu + cat ${ALX_SKELETONS}/fluxbox/menu.header > ${ALX_UNPRIV_HOME}/.fluxbox/menu # now fix it with proper messages :P local ver="$(< /etc/mageversion)" - sed -i "s:@CHANGEME@:alx-${ver} #${ALX_SERIAL}:g" \ - ${ALX_UNPRIV_HOME}/.fluxbox/menu + sed -i "s:@CHANGEME@:alx-${ver} #${ALX_SERIAL}:g" ${ALX_UNPRIV_HOME}/.fluxbox/menu # add a newline (maybe there is no crlf in the header) echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu # fluxbox menu footer - cat ${ALX_SKELETONS}/fluxbox/menu.footer \ - >> ${ALX_UNPRIV_HOME}/.fluxbox/menu + cat ${ALX_SKELETONS}/fluxbox/menu.footer >> ${ALX_UNPRIV_HOME}/.fluxbox/menu # add a newline (maybe there is no crlf in the footer) echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu @@ -520,35 +644,40 @@ --icon-width "1" \ --icon-height "1" + # create a xinitrc + echo "exec startfluxbox" > ${ALX_UNPRIV_HOME}/.xinitrc + # set correct permissions chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME} chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox - chmod 0755 ${ALX_UNPRIV_HOME}/.xtdesktop - chmod 0644 ${ALX_UNPRIV_HOME}/.xtdeskrc - - # default passwords are bad - #usermod -p $(perl -e "printf(crypt('foobar','AD'))") root - #usermod -p $(perl -e "printf(crypt('foobar','AD'))") ${ALX_UNPRIV_USER} - #smbpasswd -a root foobar + chmod 0755 ${ALX_UNPRIV_HOME}/.xtdesktop + chmod 0644 ${ALX_UNPRIV_HOME}/.xtdeskrc + chmod 0644 ${ALX_UNPRIV_HOME}/.xinitrc } # start|stop -preliminary_network(){ +preliminary_network() +{ local module if [ -f /etc/alxconfig-ng/state/configured ] then - # get module name - module=$(cat ${SETTINGSPATH}/modules) - modprobe ${module} + # compat for old clients + if [ -f ${SETTINGSPATH}/modules ] + then + # get module name + module=$(cat ${SETTINGSPATH}/modules) + modprobe ${module} + fi + else - # vars used by hwdetect + # vars used by hwsetup local NETCARD_FULLNAME NETCARD_DRIVER MOUSE_FULLNAME MOUSE_DEVICE SOUND_FULLNAME local SOUND_DRIVER XSERVER XMODULE XDESC FLOPPY_FULLNAME FLOPPY_DEVICE FLOPPY_DRIVER - # get setting from hwdetect - source /etc/sysconfig/hwsetup/knoppix + # get setting from hwsetup + source /etc/conf.d/hwsetup/knoppix modprobe ${NETCARD_DRIVER} fi @@ -557,35 +686,40 @@ # keeping like always safe: # no network should be startet here, # so we can delete all pid files if one exists - if ps -A|grep dhcpcd > /dev/null + if [[ ! -z $(pidof $(basename ${ALX_DHCP_PROG})) ]] then - echo -e ${COLMAGENTA}"Forcing network down"${COLDEFAULT} - dhcpcd -k + rc_mecho "Forcing network down" + killall $(basename ${ALX_DHCP_PROG}) &> /dev/null sleep 1 - else - rm -f /var/run/dhcpcd-eth?.pid fi + [[ ${ALX_CONFD_NETWORKING} = true ]] && ${rc_base}/init.d/network stop - echo -e ${COLMAGENTA}"Starting preliminary network ... "${COLDEFAULT} - # -t 10 timeout of 10 secs - dhcpcd -t 10 &> /dev/null - - # aka_fix ######################################## - #ifconfig eth0 128.20.222.222 netmask 255.255.0.0 up - #route del default gw 128.20.50.13 &> /dev/null - #route add default gw 128.20.50.21 &> /dev/null - #echo "nameserver 128.20.50.21" > /etc/resolv.conf - ################################################## + rc_mecho "Starting preliminary networking ... " - evaluate_retval + # start network configured from /etc/conf.d + if [[ ${ALX_CONFD_NETWORKING} = true ]] + then + ${rc_base}/init.d/network start + else + rc_print "Starting default dhcp based networking ... " + ${ALX_DHCP_PROG} ${ALX_DHCP_START} &> /dev/null + evaluate_retval + fi ;; stop) - echo -e ${COLMAGENTA}"Stopping preliminary network ... "${COLDEFAULT} - ifconfig eth0 down - if ps -A|grep dhcpcd > /dev/null + rc_mecho "Stopping preliminary networking ... " + if [[ ${ALX_CONFD_NETWORKING} = true ]] then - dhcpcd -z &> /dev/null + ${rc_base}/init.d/network stop + else + rc_print "Stopping default dhcp based networking ... " + ifconfig ${ALX_IFACE} down + fi + if [[ ! -z $(pidof $(basename ${ALX_DHCP_PROG})) ]] + then + killall $(basename ${ALX_DHCP_PROG}) &> /dev/null + sleep 1 fi evaluate_retval ;; @@ -596,8 +730,150 @@ esac } +reset_system_settings() +{ + # force load of de kbdkeys + loadkeys -q de + rc_echo + rc_echo -en ${COLRED} + rc_echo -n "*** Warning: you are about to reset *all* local settings on this system!" + rc_echo -e ${COLDEFAULT} + rc_echo "*** Do you really want to continue ?" + rc_echo -n "*** Enter 'yes' to continue, anything else to abort: " + read kbinsert + if [[ ${kbinsert} = yes ]] + then + rc_echo -en ${COLRED} + rc_echo -n "*** OK, you really want it ... killing all settings: " + for i in 3 2 1 now + do + rc_echo -n " ${i}" + sleep 1 + done + rc_echo -e ${COLDEFAULT} + + ## reset all settings: + rm -rf ${SETTINGSPATH}/* + rm -f /etc/alxconfig-ng/serial + rm -rf /etc/alxconfig-ng/state + + # clear all printers & net-shares + :> /etc/printcap + + # remove lprng + rc-config del lprng &> /dev/null + + # remove all user settings + [ -d ${ALX_UNPRIV_HOME} ] && rm -rf ${ALX_UNPRIV_HOME} + + # remove all ica-sessions + find ${ALX_ICA_SESSIONS} -type f -name '*.ica' | xargs rm + + # remove all old nics and modules configs + find /etc/conf.d -type f -name 'net.*' | xargs rm + find /etc/modprobe.d -type f -name 'net.*' | xargs rm + + # restore default networking + cat ${ALX_SKELETONS}/net/net.eth0 > /etc/conf.d/net.eth0 + + rc_echo "I am done now, press [Enter] to reboot system ..." + else + rc_echo "Aborted, press [Enter] to reboot system ..." + fi + read + reboot +} + +onboot_interface_list() +{ + local file + local devices + local iface + + # get list of all devices + for file in $@ + do + if [[ $(read_value ONBOOT ${file}) = yes ]] + then + iface="$(basename ${file} | sed s/net.//)" + # exclude backup files + case "${iface}" in + *~) ;; + *) devices="${devices} $(basename ${file} | sed s/net.//)" ;; + esac + fi + done + + echo "${devices}" +} + +# read values from net.* files +read_value() +{ + local var="$1" + local file="$2" + local value + + # local all possible vars + # global + local ONBOOT + local NETWORKING + + # static + local IP + local NETMASK + local BROADCAST + local NETWORKING + local FORCE_MAC_TO + + # dhcp + local DHCP_PROG + local DHCP_START + local DHCP_STOP + + # default gw + local GATEWAY + local GATEWAY_IF + + # wireless extensions + local WIRELESS_AP + local WIRELESS_AUTH_MODE + local WIRELESS_BITRATE + local WIRELESS_CHANNEL + local WIRELESS_DEFAULT_KEY + local WIRELESS_ESSID + local WIRELESS_FREQUENCY + local WIRELESS_KEY + local WIRELESS_KEY_ASCII + local WIRELESS_KEY_0 + local WIRELESS_KEY_1 + local WIRELESS_KEY_2 + local WIRELESS_KEY_3 + local WIRELESS_KEY_LENGTH + local WIRELESS_MODE + local WIRELESS_NICK + local WIRELESS_NWID + local WIRELESS_POWER + + source ${file} + eval value=\$$(echo ${var}) + echo "${value}" +} + case $1 in start) + # check for global overrides + [ -f ${SETTINGSPATH}/confd-networking ] && ALX_CONFD_NETWORKING=true + [ -f /hardware-auto-detection ] && ALX_FORCED_RECHECK=true + read_cmdline hardware-auto-detection && ALX_FORCED_RECHECK=true + read_cmdline alx-reset-settings && ALX_RESET_SETTINGS=true + + # kill all settings if requested + if [[ ${ALX_RESET_SETTINGS} = true ]] + then + reset_system_settings + fi + # retrieve or validate current serial get_system_serial if [[ ${ALX_HW_DETECT} = true ]] @@ -618,7 +894,7 @@ # now setup system configuration # alx_setup_or_whatever_it_will_be_called() - [ "${ALX_HW_DETECT}" == "false" ] && update_system_settings + [[ ${ALX_HW_DETECT} = false ]] && update_system_settings # stop at last the preliminary networking (dhcp) preliminary_network stop @@ -630,8 +906,8 @@ [ -f /etc/alxconfig-ng/state/state ] && rm /etc/alxconfig-ng/state/state sleep 0.1 ;; + *) echo "Usage: $0 {start|stop} ..." ;; esac -