/
pasko_evg
/
proxifier
Обзор
Документация
Войти
/
pasko_evg
/
proxifier
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
src/main.rs
63 строки
2 KB
Евгений Пасько
Initial Commit
02 июн 2025, 20:03
02 июн 2025, 20:03
33b2b77
Код
Авторство
О чём код?
use clap::Parser; use config::{Config, File}; use env_logger::Env; use log::{error, info}; use serde::Deserialize; use std::process::exit; mod process; #[derive(Parser)] #[command(name = "Proxifier")] #[command(about = "CLI utility to proxy Discord traffic")] struct Cli { #[arg(long, default_value = "Discord.exe")] app: String, #[arg(long, default_value = "socks5://127.0.0.1:1080")] proxy: String, } #[derive(Deserialize)] struct AppConfig { pub process_name: String, pub proxy: String, pub log_level: String, } #[tokio::main] async fn main() -> anyhow::Result<()> { let config = Config::builder() .add_source(File::with_name("config.yaml").required(true)) .set_default("log_level", "debug")? .build()?; let mut config: AppConfig = config.try_deserialize()?; env_logger::Builder::from_env(Env::default().default_filter_or(config.log_level)).init(); let cli = Cli::parse(); // Объединение конфигурации и CLI (CLI имеет приоритет) config.process_name = if cli.app != "Discord.exe" { cli.app } else { config.process_name }; config.proxy = if cli.proxy != "socks5://127.0.0.1:1080" { cli.proxy } else { config.proxy }; info!( "Starting proxifier for app: {}, proxy: {}", config.process_name, config.proxy ); // Проверка процесса // let pid = process::find_process_pid(&cli.app).expect("Process not found"); let pids = process::find_process_pid(&config.process_name).unwrap_or_else(|e| { error!("Failed to find process pid: {}", e); exit(1) }); info!("Found Discord PIDs: {:?}", pids); Ok(()) }