zmiany
This commit is contained in:
69
src/main.rs
69
src/main.rs
@@ -1,12 +1,12 @@
|
||||
use actix_web::{web, App, HttpServer, HttpResponse};
|
||||
use askama::Template;
|
||||
use chrono::prelude::*;
|
||||
use chrono::{Utc, Datelike};
|
||||
use tokio::time::{self, Duration};
|
||||
use actix_files as fs;
|
||||
use serde::Deserialize;
|
||||
|
||||
use crate::config::Config;
|
||||
use crate::ts3::{get_ts3_connection, create_channel};
|
||||
use crate::ts3::{get_ts3_connection, create_channel, get_client_info};
|
||||
use crate::rrd::{update_rrd_stats, generate_graphs};
|
||||
|
||||
mod config;
|
||||
@@ -26,18 +26,18 @@ struct CreateTemplate<'a> {
|
||||
ts3_server: &'a str,
|
||||
ts3_server_port: u16,
|
||||
client_ip: &'a str,
|
||||
client_uuid: Option<&'a str>,
|
||||
now: DateTime<Utc>,
|
||||
flash_message: Option<String>,
|
||||
client_uuid: &'a str,
|
||||
year: i32,
|
||||
flash_message: Option<&'a str>,
|
||||
}
|
||||
|
||||
#[derive(Template)]
|
||||
#[template(path = "stats.html")]
|
||||
struct StatsTemplate {
|
||||
graphs: Vec<Graph>,
|
||||
last_update: String,
|
||||
server_name: String,
|
||||
now: DateTime<Utc>,
|
||||
struct StatsTemplate<'a> {
|
||||
graphs: &'a [Graph],
|
||||
last_update: &'a str,
|
||||
server_name: &'a str,
|
||||
year: i32,
|
||||
}
|
||||
|
||||
struct Graph {
|
||||
@@ -47,45 +47,61 @@ struct Graph {
|
||||
|
||||
async fn create_handler(data: web::Json<ChannelData>) -> HttpResponse {
|
||||
let config = Config::load();
|
||||
// Logika tworzenia kanału (uproszczona; połącz z TS3)
|
||||
let mut stream = match get_ts3_connection(&config) {
|
||||
Ok(s) => s,
|
||||
Err(e) => {
|
||||
return HttpResponse::InternalServerError().body(format!("Błąd połączenia: {}", e));
|
||||
}
|
||||
};
|
||||
let result = create_channel(&mut stream, &data.channel_name, &data.channel_topic, &data.channel_password);
|
||||
let flash = match result {
|
||||
Ok(_) => Some("Kanał utworzony pomyślnie".to_string()),
|
||||
Err(e) => Some(format!("Błąd: {}", e)),
|
||||
|
||||
// Pobierz client_info jak w app.py[1]
|
||||
let client_info = get_client_info(&mut stream, "127.0.0.1");
|
||||
let (client_uuid, client_dbid, client_clid) = match &client_info {
|
||||
Some(info) => (info.uid.as_str(), info.dbid, info.clid),
|
||||
None => ("Brak UUID", 0, 0),
|
||||
};
|
||||
|
||||
let result = create_channel(
|
||||
&mut stream,
|
||||
&data.channel_name,
|
||||
&data.channel_topic,
|
||||
&data.channel_password,
|
||||
client_dbid,
|
||||
client_clid,
|
||||
);
|
||||
let flash_message = match result {
|
||||
Ok(_) => Some("Kanał utworzony pomyślnie"),
|
||||
Err(_e) => Some("Błąd tworzenia kanału"),
|
||||
};
|
||||
|
||||
let now = Utc::now();
|
||||
let template = CreateTemplate {
|
||||
ts3_server: &config.ts3_server,
|
||||
ts3_server_port: config.ts3_query_port, // Dostosuj jeśli potrzeba
|
||||
client_ip: "127.0.0.1", // Pobierz z request (np. req.connection_info().realip_remote_addr())
|
||||
client_uuid: Some("example-uuid"),
|
||||
now: Utc::now(),
|
||||
flash_message: flash,
|
||||
ts3_server_port: config.ts3_query_port,
|
||||
client_ip: "127.0.0.1",
|
||||
client_uuid,
|
||||
year: now.year(),
|
||||
flash_message,
|
||||
};
|
||||
HttpResponse::Ok().content_type("text/html").body(template.render().unwrap())
|
||||
}
|
||||
|
||||
async fn stats_handler() -> HttpResponse {
|
||||
let config = Config::load();
|
||||
// Generuj wykresy (uproszczone)
|
||||
generate_graphs(&config);
|
||||
let graphs = vec![
|
||||
let graphs = [
|
||||
Graph { file: "hour.gif".to_string(), title: "Ostatnie 12 godzin".to_string() },
|
||||
Graph { file: "day.gif".to_string(), title: "Ostatnie 24 godziny".to_string() },
|
||||
Graph { file: "72h.gif".to_string(), title: "Ostatnie 72 godziny".to_string() },
|
||||
Graph { file: "week.gif".to_string(), title: "Ostatni tydzień".to_string() },
|
||||
];
|
||||
let now = Utc::now();
|
||||
let last_update = now.format("%Y-%m-%d %H:%M:%S").to_string();
|
||||
let template = StatsTemplate {
|
||||
graphs,
|
||||
last_update: Utc::now().to_string(),
|
||||
server_name: "linuxiarz.pl".to_string(),
|
||||
now: Utc::now(),
|
||||
graphs: &graphs,
|
||||
last_update: &last_update,
|
||||
server_name: "linuxiarz.pl",
|
||||
year: now.year(),
|
||||
};
|
||||
HttpResponse::Ok().content_type("text/html").body(template.render().unwrap())
|
||||
}
|
||||
@@ -95,7 +111,6 @@ async fn main() -> std::io::Result<()> {
|
||||
env_logger::init();
|
||||
let config = Config::load();
|
||||
|
||||
// Tło do aktualizacji RRD
|
||||
let config_clone = config.clone();
|
||||
tokio::spawn(async move {
|
||||
let mut interval = time::interval(Duration::from_secs(config_clone.rrd_update_interval));
|
||||
|
Reference in New Issue
Block a user