#!/usr/bin/env python3 # # Copyright (C) 2020 VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as # published by the Free Software Foundation. # # 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 . from sys import exit from vyos.config import Config from vyos import ConfigError from vyos import airbag airbag.enable() motd=""" Welcome to VyOS! Check out project news at https://blog.vyos.io and feel free to report bugs at https://phabricator.vyos.net You can change this banner using "set system login banner post-login" command. VyOS is a free software distribution that includes multiple components, you can check individual component licenses under /usr/share/doc/*/copyright """ PRELOGIN_FILE = r'/etc/issue' PRELOGIN_NET_FILE = r'/etc/issue.net' POSTLOGIN_FILE = r'/etc/motd' default_config_data = { 'issue': 'Welcome to VyOS - \n \l\n', 'issue_net': 'Welcome to VyOS\n', 'motd': motd } def get_config(config=None): banner = default_config_data if config: conf = config else: conf = Config() base_level = ['system', 'login', 'banner'] if not conf.exists(base_level): return banner else: conf.set_level(base_level) # Post-Login banner if conf.exists(['post-login']): tmp = conf.return_value(['post-login']) # post-login banner can be empty as well if tmp: tmp = tmp.replace('\\n','\n') tmp = tmp.replace('\\t','\t') # always add newline character tmp += '\n' else: tmp = '' banner['motd'] = tmp # Pre-Login banner if conf.exists(['pre-login']): tmp = conf.return_value(['pre-login']) # pre-login banner can be empty as well if tmp: tmp = tmp.replace('\\n','\n') tmp = tmp.replace('\\t','\t') # always add newline character tmp += '\n' else: tmp = '' banner['issue'] = banner['issue_net'] = tmp return banner def verify(banner): pass def generate(banner): pass def apply(banner): with open(PRELOGIN_FILE, 'w') as f: f.write(banner['issue']) with open(PRELOGIN_NET_FILE, 'w') as f: f.write(banner['issue_net']) with open(POSTLOGIN_FILE, 'w') as f: f.write(banner['motd']) return None if __name__ == '__main__': try: c = get_config() verify(c) generate(c) apply(c) except ConfigError as e: print(e) exit(1)