import firewall_filter_pb2, firewall_filter_pb2_grpc, grpc, requests, sys

with open("ca.pem", "rb") as fp:
    ca_cert = fp.read()

creds = grpc.ssl_channel_credentials(ca_cert)

#core_channel = grpc.secure_channel("127.0.0.1:8443", creds)
core_channel = grpc.insecure_channel("127.0.0.1:50051")

#core_channel = grpc.secure_channel("127.0.0.1:8443", credentials=creds, options = (('grpc.ssl_target_name_override', 'firewall_filtering'),))

#print(core_channel)

print(vars(core_channel._connectivity_state))

stub = firewall_filter_pb2_grpc.FirewallFilterServiceStub(core_channel)

print("------")

api_host = "https://172.30.205.25"

r = requests.request(
    method="POST",
    url=f"{api_host}/api/session/create",
    # proxies=dict(http="socks5://127.0.0.1:9000", https="socks5://127.0.0.1:9000"),
    timeout=120,
    verify=False,
    data={
        "j_username": "apiadmin@daas-stg.local",
        "j_password": "m8l51kBVeb$5K2UN",
    },
)

session_token = r.headers["X-XSRF-TOKEN"]
cookie = r.headers["Set-Cookie"]

req = firewall_filter_pb2.FirewallFilter(
    api_host=api_host,
    session_token=session_token,
    session_cookie=cookie,
    domain_id="default",
    gateway_policy_id="tcp-blocking",
    ip_addresses=["192.168.0.0/24"],
)

print((stub.Insert(req)))

#print((dir(core_channel._connectivity_state)))
#print(vars(core_channel._connectivity_state))


# api_host = "https://172.30.205.25"

# r = requests.request(
#     method="POST",
#     url=f"{api_host}/api/session/create",
#     # proxies=dict(http="socks5://127.0.0.1:9000", https="socks5://127.0.0.1:9000"),
#     timeout=120,
#     verify=False,
#     data={
#         "j_username": "apiadmin@daas-stg.local",
#         "j_password": "m8l51kBVeb$5K2UN",
#     },
# )

# session_token = r.headers["X-XSRF-TOKEN"]
# cookie = r.headers["Set-Cookie"]

# stub = firewall_filter_pb2_grpc.FirewallFilterServiceStub(core_channel)

# #print(vars(stub))
# #sys.exit()

# req = firewall_filter_pb2.FirewallFilter(
#     api_host=api_host,
#     session_token=session_token,
#     session_cookie=cookie,
#     domain_id="default",
#     gateway_policy_id="tcp-blocking",
#     ip_addresses=["192.168.0.0/24"],
# )



#res = stub.Insert(req)

#print(res)
