Autonomous security and compliance scanning agent for git repositories. Features: SAST (Semgrep), SBOM (Syft), CVE monitoring (OSV.dev/NVD), GDPR/OAuth pattern detection, LLM triage, issue creation (GitHub/GitLab/Jira), PR reviews, and Dioxus fullstack dashboard. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
143 lines
4.9 KiB
Rust
143 lines
4.9 KiB
Rust
use dioxus::prelude::*;
|
|
|
|
use crate::components::page_header::PageHeader;
|
|
|
|
#[component]
|
|
pub fn SettingsPage() -> Element {
|
|
let mut litellm_url = use_signal(|| "http://localhost:4000".to_string());
|
|
let mut litellm_model = use_signal(|| "gpt-4o".to_string());
|
|
let mut github_token = use_signal(String::new);
|
|
let mut gitlab_url = use_signal(|| "https://gitlab.com".to_string());
|
|
let mut gitlab_token = use_signal(String::new);
|
|
let mut jira_url = use_signal(String::new);
|
|
let mut jira_email = use_signal(String::new);
|
|
let mut jira_token = use_signal(String::new);
|
|
let mut jira_project = use_signal(String::new);
|
|
let mut searxng_url = use_signal(|| "http://localhost:8888".to_string());
|
|
|
|
rsx! {
|
|
PageHeader {
|
|
title: "Settings",
|
|
description: "Configure integrations and scanning parameters",
|
|
}
|
|
|
|
div { class: "card",
|
|
div { class: "card-header", "LiteLLM Configuration" }
|
|
div { class: "form-group",
|
|
label { "LiteLLM URL" }
|
|
input {
|
|
r#type: "text",
|
|
value: "{litellm_url}",
|
|
oninput: move |e| litellm_url.set(e.value()),
|
|
}
|
|
}
|
|
div { class: "form-group",
|
|
label { "Model" }
|
|
input {
|
|
r#type: "text",
|
|
value: "{litellm_model}",
|
|
oninput: move |e| litellm_model.set(e.value()),
|
|
}
|
|
}
|
|
}
|
|
|
|
div { class: "card",
|
|
div { class: "card-header", "GitHub Integration" }
|
|
div { class: "form-group",
|
|
label { "Personal Access Token" }
|
|
input {
|
|
r#type: "password",
|
|
placeholder: "ghp_...",
|
|
value: "{github_token}",
|
|
oninput: move |e| github_token.set(e.value()),
|
|
}
|
|
}
|
|
}
|
|
|
|
div { class: "card",
|
|
div { class: "card-header", "GitLab Integration" }
|
|
div { class: "form-group",
|
|
label { "GitLab URL" }
|
|
input {
|
|
r#type: "text",
|
|
value: "{gitlab_url}",
|
|
oninput: move |e| gitlab_url.set(e.value()),
|
|
}
|
|
}
|
|
div { class: "form-group",
|
|
label { "Access Token" }
|
|
input {
|
|
r#type: "password",
|
|
placeholder: "glpat-...",
|
|
value: "{gitlab_token}",
|
|
oninput: move |e| gitlab_token.set(e.value()),
|
|
}
|
|
}
|
|
}
|
|
|
|
div { class: "card",
|
|
div { class: "card-header", "Jira Integration" }
|
|
div { class: "form-group",
|
|
label { "Jira URL" }
|
|
input {
|
|
r#type: "text",
|
|
placeholder: "https://your-org.atlassian.net",
|
|
value: "{jira_url}",
|
|
oninput: move |e| jira_url.set(e.value()),
|
|
}
|
|
}
|
|
div { class: "form-group",
|
|
label { "Email" }
|
|
input {
|
|
r#type: "email",
|
|
value: "{jira_email}",
|
|
oninput: move |e| jira_email.set(e.value()),
|
|
}
|
|
}
|
|
div { class: "form-group",
|
|
label { "API Token" }
|
|
input {
|
|
r#type: "password",
|
|
value: "{jira_token}",
|
|
oninput: move |e| jira_token.set(e.value()),
|
|
}
|
|
}
|
|
div { class: "form-group",
|
|
label { "Project Key" }
|
|
input {
|
|
r#type: "text",
|
|
placeholder: "SEC",
|
|
value: "{jira_project}",
|
|
oninput: move |e| jira_project.set(e.value()),
|
|
}
|
|
}
|
|
}
|
|
|
|
div { class: "card",
|
|
div { class: "card-header", "SearXNG" }
|
|
div { class: "form-group",
|
|
label { "SearXNG URL" }
|
|
input {
|
|
r#type: "text",
|
|
value: "{searxng_url}",
|
|
oninput: move |e| searxng_url.set(e.value()),
|
|
}
|
|
}
|
|
}
|
|
|
|
div { style: "margin-top: 16px;",
|
|
button {
|
|
class: "btn btn-primary",
|
|
onclick: move |_| {
|
|
tracing::info!("Settings save not yet implemented - settings are managed via .env");
|
|
},
|
|
"Save Settings"
|
|
}
|
|
p {
|
|
style: "margin-top: 8px; font-size: 12px; color: var(--text-secondary);",
|
|
"Note: Settings are currently configured via environment variables (.env file). Dashboard-based settings persistence coming soon."
|
|
}
|
|
}
|
|
}
|
|
}
|