#!/usr/bin/env python3

"""
__author__ = "METZ CONNECT GmbH, EES"
__copyright__ = "Copyright (C) 2025 METZ CONNECT GmbH"
__version__ = "1.0"
__dependencies__ = "Python version: > 3.8; library: requests (python -m pip install requests).
__note__ = "This script only contains a demo how to exchange certificates for existing network products. 
            No warranty on software - you use this software on your own risk. 
            METZ CONNECT GmbH provides the Software to you "AS IS" without warranty. 
            All data is public content - make sure to adapt this script towards your needs before executing."
"""

import requests
import base64

# Ip-Address
ip_address = "http://192.168.0.112"

url = ip_address + "/config.json"

# Certificates
cert = r'{"cert":"-----BEGIN CERTIFICATE-----\nMIIBljCCATygAwIBAgIBATAKBggqhkjOPQQDAjAZMRcwFQYDVQQDDA5CYXIgU2ln\nbmluZyBDQTAeFw0yMDA5MDQyMzI1MzRaFw00ODAxMjAyMzI1MzRaMBIxEDAOBgNV\nBAMMB1Rlc3RIdWIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQrmnmKOjP7rQFr\nL/Op9E1V6JXFHXprnAboKpQRD1tIcfZ5l0PkWOGKHpZqS7TocacR8EGhD5N/2ReU\nFoCw2Np6o3wwejAJBgNVHRMEAjAAMB0GA1UdDgQWBBTpb1pU74Wly4vOU8H9ZXk8\nMqD3EDAfBgNVHSMEGDAWgBSOSzJK0R1HZC+8KrnenB16VARaEzAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAoGCCqGSM49BAMC\nA0gAMEUCIQCZYCl/zBNPlOTKVTRjYuE6QS+lFek6qmw3ozKdLzxxLwIgT2jX7ZI/\nW26mpc+MG7YadFTShU2TidQ5QQ0s8VQsGOU=\n-----END CERTIFICATE-----\n"}'
key = r'{"pkey":"-----BEGIN PRIVATE KEY-----\nMIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgR3jn/RLXV9EXcjCb\nKZzN6LGtXa+ojgNGmIObMnquMEOhRANCAAQrmnmKOjP7rQFrL/Op9E1V6JXFHXpr\nnAboKpQRD1tIcfZ5l0PkWOGKHpZqS7TocacR8EGhD5N/2ReUFoCw2Np6\n-----END PRIVATE KEY-----\n"}'
ca_cert = r'{"ca_cert":"-----BEGIN CERTIFICATE-----\nMIIBhDCCASqgAwIBAgIBAjAKBggqhkjOPQQDAjAWMRQwEgYDVQQDDAtCYXIgUm9v\ndCBDQTAeFw0yMDA5MDQyMzI0NDdaFw00ODAxMjAyMzI0NDdaMBkxFzAVBgNVBAMM\nDkJhciBTaWduaW5nIENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETi5w9MES\nA6cZx3QV1SojxvMDGD7W6Hs/Xnt+BRdTUl10QIQprc44Cb0WTynLVvDrILTs9FMX\nAePs8ufThnWFXaNmMGQwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUjksy\nStEdR2QvvCq53pwdelQEWhMwHwYDVR0jBBgwFoAUThJVCAN0HHfujKmt8IQnq2il\nbgUwDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCICC9c54aEFbTGdMw\nkWbkm/vpS9E6DbrXxZcrnHWxW6GzAiEAyzUWFeQBuESRSiFkIVyKdlnzs1FJ8VX1\ndf8k4dE94+g=\n-----END CERTIFICATE-----\n"}'

# Username & Password
username = "1"
password = "put_your_password_here"

# Encoded authentication
auth_string = f"{username}:{password}"
auth_encoded = base64.b64encode(auth_string.encode()).decode()

# Header containing content type and authorization data
headers = {
    'Content-Type': 'application/json',
    'Authorization': f'Basic {auth_encoded}'
}

response = requests.request("POST", url, headers=headers, data=cert, timeout=9)

print(response)

response = requests.request("POST", url, headers=headers, data=key, timeout=9)

print(response)

response = requests.request("POST", url, headers=headers, data=ca_cert, timeout=9)

print(response)
