broadfield-dev's picture
Create app.py
ade6cd4 verified
raw
history blame
2.08 kB
import gradio as gr
import subprocess
import os
def generate_secrets(domain):
# Set Mastodon directory
mastodon_dir = "/app/mastodon"
os.chdir(mastodon_dir)
# Generate secrets using Mastodon’s rake tasks
secret_key_base = subprocess.check_output(
["/root/.rbenv/shims/bundle", "exec", "rake", "secret"],
env={"RAILS_ENV": "development"}
).decode().strip()
otp_secret = subprocess.check_output(
["/root/.rbenv/shims/bundle", "exec", "rake", "secret"],
env={"RAILS_ENV": "development"}
).decode().strip()
vapid_keys = subprocess.check_output(
["/root/.rbenv/shims/bundle", "exec", "rake", "mastodon:webpush:generate_vapid_key"],
env={"RAILS_ENV": "development"}
).decode().strip().split("\n")
vapid_private_key = next(line.split("=", 1)[1].strip() for line in vapid_keys if "VAPID_PRIVATE_KEY" in line)
vapid_public_key = next(line.split("=", 1)[1].strip() for line in vapid_keys if "VAPID_PUBLIC_KEY" in line)
# Return formatted output
output = {
"LOCAL_DOMAIN": domain or "your-space-name.hf.space",
"SECRET_KEY_BASE": secret_key_base,
"OTP_SECRET": otp_secret,
"VAPID_PRIVATE_KEY": vapid_private_key,
"VAPID_PUBLIC_KEY": vapid_public_key,
"RAILS_SERVE_STATIC_FILES": "true"
}
return "\n".join(f"{k}: {v}" for k, v in output.items())
# Gradio interface
with gr.Blocks(title="Mastodon Secrets Generator") as demo:
gr.Markdown("# Mastodon Secrets Generator")
gr.Markdown("Enter your domain (or leave blank for default) and generate secrets for your Mastodon Space.")
domain_input = gr.Textbox(label="Domain (optional)", placeholder="e.g., your-space-name.hf.space")
generate_btn = gr.Button("Generate Secrets")
output_text = gr.Textbox(label="Secrets (Copy/Paste these into Hugging Face Spaces Secrets)", lines=10)
generate_btn.click(
fn=generate_secrets,
inputs=domain_input,
outputs=output_text
)
demo.launch(server_name="0.0.0.0", server_port=7860)