#!/usr/bin/env python3
import json
import os
import jwt

def get_env_var(key, default=""):
  return os.environ.get(key, default)

def get_multi_accounts(bank):
  sftp_accounts = {}
  for key, value in os.environ.items():
    if key.startswith("CLIENT_ID_"+ bank +"_EDI_"):
        suffix = key.replace("CLIENT_ID_"+bank+"_EDI_", "")
        password = os.environ.get(f"CLIENT_SECRET_"+bank+f"_EDI_{suffix}", "")
        if password:
            sftp_accounts[suffix] = {
                "CLIENT_ID_"+bank+"_EDI": value,
                "CLIENT_SECRET_"+bank+"_EDI": password
            }
  return sftp_accounts

if get_env_var("SCRIPT_NAME") == "/auth_site_cgi/env.cgi":

  config = {
    "id_company": get_env_var("ID_COMPANY"),
    "application_name": get_env_var("APPLICATION_NAME"),
    "application": get_env_var("APPLICATION"),
    "x_qualisec": get_env_var("X_QUALISEC"),
    "base_url": get_env_var("BASE_URL"),
  }

  print("Content-Type: application/json")
  print() # Linha vazia obrigatória após os cabeçalhos
  print(json.dumps(config))

elif get_env_var("SCRIPT_NAME") == "/auth_q_api/env.cgi":

  if get_env_var("HTTP_USER_AGENT") != "qualisec/1.0.0":
    print("Content-Type: text/html")
    print() # Linha vazia obrigatória após os cabeçalhos
    print("Acesso Negado!")
    print()
    print("Seu IP: " + get_env_var("REMOTE_ADDR") + " parece ser malicioso!")
  else:
    try:
      
      payload = jwt.decode(get_env_var("HTTP_X_API_KEY"), "4683314fd3369b885154f63e558e7c48", algorithms=["HS256"])
      
      if payload['passed']:
        
        config = {
          "X_QUALISEC": get_env_var("X_QUALISEC"),
          "ORIGIN": get_env_var("PROJECT_NAME").upper(),
          "PROJECT_NAME": get_env_var("PROJECT_NAME"),
          "APPLICATION_NAME": 'API_' + get_env_var("APPLICATION_NAME").upper(),
          "APPLICATION": get_env_var("APPLICATION"),
          "BASE_URL": get_env_var("BASE_URL"),
          "PORT": get_env_var("PORT"),
          "ORIGINS": get_env_var("ORIGINS"),
          "HOST_EMAIL": get_env_var("HOST_EMAIL"),
          "PORT_EMAIL": get_env_var("PORT_EMAIL"),
          "USER_EMAIL": get_env_var("USER_EMAIL"),
          "PASSWORD_EMAIL": get_env_var("PASSWORD_EMAIL"),
          "ID_COMPANY": get_env_var("ID_COMPANY"),
          "EMAIL": get_env_var("EMAIL"),
          "PASSWORD": get_env_var("PASSWORD"),
          "NONCE": get_env_var("NONCE"),
          "X_2FA_HEX": get_env_var("X_2FA_HEX"),
          "CLIENT_ID_BB": get_env_var("CLIENT_ID_BB"),
          "CLIENT_ID_ST": get_env_var("CLIENT_ID_ST"),
          "CLIENT_SECRET_BB": get_env_var("CLIENT_SECRET_BB"),
          "CLIENT_SECRET_ST": get_env_var("CLIENT_SECRET_ST"),
          "PORT_EDI_GETNET": get_env_var("PORT_EDI_GETNET"),
          "APP_KEY_BB": get_env_var("APP_KEY_BB"),
          "APP_KEY_ST": get_env_var("APP_KEY_ST"),
          "BASE_URL_AUTH_BB": get_env_var("BASE_URL_AUTH_BB"),
          "BASE_URL_AUTH_ST": get_env_var("BASE_URL_AUTH_ST"),
          "BASE_URL_EXTRACT_BB": get_env_var("BASE_URL_EXTRACT_BB"),
          "BASE_URL_EXTRACT_GETNET": get_env_var("BASE_URL_EXTRACT_GETNET"),
          "BASE_URL_EXTRACT_PAGBANK": get_env_var("BASE_URL_EXTRACT_PAGBANK"),
          "BASE_URL_EXTRACT_ST": get_env_var("BASE_URL_EXTRACT_ST"),
          "PATH_EXTRACT_GETNET": get_env_var("PATH_EXTRACT_GETNET"),
          "PATH_VOL": get_env_var("PATH_VOL"),
          "BANK_ID_ST": get_env_var("BANK_ID_ST"),
          "ACCEPT_SUGGESTIONS": get_env_var("ACCEPT_SUGGESTIONS"),
          "BANKS_ENABLED": get_env_var("BANKS_ENABLED"),
          "GETNET_ACCOUNTS": get_multi_accounts("GETNET"),
          "PAGBANK_ACCOUNTS": get_multi_accounts("PAGBANK")
        }

        print("Content-Type: application/json")
        print() # Linha vazia obrigatória após os cabeçalhos
        print(json.dumps(config))

      else:
        print(json.dumps({ "error": "invalid!" }))
    except Exception as e:
      print(json.dumps({ e }))

else:
  print("Content-Type: text/html")
  print() # Linha vazia obrigatória após os cabeçalhos
  print("Acesso Negado!")
  print()