""" MailStore Server API Explorer Připojí se k API, zjistí konfiguraci a vypíše klíčové info. Spusť: python explore_api.py """ import requests import json import base64 import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) # ── Konfigurace ─────────────────────────────────────────────── HOST = "https://192.168.1.53:8463" # nebo https://mailstore.buzalka.cz pokud funguje USER = "admin" PASS = "*$N(B)vMUym!%" # ───────────────────────────────────────────────────────────── session = requests.Session() session.auth = (USER, PASS) session.verify = False session.headers.update({"Content-Type": "application/x-www-form-urlencoded"}) def call(fn, **params): r = session.post(f"{HOST}/api/invoke/{fn}", data=params or {}) r.raise_for_status() data = r.json() if data.get("error"): raise Exception(data["error"]["message"]) return data.get("result") def pp(label, data): print(f"\n{'='*60}") print(f" {label}") print('='*60) print(json.dumps(data, indent=2, ensure_ascii=False, default=str)) if __name__ == "__main__": print("Připojuji se k MailStore API...") # 1. Server info info = call("GetServerInfo") pp("Server Info", info) # 2. Všechny dostupné API funkce r = session.post(f"{HOST}/api/get-metadata") metadata = r.json() fn_names = [f["name"] for f in metadata.get("functions", [])] pp("Dostupné API funkce", fn_names) # 3. Uživatelé users = call("GetUsers") pp("Uživatelé", users) # 4. Archive stores (úložiště) stores = call("GetStoreInfos") pp("Archive Stores (úložiště)", stores) # 5. Archivační profily try: profiles = call("GetProfiles") pp("Archivační profily", profiles) except Exception as e: print(f"\nProfily: {e}") # 6. Složky (mailboxes) pro admin uživatele try: folders = call("GetFolderStatistics") pp("Folder statistiky", folders) except Exception as e: print(f"\nFolder stats: {e}") print("\n\nHotovo. Zkopíruj výstup výše a pošli mi ho.")