1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
pub mod attack;
pub mod ships;
mod victim;
use crate::errors::*;
pub use ships::{get_name, victim_exists};
pub async fn join_rnner(id: &actix_identity::Identity, data: &crate::AppData) -> ServiceResult<()> {
async fn register_victim(
id: &actix_identity::Identity,
data: &crate::AppData,
) -> ServiceResult<()> {
let name = get_name(data).await?.to_string();
sqlx::query!("INSERT INTO cic_victims (name) VALUES ($1);", &name)
.execute(&data.db)
.await?;
id.remember(name);
Ok(())
}
if let Some(victim) = id.identity() {
if !victim_exists(&data, &victim).await? {
register_victim(id, data).await?;
}
} else {
register_victim(id, data).await?;
}
Ok(())
}
#[allow(dead_code)]
pub fn get_random(len: usize) -> String {
use std::iter;
use rand::{distributions::Alphanumeric, rngs::ThreadRng, thread_rng, Rng};
let mut rng: ThreadRng = thread_rng();
iter::repeat(())
.map(|()| rng.sample(Alphanumeric))
.map(char::from)
.take(len)
.collect::<String>()
}
pub fn services(cfg: &mut actix_web::web::ServiceConfig) {
victim::services(cfg);
attack::services(cfg);
}