1use clap::{Args, Parser, Subcommand};
4use std::net::IpAddr;
5use std::path::PathBuf;
6
7#[derive(Parser, Debug, Clone)]
9#[command(
10 name = "trojan-cert",
11 version,
12 about = "Certificate management for trojan"
13)]
14pub struct CertArgs {
15 #[command(subcommand)]
16 pub command: CertCommands,
17}
18
19#[derive(Subcommand, Debug, Clone)]
20pub enum CertCommands {
21 Generate(GenerateArgs),
23}
24
25#[derive(Args, Debug, Clone)]
26pub struct GenerateArgs {
27 #[arg(short, long, required = true)]
29 pub domain: Vec<String>,
30
31 #[arg(long)]
33 pub ip: Vec<IpAddr>,
34
35 #[arg(short, long, default_value = ".")]
37 pub output: PathBuf,
38
39 #[arg(long, default_value = "365")]
41 pub days: u32,
42
43 #[arg(long, default_value = "cert")]
45 pub cert_name: String,
46
47 #[arg(long, default_value = "key")]
49 pub key_name: String,
50}