51 lines
1.8 KiB
Python
Executable File
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() |