aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcurly <curly@infernal.garden>2024-07-17 19:57:50 -0600
committercurly <curly@infernal.garden>2024-07-17 19:57:50 -0600
commit22072ec07daabaa46352c764d7b62d3cf32251cc (patch)
treebb8e65c5feede62fdbddb03dac67d71c2bc825b5 /src
parent19979216185894d99a108adcc8e3d356a5979dd4 (diff)
downloadpoko_server-22072ec07daabaa46352c764d7b62d3cf32251cc.tar.gz
poko_server-22072ec07daabaa46352c764d7b62d3cf32251cc.tar.bz2
poko_server-22072ec07daabaa46352c764d7b62d3cf32251cc.zip
tokens in config
Diffstat (limited to 'src')
-rw-r--r--src/db.rs51
1 files changed, 29 insertions, 22 deletions
diff --git a/src/db.rs b/src/db.rs
index 6e0399a..d4a24d7 100644
--- a/src/db.rs
+++ b/src/db.rs
@@ -8,15 +8,27 @@ use std::{fs::File, io::Write};
use crate::uid::{self, UID};
-#[derive(Serialize, Deserialize)]
+#[derive(Serialize, Deserialize, Clone)]
pub struct Config {
dbsave: PathBuf,
address: IpAddr,
port: u16,
+ base_tokens: Vec<Token>,
}
impl Config {
pub fn new() -> Config {
- Config { dbsave: "db.json".into(), address: IpAddr::V4(Ipv4Addr::new(0,0,0,0)), port: 9050}
+ Config {
+ dbsave: "db.json".into(),
+ address: IpAddr::V4(Ipv4Addr::new(0,0,0,0)),
+ port: 9050,
+ base_tokens: vec![
+ Token::new(Color::White, 5),
+ Token::new(Color::Red, 5),
+ Token::new(Color::Green, 5),
+ Token::new(Color::Blue, 5),
+ Token::new(Color::Yellow, 5),
+ ],
+ }
}
pub fn load(path: PathBuf) -> Result<Config, ()> {
@@ -29,7 +41,10 @@ impl Config {
},
Err(n) => match n.kind() {
ErrorKind::PermissionDenied => panic!("Could not open config file"),
- _ => Err(())
+ _ => {
+ Config::genconfig();
+ Err(())
+ }
}
}
}
@@ -37,7 +52,7 @@ impl Config {
pub fn genconfig() {
let f = File::create("config.json").unwrap();
let config = Config::new();
- serde_json::to_writer(f, &config).unwrap();
+ serde_json::to_writer_pretty(f, &config).unwrap();
}
pub fn port(&self) -> u16 {
@@ -83,15 +98,7 @@ pub struct User {
tokovec: Vec<Token>,
}
impl User {
- pub fn new(name: String, password: String, id: UID, admin: bool) -> User {
- let base_tokens = vec![
- Token::new(Color::White, 2),
- Token::new(Color::Red, 2),
- Token::new(Color::Blue, 2),
- Token::new(Color::Green, 2),
- Token::new(Color::Yellow, 2),
- ];
-
+ pub fn new(name: String, password: String, id: UID, admin: bool, base_tokens: Vec<Token>) -> User {
let hashed_password = User::hash(&password);
User { name, is_admin: admin, hashed_password, id, tokovec: base_tokens, sessions: HashMap::new() }
@@ -193,8 +200,8 @@ impl User {
}
}
-fn dbsave_default() -> PathBuf {
- "".into()
+fn config_default() -> Config {
+ Config::new()
}
#[derive(Serialize, Deserialize)]
@@ -202,17 +209,17 @@ pub struct DB {
pub uid_generator: uid::Generator,
users: Vec<User>,
#[serde(skip_serializing)]
- #[serde(default = "dbsave_default")]
- dbsave: PathBuf,
+ #[serde(default = "config_default")]
+ config: Config,
registration_keys: Vec<String>,
}
impl DB {
async fn save(&self) -> Result<(), String> {
- let mut f = match File::create(&self.dbsave) {
+ let mut f = match File::create(&self.config.dbsave) {
Ok(n) => n,
Err(n) => {
match n.kind() {
- std::io::ErrorKind::PermissionDenied => panic!("{:?}: Permission Denied", &self.dbsave),
+ std::io::ErrorKind::PermissionDenied => panic!("{:?}: Permission Denied", &self.config.dbsave),
n => return Err(n.to_string()),
}
},
@@ -231,7 +238,7 @@ impl DB {
Ok(n) => {
match serde_json::from_reader::<std::fs::File, DB>(n) {
Ok(mut n) => {
- n.dbsave = c.dbsave.clone();
+ n.config = c.clone();
n
},
Err(n) => panic!("{}", n),
@@ -244,7 +251,7 @@ impl DB {
}
}
pub fn new(config: &Config) -> Self {
- DB { uid_generator: uid::Generator::new(), dbsave: config.dbsave.clone(), users: vec![], registration_keys: vec!["ADMIN".into()] }
+ DB { uid_generator: uid::Generator::new(), config: config.clone(), users: vec![], registration_keys: vec!["ADMIN".into()] }
}
pub fn get_user(&self, id: UID) -> Result<&User, String> {
@@ -382,7 +389,7 @@ impl DB {
if key == "ADMIN" {
is_admin = true;
}
- let user = User::new(name, password, id, is_admin);
+ let user = User::new(name, password, id, is_admin, self.config.base_tokens.clone());
self.users.push(user.clone());
match self.save().await {