diff --git a/src/main.rs b/src/main.rs index 630a41b..fe060c5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,6 +13,7 @@ struct BbsEntry { location: String, desc: String, sysop: String, + owner: i32, } fn load_bbslist() -> Result, Box> { @@ -172,6 +173,28 @@ fn door_main(mut u: door::User) -> Result<(), Box> { } } else if ch == b'q' || ch == b'Q' { break; + } else if ch == b'd' || ch == b'D' { + if !bbslist.is_empty() { + if bbslist[index].owner == u.info().record || u.info().seclevel >= 90 { + bbslist.remove(index); + let file = File::create("bbslist.json")?; + serde_json::to_writer_pretty(file, &bbslist)?; + + door::screen::clear(&mut u)?; + door::file::display(&mut u, "bbslist.ans")?; + u.write_str( + format!( + "{}{} BBS List v2.0 - There are {} BBSes in this list!{}{}", + esc!("[1;1H"), + esc!("[0;30;46m"), + bbslist.len(), + esc!("[K"), + esc!("[0m") + ) + .as_str(), + )?; + } + } } else if ch == b'a' || ch == b'A' { door::screen::clear(&mut u)?; @@ -190,7 +213,7 @@ fn door_main(mut u: door::User) -> Result<(), Box> { let sysop = door::read_string(&mut u, 37)?; u.write_str("\r\nShort Description: ")?; let desc = door::read_string(&mut u, 37)?; - + let owner = u.info().record; bbslist.push(BbsEntry { name, telnet, @@ -199,6 +222,7 @@ fn door_main(mut u: door::User) -> Result<(), Box> { location, sysop, desc, + owner }); let file = File::create("bbslist.json")?;