in Linux_scripts/rhui-check/rhui-check.py [0:0]
def get_proxies(parser_object, mysection):
''' gets the proxy from a configparser section object pointd by the proxy variable if defined in the configuration file '''
proxy_info = dict()
# proxy_regex = '(^[^:]*)(:(//)(([^:]*)(:([^@]*)){0,1}@){0,1}.*)?'
proxy_regex = '(^[^:]*):(//)(([^:]*)(:([^@]*)){0,1}@){0,1}.*'
for key in ['proxy', 'proxy_user', 'proxy_password']:
try:
value = parser_object.get(mysection, key)
except configparser.NoOptionError:
continue
except Exception as e:
logger.error('Problems handling the parser object.')
raise
else:
proxy_info[key] = value
try:
myproxy = proxy_info['proxy']
if myproxy:
''' Get the scheme used in a proxy for example http from http://proxy.com/.
Have to remove the last : as it is not part of the scheme. '''
proxy_match = re.match(proxy_regex, myproxy)
if proxy_match:
scheme = proxy_match.group(1)
# proxy_info['scheme'] = scheme
proxy_info['scheme'] = 'https'
else:
logger.critical('Invalid proxy configuration, please make sure you are using a valid proxy in your settings.')
exit(1)
else:
return system_proxy
except KeyError:
return system_proxy
if proxy_match.group(4) and ('proxy_user' in proxy_info.keys()):
logger.warning('proxy definition already has a username defined and proxy_user is also defined, there might be conflicts using the proxy, repair.')
if proxy_match.group(6) and ('proxy_password' in proxy_info.keys()):
logger.warning('proxy definition already has a username and password defined and proxy_password is also defined, there might be conflicts using the proxy, repair.')
if ('proxy_password' in proxy_info.keys() and proxy_info['proxy_password']) and ('proxy_user' not in proxy_info.keys()):
logger.warning('proxy_password defined, but there is no proxy user, this could be causing problems.')
logger.warning('ignoring proxy_password')
if ('proxy_user' in proxy_info.keys() and proxy_info['proxy_user']) and not proxy_match.group(4):
####### need to insert proxy user and passwod in proxy link
proxy_prefix = myproxy[:proxy_match.end(2)]
proxy_suffix = myproxy[proxy_match.end(2):]
if ('proxy_password' in proxy_info.keys()) and proxy_info['proxy_password'] and not proxy_match.group(6):
myproxy = '{}{}:{}@{}'.format(proxy_prefix, proxy_info['proxy_user'], proxy_info['proxy_password'], proxy_suffix)
else:
myproxy = '{}{}@{}'.format(proxy_prefix, proxy_info['proxy_user'], proxy_suffix)
logger.critical('Found proxy information in the config files, make sure connectivity works through the proxy.')
return {proxy_info['scheme']: myproxy}