def load_defaults(self): """Load default config options. """ # Settings self.settings = {} self.settings['name'] = None self.settings['geoip_data'] = None self.settings['datetime_format'] = '%d/%m/%Y %H:%M:%S' # VPN(s) self.vpns = [] vpn = VPN(host='localhost', port=5555) vpn.name = 'Default VPN' vpn.allow_disconnect = True self.vpns.append(vpn)
def _parse_file(self, filename): config = configparser.RawConfigParser() logger.info('Parsing config file: %s', filename) contents = config.read(filename) if not contents: raise InvalidConfigError( 'Unable to read config file: {}'.format(filename)) if 'Monitor' not in config.sections(): raise InvalidConfigError( "'Monitor' section required, but not found in config") # Parse 'Monitor' section monitor = config['Monitor'] self.settings['name'] = monitor.get('name') self.settings['geoip_data'] = monitor.get('geoip_data') self.settings['datetime_format'] = monitor.get('datetime_format', '%d/%m/%Y %H:%M:%S') # Parse other (VPN) sections for s in [s for s in config.sections() if s != 'Monitor']: section = config[s] # Compulsory host = section.get('host') try: port = section.getint('port') except ValueError: port = None socket = section.get('socket') if (socket and host) or (socket and port) or (not socket and not host and not port): raise InvalidConfigError( 'Must specify either socket or host and port') if socket: vpn = VPN(socket=socket) else: vpn = VPN(host=host, port=port) vpn.name = s # Optional try: vpn.allow_disconnect = section.getboolean( 'allow_disconnect', True) except configparser.NoOptionError: pass # Add VPN self.vpns.append(vpn)