use std::fs;
use std::fs::File;
use std::io::Write;
use std::path::Path;
use crate::SupportedNetwork;
const PREDEFINED_FUTURENET_CONFIG: &str = r#"
# captive core config for futurenet
LOG_COLOR=true
LOG_FILE_PATH=""
HTTP_PORT=0
PUBLIC_HTTP_PORT=false
DEPRECATED_SQL_LEDGER_STATE=true
NETWORK_PASSPHRASE="Test SDF Future Network ; October 2022"
#EXPERIMENTAL_PRECAUTION_DELAY_META=true
DATABASE="sqlite3://stellar.db"
PEER_PORT=11725
UNSAFE_QUORUM=true
# Stellar Futurenet validators
[[HOME_DOMAINS]]
HOME_DOMAIN="futurenet.stellar.org"
QUALITY="MEDIUM"
[[VALIDATORS]]
NAME="sdf_futurenet_1"
HOME_DOMAIN="futurenet.stellar.org"
PUBLIC_KEY="GBRIF2N52GVN3EXBBICD5F4L5VUFXK6S6VOUCF6T2DWPLOLGWEPPYZTF"
ADDRESS="core-live-futurenet.stellar.org"
HISTORY="curl -sf http://history-futurenet.stellar.org/{0} -o {1}"
"#;
const PREDEFINED_PUBNET_CONFIG: &str = r#"
LOG_COLOR=true
LOG_FILE_PATH=""
HTTP_PORT=0
PUBLIC_HTTP_PORT=false
DEPRECATED_SQL_LEDGER_STATE=true
NETWORK_PASSPHRASE="Public Global Stellar Network ; September 2015"
#EXPERIMENTAL_PRECAUTION_DELAY_META=true
DATABASE="sqlite3://stellar.db"
PEER_PORT=11725
UNSAFE_QUORUM=true
[[HOME_DOMAINS]]
HOME_DOMAIN="stellar.org"
QUALITY="MEDIUM"
[[VALIDATORS]]
NAME="sdf_1"
HOME_DOMAIN="stellar.org"
PUBLIC_KEY="GCGB2S2KGYARPVIA37HYZXVRM2YZUEXA6S33ZU5BUDC6THSB62LZSTYH"
ADDRESS="core-live-a.stellar.org:11625"
HISTORY="curl -sf https://history.stellar.org/prd/core-live/core_live_001/{0} -o {1}"
"#;
const PREDEFINED_TESTNET_CONFIG: &str = r#"
LOG_COLOR=true
LOG_FILE_PATH=""
HTTP_PORT=0
PUBLIC_HTTP_PORT=false
DEPRECATED_SQL_LEDGER_STATE=true
NETWORK_PASSPHRASE="Test SDF Network ; September 2015"
#EXPERIMENTAL_PRECAUTION_DELAY_META=true
DATABASE="sqlite3://stellar.db"
PEER_PORT=11725
UNSAFE_QUORUM=true
[[HOME_DOMAINS]]
HOME_DOMAIN="testnet.stellar.org"
QUALITY="MEDIUM"
[[VALIDATORS]]
NAME="sdf_testnet_1"
HOME_DOMAIN="testnet.stellar.org"
PUBLIC_KEY="GDKXE2OZMJIPOSLNA6N6F2BVCI3O777I2OOC4BV7VOYUEHYX7RTRYA7Y"
ADDRESS="core-testnet1.stellar.org"
HISTORY="curl -sf http://history.stellar.org/prd/core-testnet/core_testnet_001/{0} -o {1}"
"#;
pub fn generate_predefined_cfg(path: &str, network: SupportedNetwork) {
match fs::create_dir(path) {
Ok(_) => println!("Directory created successfully."),
Err(err) => {
if err.kind() != std::io::ErrorKind::AlreadyExists {
eprintln!("Error creating directory: {}", err);
panic!();
}
}
}
let mut cfg =
File::create(Path::new(path).join("stellar-core.cfg")).expect("cannot create file");
match network {
SupportedNetwork::Futurenet => {
cfg.write_all(PREDEFINED_FUTURENET_CONFIG.as_bytes())
.expect("cannot write to file");
}
SupportedNetwork::Pubnet => {
cfg.write_all(PREDEFINED_PUBNET_CONFIG.as_bytes())
.expect("cannot write to file");
}
SupportedNetwork::Testnet => {
cfg.write_all(PREDEFINED_TESTNET_CONFIG.as_bytes())
.expect("cannot write to file")
}
}
}