litellm/ui/admin.py

67 lines
2.5 KiB
Python
Raw Normal View History

"""
Admin sets proxy url + allowed email subdomain
"""
from dotenv import load_dotenv
2023-12-25 16:40:38 +08:00
load_dotenv()
import streamlit as st
import base64, os
# Replace your_base_url with the actual URL where the proxy auth app is hosted
your_base_url = os.getenv("BASE_URL") # Example base URL
2023-12-25 16:40:38 +08:00
# Function to encode the configuration
2023-12-26 01:21:35 +08:00
def encode_config(proxy_url, allowed_email_subdomain, admin_emails):
combined_string = f"proxy_url={proxy_url}&accepted_email_subdomain={allowed_email_subdomain}&admin_emails={admin_emails}"
2023-12-25 16:40:38 +08:00
return base64.b64encode(combined_string.encode("utf-8")).decode("utf-8")
# Simple function to update config values
2023-12-26 01:21:35 +08:00
def update_config(proxy_url, allowed_email_subdomain, admin_emails):
2023-12-25 16:40:38 +08:00
st.session_state["proxy_url"] = proxy_url
st.session_state["allowed_email_subdomain"] = allowed_email_subdomain
2023-12-26 01:21:35 +08:00
st.session_state["admin_emails"] = admin_emails
2023-12-25 16:40:38 +08:00
st.session_state[
"user_auth_url"
2023-12-26 01:21:35 +08:00
] = f"{your_base_url}/?page={encode_config(proxy_url=proxy_url, allowed_email_subdomain=allowed_email_subdomain, admin_emails=admin_emails)}"
2023-12-25 16:40:38 +08:00
2023-12-26 01:21:35 +08:00
def proxy_setup():
# Create a configuration placeholder
2023-12-25 16:40:38 +08:00
st.session_state.setdefault("proxy_url", "http://example.com")
st.session_state.setdefault("allowed_email_subdomain", "example.com")
2023-12-26 01:21:35 +08:00
st.session_state.setdefault("admin_emails", "admin@example.com")
2023-12-25 16:40:38 +08:00
st.session_state.setdefault("user_auth_url", "NOT_GIVEN")
with st.form("config_form", clear_on_submit=False):
2023-12-25 16:40:38 +08:00
proxy_url = st.text_input("Set Proxy URL", st.session_state["proxy_url"])
allowed_email_subdomain = st.text_input(
"Set Allowed Email Subdomain", st.session_state["allowed_email_subdomain"]
)
2023-12-26 01:21:35 +08:00
admin_emails = st.text_input(
"Allowed Admin Emails (add ',' to separate multiple emails)",
st.session_state["admin_emails"],
)
submitted = st.form_submit_button("Save")
if submitted:
2023-12-25 16:40:38 +08:00
update_config(
2023-12-26 01:21:35 +08:00
proxy_url=proxy_url,
allowed_email_subdomain=allowed_email_subdomain,
admin_emails=admin_emails,
2023-12-25 16:40:38 +08:00
)
# Display the current configuration
st.write(f"Current Proxy URL: {st.session_state['proxy_url']}")
2023-12-25 16:40:38 +08:00
st.write(
f"Current Allowed Email Subdomain: {st.session_state['allowed_email_subdomain']}"
)
st.write(f"Current User Auth URL: {st.session_state['user_auth_url']}")
2023-12-26 01:21:35 +08:00
def admin_page(is_admin="NOT_GIVEN"):
# Display the form for the admin to set the proxy URL and allowed email subdomain
st.header("Admin Configuration")
proxy_setup()