File i4l-base-postprocess of Package i4l-base
#! /bin/bash
# Copyright (c) 2002,2003,2004 SuSE Linux AG, Nuernberg, Germany.
# All rights reserved.
#
# Author: Karsten Keil <kkeil@suse.de>
#
#
# This module postprocesses ISDN configuration and modifies/creates
# the setup files used for ifup ifdown ipppd ...
#
# check if we are started as root
# only one of UID and USER must be set correctly
if test "$UID" != 0 -a "$USER" != root; then
echo "You must be root to start $0."
exit 1
fi
r=$ROOT
test -f /etc/sysconfig/i4l-base && . /etc/sysconfig/i4l-base
# local functions
# creates $1 file from $2 and setup the header
create_autofile() {
cat << EOT > $1
#
# DO NOT EDIT THIS FILE !!!
#
# This file was autogenerated by postprocess.isdn from $2.
# Edit $2 instead and run /etc/sysconfig/isdn/scripts/postprocess .
#
EOT
}
#
# writes a VAR_NAME="VAR_CONTENS"
# $1 VAR_NAME
#
write_value() {
eval x=\$$1
test "${x}v" != "v" && echo "$1=\"$x\""
}
#
# add entry to /etc/ppp/{chap,pap}-secrets
#
# $1 filename
# $2 username
# $3 secret
# $4 remote_name (default *)
#
add_secret() {
local user host secret rest suser found=no x
x=${1##*/}
echo -n "$x... "
suser=${2//'\\'/'\\'}
echo "#postprocess.isdn modified" > $1.tmp_host
while read -r line ; do
case $line in
"#SuSEconfig.isdn entry"* | "#postprocess.isdn entry"*)
comment=$line
continue
;;
"#SuSEconfig.isdn" | "#postprocess.isdn"*)
;;
"#"*|"")
echo "$line" >> $1.tmp
;;
*)
read -r user host secret rest < <(echo "$line")
user=${user//\"/}
if [ "$user" = "$suser" -a "$host" = "$4" ]; then
if [ "$host" = "*" ]; then
echo "#postprocess.isdn entry" >> $1.tmp
echo "\"$suser\" $host \"$3\" $rest" >> $1.tmp
else
echo "#postprocess.isdn entry" >> $1.tmp_host
echo "\"$suser\" $host \"$3\" $rest" >> $1.tmp_host
fi
found=yes
else
if [ "$host" = "*" ]; then
test -n "$comment" && echo "$comment" >> $1.tmp
echo "$line" >> $1.tmp
else
test -n "$comment" && echo "$comment" >> $1.tmp_host
echo "$line" >> $1.tmp_host
fi
fi
;;
esac
comment=""
done < <(cat $1)
if [ "$found" = "no" ]; then
if [ "$4" = "*" ]; then
echo "#postprocess.isdn entry" >> $1.tmp
echo "\"$suser\" $4 \"$3\" $rest" >> $1.tmp
else
echo "#postprocess.isdn entry" >> $1.tmp_host
echo "\"$suser\" $4 \"$3\" $rest" >> $1.tmp_host
fi
fi
mv $1.tmp_host $1
cat $1.tmp >> $1
rm -f $1.tmp
chmod 600 $1
chown root:root $1
}
#
# handle defaultroute
#
# $1 device
# $2 add defaultroute (yes/no) default no
# $3 gateway or __dynamic__ (optional)
# $4 netmask (optional)
#
make_defaultroute() {
echo "make_defaultroute($@)"
dev=$1
test -z "$dev" && return
op="delete"
shift
test $# -gt 0 -a "$1" = "yes" && op="replace"
shift
gw=""
test $# -gt 0 && gw=$1
shift
test -z "$gw" -o "$gw" = "__dynamic__" && gw="0.0.0.0"
mask=""
test $# -gt 0 && mask=$1
shift
mask=${mask:-0.0.0.0}
extra=$@
# echo "dev:$dev op:$op gw:$gw mask:$mask extra:$extra"
ROUTECONF="../network/routes"
TMPROUTECONF="${ROUTECONF}.tmp"
rm -f $TMPROUTECONF
found="no"
comment=""
if [ -f "$ROUTECONF" ] ; then
touch $TMPROUTECONF
while read DEST GWAY MASK IFACE TYPE IPOPTS ; do
LINE="$DEST $GWAY $MASK $IFACE $TYPE $IPOPTS"
#echo "process line $LINE"
case $DEST in
\#SuSEconfig.isdn*) comment=$LINE; continue ;;
\#postprocess.isdn*) comment=$LINE; continue ;;
\#*|"") echo "$LINE" >> $TMPROUTECONF; comment=""; continue ;;
esac
if [ "$IFACE" = "$dev" -a "$DEST" = "default" ] ; then
test "$op" = "delete" && continue
LINE="default $gw $mask $dev $extra"
# echo "new: $LINE"
echo "#postprocess.isdn generated line" >> $TMPROUTECONF
echo $LINE >> $TMPROUTECONF
found="yes"
else
test -n "$comment" && echo "$comment" >> $TMPROUTECONF
echo "$LINE" >> $TMPROUTECONF
fi
comment=""
done < <(cat $ROUTECONF)
mv $TMPROUTECONF $ROUTECONF
fi
#echo "found: $found"
if [ "$found" = "no" ] ; then
if [ "$op" = "delete" ] ; then
return
else
echo "#postprocess.isdn generated line" >> $ROUTECONF
echo default $gw $mask $dev $extra >> $ROUTECONF
fi
fi
}
strip_leadingzero() {
local x
eval x=\${$1}
test -z "$x" && return
case $x in 0*) x=${x#0} ;; esac
case $x in 0*) x=${x#0} ;; esac
eval $1=$x
}
#
# removes variable from file
# $1 file
# $2 name
#
remove_value_from_file() {
local nf=$1.new
rm -f $nf
while read line ; do
case $line in
"#"*|"")
echo $line >> $nf
;;
*=*)
test "${line%%=*}" = "$2" || echo $line >> $nf
;;
*)
echo $line >> $nf
;;
esac
done < <(cat $1)
mv $nf $1
}
#
# replace value of variable in file
# $1 file
# $2 name
# $3 new value
replace_value_in_file() {
local nf=$1.new
rm -f $nf
while read line ; do
case $line in
"#"*|"")
echo $line >> $nf
;;
*=*)
if [ "${line%%=*}" = "$2" ]; then
echo "${2}='$3'" >> $nf
else
echo $line >> $nf
fi
;;
*)
echo $line >> $nf
;;
esac
done < <(cat $1)
mv $nf $1
}
#
# VARS
#
# all options which go into ifcfg-ippp and ifcfg-isdn
IFCFG_OPTIONS="\
STARTMODE IPADDR PTPADDR DEFAULTROUTE FIREWALL
MSN DIALMODE DIALPREFIX DIALMAX REMOTE_OUT REMOTE_IN PROVIDER
SECURE CHARGEHUP CALLBACK CBDELAY CBHUP IHUP VERBOSE_LEVEL
SLAVES MULTILINK SLAVEMSN SLAVE_IN SLAVE_OUT
LAYER2 LAYER3 ENCAP IP_RESEND IP_RESEND_PARAMETER
USERCONTROL NETMASK
"
# all options which go into ifcfg-ippp
IFCFG_IPPP_OPTIONS="DYNAMICIP IPPPD_OPTIONS ASKPASSWORD MTU MRU RUN_POLL_TCPIP"
# all options which go into ifcfg-isdn
IFCFG_ISDN_OPTIONS=""
# all options from provider file
PROVIDER_OPTIONS="\
PROVIDERNAME ISDNSUPPORTED DEMAND MODIFYDNS DNS1 DNS2
ENCAP USERNAME PASSWORD IDLETIME ASKPASSWORD PHONE REMOTE_NAME
"
#
# Here is a little problem with implementation
# DIALPREFIX and AREACODE is bound to an controller (which is correct,
# since the line has these properties) but the DIALPREFIX is used in
# global place and on connection setup
# So we use the first DIALPREFIX and AREACODE if any was set.
#
GLOBAL_DIALPREFIX=""
GLOBAL_AREACODE=""
#
# Main script
#
# check for used directories
for i in $r/etc/sysconfig/network $r/etc/sysconfig/network/providers \
$r/etc/sysconfig/isdn $r/etc/ppp $r/etc/isdn ; do
if test ! -d $i ; then
echo "directory $i not found."
exit 1
fi
done
# common config options are in /etc/sysconfig/isdn/config
COMMON_CONFIG=$r/etc/sysconfig/isdn/config
test -f $COMMON_CONFIG || COMMON_CONFIG=""
if [ -z "$r" -a -r /etc/sysconfig/isdn/update.hwscan ]; then
. /etc/sysconfig/isdn/update.hwscan
mv /etc/sysconfig/isdn/update.hwscan /etc/sysconfig/isdn/update.hwscan.done
fi
#
# update /etc/pcmcia/avm.conf if nessesary
#
if [ -d $r/etc/pcmcia -a -f $r/etc/pcmcia/avm.conf ]; then
grep -qs fcpcmcia_cs $r/etc/pcmcia/avm.conf
if [ $? = 1 ]; then
cp $r/etc/pcmcia/avm.conf $r/etc/pcmcia/avm.conf.orig
sed '6 a\
device "fcpcmcia_cs"\
class "isdn" module "fcpcmcia_cs"\
' $r/etc/pcmcia/avm.conf.orig > $r/etc/pcmcia/avm.conf
fi
fi
CONTRFILES=""
cd $r/etc/sysconfig/isdn
for i in cfg-contr*; do
case $i in
*~*|*.*)
# drop backup files, rpm{save,new,orig}
;;
*)
CONTRFILES="$CONTRFILES $i"
;;
esac
done
CAPIFILE="$r/etc/capi.conf"
test -f ${CAPIFILE} && mv ${CAPIFILE} ${CAPIFILE}.postprocess.saved
echo "#postprocess.isdn generated" > $CAPIFILE
echo "# card file proto io irq mem cardnr options" >> $CAPIFILE
CAPIDRIVERS="b1isa b1pci b1pcmcia c2 c4 fcclassic fcpci fcpcmcia fcdsl fcdsl2 fcdslsl t1isa t1pci"
for i in $CAPIDRIVERS; do
eval capi_nr_$i=1
done
set -- $CONTRFILES
for name in "${@#cfg-}"; do
ifile="cfg-$name"
test -f "$ifile" || continue
echo "Reading $ifile ... "
unset DRIVER
unset PROTOCOL
unset PARA_SUBTYPE
unset PARA_TYPE
unset PARA_IO
unset PARA_IRQ
unset B1_FIRM
unset B1_PROTO
unset DRIVER_OPTIONS
. $ifile
GLOBAL_AREACODE=${GLOBAL_AREACODE:-$AREACODE}
GLOBAL_DIALPREFIX=${GLOBAL_DIALPREFIX:-$DIALPREFIX}
# create isdnlog optfile if not exist and a isdnlog compatible controller
# and protocol is used
USEISDNLOG=""
case $PROTOCOL in
euro) USEISDNLOG="yes" ;;
1tr6) USEISDNLOG="yes" ;;
*) USEISDNLOG="" ;;
esac
test -n "$USEISDNLOG" && case $DRIVER in
hisax*) USEISDNLOG="yes" ;;
b1*) USEISDNLOG="yes" ;;
c2*) USEISDNLOG="yes" ;;
c4*) USEISDNLOG="yes" ;;
eicon) USEISDNLOG="yes" ;;
fcpci) USEISDNLOG="yes" ;;
fcclassic) USEISDNLOG="yes" ;;
fcpnp) USEISDNLOG="yes" ;;
fcusb) USEISDNLOG="yes" ;;
fcusb2) USEISDNLOG="yes" ;;
fxusb) USEISDNLOG="yes" ;;
fxusb_CZ) USEISDNLOG="yes" ;;
fcdsl) USEISDNLOG="yes" ;;
fcdsl2) USEISDNLOG="yes" ;;
fcdslsl) USEISDNLOG="" ;;
*) USEISDNLOG="" ;;
esac
ilogfile=$r/etc/isdn/isdnlog.options.${name}
test -f ${ilogfile} -o -z "$USEISDNLOG" || \
cp $r/etc/isdn/isdnlog.options.templ ${ilogfile}
if [ -f ${ilogfile} ]; then
echo "Modify ${ilogfile}"
echo "#postprocess.isdn modified" > ${ilogfile}.new
while read -r _line ; do
case $_line in
"#SuSEconfig"* | "#postprocess"*)
;;
# this is the example line
"# amt=0:80:81:82:83:84"*)
echo -E "$_line" >>${ilogfile}.new
;;
"# amt"*|"amt"*)
if [ -n "$DIALPREFIX" ]; then
echo "amt=$DIALPREFIX" >>${ilogfile}.new
else
echo "# amt=" >>${ilogfile}.new
fi
;;
*)
echo -E "$_line" >>${ilogfile}.new
;;
esac
done < <(cat ${ilogfile})
mv ${ilogfile}.new ${ilogfile}
fi
test -n "${DRIVER_OPTIONS}" && DRIVER_OPTIONS=" ${DRIVER_OPTIONS}"
eval capi_nr=\$capi_nr_$DRIVER
if [ "$DRIVER" = "fcpci" -o "$DRIVER" = "fcpnp" -o \
"$DRIVER" = "fcpcmcia" ]; then
echo "$DRIVER - - - - - ${capi_nr}${DRIVER_OPTIONS}" >> $CAPIFILE
fi
if [ "$DRIVER" = "fcclassic" ]; then
echo "$DRIVER - - $PARA_IO $PARA_IRQ - ${capi_nr}${DRIVER_OPTIONS}" >> $CAPIFILE
fi
if [ "$DRIVER" = "fcdsl" ]; then
echo "$DRIVER fdslbase.bin - - - - ${capi_nr}${DRIVER_OPTIONS}" >> $CAPIFILE
fi
if [ "$DRIVER" = "fcdsl2" ]; then
echo "$DRIVER fds2base.bin - - - - ${capi_nr}${DRIVER_OPTIONS}" >> $CAPIFILE
fi
if [ "$DRIVER" = "fcdslsl" ]; then
echo "$DRIVER fdssbase.bin - - - - ${capi_nr}${DRIVER_OPTIONS}" >> $CAPIFILE
fi
if [ "$PROTOCOL" = "1tr6" ]; then
B1_PROTO=1TR6
B1_FIRM=b1-1tr6.t4
elif [ "$PROTOCOL" = "ni1" ]; then
B1_PROTO=NI1
B1_FIRM=b1-usa.t4
else
B1_PROTO=DSS1
B1_FIRM=b1.t4
fi
if [ "$DRIVER" = "b1isa" ]; then
echo "$DRIVER $B1_FIRM $B1_PROTO $PARA_IO $PARA_IRQ - ${capi_nr}${DRIVER_OPTIONS}" >> $CAPIFILE
fi
if [ "$DRIVER" = "b1pci" -o "$DRIVER" = "b1pcmcia" ]; then
echo "$DRIVER $B1_FIRM $B1_PROTO - - - ${capi_nr}${DRIVER_OPTIONS}" >> $CAPIFILE
fi
if [ "$DRIVER" = "c4" ]; then
if [ "$PARA_SUBTYPE" = "6" ]; then
# C2
DRIVER="c2"
capi_nr=$capi_nr_c2
echo "c2 c2.bin DSS1 - - - ${capi_nr}${DRIVER_OPTIONS}" >> $CAPIFILE
capi_nr=$(($capi_nr + 1))
echo "c2 - DSS1 - - - ${capi_nr}${DRIVER_OPTIONS}" >> $CAPIFILE
else
echo "$DRIVER c4.bin DSS1 - - - ${capi_nr}${DRIVER_OPTIONS}" >> $CAPIFILE
capi_nr=$(($capi_nr + 1))
echo "$DRIVER - DSS1 - - - ${capi_nr}${DRIVER_OPTIONS}" >> $CAPIFILE
capi_nr=$(($capi_nr + 1))
echo "$DRIVER - DSS1 - - - ${capi_nr}${DRIVER_OPTIONS}" >> $CAPIFILE
capi_nr=$(($capi_nr + 1))
echo "$DRIVER - DSS1 - - - ${capi_nr}${DRIVER_OPTIONS}" >> $CAPIFILE
fi
fi
if [ "$DRIVER" = "t1isa" -o "$DRIVER" = "t1pci" ]; then
case "$PARA_SUBTYPE" in
"0") #T1 ISA
T1_FIRM="t1"
;;
"1")T1B ISA
T1_FIRM="t1b"
;;
"2")T1 PCI
T1_FIRM="t1"
PARA_IO="-"
PARA_IRQ="-"
;;
"3")T1B PCI
T1_FIRM="t1b"
PARA_IO="-"
PARA_IRQ="-"
;;
esac
if [ "$PROTOCOL" = "1tr6" ]; then
T1_PROTO=1TR6
T1_FIRM="${T1_FIRM}-1tr6.t4"
else
T1_PROTO=DSS1
T1_FIRM="${T1_FIRM}.t4"
fi
echo "$DRIVER $T1_FIRM $T1_PROTO $PARA_IO $PARA_IRQ - ${capi_nr}${DRIVER_OPTIONS}" >> $CAPIFILE
fi
capi_nr=$(($capi_nr + 1))
eval capi_nr_$DRIVER=\$capi_nr
# handle pcmcia hisax/fcpcmcia
PCMCIACFG=$r/etc/pcmcia/avm.conf
test -f ${PCMCIACFG} || continue
if [ "$DRIVER" = "fcpcmcia" ]; then
mv ${PCMCIACFG} ${PCMCIACFG}.old
sed 's/bind "avma1_cs"/bind "fcpcmcia_cs"/g' ${PCMCIACFG}.old > ${PCMCIACFG}
elif [ "$DRIVER" = "hisax" -a "$PARA_TYPE" = "26" ]; then
mv ${PCMCIACFG} ${PCMCIACFG}.old
sed 's/bind "fcpcmcia_cs"/bind "avma1_cs"/g' ${PCMCIACFG}.old > ${PCMCIACFG}
fi
done
O_COUNTRY=default
default=""
# read in old set as fallback
test -f $r/etc/isdn/isdn.conf && while read -r _w1 _w2 _w3 _rest ; do
case $_w1 in
"AREACODE") O_AREACODE=$_w3 ;;
"AREACODE=") O_AREACODE=$_w2 ;;
"AREACODE="*) O_AREACODE=${_w1#AREACODE=} ;;
"COUNTRYCODE") O_COUNTRYCODE=$_w3 ;;
"COUNTRYCODE=") O_COUNTRYCODE=$_w2 ;;
"COUNTRYCODE="*) O_COUNTRYCODE=${_w1#COUNTRYCODE=} ;;
"#SuSEconfig.isdn"|"#postprocess.isdn") test -n "$_w3" && O_COUNTRY=$_w3 ;;
esac
done < <(cat $r/etc/isdn/isdn.conf)
strip_leadingzero O_AREACODE
if [ -n "$GLOBAL_AREACODE" ]; then
case $GLOBAL_AREACODE in 00*) GLOBAL_AREACODE="+${GLOBAL_AREACODE#00}" ;; esac
case $GLOBAL_AREACODE in
"+49"*)
COUNTRYCODE=49
AREACODE=${GLOBAL_AREACODE#+49}
;;
"+43"*)
COUNTRYCODE=43
AREACODE=${GLOBAL_AREACODE#+43}
;;
"+41"*)
COUNTRYCODE=41
AREACODE=${GLOBAL_AREACODE#+41}
;;
"+421"*)
COUNTRYCODE=421
AREACODE=${GLOBAL_AREACODE#+421}
;;
"+352"*)
COUNTRYCODE=352
AREACODE=${GLOBAL_AREACODE#+352}
;;
"+31"*)
COUNTRYCODE=31
AREACODE=${GLOBAL_AREACODE#+31}
;;
"+47"*)
COUNTRYCODE=47
AREACODE=${GLOBAL_AREACODE#+47}
;;
"+48"*)
COUNTRYCODE=48
AREACODE=${GLOBAL_AREACODE#+48}
;;
"+"*)
read COUNTRYCODE AREACODE < <(echo $GLOBAL_AREACODE)
COUNTRYCODE=${COUNTRYCODE#+}
;;
*)
COUNTRYCODE=$O_COUNTRYCODE
AREACODE=$GLOBAL_AREACODE
;;
esac
AREACODE=${AREACODE// }
else
COUNTRYCODE=$O_COUNTRYCODE
AREACODE=$O_AREACODE
default=yes
fi
case $COUNTRYCODE in
49) COUNTRY=de;;
48) COUNTRY=pl;;
47) COUNTRY=no;;
43) COUNTRY=at;;
421) COUNTRY=sk;;
41) COUNTRY=ch;;
352) COUNTRY=lu;;
31) COUNTRY=nl;;
*) COUNTRY=unknown;;
esac
if [ "$O_COUNTRY" = "default" ]; then
COUNTRYCONF=$r/etc/isdn/isdn.conf.${COUNTRY}
else
if [ -f $r/etc/isdn/isdn.conf ]; then
if [ "$O_COUNTRY" = "$COUNTRY" ]; then
COUNTRYCONF=$r/etc/isdn/isdn.conf
else
COUNTRYCONF=$r/etc/isdn/isdn.conf.${COUNTRY}
fi
else
COUNTRYCONF=$r/etc/isdn/isdn.conf.${COUNTRY}
fi
fi
if [ ! -f $COUNTRYCONF ]; then
if [ "$COUNTRY" = "sk" -o "$COUNTRY" = "ch" ]; then
sed "s/-xx/-${COUNTRY}/g" $r/etc/isdn/isdn.conf.unknown >$r/etc/isdn/isdn.conf.${COUNTRY}
fi
fi
test -f $COUNTRYCONF || COUNTRYCONF=$r/etc/isdn/isdn.conf
test -f $r/etc/isdn/isdn.conf && \
cp $r/etc/isdn/isdn.conf $r/etc/isdn/isdn.conf.postprocess.old
if [ -n "$COUNTRYCODE" -a -n "$AREACODE" ]; then
echo "Modify isdn.conf"
if [ "$default" = "yes" ]; then
echo "#postprocess.isdn modified default" > $r/etc/isdn/isdn.conf.new
else
echo "#postprocess.isdn modified $COUNTRY" > $r/etc/isdn/isdn.conf.new
fi
while read -r _line ; do
case $_line in
"#SuSEconfig"* | "#postprocess"*)
;;
"AREACODE"*)
echo "AREACODE = $AREACODE" >>$r/etc/isdn/isdn.conf.new
;;
"COUNTRYCODE"*)
echo "COUNTRYCODE = $COUNTRYCODE" >>$r/etc/isdn/isdn.conf.new
;;
*)
echo -E "$_line" >>$r/etc/isdn/isdn.conf.new
;;
esac
done < <(cat $COUNTRYCONF)
mv $r/etc/isdn/isdn.conf.new $r/etc/isdn/isdn.conf
fi
#
# delete old files
#
cd $r/etc/sysconfig/network
for i in ifcfg-ippp* ifcfg-isdn* ; do
dev="${i#ifcfg-}"
case $i in
ifcfg-ippp\*|ifcfg-isdn\*)
# drop no matching file
continue ;;
*~*|*.*)
# drop backup files, rpm{save,new,orig}
continue ;;
ifcfg-ippp*)
# optfile
prov=`grep "^PROVIDER" $i`
test -n "$prov" && eval $prov
test -n "$PROVIDER" && rm -f $r/etc/ppp/options.${dev}.${PROVIDER}
;;
esac
#
# here we cleanup old ifroute-${dev} from 8.0
# in current version a default route setting
# is placed in /etc/sysconfig/network/routes
# to keep /etc/sysconfig/network/ifroute-${dev}
# for special cases
if [ -f ifroute-${dev} ]; then
com=0
nocom=0
while read DEST GWAY MASK IFACE TYPE IPOPTS ; do
LINE="$DEST $GWAY $MASK $IFACE $TYPE $IPOPTS"
case $DEST in
\#SuSEconfig.isdn) com=1; continue ;;
\#postprocess.isdn) com=1; continue ;;
\#*|"") continue ;;
*) if [ $com -eq 1 ]; then
com = 0
else
nocom=$(($nocom + 1))
fi
;;
esac
done < <(cat ifroute-${dev})
test $nocom -eq 0 && rm -f ifroute-${dev}
fi
# remove entry from routes
make_defaultroute ${dev} no
rm -f $i
done
# loop trough provider definitions and create
# pap/chap entries for ISDN Provider
if [ "$MODIFY_SECRETS" != "no" ]; then
cd $r/etc/sysconfig/network/providers
for i in *; do
case $i in
*~*|*.*)
# drop backup files
;;
"*")
;;
*)
for v in $PROVIDER_OPTIONS ; do
unset $v
done
. $i
echo -n "provider $i "
REMOTE_NAME=${REMOTE_NAME:-*}
if [ "$ISDNSUPPORTED" = "yes" ]; then
add_secret $r/etc/ppp/pap-secrets "$USERNAME" "$PASSWORD" "$REMOTE_NAME"
add_secret $r/etc/ppp/chap-secrets "$USERNAME" "$PASSWORD" "$REMOTE_NAME"
fi
echo " done"
;;
esac
done
else
echo "skip modify of pap-secrets/chap-secrets because of MODIFY_SECRETS=$MODIFY_SECRETS"
fi
# loop trough isdn connection setups and create
# etc/sysconfig/network/ifcfg files
MAX_IDX=-1;
NETFILES=""
cd $r/etc/sysconfig/isdn
for i in cfg-net*; do
case $i in
*~*|*.*)
# drop backup files, rpm{save,new,orig}
;;
"cfg-net*")
;;
*)
NETFILES="$NETFILES $i"
IDX=${i#cfg-net}
test $IDX -ge $MAX_IDX && MAX_IDX=$IDX
;;
esac
done
SLAVE_IDX=${MAX_IDX};
set -- $NETFILES
for name in "${@#cfg-}"; do
# cleanup old values
for v in $IFCFG_OPTIONS $IFCFG_IPPP_OPTIONS $IFCFG_ISDN_OPTIONS \
SLAVECNT $PROVIDER_OPTIONS OLDIDLETIME SMPPPD_IGNORE ; do
unset $v
done
IDX=${name#net}
ifile="cfg-$name"
test -f "$ifile" || continue
echo -n "Reading $ifile,"
test -n "$COMMON_CONFIG" && . $COMMON_CONFIG
. $ifile
# need for update
OLDIDLETIME=${IDLETIME}
test -z "$DIALPREFIX" && DIALPREFIX=${GLOBAL_DIALPREFIX}
LAYER2=${LAYER2:-hdlc}
LAYER3=${LAYER3:-trans}
SECURE=${SECURE:-on}
PROVIDERFILE=${PROVIDER}
if [ -f "../network/providers/${PROVIDERFILE}" ]; then
echo "${PROVIDERFILE} ..."
. ../network/providers/${PROVIDERFILE}
else
echo "${PROVIDERFILE} not found"
continue
fi
PROVIDERNAME=${PROVIDER}
PROVIDER=${PROVIDERFILE}
# Update $ifile if it is a old version
if [ -n "$OLDIDLETIME" ]; then
remove_value_from_file $ifile IDLETIME
replace_value_in_file ../network/providers/${PROVIDERFILE} IDLETIME $OLDIDLETIME
fi
if [ -n "$USEPEERDNS" ]; then
remove_value_from_file $ifile USEPEERDNS
replace_value_in_file ../network/providers/${PROVIDERFILE} MODIFYDNS $USEPEERDNS
fi
IPADDR=${IPADDR:-0.0.0.0}
PTPADDR=${PTPADDR:-0.0.0.0}
DIALMODE=${DIALMODE:-manual}
test "$DEMAND" = "yes" && DIALMODE="auto"
case "$PROTOCOL" in
syncppp)
DEVICETYPE="ippp"
SMPPPD_IGNORE=${SMPPPD_IGNORE-no}
if [ -z "$USERCONTROL" ] ; then
if [ "$SMPPPD_IGNORE" = "yes" ] ; then
USERCONTROL=no
else
if [ -z "$REMOTE_IN" -a "$SECURE" = "on" ] ; then
USERCONTROL=yes
else
USERCONTROL=no
fi
fi
fi
DEVICE="${DEVICETYPE}${IDX}"
echo -n "Writing ifcfg-${DEVICE} ... "
ifcfgfile="../network/ifcfg-${DEVICE}"
create_autofile $ifcfgfile /etc/sysconfig/isdn/$ifile
ENCAP="syncppp"
SLAVES=""
if [ "$MULTILINK" = "yes" ] ; then
test -z "$SLAVECNT" && SLAVECNT=1
while [ $SLAVECNT -gt 0 ]; do
test -n "$SLAVES" && SLAVES="${SLAVES} "
SLAVE_IDX=$(($SLAVE_IDX + 1))
SLAVES="${SLAVES}${DEVICETYPE}${SLAVE_IDX}"
SLAVECNT=$(($SLAVECNT - 1))
done
fi
for v in $IFCFG_OPTIONS $IFCFG_IPPP_OPTIONS ; do
write_value $v >>$ifcfgfile
done
;;
rawip)
test -z "$USERCONTROL" && USERCONTROL=no
DEVICETYPE="isdn"
DEVICE="${DEVICETYPE}${IDX}"
echo -n "Writing ifcfg-${DEVICE} ... "
ifcfgfile="../network/ifcfg-${DEVICE}"
create_autofile $ifcfgfile /etc/sysconfig/isdn/$ifile
ENCAP="rawip"
SLAVES=""
if [ "$MULTILINK" = "yes" ] ; then
test -z "$SLAVECNT" && SLAVECNT=1
while [ $SLAVECNT -gt 0 ]; do
test -n "$SLAVES" && SLAVES="${SLAVES} "
SLAVES="${SLAVES}${DEVICE}s${SLAVECNT}"
SLAVECNT=$(($SLAVECNT - 1))
done
fi
for v in $IFCFG_OPTIONS $IFCFG_ISDN_OPTIONS ; do
write_value $v >>$ifcfgfile
done
;;
*)
echo -n "Protocol $PROTOCOL unknown"
;;
esac
# handle defaultroute for this device if needed
test "$DEMAND" = "yes" || DEFAULTROUTE=no
make_defaultroute $DEVICE $DEFAULTROUTE $PTPADDR $NETMASK
echo "done"
done