Spaces:
Running
Running
import json | |
import gradio as gr | |
from cryptography import x509 | |
from cryptography.hazmat.backends import default_backend | |
from decode import decode_ssl_certificate | |
def decode(cert) -> str: | |
try: | |
# Ensure cert is a byte string | |
if isinstance(cert, str): | |
cert = cert.encode() | |
try: | |
decoded_cert = None | |
try: | |
decoded_cert = x509.load_pem_x509_certificate(cert, default_backend()) | |
except Exception: | |
decoded_cert = x509.load_pem_x509_csr(cert, default_backend()) | |
if decoded_cert: | |
decoded_data = decode_ssl_certificate(decoded_cert) | |
response = { | |
"status": "Success", | |
"message": "Certificate decoded successfully.", | |
"data": decoded_data | |
} | |
else: | |
response = { | |
"status": "Failed", | |
"message": "Invalid certificate format.", | |
"data": None | |
} | |
except Exception as e: | |
response = { | |
"status": "Failed", | |
"message": "Failed to decode certificate. Please upload a valid certificate file.", | |
"error": str(e) # Convert Exception to a string | |
} | |
except Exception as e: | |
response = { | |
"status": "Failed", | |
"message": "Unexpected error while processing the certificate.", | |
"error": str(e) | |
} | |
print(response) | |
return json.dumps(response, indent=4) # Always return a JSON string | |
def app(): | |
with gr.Blocks(title="Project Gatekeeper - Get free SSL Certificates") as webui: | |
with gr.Row(): | |
ssl = gr.Textbox(label="Enter Domains", type="text", interactive=True) | |
with gr.Row(): | |
decoded_data = gr.Textbox(label="Decoded SSL Data", type="text", interactive=False, show_copy_button=True) | |
btn = gr.Button(value="Generate SSL Certificate") | |
btn.click(decode, inputs=ssl, outputs=decoded_data) | |
try: | |
webui.queue(default_concurrency_limit=15).launch() | |
except Exception as e: | |
print(f"Error: {e}") | |
if __name__ == "__main__": | |
app() |