Files
kiddo/scripts/enroll_local.py

51 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python3
import argparse
import os
import sys
import httpx
def enroll():
parser = argparse.ArgumentParser(description="Enroll this device via the local Kiddo API")
parser.add_argument("--url", default=os.getenv("API_URL", "http://localhost:8000"), help="Local API URL")
parser.add_argument("--token", help="Enrollment Token (from update service)")
parser.add_argument("--auth", help="Local Admin Auth Token (skd_session cookie value)")
args = parser.parse_args()
# Use default token if not provided (keeping the one from the prototype for now as a fallback)
enroll_token = args.token or "739772f5-4803-4635-a2c2-454799c37534"
print(f"[*] Enrolling via local API at {args.url}")
print(f"[*] Enrollment Token: {enroll_token[:8]}...")
headers = {}
auth_token = args.auth or os.getenv("SKD_API_TOKEN")
if auth_token:
headers["Cookie"] = f"skd_session={auth_token}"
print("[*] Using provided authentication token")
else:
print("[!] No authentication token provided. Request might fail if API is protected.")
try:
response = httpx.post(
f"{args.url}/update/enroll",
json={"enroll_token": enroll_token},
headers=headers,
timeout=15.0
)
if response.status_code == 200:
print("[+] Success: Enrollment successful!")
print(f"[+] Response: {response.json()}")
elif response.status_code == 401:
print("[!] Error: Unauthorized. Please provide a valid admin auth token via --auth or SKD_API_TOKEN env.")
else:
print(f"[!] Error {response.status_code}: {response.text}")
sys.exit(1)
except Exception as e:
print(f"[!] Exception: {e}")
sys.exit(1)
if __name__ == "__main__":
enroll()