| #!/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:bool:1' \ |
| 'localip:string' \ |
| 'remoteip:string' \ |
| 'mppe:list(string):required no40 no56 stateless' \ |
| 'logwtmp:bool:0' |
| } |
| |
| 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 |
| } |