Skip to content
Snippets Groups Projects
Select Git revision
  • master
1 result

README

Blame
  • list_all_settings.py 1.67 KiB
    import click
    import json
    import requests
    
    # From library/zammad.py
    setting_secrets = [
    	'check_mk_token',
    	'monitoring_token',
    	'cti_token',
    	'placetel_token',
    	'sipgate_token',
    	'import_freshdesk_endpoint_key',
    	'import_otrs_endpoint_key',
    	'import_zendesk_endpoint_key',
    	'import_kayako_endpoint_password',
    	'import_otrs_password',
    	'es_password',
    	'proxy_password',
    ]
    
    @click.command(help='List available settings for zammad')
    @click.option('--api-url', required=True)
    @click.option('--api-token', required=True) # Use environment variable ZAMMAD_API_TOKEN!
    @click.option('--ipv4', '-4', is_flag=True, help='Force IPv4')
    def main(api_url, api_token, ipv4):
    	if ipv4:
    		requests.packages.urllib3.util.connection.HAS_IPV6 = False
    	session = requests.Session()
    	session.headers['Authorization'] = 'Token token=' + api_token
    	resp = session.get(f'{api_url}/api/v1/settings')
    	resp.raise_for_status()
    	settings_by_area = {}
    	for setting in resp.json():
    		settings_by_area.setdefault(setting['area'], []).append(setting)
    	for area, settings in sorted(settings_by_area.items(), key=lambda item: item[0]):
    		print(f'# === {area} ===')
    		for setting in sorted(settings, key=lambda setting: setting['name']):
    			name = setting['name']
    			default = json.dumps(setting["state_initial"]["value"])
    			if name in setting_secrets:
    				default = '<hidden>' if default else '<empty>'
    			elif name == 'system_id':
    				default = '<randomly chosen>'
    			description = setting['description'].replace('\n', '\n# ')
    			if not description or description == '-':
    				description = setting['title']
    			print(f'# {description}')
    			print(f'{name}: {default}')
    		print()
    
    if __name__ == '__main__':
    	main(auto_envvar_prefix='ZAMMAD')