enhanced the bk mod IDs security by using env instead of a file

This commit is contained in:
2025-03-02 12:38:48 +01:00
parent ab02ac1cf6
commit af38f52d8d
4 changed files with 19 additions and 46 deletions
+6 -10
View File
@@ -26,12 +26,8 @@ enum TopCategory {
}
fn is_bk_mod(mod_list: Value, uid: u64) -> bool {
let obj = mod_list.as_object().unwrap();
let bk1_arr = obj["bk1"]["discord"].as_array().unwrap();
let bk2_arr = obj["bk2"]["discord"].as_array().unwrap();
return bk1_arr.contains(&json!(uid)) || bk2_arr.contains(&json!(uid));
fn is_bk_mod(mod_list: Vec<u64>, uid: u64) -> bool {
return mod_list.contains(&uid);
}
@@ -181,7 +177,7 @@ pub async fn bk_week_add(
#[description = "Wether to approve it after adding it"] approve: Option<bool>
) -> Result<(), Error>
{
if !is_bk_mod(ctx.data().bk_mods_json.clone(), ctx.author().id.get()) {
if !is_bk_mod(ctx.data().bk_mods.clone(), ctx.author().id.get()) {
not_bk_mod_msg(ctx).await;
return Ok(());
}
@@ -253,7 +249,7 @@ pub async fn bk_week_remove(
#[description = "The reason of the removal."] reason: Option<String>
) -> Result<(), Error>
{
if !is_bk_mod(ctx.data().bk_mods_json.clone(), ctx.author().id.get()) {
if !is_bk_mod(ctx.data().bk_mods.clone(), ctx.author().id.get()) {
not_bk_mod_msg(ctx).await;
return Ok(());
}
@@ -291,7 +287,7 @@ pub async fn bk_week_approve(
#[description = "Wether to approve or disapprove the post"] disapprove: Option<bool>
) -> Result<(), Error>
{
if !is_bk_mod(ctx.data().bk_mods_json.clone(), ctx.author().id.get()) {
if !is_bk_mod(ctx.data().bk_mods.clone(), ctx.author().id.get()) {
not_bk_mod_msg(ctx).await;
return Ok(());
}
@@ -694,7 +690,7 @@ pub async fn bk_week_vote(
let url_data = &post_data[&url];
let is_mod = is_bk_mod(ctx.data().bk_mods_json.clone(), ctx.author().id.get());
let is_mod = is_bk_mod(ctx.data().bk_mods.clone(), ctx.author().id.get());
let voters_dc = url_data["votes"]["voters_dc"].as_array().unwrap();
let mod_voters = url_data["votes"]["mod_voters"].as_array().unwrap();
let voters = if is_mod { mod_voters } else { voters_dc };
+9 -4
View File
@@ -62,7 +62,7 @@ struct Data {
ball_prompts: [Vec<String>; 2],
reddit_data: Mutex<Option<Value>>,
discord_data: Mutex<Option<Value>>,
bk_mods_json: Value,
bk_mods: Vec<u64>,
args: Args
}
@@ -145,16 +145,21 @@ async fn start(args: Args, owners: Vec<u64>) {
async fn gen_data(args: Args, owners: Vec<u64>) -> Data {
let ball_classic_str = std::fs::read_to_string("./data/8-ball_classic.txt").unwrap();
let ball_quirk_str = std::fs::read_to_string("./data/8-ball_quirky.txt").unwrap();
let bk_mods_str = std::fs::read_to_string("./data/bk_mods.json").unwrap();
let ball_classic: Vec<String> = ball_classic_str.lines().map(String::from).collect();
let ball_quirk: Vec<String> = ball_quirk_str .lines().map(String::from).collect();
let bk_mods: Value = serde_json::from_str(&bk_mods_str).unwrap();
let mods_env = std::env::var("ASSISTANT_BK_MODS").expect("Missing ASSISTANT_BK_MODS env var!");
let mods_vec_str: Vec<String> = mods_env.split(",").map(String::from).collect();
let mods_vec_u64: Vec<u64> = mods_vec_str
.iter()
.filter_map(|s| Some(s.parse::<u64>().expect("Failed to parse ASSISTANT_BK_MODS. Invalid syntax.")))
.collect();
let data = Data {
owners,
ball_prompts: [ball_classic, ball_quirk],
bk_mods_json: bk_mods,
bk_mods: mods_vec_u64,
reddit_data: None.into(),
discord_data: None.into(),
args: args.clone()