From 8005718584c4bcd2108aba0f96d3e3f4e3fd8822 Mon Sep 17 00:00:00 2001 From: Joscha Date: Thu, 10 Aug 2023 16:58:28 +0200 Subject: [PATCH] Generate random runner tokens --- src/id.rs | 14 ++++++++++++++ src/main.rs | 1 + src/server/util.rs | 12 ------------ 3 files changed, 15 insertions(+), 12 deletions(-) create mode 100644 src/id.rs diff --git a/src/id.rs b/src/id.rs new file mode 100644 index 0000000..a58a945 --- /dev/null +++ b/src/id.rs @@ -0,0 +1,14 @@ +use rand::{rngs::OsRng, seq::IteratorRandom}; + +const ID_CHARS: &str = "0123456789abcdefghijklmnopqrstuvwxyz"; + +fn random_id(prefix: &str, length: usize) -> String { + prefix + .chars() + .chain((0..length).map(|_| ID_CHARS.chars().choose(&mut OsRng).unwrap())) + .collect() +} + +pub fn random_runner_token() -> String { + random_id("t", 30) +} diff --git a/src/main.rs b/src/main.rs index a101cc4..f6f74be 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,6 @@ mod args; mod config; +mod id; mod runner; mod server; mod shared; diff --git a/src/server/util.rs b/src/server/util.rs index e06b34d..f76407a 100644 --- a/src/server/util.rs +++ b/src/server/util.rs @@ -1,22 +1,10 @@ use std::time::Duration; use gix::{actor::IdentityRef, date::Time}; -use rand::{rngs::OsRng, seq::IteratorRandom}; use time::{macros::format_description, OffsetDateTime, UtcOffset}; use crate::somehow; -const RUN_ID_PREFIX: &str = "r-"; -const RUN_ID_CHARS: &str = "0123456789abcdefghijklmnopqrstuvwxyz"; -const RUN_ID_LEN: usize = 30; // log(16^40, base=len(RUN_ID_CHARS)) ~ 31 - -pub fn new_run_id() -> String { - RUN_ID_PREFIX - .chars() - .chain((0..RUN_ID_LEN).map(|_| RUN_ID_CHARS.chars().choose(&mut OsRng).unwrap())) - .collect() -} - pub fn time_to_offset_datetime(time: Time) -> somehow::Result { Ok(OffsetDateTime::from_unix_timestamp(time.seconds)? .to_offset(UtcOffset::from_whole_seconds(time.offset)?))