#! /bin/bash # chkconfig: 35 11 90 # description: pre-boot configuration using boot line parameters # This file exists in /etc/init.d/ replace_in_file() { local filename=$1 local keyname=$2 local value=$3 sed -i /$keyname=/d $filename echo "$keyname=$value" >> $filename return $? } setup_secstorage() { public_ip=$ETH2_IP sed -i /$NAME/d /etc/hosts echo "$public_ip $NAME" >> /etc/hosts [ -f /etc/httpd/conf/httpd.conf ] && sed -i -e "s/^Listen.*:80$/Listen $public_ip:80/" /etc/httpd/conf/httpd.conf [ -f /etc/httpd/conf/httpd.conf ] && sed -i -e "s/^Listen.*:443$/Listen $public_ip:443/" /etc/httpd/conf/httpd.conf } setup_console_proxy() { public_ip=$ETH2_IP sed -i /$NAME/d /etc/hosts echo "$public_ip $NAME" >> /etc/hosts } if [ -f /mnt/cmdline ] then CMDLINE=$(cat /mnt/cmdline) else CMDLINE=$(cat /proc/cmdline) fi TYPE="router" BOOTPROTO="static" for i in $CMDLINE do # search for foo=bar pattern and cut out foo KEY=$(echo $i | cut -d= -f1) VALUE=$(echo $i | cut -d= -f2) case $KEY in eth0ip) ETH0_IP=$VALUE ;; eth1ip) ETH1_IP=$VALUE ;; eth2ip) ETH2_IP=$VALUE ;; gateway) GW=$VALUE ;; eth0mask) ETH0_MASK=$VALUE ;; eth1mask) ETH1_MASK=$VALUE ;; eth2mask) ETH2_MASK=$VALUE ;; dns1) NS1=$VALUE ;; dns2) NS2=$VALUE ;; domain) DOMAIN=$VALUE ;; mgmtcidr) MGMTNET=$VALUE ;; localgw) LOCAL_GW=$VALUE ;; template) TEMPLATE=$VALUE ;; name) NAME=$VALUE ;; dhcprange) DHCP_RANGE=$(echo $VALUE | tr ':' ',') ;; bootproto) BOOTPROTO=$VALUE ;; type) TYPE=$VALUE ;; esac done if [ "$BOOTPROTO" == "static" ] then exit 0 fi ETH1_IP=$(ifconfig eth1|grep 'inet addr:'|cut -d : -f 2|cut -d \ -f 1) ETH2_IP=$(ifconfig eth2|grep 'inet addr:'|cut -d : -f 2|cut -d \ -f 1) case $TYPE in secstorage) [ "$NAME" == "" ] && NAME=secstorage setup_secstorage; ;; consoleproxy) [ "$NAME" == "" ] && NAME=consoleproxy setup_console_proxy; ;; esac