From 330b469a0ef4845f5649b94998a9dbf4fc633bb2 Mon Sep 17 00:00:00 2001 From: Jesse Young Date: Mon, 25 Oct 2010 19:29:08 -0500 Subject: [PATCH] Generate pppd configuration in netcfg Only AUTH='noauth' is supported at this time Signed-off-by: Jesse Young --- examples/ppp-managed | 13 +++++++++++ src/connections/ppp | 57 ++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 examples/ppp-managed diff --git a/examples/ppp-managed b/examples/ppp-managed new file mode 100644 index 0000000..a69d5f6 --- /dev/null +++ b/examples/ppp-managed @@ -0,0 +1,13 @@ +CONNECTION='ppp' +CONFIG='managed' +INTERFACE='ignore' + +MODEM='/dev/gsmmodem' +BAUD=460800 +INIT=('ATZ' 'ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0') +PHONE='#777' +# Only noauth is supported at this time +AUTH='noauth' +USERNAME='' +PASSWORD='' +PPP_TIMEOUT=10 diff --git a/src/connections/ppp b/src/connections/ppp index 4a9b218..c33d4c4 100644 --- a/src/connections/ppp +++ b/src/connections/ppp @@ -1,13 +1,61 @@ #! /bin/bash . /usr/lib/network/network +# TODO: Support authentication +make_ppp_config() { + local chat_script="/etc/ppp/chatscripts/$PEER" + [[ -z "$CONNECT_TIMEOUT" ]] && CONNECT_TIMEOUT=30 + [[ ! -d /etc/ppp/chatscripts ]] && mkdir -p /etc/ppp/chatscripts + cat > "$chat_script" << NETCFGEOF +ABORT 'BUSY' +ABORT 'NO CARRIER' +ABORT 'VOICE' +ABORT 'NO DIALTONE' +ABORT 'NO DIAL TONE' +ABORT 'NO ANSWER' +ABORT 'DELAYED' +REPORT CONNECT +TIMEOUT 5 +NETCFGEOF + + local expected='' + for line in "${INIT[@]}"; do + echo "'$expected' '$line'" >> "$chat_script" + expected='OK' + done + echo "'$expected' 'ATDT$PHONE'" >> "$chat_script" + echo "TIMEOUT $CONNECT_TIMEOUT" >> "$chat_script" + echo "'CONNECT' ''" >> "$chat_script" + + local peer_file="/etc/ppp/peers/$PEER" + [[ ! -d /etc/ppp/peers ]] && mkdir -p /etc/ppp/peers + + cat > "$peer_file" << NETCFGEOF +$MODEM $BAUD +noauth +noproxyarp +name $PEER +linkname $PEER +usepeerdns +noipdefault +defaultroute +updetach +child-timeout $PPP_TIMEOUT +connect "/usr/sbin/chat -t15 -f $chat_script" +NETCFGEOF +} ppp_up() { load_profile "$1" - [[ -z "$PEER" ]] && PEER="provider" + [[ -z "$PEER" ]] && PEER="$1" [[ -z "$PPP_TIMEOUT" ]] && PPP_TIMEOUT=30 + [[ -z "$CONNECT_TIMEOUT" ]] && PPP_TIMEOUT=30 - /usr/sbin/pppd call "$PEER" updetach child-timeout "$PPP_TIMEOUT" linkname "$PEER" + if [ "$CONFIG" == "managed" ]; then + make_ppp_config + fi + + /usr/sbin/pppd call "$PEER" if [[ $? -ne 0 ]]; then report_fail "Couldn't make pppd connection." @@ -17,6 +65,11 @@ ppp_up() { ppp_down() { load_profile "$1" + [[ -z "$PEER" ]] && PEER="$1" + if [ "$CONFIG" == "managed" ]; then + rm -f "/etc/ppp/chatscripts/$PEER" > /dev/null 2>&1 + rm -f "/etc/ppp/peers/$PEER" > /dev/null 2>&1 + fi kill "$(head -1 "/var/run/ppp-$(basename $PEER).pid")" } -- 1.7.2.3