Changeset - cd9ca2821c24
[Not reviewed]
default
0 1 0
Dennis Fink - 10 years ago 2014-10-17 14:54:19
dennis.fink@c3l.lu
Allow manual override of fingerprint in update script!
1 file changed with 7 insertions and 3 deletions:
0 comments (0 inline, 0 general)
Scripts/update_server.py
Show inline comments
 
@@ -80,53 +80,58 @@ def get_flash_proxy(tor_config):
 
def get_meek_proxy(tor_config):
 

	
 
    return any(MEEKPROXY_REGEX.match(i) for i in tor_config)
 

	
 

	
 
def get_ip(tor_config):
 

	
 
    for i in tor_config:
 
        match = IP_REGEX.match(i)
 

	
 
        if match is not None:
 
            return match.groups()[1]
 

	
 
    return None
 

	
 

	
 
def get_config():
 

	
 
    config = configparser.ConfigParser()
 
    config.read('/etc/ennstatus_updater.conf')
 

	
 
    return config
 

	
 

	
 
def create_server_json(tor_configfile='/etc/tor/torrc', name='tor'):
 
def create_server_json(tor_configfile='/etc/tor/torrc', name='tor', updater_config=None):
 

	
 
    tor_config = read_tor_config(tor_configfile)
 
    server_type = get_server_type(tor_config)
 
    hostname, fingerprint = get_tor_fingerprint(name)
 

	
 
    if updater_config is not None:
 
        if 'fingerprint' in updater_config['main']:
 
            fingerprint = updater_config['main']['fingerprint']
 

	
 
    tor_status = get_tor_status(name)
 
    ip = get_ip(tor_config)
 

	
 
    obfs = None
 
    fte = None
 
    flash = None
 
    meek = None
 

	
 
    if server_type == 'Bridge':
 
        obfs = get_obfs_proxy(tor_config)
 
        fte = get_fte_proxy(tor_config)
 
        flash = get_flash_proxy(tor_config)
 
        meek = get_meek_proxy(tor_config)
 

	
 
    dictionary = {'server_type': server_type, 'server_name': hostname,
 
                  'tor_status': tor_status, 'fingerprint': fingerprint}
 

	
 
    if ip is not None:
 
        dictionary['ip'] = ip
 

	
 
    if obfs is not None:
 
        dictionary['obfs'] = obfs
 

	
 
    if fte is not None:
 
@@ -141,32 +146,31 @@ def create_server_json(tor_configfile='/
 
    return dictionary
 

	
 

	
 
def update_server(server_json, url):
 

	
 
    headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
 

	
 
    response = requests.post(url + '/api/update', data=json.dumps(server_json),
 
                             headers=headers)
 
    return response.text
 

	
 

	
 
def main():
 

	
 
    config = get_config()
 
    ennstatus_url = config['main']['ennstatus_url']
 

	
 
    if 'servers' in config['main']:
 
        for server in literal_eval(config['main']['servers']):
 
            server_json = create_server_json(config[server]['configfile'],
 
                                             server)
 
            response = update_server(server_json, ennstatus_url)
 
            print(response, end='')
 
    else:
 
        server_json = create_server_json()
 
        server_json = create_server_json(updater_config=config)
 
        response = update_server(server_json, ennstatus_url)
 
        print(response, end='')
 

	
 

	
 
if __name__ == '__main__':
 
    main()
 

	
0 comments (0 inline, 0 general)