#!/bin/bash ############################################################################### # # # IPFire.org - A linux based firewall # # Copyright (C) 2012 IPFire Network Development Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # # the Free Software Foundation, either version 3 of the License, or # # (at your option) any later version. # # # # This program is distributed in the hope that it will be useful, # # but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU General Public License for more details. # # # # You should have received a copy of the GNU General Public License # # along with this program. If not, see . # # # ############################################################################### function pppoe_server_start() { local zone=${1} assert isset zone service_start "pppoe-server@${zone}.service" } function pppoe_server_stop() { local zone=${1} assert isset zone service_stop "pppoe-server@${zone}.service" } function pppoe_server_status() { local zone=${1} assert isset zone service_status "pppoe-server@${zone}.service" } function pppoe_server_options() { local file=${1} assert isset file local zone=${2} assert isset zone shift 2 local auth="false" local default_asyncmap="true" local dns_servers local lcp_echo_failure=5 local lcp_echo_interval=60 local proxyarp="true" local required_auths local value while [ $# -gt 0 ]; do case "${1}" in --auth=*) auth=$(cli_get_val ${1}) ;; --default-asyncmap=*) default_asyncmap=$(cli_get_val ${1}) ;; --dns-server=*) dns_servers="${dns_servers} $(cli_get_val ${1})" ;; --lcp-echo-failure=*) lcp_echo_failure=$(cli_get_val ${1}) assert isinteger ${lcp_echo_failure} ;; --lcp-echo-interval=*) lcp_echo_interval=$(cli_get_val ${1}) assert isinteger ${lcp_echo_interval} ;; --proxyarp=*) proxyarp=$(cli_get_val ${1}) ;; --require-auth=*) required_auths="${required_auths} $(cli_get_val ${1})" ;; esac shift done mkdir -p $(dirname ${file}) 2>/dev/null config_header "pppoe-server options configuration file" > ${file} # Authentication ( print "# Authentication" if enabled auth; then print "auth" else print "noauth" fi print ) >> ${file} # If there are only a number of auth algorithms allowed, we # define them here. if isset required_auths; then print "# Required authentication methods" >> ${file} local method for method in ${required_auths}; do print "require-${method}" done >> ${file} print >> ${file} fi # DNS servers if isset dns_servers; then print "# DNS servers" >> ${file} local server for server in ${dns_servers}; do print "ms-dns ${server}" done >> ${file} print >> ${file} fi # Default asyncmap if enabled default_asyncmap; then ( print "# Default asyncmap" print "default-asyncmap" print ) >> ${file} fi # LCP settings. ( print "# LCP settings" print "lcp-echo-failure ${lcp_echo_failure}" print "lcp-echo-interval ${lcp_echo_interval}" print ) >> ${file} # Proxy ARP ( print "# Proxy ARP" if enabled proxyarp; then print "proxyarp" else print "noproxyarp" fi print ) >> ${file} # Default options, we always set. ( print "debug" print "nodefaultroute" print "noipdefault" print "noipx" ) >> ${file} return ${EXIT_OK} } function pppoe_server_poolfile() { local file=${1} assert isset file local subnet=${2} assert isset subnet config_header "PPPoE server IP address pool file" > ${file} # The network address will be the gateway address. local netaddr=$(ipv4_get_network ${subnet}) local addr for addr in $(ipv4_range_explicit ${subnet}); do [ "${addr}" = "${netaddr}" ] && continue print "${addr}" done >> ${file} return ${EXIT_OK} }