54 lines
1.2 KiB
Text
54 lines
1.2 KiB
Text
|
#!/usr/bin/env python3
|
||
|
import argparse
|
||
|
import base64
|
||
|
import hashlib
|
||
|
import json
|
||
|
import time
|
||
|
|
||
|
SHARED_KEY_DATA = b"kjfdlskfhiuewhfk947368"
|
||
|
SSH_RSA_KEY = "/etc/ssh/ssh_host_rsa_key.pub"
|
||
|
|
||
|
|
||
|
def read_server_id():
|
||
|
with open(SSH_RSA_KEY, "rb") as f:
|
||
|
return hashlib.md5(f.read()).hexdigest().upper()
|
||
|
|
||
|
|
||
|
def read_time():
|
||
|
return time.time_ns() // (1000 ** 3)
|
||
|
|
||
|
|
||
|
def main():
|
||
|
|
||
|
parser = argparse.ArgumentParser()
|
||
|
parser.add_argument("--key", default="pve8c-0000000000")
|
||
|
parser.add_argument("--subscription", default="/etc/subscription")
|
||
|
|
||
|
args = parser.parse_args()
|
||
|
|
||
|
check_time = read_time()
|
||
|
encoded_check_time = str(check_time).encode("utf-8")
|
||
|
|
||
|
data = {
|
||
|
"status": "active",
|
||
|
"checktime": check_time,
|
||
|
"serverid": read_server_id(),
|
||
|
"key": args.key,
|
||
|
}
|
||
|
|
||
|
encoded_data = base64.b64encode(json.dumps(data).encode("utf-8"))
|
||
|
|
||
|
checksum = hashlib.md5(encoded_check_time + encoded_data + SHARED_KEY_DATA)
|
||
|
encoded_checksum = base64.b64encode(checksum.digest())
|
||
|
|
||
|
subscription = b"\n".join(
|
||
|
[args.key.encode("utf-8"), encoded_checksum, encoded_data]
|
||
|
)
|
||
|
|
||
|
with open(args.subscription, "wb") as f:
|
||
|
f.write(subscription)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|