Files
ordinaceprojekt/Mailstore/explore_api.py
T
Vladimir Buzalka 4723f9b174 notebookvb
2026-06-09 15:45:22 +02:00

78 lines
2.3 KiB
Python

"""
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.")