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')