#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2015 OpenWrt.org
|
|
|
|
START=60
|
|
USE_PROCD=1
|
|
|
|
BIN=/usr/sbin/pptpd
|
|
CONFIG=/var/etc/pptpd.conf
|
|
CHAP_SECRETS=/var/etc/chap-secrets
|
|
OPTIONS_PPTP=/var/etc/options.pptpd
|
|
|
|
validate_login_section() {
|
|
uci_load_validate pptpd login "$1" "$2" \
|
|
'username:string' \
|
|
'password:string' \
|
|
'remoteip:string'
|
|
}
|
|
|
|
validate_pptpd_section() {
|
|
uci_load_validate pptpd service "$1" "$2" \
|
|
'enabled:uinteger' \
|
|
'localip:string' \
|
|
'remoteip:string' \
|
|
'mppe:list(string):required no40 no56 stateless' \
|
|
'logwtmp:uinteger'
|
|
}
|
|
|
|
setup_login() {
|
|
[ "$2" = 0 ] || {
|
|
echo "validation failed"
|
|
return 1
|
|
}
|
|
|
|
[ -n "$username" ] || return 0
|
|
[ -n "$password" ] || return 0
|
|
[ -n "$remoteip" ] || remoteip=*
|
|
|
|
echo "$username pptp-server $password $remoteip" >> $CHAP_SECRETS
|
|
}
|
|
|
|
setup_config() {
|
|
[ "$2" = 0 ] || {
|
|
echo "validation failed"
|
|
return 1
|
|
}
|
|
|
|
[ "$enabled" -eq 0 ] && return 1
|
|
|
|
mkdir -p /var/etc
|
|
cp /etc/pptpd.conf $CONFIG
|
|
cp /etc/ppp/options.pptpd $OPTIONS_PPTP
|
|
|
|
[ -n "$localip" ] && echo "localip $localip" >> $CONFIG
|
|
[ -n "$remoteip" ] && echo "remoteip $remoteip" >> $CONFIG
|
|
[ "$logwtmp" -eq 1 ] && echo "logwtmp" >> $CONFIG
|
|
|
|
echo "mppe $(echo $mppe | sed -e 's/\s/,/g')" >> $OPTIONS_PPTP
|
|
|
|
return 0
|
|
}
|
|
|
|
start_service() {
|
|
config_load pptpd
|
|
validate_pptpd_section pptpd setup_config || return
|
|
config_foreach validate_login_section login setup_login
|
|
|
|
ln -sfn $CHAP_SECRETS /etc/ppp/chap-secrets
|
|
|
|
procd_open_instance
|
|
procd_set_param command $BIN -c $CONFIG --fg -o $OPTIONS_PPTP
|
|
procd_close_instance
|
|
}
|
|
|
|
service_triggers () {
|
|
procd_add_reload_trigger "pptpd"
|
|
|
|
procd_open_validate
|
|
validate_pptpd_section
|
|
validate_login_section
|
|
procd_close_validate
|
|
}
|