diff options
| -rw-r--r-- | data/templates/system-login/pam_radius_auth.conf.tmpl | 13 | ||||
| -rwxr-xr-x | src/conf_mode/system-login.py | 32 | 
2 files changed, 24 insertions, 21 deletions
| diff --git a/data/templates/system-login/pam_radius_auth.conf.tmpl b/data/templates/system-login/pam_radius_auth.conf.tmpl new file mode 100644 index 000000000..6cff67867 --- /dev/null +++ b/data/templates/system-login/pam_radius_auth.conf.tmpl @@ -0,0 +1,13 @@ +# Automatically generated by VyOS +# RADIUS configuration file +{%- if radius_server %} +# server[:port]         shared_secret                           timeout (s)     source_ip +{% for s in radius_server %} +{%- if not s.disabled -%} +{{ s.address }}:{{ s.port }} {{ s.key }} {{ s.timeout }} {% if radius_source_address -%}{{ radius_source_address }}{% endif %} +{% endif %} +{%- endfor %} + +priv-lvl 15 +mapped_priv_user radius_priv_user +{% endif %} diff --git a/src/conf_mode/system-login.py b/src/conf_mode/system-login.py index 959e86e5b..7acb0a9a2 100755 --- a/src/conf_mode/system-login.py +++ b/src/conf_mode/system-login.py @@ -14,36 +14,21 @@  # You should have received a copy of the GNU General Public License  # along with this program.  If not, see <http://www.gnu.org/licenses/>. -import sys  import os -import jinja2 +from jinja2 import FileSystemLoader, Environment +from psutil import users  from pwd import getpwall, getpwnam  from stat import S_IRUSR, S_IWUSR, S_IRWXU, S_IRGRP, S_IXGRP  from subprocess import Popen, PIPE, STDOUT -from psutil import users +from sys import exit  from vyos.config import Config  from vyos.configdict import list_diff +from vyos.defaults import directories as vyos_data_dir  from vyos import ConfigError  radius_config_file = "/etc/pam_radius_auth.conf" -radius_config_tmpl = """ -# Automatically generated by VyOS -# RADIUS configuration file -{%- if radius_server %} -# server[:port]         shared_secret                           timeout (s)     source_ip -{% for s in radius_server %} -{%- if not s.disabled -%} -{{ s.address }}:{{ s.port }} {{ s.key }} {{ s.timeout }} {% if radius_source_address -%}{{ radius_source_address }}{% endif %} -{% endif %} -{%- endfor %} - -priv-lvl 15 -mapped_priv_user radius_priv_user -{% endif %} - -"""  default_config_data = {      'deleted': False, @@ -229,7 +214,12 @@ def generate(login):              os.system("vyos_libexec_dir=/usr/libexec/vyos /opt/vyatta/sbin/my_set system login user '{}' authentication encrypted-password '{}' >/dev/null".format(user['name'], user['password_encrypted']))      if len(login['radius_server']) > 0: -        tmpl = jinja2.Template(radius_config_tmpl) +        # Prepare Jinja2 template loader from files +        tmpl_path = os.path.join(vyos_data_dir['data'], 'templates', 'system-login') +        fs_loader = FileSystemLoader(tmpl_path) +        env = Environment(loader=fs_loader) + +        tmpl = env.get_template('pam_radius_auth.conf.tmpl')          config_text = tmpl.render(login)          with open(radius_config_file, 'w') as f:              f.write(config_text) @@ -364,4 +354,4 @@ if __name__ == '__main__':          apply(c)      except ConfigError as e:          print(e) -        sys.exit(1) +        exit(1) | 
