58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
import requests
|
|
import json
|
|
from requests.exceptions import HTTPError
|
|
|
|
requests.packages.urllib3.disable_warnings()
|
|
|
|
def _format_ipv6(host_ip):
|
|
"""If the host_ip is an IPv6 address, enclose it in square brackets."""
|
|
if ":" in host_ip and not host_ip.startswith("["):
|
|
return f"[{host_ip}]"
|
|
return host_ip
|
|
|
|
# ----- ComboCore --------
|
|
|
|
def authenticate(host_ip):
|
|
formatted_ip = _format_ipv6(host_ip) # Use the helper
|
|
url = f"https://{formatted_ip}/core/pls/api/1/auth/login"
|
|
payload = {"username": "admin", "password": "Super4dmin!"}
|
|
|
|
try:
|
|
response = requests.post(url, json=payload, verify=False)
|
|
response.raise_for_status()
|
|
|
|
return response.json()["access_token"]
|
|
|
|
except HTTPError as http_err:
|
|
raise http_err
|
|
|
|
# ----- Dashboard --------
|
|
|
|
def get_vpn_dashboard_token(base_url):
|
|
session = requests.Session()
|
|
session.headers.update({
|
|
"Content-Type": "application/json", "Accept": "*/*", "User-Agent": "Mozilla/5.0"
|
|
})
|
|
|
|
credentials = {
|
|
"user": "admin@hpe.com", "password": "JohnWayne#21",
|
|
# "user": "admin@athonet.com", "password": "administratoR!1",
|
|
"lang": "en", "auth_provider": "enterprise"
|
|
}
|
|
|
|
auth_response = session.post(f"{base_url}/portal/api/session/authenticate", json=credentials, verify=False)
|
|
auth_response.raise_for_status()
|
|
tenant_id = auth_response.json().get("tenants", [{}])[0].get("id")
|
|
|
|
if not tenant_id:
|
|
raise ValueError("Authentication failed: Could not retrieve Tenant ID.")
|
|
|
|
login_data = {"tenant_id": tenant_id, **credentials}
|
|
login_response = session.post(f"{base_url}/portal/api/session/login", json=login_data, verify=False)
|
|
login_response.raise_for_status()
|
|
token = login_response.json().get("token")
|
|
|
|
if not token:
|
|
raise ValueError("Login failed: Could not retrieve session token.")
|
|
|
|
return token, session |