def authenticate(self): # entry point for repository authentication try: self.repository.login() except cfg_exceptions.InvalidSession: (username, password) = self.get_auth_info( username=local_config.get('username')) try: self.repository.login(username=username, password=password) except cfg_exceptions.InvalidSession, e: rhn_log.die(1, "Session error: %s\n" % e)
def authenticate(self, username=None, password=None): # entry point for repository authentication try: self.repository.login() except cfg_exceptions.InvalidSession: if not username: username = local_config.get('username') if not password: (username, password) = self.get_auth_info(username) try: self.repository.login(username=username, password=password) except cfg_exceptions.InvalidSession, e: rhn_log.die(1, "Session error: %s\n" % e)
def _setup_config(self, config, force=0): logfile = self.options.logfile if logfile is None or logfile == '': logfile = config['logfile'] debug_level = self.options.verbose if debug_level is None: dl = config['debug_level'] if dl is not None: debug_level = int(dl) else: dl = 0 set_logfile(logfile) self.debug_level = debug_level set_debug_level(debug_level) self._tcp_keepalive_timeout = config['tcp_keepalive_timeout'] self._tcp_keepalive_count = config['tcp_keepalive_count'] log_debug(3, "Updating configuration") client_ssl_cert = config['ssl_ca_cert'] osa_ssl_cert = config['osa_ssl_cert'] or client_ssl_cert if osa_ssl_cert is None: die("No SSL cert supplied") self.ssl_cert = osa_ssl_cert auth_info = self.read_auth_info(force) self._username = auth_info['username'] self._password = auth_info['password'] self._resource = auth_info['resource'] params = self.build_rpclib_params(config) server_url = params.get('uri') self._jabber_servers = [] if self.options.jabber_server: self._jabber_servers.append(self.options.jabber_server) if type(server_url) == type([]): for su in server_url: a_su = self._parse_url(su)[1] self._jabber_servers.append(a_su) else: upstream_jabber_server = self._parse_url(server_url)[1] if upstream_jabber_server not in self._jabber_servers: self._jabber_servers.append(upstream_jabber_server) if type(server_url) != type([]): server_url = [server_url] for su in server_url: try: params['uri'] = su self._xmlrpc_server = s = apply(rpclib.Server, (), params) if osa_ssl_cert: s.add_trusted_cert(osa_ssl_cert) s.registration.welcome_message() server_capabilities = get_server_capability(s) if not server_capabilities.has_key('registration.register_osad'): die("Server does not support OSAD registration") self._systemid_file = systemid_file = config['systemid'] self._systemid = systemid = open(systemid_file).read() current_timestamp = int(time.time()) ret = s.registration.register_osad(systemid, {'client-timestamp' : current_timestamp}) break except: continue else: #for ret = {} #Bugzilla: 142067 #If the server doesn't have push support. 'ret' won't have anything in it. if len(ret.keys()) < 1: raise jabber_lib.JabberConnectionError server_timestamp = ret.get('server-timestamp') # Compute the time drift between the client and the server self._time_drift = server_timestamp - current_timestamp log_debug(2, "Time drift", self._time_drift) js = ret.get('jabber-server') if js not in self._jabber_servers: self._jabber_servers.append(js) if not self._jabber_servers: die("Missing jabber server") if not config.has_key('enable_failover') or config['enable_failover'] != '1': self._jabber_servers = [self._jabber_servers[0]] self._dispatchers = ret.get('dispatchers') self._client_name = ret.get('client-name') self._shared_key = ret.get('shared-key') log_debug(2, "Client name", self._client_name) log_debug(2, "Shared key", self._shared_key) # Load the config self._config_options.clear() self._config_options.update(config) # No reason to expose these at the Client level - but if we have to, # uncommment some of the values below self._config_options.update({ # 'jabber-servers' : self._jabber_servers, # 'dispatchers' : self._dispatchers, # 'client_name' : self._client_name, # 'shared_key' : self._shared_key, })
enable_proxy_auth = self.get_up2date_config()['enableProxyAuth'] if enable_proxy_auth: ret['enable_proxy_auth'] = 1 proxy_user = self._config.get_option('proxyUser') if proxy_user is None: proxy_user = self.get_up2date_config()['proxyUser'] ret['proxy_user'] = proxy_user proxy_password = self._config.get_option('proxyPassword') if proxy_password is None: proxy_password = self.get_up2date_config()['proxyPassword'] ret['proxy_password'] = proxy_password if not server_url: die("Unable to retrieve server URL") # SSL cert for Jabber's TLS, it can potentially be different than the # client's osa_ssl_cert = self._config.get_option('osa_ssl_cert') # The up2date ssl cert - we get it from up2daate's config file client_ca_cert = self.get_up2date_config()['sslCACert'] if isinstance(client_ca_cert, types.ListType): if client_ca_cert: client_ca_cert = client_ca_cert[0] else: client_ca_cert = None if osa_ssl_cert is None: # No setting, use up2date's osa_ssl_cert = client_ca_cert
def _setup_config(self, config, force=0): logfile = self.options.logfile if logfile is None or logfile == '': logfile = config['logfile'] debug_level = self.options.verbose if debug_level is None: dl = config['debug_level'] if dl is not None: debug_level = int(dl) else: dl = 0 set_logfile(logfile) self.debug_level = debug_level set_debug_level(debug_level) self._tcp_keepalive_timeout = config['tcp_keepalive_timeout'] self._tcp_keepalive_count = config['tcp_keepalive_count'] log_debug(3, "Updating configuration") client_ssl_cert = config['ssl_ca_cert'] osa_ssl_cert = config['osa_ssl_cert'] or client_ssl_cert if osa_ssl_cert is None: die("No SSL cert supplied") self.ssl_cert = osa_ssl_cert auth_info = self.read_auth_info(force) self._username = auth_info['username'] self._password = auth_info['password'] self._resource = auth_info['resource'] params = self.build_rpclib_params(config) server_url = params.get('uri') self._jabber_servers = [] if self.options.jabber_server: self._jabber_servers.append(self.options.jabber_server) if type(server_url) == type([]): for su in server_url: a_su = self._parse_url(su)[1] self._jabber_servers.append(a_su) else: upstream_jabber_server = self._parse_url(server_url)[1] if upstream_jabber_server not in self._jabber_servers: self._jabber_servers.append(upstream_jabber_server) if type(server_url) != type([]): server_url = [server_url] for su in server_url: try: params['uri'] = su self._xmlrpc_server = s = apply(rpclib.Server, (), params) if osa_ssl_cert: s.add_trusted_cert(osa_ssl_cert) s.registration.welcome_message() server_capabilities = get_server_capability(s) if not server_capabilities.has_key( 'registration.register_osad'): die("Server does not support OSAD registration") self._systemid_file = systemid_file = config['systemid'] self._systemid = systemid = open(systemid_file).read() current_timestamp = int(time.time()) ret = s.registration.register_osad( systemid, {'client-timestamp': current_timestamp}) break except: continue else: #for ret = {} #Bugzilla: 142067 #If the server doesn't have push support. 'ret' won't have anything in it. if len(ret.keys()) < 1: raise jabber_lib.JabberConnectionError server_timestamp = ret.get('server-timestamp') # Compute the time drift between the client and the server self._time_drift = server_timestamp - current_timestamp log_debug(2, "Time drift", self._time_drift) js = ret.get('jabber-server') if js not in self._jabber_servers: self._jabber_servers.append(js) if not self._jabber_servers: die("Missing jabber server") if not config.has_key( 'enable_failover') or config['enable_failover'] != '1': self._jabber_servers = [self._jabber_servers[0]] self._dispatchers = ret.get('dispatchers') self._client_name = ret.get('client-name') self._shared_key = ret.get('shared-key') log_debug(2, "Client name", self._client_name) log_debug(2, "Shared key", self._shared_key) # Load the config self._config_options.clear() self._config_options.update(config) # No reason to expose these at the Client level - but if we have to, # uncommment some of the values below self._config_options.update({ # 'jabber-servers' : self._jabber_servers, # 'dispatchers' : self._dispatchers, # 'client_name' : self._client_name, # 'shared_key' : self._shared_key, })
)['enableProxyAuth'] if enable_proxy_auth: ret['enable_proxy_auth'] = 1 proxy_user = self._config.get_option('proxyUser') if proxy_user is None: proxy_user = self.get_up2date_config()['proxyUser'] ret['proxy_user'] = proxy_user proxy_password = self._config.get_option('proxyPassword') if proxy_password is None: proxy_password = self.get_up2date_config()['proxyPassword'] ret['proxy_password'] = proxy_password if not server_url: die("Unable to retrieve server URL") # SSL cert for Jabber's TLS, it can potentially be different than the # client's osa_ssl_cert = self._config.get_option('osa_ssl_cert') # The up2date ssl cert - we get it from up2daate's config file client_ca_cert = self.get_up2date_config()['sslCACert'] if isinstance(client_ca_cert, types.ListType): if client_ca_cert: client_ca_cert = client_ca_cert[0] else: client_ca_cert = None if osa_ssl_cert is None: # No setting, use up2date's osa_ssl_cert = client_ca_cert
def main(self): args = [] show_help = None debug_level = 3 mode = None dict_name_opt={'--server-name': None,'--password': None,'--username': None,} for index in range(1,len(sys.argv)): arg=sys.argv[index] param = filter(lambda x: x[1] == 0,dict_name_opt.iteritems()) if param: if arg.startswith('-') or arg in self.modes: # not perfect, but at least a little bit better print "Option %s requires an argument" % dict_name_opt[param[0][0]] return 1 dict_name_opt[param[0][0]] = arg continue if arg in ('--help', '-h'): show_help = 1 continue param = [s for s in dict_name_opt.keys() if arg.startswith(s)] if param: rarg = arg[len(param[0]):] if not rarg: dict_name_opt[param[0]] = 0 if index == len(sys.argv) - 1: print "Option %s requires an argument" % param[0] return 1 continue if rarg[0] == '=': if len(rarg) == 1: print "Option %s requires an argument" % param[0] return 1 dict_name_opt[param[0]] = rarg[1:] continue print "Unknown option %s" % arg return 1 if mode is None: # This should be the mode mode = arg if mode == '': # Bad self.usage(1) if mode[0] == '-': # Mode can't be an option self.usage(1) if mode not in self.modes: print "Unknown mode %s" % mode self.usage(1) continue args.append(arg) server_name = dict_name_opt['--server-name'] password = dict_name_opt['--password'] username = dict_name_opt['--username'] rhn_log.set_debug_level(debug_level) if mode is None: # No args were specified self.usage(0) execname = os.path.basename(sys.argv[0]) # Class names cannot have dot in them, so strip the extension execname = string.split(execname, '.', 1)[0] mode_module = string.replace(mode, '-', '_') module_name = "%s_%s" % (self.mode_prefix, mode_module) full_module_name = "%s.%s" % (self.plugins_dir, module_name) try: module = __import__(full_module_name) except ImportError, e: rhn_log.die(1, "Unable to load plugin for mode '%s': %s" % (mode, e))
up2date_cfg['server_list'] = map(lambda x: urlsplit(x)[1], server_name) server_name = (up2date_cfg['server_list'])[0] local_config.init(self.config_section, defaults=up2date_cfg, server_name=server_name) print "Using server name", server_name # set the debug level through the config rhn_log.set_debug_level(int(local_config.get('debug_level') or 0)) rhn_log.set_logfile(local_config.get('logfile') or "/var/log/rhncfg") # Multi-level import - __import__("foo.bar") does not return the bar # module, but the foo module with bar loaded # XXX Error checking repo_class = local_config.get('repository_type') if repo_class is None: rhn_log.die(1, "repository_type not set (missing configuration file?)") repo_module_name = "%s.%s" % (self.plugins_dir, repo_class) try: repo_module = __import__(repo_module_name) except ImportError, e: rhn_log.die(1, "Unable to load repository module: %s" % e) try: repo_module = getattr(repo_module, repo_class) except AttributeError: rhn_log.die(1, "Malformed repository module") try: repo = getattr(repo_module, self.repository_class_name)() except AttributeError:
def _setup_config(self, config, force=0): logfile = self.options.logfile if logfile is None or logfile == '': logfile = config['logfile'] debug_level = self.options.verbose if debug_level is None: dl = config['debug_level'] if dl is not None: debug_level = int(dl) else: dl = 0 set_logfile(logfile) self.debug_level = debug_level set_debug_level(debug_level) self._tcp_keepalive_timeout = config['tcp_keepalive_timeout'] self._tcp_keepalive_count = config['tcp_keepalive_count'] log_debug(3, "Updating configuration") client_ssl_cert = config['ssl_ca_cert'] osa_ssl_cert = config['osa_ssl_cert'] or client_ssl_cert if osa_ssl_cert is None: die("No SSL cert supplied") self.ssl_cert = osa_ssl_cert auth_info = self.read_auth_info(force) self._username = auth_info['username'] self._password = auth_info['password'] self._resource = auth_info['resource'] server_url = config.get('server_url') self._jabber_servers = [] if self.options.jabber_server: self._jabber_servers.append(self.options.jabber_server) if type(server_url) == type([]): for su in server_url: a_su = self._parse_url(su)[1] self._jabber_servers.append(a_su) else: upstream_jabber_server = self._parse_url(server_url)[1] if upstream_jabber_server not in self._jabber_servers: self._jabber_servers.append(upstream_jabber_server) if not config.has_key( 'enable_failover') or config['enable_failover'] != '1': self._jabber_servers = [self._jabber_servers[0]] # Load the config self._config_options.clear() self._config_options.update(config) # No reason to expose these at the Client level - but if we have to, # uncommment some of the values below self._config_options.update({ # 'jabber-servers' : self._jabber_servers, # 'dispatchers' : self._dispatchers, # 'client_name' : self._client_name, # 'shared_key' : self._shared_key, })
if not server_url: server_url = config.getServerlURL() else: server_url = [ config.convert_url_to_puny(i.strip()) for i in server_url.split(';') ] # Remove empty URLs for url in server_url: if not url: server_url.remove(url) # Real unusual case if there is no server URL both in up2date and osad config files if not server_url: die("Missing server URL in config file") ret['server_url'] = server_url #8/23/05 wregglej 165775 added the run_rhn_check option. run_rhn_check = osad_config.get('run_rhn_check') if run_rhn_check is None: log_debug(3, "Forcing run_rhn_check") run_rhn_check = 1 ret['run_rhn_check'] = int(run_rhn_check) ret['tcp_keepalive_timeout'] = int( osad_config.get('tcp_keepalive_timeout', defval=1800)) ret['tcp_keepalive_count'] = int( osad_config.get('tcp_keepalive_count', defval=3))
def _setup_config(self, config, force=0): logfile = self.options.logfile if logfile is None or logfile == '': logfile = config['logfile'] debug_level = self.options.verbose if debug_level is None: dl = config['debug_level'] if dl is not None: debug_level = int(dl) else: dl = 0 set_logfile(logfile) self.debug_level = debug_level set_debug_level(debug_level) self._tcp_keepalive_timeout = config['tcp_keepalive_timeout'] self._tcp_keepalive_count = config['tcp_keepalive_count'] log_debug(3, "Updating configuration") client_ssl_cert = config['ssl_ca_cert'] osa_ssl_cert = config['osa_ssl_cert'] or client_ssl_cert if osa_ssl_cert is None: die("No SSL cert supplied") self.ssl_cert = osa_ssl_cert auth_info = self.read_auth_info(force) self._username = auth_info['username'] self._password = auth_info['password'] self._resource = auth_info['resource'] server_url = config.get('server_url') self._jabber_servers = [] if self.options.jabber_server: self._jabber_servers.append(self.options.jabber_server) if type(server_url) == type([]): for su in server_url: a_su = self._parse_url(su)[1] self._jabber_servers.append(a_su) else: upstream_jabber_server = self._parse_url(server_url)[1] if upstream_jabber_server not in self._jabber_servers: self._jabber_servers.append(upstream_jabber_server) if not config.has_key('enable_failover') or config['enable_failover'] != '1': self._jabber_servers = [self._jabber_servers[0]] # Load the config self._config_options.clear() self._config_options.update(config) # No reason to expose these at the Client level - but if we have to, # uncommment some of the values below self._config_options.update({ # 'jabber-servers' : self._jabber_servers, # 'dispatchers' : self._dispatchers, # 'client_name' : self._client_name, # 'shared_key' : self._shared_key, })
except osad_config.InterpolationError, e: server_url = config.getServerlURL() else: if not server_url: server_url = config.getServerlURL() else: server_url = [config.convert_url_to_puny(i.strip()) for i in server_url.split(';')] # Remove empty URLs for url in server_url: if not url: server_url.remove(url) # Real unusual case if there is no server URL both in up2date and osad config files if not server_url: die("Missing server URL in config file") ret['server_url'] = server_url #8/23/05 wregglej 165775 added the run_rhn_check option. run_rhn_check = osad_config.get('run_rhn_check') if run_rhn_check is None: log_debug(3, "Forcing run_rhn_check") run_rhn_check = 1 ret['run_rhn_check'] = int(run_rhn_check) ret['tcp_keepalive_timeout'] = int(osad_config.get('tcp_keepalive_timeout', defval=1800)) ret['tcp_keepalive_count'] = int(osad_config.get('tcp_keepalive_count', defval=3)) systemid = osad_config.get('systemid') if systemid is None:
def main(self): args = [] show_help = None debug_level = 3 mode = None server_name = None server_name_opt = "--server-name" needs_server_name = 0 for arg in sys.argv[1:]: if needs_server_name: server_name = arg needs_server_name = 0 continue if arg in ('--help', '-h'): show_help = 1 continue if utils.startswith(arg, server_name_opt): rarg = arg[len(server_name_opt):] if not rarg: needs_server_name = 1 continue if rarg[0] == '=': server_name = rarg[1:] continue print "Unknown option %s" % arg return 1 if mode is None: # This should be the mode mode = arg if mode == '': # Bad self.usage(1) if mode[0] == '-': # Mode can't be an option self.usage(1) if mode not in self.modes: print "Unknown mode %s" % mode self.usage(1) continue args.append(arg) if needs_server_name: print "No argument specified to %s" % server_name_opt return 1 rhn_log.set_debug_level(debug_level) if mode is None: # No args were specified self.usage(0) execname = os.path.basename(sys.argv[0]) # Class names cannot have dot in them, so strip the extension execname = string.split(execname, '.', 1)[0] mode_module = string.replace(mode, '-', '_') module_name = "%s_%s" % (self.mode_prefix, mode_module) full_module_name = "%s.%s" % (self.plugins_dir, module_name) try: module = __import__(full_module_name) except ImportError, e: rhn_log.die(1, "Unable to load plugin for mode '%s': %s" % (mode, e))
# module, but the foo module with bar loaded # XXX Error checking repo_class = local_config.get('repository_type') if repo_class is None: rhn_log.die(1, "repository_type not set (missing configuration file?)") repo_module_name = "%s.%s" % (self.plugins_dir, repo_class) try: repo_module = __import__(repo_module_name) except ImportError, e: rhn_log.die(1, "Unable to load repository module: %s" % e) try: repo_module = getattr(repo_module, repo_class) except AttributeError: rhn_log.die(1, "Malformed repository module") try: repo = getattr(repo_module, self.repository_class_name)() except AttributeError: rhn_log.die(1, "Missing repository class") except InterpolationError, e: if e.option == 'server_url': #pkilambi: bug#179367# backtic is replaced with single quote rhn_log.die(1, "Missing 'server_url' configuration variable; please refer to the config file") raise except cfg_exceptions.ConfigurationError, e: rhn_log.die(e) except gaierror, e: print "Socket Error: %s" % (e.args[1],) sys.exit(1)