From 3da09ada1974714b25f662f69abbf1245d47f4e8 Mon Sep 17 00:00:00 2001 From: Aditya Bisht Date: Sun, 29 Sep 2024 17:16:19 -0700 Subject: [PATCH] fix: regex json path --- packages/relayer/.env.example | 4 +--- packages/relayer/README.md | 1 - packages/relayer/src/config.rs | 4 ++-- packages/relayer/src/core.rs | 13 +++++++++---- packages/relayer/src/lib.rs | 4 ++-- packages/relayer/src/modules/dkim.rs | 17 +++++++++++++---- packages/relayer/src/strings.rs | 4 +--- 7 files changed, 28 insertions(+), 19 deletions(-) diff --git a/packages/relayer/.env.example b/packages/relayer/.env.example index 34721015..5a0c88a9 100644 --- a/packages/relayer/.env.example +++ b/packages/relayer/.env.example @@ -11,10 +11,8 @@ PROVER_ADDRESS="https://zkemail--email-auth-prover-v1-3-0-flask-app.modal.run" DATABASE_URL= "postgres://test@localhost/emailauth_test" RELAYER_EMAIL_ADDR= WEB_SERVER_ADDRESS="127.0.0.1:4500" -CIRCUITS_DIR_PATH= #Path to email-wallet/packages/circuits EMAIL_TEMPLATES_PATH= #Path to email templates, e.g. ./packages/relayer/eml_templates/ -SELECTOR_DEF_PATH="./src/regex_json/selector_def.json" -REQUEST_DEF_PATH="./src/regex_json/request_def.json" +REGEX_JSON_DIR_PATH= CANISTER_ID="q7eci-dyaaa-aaaak-qdbia-cai" PEM_PATH="./.ic.pem" diff --git a/packages/relayer/README.md b/packages/relayer/README.md index 5d859785..bd864140 100644 --- a/packages/relayer/README.md +++ b/packages/relayer/README.md @@ -51,7 +51,6 @@ You can run the relayer either on your local environments or cloud instances (we DATABASE_URL= "postgres://new_user:my_secure_password@localhost/my_new_database" WEB_SERVER_ADDRESS="127.0.0.1:4500" - CIRCUITS_DIR_PATH= # Absolute path to packages/circuits EMAIL_TEMPLATES_PATH= # Absolute path to packages/relayer/eml_templates CANISTER_ID="q7eci-dyaaa-aaaak-qdbia-cai" diff --git a/packages/relayer/src/config.rs b/packages/relayer/src/config.rs index 2e5a9095..6615cca5 100644 --- a/packages/relayer/src/config.rs +++ b/packages/relayer/src/config.rs @@ -14,7 +14,7 @@ pub struct RelayerConfig { pub relayer_email_addr: String, pub db_path: String, pub web_server_address: String, - pub circuits_dir_path: PathBuf, + pub regex_json_dir_path: PathBuf, pub prover_address: String, pub chain_rpc_provider: String, pub chain_rpc_explorer: String, @@ -43,7 +43,7 @@ impl RelayerConfig { relayer_email_addr: env::var(RELAYER_EMAIL_ADDR_KEY).unwrap(), db_path: env::var(DATABASE_PATH_KEY).unwrap(), web_server_address: env::var(WEB_SERVER_ADDRESS_KEY).unwrap(), - circuits_dir_path: env::var(CIRCUITS_DIR_PATH_KEY).unwrap().into(), + regex_json_dir_path: env::var(REGEX_JSON_DIR_PATH_KEY).unwrap().into(), prover_address: env::var(PROVER_ADDRESS_KEY).unwrap(), chain_rpc_provider: env::var(CHAIN_RPC_PROVIDER_KEY).unwrap(), chain_rpc_explorer: env::var(CHAIN_RPC_EXPLORER_KEY).unwrap(), diff --git a/packages/relayer/src/core.rs b/packages/relayer/src/core.rs index f9c10165..a06a6324 100644 --- a/packages/relayer/src/core.rs +++ b/packages/relayer/src/core.rs @@ -36,10 +36,15 @@ pub async fn handle_email(email: String) -> Result { trace!(LOG, "From address: {}", guardian_email_addr); let email_body = parsed_email.get_cleaned_body()?; - let request_def_path = env::var(REQUEST_DEF_PATH_KEY) - .map_err(|_| anyhow!("ENV var {} not set", REQUEST_DEF_PATH_KEY))?; - let request_def_contents = fs::read_to_string(&request_def_path) - .map_err(|e| anyhow!("Failed to read file {}: {}", request_def_path, e))?; + let request_def_path = + PathBuf::from(REGEX_JSON_DIR_PATH.get().unwrap()).join("request_def.json"); + let request_def_contents = fs::read_to_string(&request_def_path).map_err(|e| { + anyhow!( + "Failed to read file {:?}: {}", + request_def_path.display(), + e + ) + })?; let request_decomposed_def = serde_json::from_str(&request_def_contents) .map_err(|e| EmailError::Parse(format!("Failed to parse request_def.json: {}", e)))?; let request_idxes = extract_substr_idxes(&email, &request_decomposed_def)?; diff --git a/packages/relayer/src/lib.rs b/packages/relayer/src/lib.rs index c4d1adb6..d0b83379 100644 --- a/packages/relayer/src/lib.rs +++ b/packages/relayer/src/lib.rs @@ -32,7 +32,7 @@ use std::path::PathBuf; use std::sync::{Arc, OnceLock}; use tokio::time::Duration; -pub static CIRCUITS_DIR_PATH: OnceLock = OnceLock::new(); +pub static REGEX_JSON_DIR_PATH: OnceLock = OnceLock::new(); pub static WEB_SERVER_ADDRESS: OnceLock = OnceLock::new(); pub static PROVER_ADDRESS: OnceLock = OnceLock::new(); pub static PRIVATE_KEY: OnceLock = OnceLock::new(); @@ -103,7 +103,7 @@ pub async fn run(config: RelayerConfig) -> Result<()> { info!(LOG, "Starting relayer"); // Initialize global configuration - CIRCUITS_DIR_PATH.set(config.circuits_dir_path).unwrap(); + REGEX_JSON_DIR_PATH.set(config.regex_json_dir_path).unwrap(); WEB_SERVER_ADDRESS.set(config.web_server_address).unwrap(); PROVER_ADDRESS.set(config.prover_address).unwrap(); PRIVATE_KEY.set(config.private_key).unwrap(); diff --git a/packages/relayer/src/modules/dkim.rs b/packages/relayer/src/modules/dkim.rs index fe91ee7c..369f063b 100644 --- a/packages/relayer/src/modules/dkim.rs +++ b/packages/relayer/src/modules/dkim.rs @@ -2,6 +2,7 @@ use std::fs; use anyhow::anyhow; use relayer_utils::extract_substr_idxes; +use relayer_utils::DecomposedRegexConfig; use relayer_utils::LOG; use crate::*; @@ -177,16 +178,24 @@ pub async fn check_and_update_dkim( } // Get selector - let selector_def_path = env::var(SELECTOR_DEF_PATH_KEY) - .map_err(|_| anyhow!("ENV var {} not set", SELECTOR_DEF_PATH_KEY))?; + let selector_def_path = + PathBuf::from(env::var(REGEX_JSON_DIR_PATH_KEY).unwrap()).join("selector_def.json"); let selector_def_contents = fs::read_to_string(&selector_def_path) - .map_err(|e| anyhow!("Failed to read file {}: {}", selector_def_path, e))?; - let selector_decomposed_def = serde_json::from_str(&selector_def_path).unwrap(); + .map_err(|e| anyhow!("Failed to read file {}: {}", selector_def_path.display(), e))?; + let selector_decomposed_def: DecomposedRegexConfig = + serde_json::from_str(&selector_def_contents).map_err(|e| { + anyhow!( + "Failed to parse JSON from file {}: {}", + selector_def_path.display(), + e + ) + })?; let selector = { let idxes = extract_substr_idxes(&parsed_email.canonicalized_header, &selector_decomposed_def)?[0]; parsed_email.canonicalized_header[idxes.0..idxes.1].to_string() }; + info!(LOG, "selector {}", selector); // Generate IC agent and create oracle client diff --git a/packages/relayer/src/strings.rs b/packages/relayer/src/strings.rs index 51b610ac..b9db6720 100644 --- a/packages/relayer/src/strings.rs +++ b/packages/relayer/src/strings.rs @@ -3,7 +3,6 @@ pub const SMTP_SERVER_KEY: &str = "SMTP_SERVER"; pub const RELAYER_EMAIL_ADDR_KEY: &str = "RELAYER_EMAIL_ADDR"; pub const DATABASE_PATH_KEY: &str = "DATABASE_URL"; pub const WEB_SERVER_ADDRESS_KEY: &str = "WEB_SERVER_ADDRESS"; -pub const CIRCUITS_DIR_PATH_KEY: &str = "CIRCUITS_DIR_PATH"; pub const PROVER_ADDRESS_KEY: &str = "PROVER_ADDRESS"; pub const CHAIN_RPC_PROVIDER_KEY: &str = "CHAIN_RPC_PROVIDER"; pub const CHAIN_RPC_EXPLORER_KEY: &str = "CHAIN_RPC_EXPLORER"; @@ -11,8 +10,7 @@ pub const PRIVATE_KEY_KEY: &str = "PRIVATE_KEY"; pub const CHAIN_ID_KEY: &str = "CHAIN_ID"; pub const EMAIL_ACCOUNT_RECOVERY_VERSION_ID_KEY: &str = "EMAIL_ACCOUNT_RECOVERY_VERSION_ID"; pub const EMAIL_TEMPLATES_PATH_KEY: &str = "EMAIL_TEMPLATES_PATH"; -pub const SELECTOR_DEF_PATH_KEY: &str = "SELECTOR_DEF_PATH"; -pub const REQUEST_DEF_PATH_KEY: &str = "REQUEST_DEF_PATH"; +pub const REGEX_JSON_DIR_PATH_KEY: &str = "REGEX_JSON_DIR_PATH"; // Log strings pub const JSON_LOGGER_KEY: &str = "JSON_LOGGER";