initrd/src/bootstrap/config.rs

109 lines
2.0 KiB
Rust
Raw Normal View History

2024-04-29 10:54:25 +00:00
#[derive(Debug, serde::Deserialize, serde::Serialize)]
pub struct Config {
anti_phishing_code: String,
keymap: String,
modules: String,
auths: Vec<Auth>,
networks: Vec<Network>,
ssh: SSHServer,
#[serde(default)]
pre_lvm_crypt: Vec<CryptDev>,
#[serde(default)]
lvm: Vec<LvmVG>,
#[serde(default)]
crypt: Vec<CryptDev>,
bootstrap: Bootstrap,
}
#[derive(Debug, serde::Deserialize, serde::Serialize)]
pub struct Auth {
name: String,
#[serde(rename = "sshKey")]
ssh_key: String,
password: String,
}
#[derive(Debug, serde::Deserialize, serde::Serialize)]
pub struct Network {
name: String,
interfaces: Vec<NetworkInterface>,
script: String,
}
#[derive(Debug, serde::Deserialize, serde::Serialize)]
pub struct NetworkInterface {
pub var: String,
pub n: i16,
pub regexps: Vec<String>,
}
#[derive(Debug, serde::Deserialize, serde::Serialize)]
pub struct SSHServer {
listen: String,
keys: SSHKeys,
}
#[derive(Debug, serde::Deserialize, serde::Serialize)]
pub struct SSHKeys {
dsa: String,
rsa: String,
ecdsa: String,
ed25519: String,
}
#[derive(Debug, serde::Deserialize, serde::Serialize)]
pub struct LvmVG {
vg: String,
pvs: LvmPV,
defaults: Option<LvmLVDefaults>,
lvs: Vec<LvmLV>,
}
#[derive(Debug, serde::Deserialize, serde::Serialize)]
pub struct LvmLVDefaults {
fs: String,
raid: Option<Raid>,
}
#[derive(Debug, serde::Deserialize, serde::Serialize)]
pub struct LvmLV {
name: String,
fs: String,
raid: Option<Raid>,
size: String,
extents: String,
}
#[derive(Debug, serde::Deserialize, serde::Serialize)]
pub struct LvmPV {
n: i16,
regexps: Vec<String>,
}
#[derive(Debug, serde::Deserialize, serde::Serialize)]
pub struct CryptDev {
dev: String,
prefix: String,
name: String,
}
#[derive(Debug, serde::Deserialize, serde::Serialize)]
pub struct Raid {
mirrors: u8,
stripes: u8,
}
#[derive(Debug, serde::Deserialize, serde::Serialize)]
pub struct Bootstrap {
dev: String,
seed: String,
}