2024-03-08 08:47:44 +00:00
|
|
|
import base64
|
|
|
|
import http.client
|
|
|
|
import json
|
|
|
|
|
|
|
|
|
|
|
|
def get_context() -> http.client.ssl.SSLContext:
|
|
|
|
# context = http.client.ssl.create_default_context()
|
|
|
|
# # context.load_cert_chain(
|
|
|
|
# # certfile="/var/lib/sunshine/sunshine.cert", keyfile="/var/lib/sunshine/sunshine.key"
|
|
|
|
# # )
|
|
|
|
# context.load_cert_chain(
|
|
|
|
# certfile="/home/kenji/.config/sunshine/credentials/cacert.pem",
|
|
|
|
# keyfile="/home/kenji/.config/sunshine/credentials/cakey.pem",
|
|
|
|
# )
|
|
|
|
return http.client.ssl._create_unverified_context()
|
|
|
|
|
|
|
|
|
|
|
|
def pair(pin: str) -> str:
|
|
|
|
conn = http.client.HTTPSConnection("localhost", 47990, context=get_context())
|
|
|
|
|
|
|
|
# TODO: dynamic username and password
|
|
|
|
user_and_pass = base64.b64encode(b"sunshine:sunshine").decode("ascii")
|
|
|
|
headers = {
|
|
|
|
"Content-Type": "application/json",
|
2024-05-03 18:38:53 +00:00
|
|
|
"Authorization": f"Basic {user_and_pass}",
|
2024-03-08 08:47:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
# Define the parameters
|
|
|
|
params = json.dumps({"pin": f"{pin}"})
|
|
|
|
|
|
|
|
# Make the request
|
|
|
|
conn.request("POST", "/api/pin", params, headers)
|
|
|
|
|
|
|
|
# Get and print the response
|
|
|
|
res = conn.getresponse()
|
|
|
|
data = res.read()
|
|
|
|
|
|
|
|
print(data.decode("utf-8"))
|
|
|
|
return data.decode("utf-8")
|
|
|
|
|
|
|
|
|
|
|
|
def restart() -> None:
|
|
|
|
# Define the connection
|
|
|
|
conn = http.client.HTTPSConnection(
|
|
|
|
"localhost", 47990, context=http.client.ssl._create_unverified_context()
|
|
|
|
)
|
|
|
|
user_and_pass = base64.b64encode(b"sunshine:sunshine").decode("ascii")
|
|
|
|
headers = {
|
|
|
|
"Content-Type": "application/json",
|
2024-05-03 18:38:53 +00:00
|
|
|
"Authorization": f"Basic {user_and_pass}",
|
2024-03-08 08:47:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
# Define the parameters
|
|
|
|
params = {}
|
|
|
|
|
|
|
|
# Make the request
|
|
|
|
conn.request("POST", "/api/restart", params, headers)
|
|
|
|
|
|
|
|
# Get and print the response
|
|
|
|
# There wont be a response, because it is restarted
|
|
|
|
res = conn.getresponse()
|
|
|
|
data = res.read()
|
|
|
|
|
|
|
|
print(data.decode("utf-8"))
|