#!/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_validate_section pptpd login "${1}" \
|
|
'username:string' \
|
|
'password:string'
|
|
}
|
|
|
|
validate_pptpd_section() {
|
|
uci_validate_section pptpd service "${1}" \
|
|
'enabled:uinteger' \
|
|
'localip:string' \
|
|
'remoteip:string' \
|
|
'mppe:list(string):required no40 no56 stateless' \
|
|
'logwtmp:uinteger'
|
|
}
|
|
|
|
setup_login() {
|
|
validate_login_section "${1}" || {
|
|
echo "validation failed"
|
|
return 1
|
|
}
|
|
|
|
[ -n "${username}" ] || return 0
|
|
[ -n "${password}" ] || return 0
|
|
|
|
echo "${username} pptp-server ${password} *" >> $CHAP_SECRETS
|
|
}
|
|
|
|
setup_config() {
|
|
local enabled localip remoteip mppe
|
|
|
|
validate_pptpd_section "${1}" || {
|
|
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
|
|
setup_config pptpd || return
|
|
config_foreach setup_login login
|
|
|
|
ln -sfn $CHAP_SECRETS /etc/ppp/chap-secrets
|
|
|
|
procd_open_instance
|
|
procd_set_param command $BIN -c $CONFIG -o $OPTIONS_PPTP
|
|
procd_close_instance
|
|
}
|