From 11fe01c7e0db9b223175113ffe48fd8a30e73c02 Mon Sep 17 00:00:00 2001 From: BinChengZhao Date: Tue, 12 Oct 2021 15:01:17 +0800 Subject: [PATCH 01/13] doc: init migration poem log. --- migrate_to_poem..md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 migrate_to_poem..md diff --git a/migrate_to_poem..md b/migrate_to_poem..md new file mode 100644 index 0000000..d7e5791 --- /dev/null +++ b/migrate_to_poem..md @@ -0,0 +1,26 @@ +`delicate` Project Background. + + Distributed scheduling system. [Repo](https://github.com/BinChengZhao/delicate) + +1. 5w lines of code + documentation, etc. +2. main language is Rust + js. + +For more details please check: xxx + +Why migrate to `poem`? + +The iterative progress of actix-web is not keeping up with the current needs. + +Brief background on `poem`. + +1. the highly skilled and passionate author, `sunli`. +2. based on `hyper`, combined with `tokio` users have more control. + + +The focus of the migration. + +1. recombination of web components. + +2. api level modifications to avoid business logic adjustments. + +etc..... \ No newline at end of file From f678e0f4a7664721d1c25a2ab91bb674fdcdbaa4 Mon Sep 17 00:00:00 2001 From: BinChengZhao Date: Wed, 13 Oct 2021 00:22:23 +0800 Subject: [PATCH 02/13] feat: first step for migrate to poem. --- README.md | 2 +- README_zhCN.md | 2 +- delicate-executor/Cargo.toml | 15 +- delicate-executor/src/main.rs | 397 ++++++++++++++++--------------- delicate-executor/src/prelude.rs | 21 +- delicate-utils/Cargo.toml | 35 +-- delicate-utils/src/prelude.rs | 2 + 7 files changed, 249 insertions(+), 225 deletions(-) diff --git a/README.md b/README.md index 0d63ab1..bed6638 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ The rest of the overall indicators await bench. The basic common usage of delicate is to quickly set up for the backend servers and executors. We split it into multiple simple steps to illustrate the delicate concepts and operations. The source code installation requires: - * [rustc](https://www.rust-lang.org/tools/install) (minimum-supported version of `rustc` is **1.49**.) + * [rustc](https://www.rust-lang.org/tools/install) (minimum-supported version of `rustc` is **1.54**.) * libmysqlclient-dev & libpq-dev & libssl-dev ### Setting up delicate diff --git a/README_zhCN.md b/README_zhCN.md index ffcc37d..e32b948 100644 --- a/README_zhCN.md +++ b/README_zhCN.md @@ -97,7 +97,7 @@ https://github.com/BinChengZhao/delicate) 我们把它分成多个简单的步骤来说明`Delicate`的概念和操作. 源码安装的依赖: - * [rustc](https://www.rust-lang.org/tools/install) (minimum-supported version of `rustc` is **1.49**.) + * [rustc](https://www.rust-lang.org/tools/install) (minimum-supported version of `rustc` is **1.54**.) * libmysqlclient-dev & libpq-dev & libssl-dev ### 部署 delicate diff --git a/delicate-executor/Cargo.toml b/delicate-executor/Cargo.toml index 1cf620d..3b31b66 100644 --- a/delicate-executor/Cargo.toml +++ b/delicate-executor/Cargo.toml @@ -7,14 +7,15 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -sysinfo = "^0.16.5" -actix-web = "^3.3.2" -futures = "^0.3" -env_logger = "^0.8" -serde = { version = "^1.0", features = ["derive"] } -serde_json = "^1.0.62" -json = "^0.12.4" anyhow = "^1.0.38" async-lock = "^2.3.0" dotenv = "^0.15.0" +env_logger = "^0.8" +futures = "^0.3" +json = "^0.12.4" +serde = { version = "^1.0", features = ["derive"] } +serde_json = "^1.0.62" +sysinfo = "^0.16.5" + + delicate-utils = { path = "../delicate-utils" } \ No newline at end of file diff --git a/delicate-executor/src/main.rs b/delicate-executor/src/main.rs index 32941aa..d230534 100644 --- a/delicate-executor/src/main.rs +++ b/delicate-executor/src/main.rs @@ -3,23 +3,23 @@ mod component; mod prelude; use prelude::*; -#[post("/api/task/create")] +#[handler] #[instrument(skip(executor_conf, shared_delay_timer, signed_task_package), fields(task_package = signed_task_package.task_package.id))] async fn create_task( - web::Json(signed_task_package): web::Json, - shared_delay_timer: SharedDelayTimer, - executor_conf: SharedExecutorSecurityConf, -) -> impl Responder { + Json(signed_task_package): Json, + shared_delay_timer: Data<&DelayTimer>, + executor_conf: Data<&ExecutorSecurityConf>, +) -> Json { let response: UnitUnifiedResponseMessages = Into::into(pre_create_task(signed_task_package, shared_delay_timer, executor_conf).await); - HttpResponse::Ok().json(response) + Json(response) } pub async fn pre_create_task( signed_task_package: SignedTaskPackage, - shared_delay_timer: SharedDelayTimer, - executor_conf: SharedExecutorSecurityConf, + shared_delay_timer: Data<&DelayTimer>, + executor_conf: Data<&ExecutorSecurityConf>, ) -> Result<(), CommonError> { info!("pre_create_task: {}", &signed_task_package.task_package); let guard = executor_conf.get_bind_scheduler_token_ref().await; @@ -31,23 +31,23 @@ pub async fn pre_create_task( Ok(shared_delay_timer.add_task(task)?) } -#[post("/api/task/update")] +#[handler] #[instrument(skip(executor_conf, shared_delay_timer, signed_task_package), fields(task_package = signed_task_package.task_package.id))] async fn update_task( - web::Json(signed_task_package): web::Json, - shared_delay_timer: SharedDelayTimer, - executor_conf: SharedExecutorSecurityConf, -) -> impl Responder { + Json(signed_task_package): Json, + shared_delay_timer: Data<&DelayTimer>, + executor_conf: Data<&ExecutorSecurityConf>, +) -> Json { let response: UnitUnifiedResponseMessages = Into::into(pre_update_task(signed_task_package, shared_delay_timer, executor_conf).await); - HttpResponse::Ok().json(response) + Json(response) } pub async fn pre_update_task( signed_task_package: SignedTaskPackage, - shared_delay_timer: SharedDelayTimer, - executor_conf: SharedExecutorSecurityConf, + shared_delay_timer: Data<&DelayTimer>, + executor_conf: Data<&ExecutorSecurityConf>, ) -> Result<(), CommonError> { info!("pre_update_task: {}", &signed_task_package.task_package); let guard = executor_conf.get_bind_scheduler_token_ref().await; @@ -59,24 +59,24 @@ pub async fn pre_update_task( Ok(shared_delay_timer.update_task(task)?) } -#[post("/api/task/remove")] +#[handler] #[instrument(skip(executor_conf, shared_delay_timer, signed_task_unit), fields(task_id = signed_task_unit.task_unit.task_id))] async fn remove_task( - web::Json(signed_task_unit): web::Json, - shared_delay_timer: SharedDelayTimer, - executor_conf: SharedExecutorSecurityConf, -) -> HttpResponse { + Json(signed_task_unit): Json, + shared_delay_timer: Data<&DelayTimer>, + executor_conf: Data<&ExecutorSecurityConf>, +) -> Json { let response: UnitUnifiedResponseMessages = pre_remove_task(signed_task_unit, shared_delay_timer, executor_conf) .await .into(); - HttpResponse::Ok().json(response) + Json(response) } pub async fn pre_remove_task( signed_task_unit: SignedTaskUnit, - shared_delay_timer: SharedDelayTimer, - executor_conf: SharedExecutorSecurityConf, + shared_delay_timer: Data<&DelayTimer>, + executor_conf: Data<&ExecutorSecurityConf>, ) -> Result<(), CommonError> { info!("pre_remove_task: {}", &signed_task_unit); @@ -86,24 +86,24 @@ pub async fn pre_remove_task( Ok(shared_delay_timer.remove_task(task_unit.task_id as u64)?) } -#[post("/api/task/advance")] +#[handler] #[instrument(skip(executor_conf, shared_delay_timer, signed_task_unit), fields(task_id = signed_task_unit.task_unit.task_id))] async fn advance_task( - web::Json(signed_task_unit): web::Json, - shared_delay_timer: SharedDelayTimer, - executor_conf: SharedExecutorSecurityConf, -) -> HttpResponse { + Json(signed_task_unit): Json, + shared_delay_timer: Data<&DelayTimer>, + executor_conf: Data<&ExecutorSecurityConf>, +) -> Json { let response: UnitUnifiedResponseMessages = pre_advance_task(signed_task_unit, shared_delay_timer, executor_conf) .await .into(); - HttpResponse::Ok().json(response) + Json(response) } pub async fn pre_advance_task( signed_task_unit: SignedTaskUnit, - shared_delay_timer: SharedDelayTimer, - executor_conf: SharedExecutorSecurityConf, + shared_delay_timer: Data<&DelayTimer>, + executor_conf: Data<&ExecutorSecurityConf>, ) -> Result<(), CommonError> { info!("pre_advance_task: {}", &signed_task_unit); let guard = executor_conf.get_bind_scheduler_token_ref().await; @@ -112,24 +112,24 @@ pub async fn pre_advance_task( Ok(shared_delay_timer.advance_task(task_unit.task_id as u64)?) } -#[post("/api/task_instance/kill")] +#[handler] #[instrument(skip(executor_conf, shared_delay_timer, signed_cancel_task_record), fields(cancel_task_record = signed_cancel_task_record.cancel_task_record.to_string().deref()))] async fn cancel_task( - web::Json(signed_cancel_task_record): web::Json, - shared_delay_timer: SharedDelayTimer, - executor_conf: SharedExecutorSecurityConf, -) -> HttpResponse { + Json(signed_cancel_task_record): Json, + shared_delay_timer: Data<&DelayTimer>, + executor_conf: Data<&ExecutorSecurityConf>, +) -> Json { let response: UnitUnifiedResponseMessages = pre_cancel_task(signed_cancel_task_record, shared_delay_timer, executor_conf) .await .into(); - HttpResponse::Ok().json(response) + Json(response) } pub async fn pre_cancel_task( signed_cancel_task_record: SignedCancelTaskRecord, - shared_delay_timer: SharedDelayTimer, - executor_conf: SharedExecutorSecurityConf, + shared_delay_timer: Data<&DelayTimer>, + executor_conf: Data<&ExecutorSecurityConf>, ) -> Result<(), CommonError> { info!("pre_cancel_task: {}", &signed_cancel_task_record); @@ -144,153 +144,174 @@ pub async fn pre_cancel_task( } #[allow(dead_code)] -async fn maintenance(shared_delay_timer: SharedDelayTimer) -> impl Responder { - HttpResponse::Ok().json(Into::::into( +async fn maintenance(shared_delay_timer: Data<&DelayTimer>) -> Json { + Json(Into::::into( shared_delay_timer.stop_delay_timer(), )) } // Health Screening - -#[post("/api/executor/health_screen")] -#[instrument(skip(req, signed_health_screen_unit, executor_conf, system_mirror), fields(time = signed_health_screen_unit.health_screen_unit.time))] +#[handler] +// FIXME: +// #[instrument(skip(req, signed_health_screen_unit, executor_conf, system_mirror), fields(time = signed_health_screen_unit.health_screen_unit.time))] +#[instrument(skip(signed_health_screen_unit, executor_conf, system_mirror), fields(time = signed_health_screen_unit.health_screen_unit.time))] async fn health_screen( - req: HttpRequest, - web::Json(signed_health_screen_unit): web::Json, - executor_conf: SharedExecutorSecurityConf, - system_mirror: SharedSystemMirror, -) -> impl Responder { + // FIXME: + // req: Request, + Json(signed_health_screen_unit): Json, + executor_conf: Data<&ExecutorSecurityConf>, + system_mirror: Data<&SystemMirror>, +) -> Json> { let guard = executor_conf.get_bind_scheduler_token_ref().await; let token = guard.as_ref().map(|s| s.deref()); - let verify_result = signed_health_screen_unit.get_health_screen_unit_after_verify(token); - if let Ok(health_screen_unit) = verify_result { - let connection = req.connection_info(); - let ip = connection.realip_remote_addr().unwrap_or_default(); - info!("From: {}, Request-time:{}", ip, health_screen_unit); - - let system_snapshot = system_mirror.refresh_all().await; - let bind_request = executor_conf - .get_bind_scheduler_inner_ref() - .await - .clone() - .unwrap_or_default(); - - let health_check_package = HealthCheckPackage { - system_snapshot, - bind_request, - }; - return HttpResponse::Ok().json( - UnifiedResponseMessages::::success_with_data(health_check_package), - ); - } - - HttpResponse::Ok().json( - UnitUnifiedResponseMessages::error() - .customized_error_msg(verify_result.expect_err("").to_string()), - ) + todo!(); + // let verify_result = signed_health_screen_unit.get_health_screen_unit_after_verify(token); + // if let Ok(health_screen_unit) = verify_result { + // FIXME: + // let ip = req.remote_addr(); + // info!("From: {}, Request-time:{}", ip, health_screen_unit); + + // let system_snapshot = system_mirror.refresh_all().await; + // let bind_request = executor_conf + // .get_bind_scheduler_inner_ref() + // .await + // .clone() + // .unwrap_or_default(); + + // let health_check_package = HealthCheckPackage { + // system_snapshot, + // bind_request, + // }; + // return Json( + // UnifiedResponseMessages::::success_with_data(health_check_package), + // ); + // } + + // Json( + // UnifiedResponseMessages::::error() + // .customized_error_msg(verify_result.expect_err("").to_string()), + // ) } -#[post("/api/executor/bind")] +#[handler] #[instrument(skip(request_bind_scheduler, security_conf, shared_delay_timer), fields(bind_scheduler = request_bind_scheduler.bind_request.to_string().deref()))] // Or set security level, no authentication at level 0, public and private keys required at level 1. async fn bind_executor( - web::Json(request_bind_scheduler): web::Json, - security_conf: web::Data, - shared_delay_timer: SharedDelayTimer, -) -> impl Responder { + Json(request_bind_scheduler): Json, + security_conf: Data<&ExecutorSecurityConf>, + shared_delay_timer: Data<&DelayTimer>, +) -> Json> { info!("{}", &request_bind_scheduler.bind_request); - let verify_result = request_bind_scheduler.verify(security_conf.get_ref().get_rsa_public_key()); - if verify_result.is_ok() { - let SignedBindRequest { bind_request, .. } = request_bind_scheduler; + // FIXME: - let token: Option = security_conf.generate_token(); + // let verify_result = request_bind_scheduler.verify(security_conf.get_rsa_public_key()); + // if verify_result.is_ok() { + // let SignedBindRequest { bind_request, .. } = request_bind_scheduler; - // Take 10 bits from executor_machine_id and do machine_id and node_id in two groups. + // let token: Option = security_conf.generate_token(); - let executor_machine_id = bind_request.executor_machine_id; - let extractor: i16 = 0b00_0001_1111; - let node_id = executor_machine_id & extractor; - let machine_id = (executor_machine_id >> 5) & extractor; + // // Take 10 bits from executor_machine_id and do machine_id and node_id in two groups. - shared_delay_timer.update_id_generator_conf(machine_id as i32, node_id as i32); + // let executor_machine_id = bind_request.executor_machine_id; + // let extractor: i16 = 0b00_0001_1111; + // let node_id = executor_machine_id & extractor; + // let machine_id = (executor_machine_id >> 5) & extractor; - *security_conf.get_bind_scheduler_inner_mut().await = Some(bind_request); - *security_conf.get_bind_scheduler_token_mut().await = token.clone(); + // shared_delay_timer.update_id_generator_conf(machine_id as i32, node_id as i32); - let bind_response = BindResponse { - time: get_timestamp() as i64, - token, - } - .encrypt_self(security_conf.get_rsa_public_key()); + // *security_conf.get_bind_scheduler_inner_mut().await = Some(bind_request); + // *security_conf.get_bind_scheduler_token_mut().await = token.clone(); - let response: UnifiedResponseMessages = Into::into(bind_response); - return HttpResponse::Ok().json(response); - } + // let bind_response = BindResponse { + // time: get_timestamp() as i64, + // token, + // } + // .encrypt_self(security_conf.get_rsa_public_key()); + + // let response: UnifiedResponseMessages = Into::into(bind_response); + // return Json(response); + // } - HttpResponse::Ok().json( - UnifiedResponseMessages::::error() - .customized_error_msg(verify_result.expect_err("").to_string()), - ) + // Json( + // UnifiedResponseMessages::::error() + // .customized_error_msg(verify_result.expect_err("").to_string()), + // ) + todo!(); } -#[actix_web::main] -async fn main() -> AnyResult<()> { +fn main() -> AnyResult<()> { // Loads environment variables. dotenv().ok(); - let log_level: Level = - FromStr::from_str(&env::var("LOG_LEVEL").unwrap_or_else(|_| String::from("info"))) - .expect("Log level acquired fail."); - - FmtSubscriber::builder() - // will be written to stdout. - .with_max_level(log_level) - .with_thread_names(true) - // completes the builder. - .init(); - - let shared_security_conf: SharedExecutorSecurityConf = - ShareData::new(ExecutorSecurityConf::default()); - - let shared_system_mirror: SharedSystemMirror = ShareData::new(SystemMirror::default()); - - let mut delay_timer = DelayTimerBuilder::default().enable_status_report().build(); - launch_status_reporter(&mut delay_timer, shared_security_conf.clone()); - let shared_delay_timer: SharedDelayTimer = ShareData::new(delay_timer); - - HttpServer::new(move || { - App::new() - .service(bind_executor) - .service(create_task) - .service(remove_task) - .service(cancel_task) - .service(advance_task) - .service(health_screen) - .app_data(shared_delay_timer.clone()) - .app_data(shared_security_conf.clone()) - .app_data(shared_system_mirror.clone()) - .wrap(MiddlewareLogger::default()) - }) - .bind( - env::var("EXECUTOR_LISTENING_ADDRESS") - .expect("Without `EXECUTOR_LISTENING_ADDRESS` set in .env"), - )? - .run() - .await?; - - Ok(()) + let raw_runtime = Builder::new_multi_thread() + .thread_name_fn(|| { + static ATOMIC_ID: AtomicUsize = AtomicUsize::new(0); + let id = ATOMIC_ID.fetch_add(1, Ordering::SeqCst); + format!("executor-{}", id) + }) + .thread_stack_size(4 * 1024 * 1024) + .build() + .expect("Init Tokio runtime failed."); + + let arc_runtime = Arc::new(raw_runtime); + let arc_runtime_cloned = arc_runtime.clone(); + + let block_result: AnyResult<()> = arc_runtime.block_on(async move { + let log_level: Level = + FromStr::from_str(&env::var("LOG_LEVEL").unwrap_or_else(|_| String::from("info"))) + .expect("Log level acquired fail."); + + FmtSubscriber::builder() + // will be written to stdout. + .with_max_level(log_level) + .with_thread_names(true) + // completes the builder. + .init(); + + let arc_security_conf = Arc::new(ExecutorSecurityConf::default()); + let shared_security_conf: AddData> = + AddData::new(arc_security_conf.clone()); + + let shared_system_mirror: AddData> = + AddData::new(Arc::new(SystemMirror::default())); + + let mut delay_timer = DelayTimerBuilder::default() + .tokio_runtime_shared_by_custom(arc_runtime_cloned) + .enable_status_report() + .build(); + launch_status_reporter(&mut delay_timer, arc_security_conf); + let shared_delay_timer: AddData> = AddData::new(Arc::new(delay_timer)); + let route = Route::new() + .at("/api/task/update", post(update_task)) + .at("/api/task/create", post(create_task)) + .at("/api/task/remove", post(remove_task)) + .at("/api/task/advance", post(advance_task)) + .at("/api/task_instance/kill", post(cancel_task)) + .at("/api/executor/health_screen", post(health_screen)) + .at("/api/executor/bind", post(bind_executor)) + .with(shared_delay_timer) + .with(shared_security_conf); + + let address = env::var("EXECUTOR_LISTENING_ADDRESS") + .expect("Without `EXECUTOR_LISTENING_ADDRESS` set in .env"); + let listener = TcpListener::bind(address); + let server = Server::new(listener).await?; + Ok(server.run(route).await?) + }); + + block_result } fn launch_status_reporter( delay_timer: &mut DelayTimer, - shared_security_conf: SharedExecutorSecurityConf, + shared_security_conf: Arc, ) { let status_reporter_option = delay_timer.take_status_reporter(); if let Some(status_reporter) = status_reporter_option { - rt_spawn(async move { + tokio_spawn(async move { // After taking the lock, get the resource quickly and release the lock. let mut token: Option = None; @@ -300,36 +321,37 @@ fn launch_status_reporter( let f = async { fresh_scheduler_conf(&shared_security_conf, &mut token, &mut scheduler).await; - let events = collect_events(&status_reporter, scheduler.as_ref()).await?; + // FIXME: + // let events = collect_events(&status_reporter, scheduler.as_ref()).await?; - if !events.is_empty() { - send_event_collection( - scheduler.as_ref(), - Into::::into(events).sign(token.as_deref()), - ) - .await; - } + // if !events.is_empty() { + // send_event_collection( + // scheduler.as_ref(), + // Into::::into(events).sign(token.as_deref()), + // ) + // .await; + // } - Ok(()) + // Ok(()) }; - let f_result: Result<(), CommonError> = f - .instrument(span!( - Level::INFO, - "status-reporter", - log_id = get_unique_id_string().deref() - )) - .await; - - if let Err(e) = f_result { - error!("{}", e); - return; - } + // let f_result: Result<(), CommonError> = f + // .instrument(span!( + // Level::INFO, + // "status-reporter", + // log_id = get_unique_id_string().deref() + // )) + // .await; + + // if let Err(e) = f_result { + // error!("{}", e); + // return; + // } } - }) + }); } } async fn fresh_scheduler_conf( - shared_security_conf: &SharedExecutorSecurityConf, + shared_security_conf: &ExecutorSecurityConf, token: &mut Option, scheduler: &mut Option, ) { @@ -363,7 +385,7 @@ async fn collect_events( ) -> Result, CommonError> { let mut events: Vec = Vec::new(); for _i in 0..10 { - let event_future: RtTimeout<_> = rt_timeout( + let event_future: TokioTimeout<_> = tokio_timeout( Duration::from_secs(3), status_reporter.next_public_event_with_async_wait(), ); @@ -397,19 +419,20 @@ async fn send_event_collection( &executor_event_collection.event_collection ); - if let Ok(mut response) = RequestClient::new() - .post(&scheduler_ref.scheduler_host) - .send_json(&executor_event_collection) - .await - .map_err(|e| { - error!( - "Failed to send the event collection: {} - {} - {:?}", - e, &scheduler_ref, &executor_event_collection.event_collection - ) - }) - { - debug!("delicate-schduler response: {:?}", response.body().await) - } + // FIXME: + // if let Ok(mut response) = RequestClient::new() + // .post(&scheduler_ref.scheduler_host) + // .send_json(&executor_event_collection) + // .await + // .map_err(|e| { + // error!( + // "Failed to send the event collection: {} - {} - {:?}", + // e, &scheduler_ref, &executor_event_collection.event_collection + // ) + // }) + // { + // debug!("delicate-schduler response: {:?}", response.body().await) + // } } } } diff --git a/delicate-executor/src/prelude.rs b/delicate-executor/src/prelude.rs index 155a145..89f07d9 100644 --- a/delicate-executor/src/prelude.rs +++ b/delicate-executor/src/prelude.rs @@ -1,12 +1,5 @@ pub(crate) use crate::component::SystemMirror; -#[allow(unused_imports)] -pub(crate) use actix_web::client::Client as RequestClient; -pub(crate) use actix_web::rt::spawn as rt_spawn; -pub(crate) use actix_web::rt::time::{timeout as rt_timeout, Timeout as RtTimeout}; - -pub(crate) use actix_web::web::{self, Data as ShareData}; -pub(crate) use actix_web::{post, App, HttpRequest, HttpResponse, HttpServer, Responder}; pub(crate) use async_lock::RwLock; pub(crate) use dotenv::dotenv; @@ -28,7 +21,9 @@ pub(crate) use delicate_utils::prelude::*; pub(crate) use crate::delay_timer::utils::status_report::StatusReporter; pub(crate) use delicate_utils::uniform_data::UnifiedResponseMessages; -pub(crate) use actix_web::middleware::Logger as MiddlewareLogger; +pub(crate) use tokio::runtime::Builder; +pub(crate) use tokio::spawn as tokio_spawn; +pub(crate) use tokio::time::{timeout as tokio_timeout, Timeout as TokioTimeout}; pub(crate) use tracing::{debug, error, info, instrument, span, Instrument, Level}; pub(crate) use tracing_subscriber::FmtSubscriber; @@ -37,12 +32,14 @@ pub(crate) use std::env; pub(crate) use std::fmt::Debug; pub(crate) use std::ops::Deref; pub(crate) use std::str::FromStr; - +pub(crate) use std::sync::atomic::{AtomicUsize, Ordering}; +pub(crate) use std::sync::Arc; pub(crate) use std::time::Duration; pub(crate) use sysinfo::{RefreshKind, System, SystemExt}; -pub(crate) type SharedDelayTimer = ShareData; -pub(crate) type SharedExecutorSecurityConf = ShareData; +pub(crate) use poem::middleware::AddData; +pub(crate) use poem::web::{Data, Json, Path}; +pub(crate) use poem::{handler, listener::TcpListener, post, EndpointExt, Request, Route, Server}; + pub(crate) type UnitUnifiedResponseMessages = UnifiedResponseMessages<()>; -pub(crate) type SharedSystemMirror = ShareData; diff --git a/delicate-utils/Cargo.toml b/delicate-utils/Cargo.toml index c2e0506..6beb44b 100644 --- a/delicate-utils/Cargo.toml +++ b/delicate-utils/Cargo.toml @@ -10,30 +10,31 @@ name = "delicate_utils" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -log = "^0.4" -rand = "^0.8.3" -ring = "^0.16.20" -fastrand = "^1.4.1" -thiserror = "1.0.25" async-lock = "^2.3.0" actix-web = "^3.3.2" actix-session = "0.4.1" -tracing = "0.1.26" -tracing-subscriber = "0.2.19" -flexi_logger = {version = "0.19", features = ["trc"]} -serde_json = "^1.0.62" -sysinfo = "^0.16.5" +# TODO: This(casbin-version) must be changed when upgrading to actix-web4. +casbin = {version = '2.0.5', default-features = false, features = ["incremental", "logging", "tokio", "runtime-tokio", "watcher"]} derive_more = "^0.99.14" -uuid = {version = "^0.8.2", features = ["v4"]} -hex = {version = "^0.4", features = ["serde"]} -serde = { version = "^1.0", features = ["derive"] } delay_timer = {version = "^0.9.0", features = ["full"]} +fastrand = "^1.4.1" +flexi_logger = {version = "0.19", features = ["trc"]} +hex = {version = "^0.4", features = ["serde"]} +log = "^0.4" +poem = "1.0.1" +rand = "^0.8.3" +ring = "^0.16.20" rsa = { version = "^0.4.0", features = ["std", "pem" ,"serde"] } -diesel = { version = "^1.4.6", features = ["postgres", "mysql", "extras", "r2d2", "chrono"] } -# TODO: This(casbin-version) must be changed when upgrading to actix-web4. -casbin = {version = '2.0.5', default-features = false, features = ["incremental", "logging", "tokio", "runtime-tokio", "watcher"]} # TODO: This(redis-version) must be changed when upgrading to actix-web4. redis = { version = "= 0.17.0", features = ["connection-manager", "tokio-comp"] } - +serde = { version = "^1.0", features = ["derive"] } +serde_json = "^1.0.62" +sysinfo = "^0.16.5" +diesel = { version = "^1.4.6", features = ["postgres", "mysql", "extras", "r2d2", "chrono"] } +thiserror = "1.0.25" +tokio ={version = "1.12.0", features = ["full"] } +tracing = "0.1.26" +tracing-subscriber = "0.2.19" +uuid = {version = "^0.8.2", features = ["v4"]} [dev-dependencies] diff --git a/delicate-utils/src/prelude.rs b/delicate-utils/src/prelude.rs index f5bc9c7..5a31d83 100644 --- a/delicate-utils/src/prelude.rs +++ b/delicate-utils/src/prelude.rs @@ -2,7 +2,9 @@ pub use casbin; pub use delay_timer; pub use flexi_logger; pub use hex; +pub use poem; pub use redis; +pub use tokio; pub use tracing; pub use tracing_subscriber; From 1c500fadc9c453a3b39ff0a048f5b295b16ae7f5 Mon Sep 17 00:00:00 2001 From: BinChengZhao Date: Wed, 13 Oct 2021 18:00:53 +0800 Subject: [PATCH 03/13] feat: first step of migrate scheduler to poem. --- delicate-executor/src/main.rs | 153 ++--- delicate-executor/src/prelude.rs | 1 + delicate-scheduler/Cargo.toml | 1 - delicate-scheduler/src/actions/components.rs | 142 ++--- .../src/actions/data_reports.rs | 12 +- .../src/actions/executor_group.rs | 123 ++-- .../src/actions/executor_processor.rs | 156 +++--- .../src/actions/executor_processor_bind.rs | 338 +++++------ .../src/actions/operation_log.rs | 32 +- delicate-scheduler/src/actions/role.rs | 41 +- delicate-scheduler/src/actions/task.rs | 374 +++++++------ delicate-scheduler/src/actions/task_log.rs | 143 ++--- delicate-scheduler/src/actions/user.rs | 527 ++++++++++-------- .../src/actions/user_login_log.rs | 16 +- .../auth/casbin/adapter/adapter_core.rs | 6 +- .../auth/casbin/casbin_event_consumer.rs | 10 +- .../src/components/auth/casbin/middleware.rs | 102 ++-- delicate-scheduler/src/components/base.rs | 1 - .../src/components/health_checker.rs | 29 +- .../src/components/operation_log_consumer.rs | 2 +- delicate-scheduler/src/components/session.rs | 124 ++--- delicate-scheduler/src/main.rs | 183 +++--- delicate-scheduler/src/prelude.rs | 20 +- delicate-utils/Cargo.toml | 1 + delicate-utils/src/error.rs | 22 + delicate-utils/src/prelude.rs | 1 + migrate_to_poem..md | 35 +- 27 files changed, 1373 insertions(+), 1222 deletions(-) diff --git a/delicate-executor/src/main.rs b/delicate-executor/src/main.rs index d230534..365d4ca 100644 --- a/delicate-executor/src/main.rs +++ b/delicate-executor/src/main.rs @@ -152,23 +152,20 @@ async fn maintenance(shared_delay_timer: Data<&DelayTimer>) -> Json, executor_conf: Data<&ExecutorSecurityConf>, system_mirror: Data<&SystemMirror>, ) -> Json> { - let guard = executor_conf.get_bind_scheduler_token_ref().await; - let token = guard.as_ref().map(|s| s.deref()); - + // FIXME: todo!(); + // let guard = executor_conf.get_bind_scheduler_token_ref().await; + // let token = guard.as_ref().map(|s| s.deref()); + // let verify_result = signed_health_screen_unit.get_health_screen_unit_after_verify(token); // if let Ok(health_screen_unit) = verify_result { - // FIXME: // let ip = req.remote_addr(); // info!("From: {}, Request-time:{}", ip, health_screen_unit); @@ -310,45 +307,52 @@ fn launch_status_reporter( ) { let status_reporter_option = delay_timer.take_status_reporter(); - if let Some(status_reporter) = status_reporter_option { - tokio_spawn(async move { - // After taking the lock, get the resource quickly and release the lock. - - let mut token: Option = None; - let mut scheduler: Option = None; - - loop { - let f = async { - fresh_scheduler_conf(&shared_security_conf, &mut token, &mut scheduler).await; - - // FIXME: - // let events = collect_events(&status_reporter, scheduler.as_ref()).await?; - - // if !events.is_empty() { - // send_event_collection( - // scheduler.as_ref(), - // Into::::into(events).sign(token.as_deref()), - // ) - // .await; - // } - - // Ok(()) - }; - // let f_result: Result<(), CommonError> = f - // .instrument(span!( - // Level::INFO, - // "status-reporter", - // log_id = get_unique_id_string().deref() - // )) - // .await; - - // if let Err(e) = f_result { - // error!("{}", e); - // return; - // } - } - }); - } + // if let Some(status_reporter) = status_reporter_option { + // tokio_spawn(async move { + // // After taking the lock, get the resource quickly and release the lock. + + // let mut token: Option = None; + // let mut scheduler: Option = None; + // let client = RequestClient::new(); + + // loop { + // let f = async { + // fresh_scheduler_conf(&shared_security_conf, &mut token, &mut scheduler).await; + + // let events = collect_events(&status_reporter, scheduler.as_ref()).await?; + + // if events.is_empty() { + // return Ok(()); + // } + + // if let Ok(executor_event_collection) = + // Into::::into(events).sign(token.as_deref()) + // { + // send_event_collection( + // scheduler.as_ref(), + // executor_event_collection, + // &client, + // ) + // .await; + // } + + // Ok(()) + // }; + // let f_result: Result<(), NewCommonError> = f + // .instrument(span!( + // Level::INFO, + // "status-reporter", + // log_id = get_unique_id_string().deref() + // )) + // .await; + + // if let Err(e) = f_result { + // error!("{}", e); + // return; + // } + // } + // }); + // } } async fn fresh_scheduler_conf( shared_security_conf: &ExecutorSecurityConf, @@ -371,9 +375,9 @@ async fn fresh_scheduler_conf( scheduler.clone_from(&fresh_scheduler); // Adjust the internal host to avoid the need to clone String when calling RequestClient::post. - //+ "/api/task_logs/event_trigger" + //+ "/api/task_log/event_trigger" if let Some(scheduler_mut_ref) = scheduler.as_mut() { - scheduler_mut_ref.scheduler_host += "/api/task_logs/event_trigger"; + scheduler_mut_ref.scheduler_host += "/api/task_log/event_trigger"; } } } @@ -382,7 +386,7 @@ async fn fresh_scheduler_conf( async fn collect_events( status_reporter: &StatusReporter, scheduler: Option<&BindRequest>, -) -> Result, CommonError> { +) -> Result, NewCommonError> { let mut events: Vec = Vec::new(); for _i in 0..10 { let event_future: TokioTimeout<_> = tokio_timeout( @@ -395,7 +399,7 @@ async fn collect_events( Err(_) => break, // Internal runtime exception. Ok(Err(_)) => { - return Err(CommonError::DisPass( + return Err(NewCommonError::DisPass( "Internal runtime exception".to_string(), )); } @@ -410,29 +414,32 @@ async fn collect_events( async fn send_event_collection( scheduler: Option<&BindRequest>, - executor_event_collection_result: Result, + executor_event_collection: SignedExecutorEventCollection, + client: &RequestClient, ) { if let Some(scheduler_ref) = scheduler.as_ref() { - if let Ok(executor_event_collection) = executor_event_collection_result { - debug!( - "Event collection - {:?}", - &executor_event_collection.event_collection - ); - - // FIXME: - // if let Ok(mut response) = RequestClient::new() - // .post(&scheduler_ref.scheduler_host) - // .send_json(&executor_event_collection) - // .await - // .map_err(|e| { - // error!( - // "Failed to send the event collection: {} - {} - {:?}", - // e, &scheduler_ref, &executor_event_collection.event_collection - // ) - // }) - // { - // debug!("delicate-schduler response: {:?}", response.body().await) - // } + debug!( + "Event collection - {:?}", + &executor_event_collection.event_collection + ); + + if let Ok(response) = client + .post(&scheduler_ref.scheduler_host) + .json(&executor_event_collection) + .send() + .await + .map_err(|e| { + error!( + "Failed to send the event collection: {} - {} - {:?}", + e, &scheduler_ref, &executor_event_collection.event_collection + ) + }) + { + response + .bytes() + .await + .map(|b| debug!("delicate-schduler response: {:?}", b)) + .ok(); } } } diff --git a/delicate-executor/src/prelude.rs b/delicate-executor/src/prelude.rs index 89f07d9..9634988 100644 --- a/delicate-executor/src/prelude.rs +++ b/delicate-executor/src/prelude.rs @@ -42,4 +42,5 @@ pub(crate) use poem::middleware::AddData; pub(crate) use poem::web::{Data, Json, Path}; pub(crate) use poem::{handler, listener::TcpListener, post, EndpointExt, Request, Route, Server}; +pub(crate) use reqwest::Client as RequestClient; pub(crate) type UnitUnifiedResponseMessages = UnifiedResponseMessages<()>; diff --git a/delicate-scheduler/Cargo.toml b/delicate-scheduler/Cargo.toml index 2032b99..2228169 100644 --- a/delicate-scheduler/Cargo.toml +++ b/delicate-scheduler/Cargo.toml @@ -16,7 +16,6 @@ documentation = "" [dependencies] actix-web = "^3.3.2" actix-session = "0.4.1" -actix-cors = "^0.5.4" async-channel = "1.6.1" async-lock = "^2.4.0" async-trait = "0.1.51" diff --git a/delicate-scheduler/src/actions/components.rs b/delicate-scheduler/src/actions/components.rs index 3767f66..b1e00a7 100644 --- a/delicate-scheduler/src/actions/components.rs +++ b/delicate-scheduler/src/actions/components.rs @@ -2,127 +2,53 @@ use super::prelude::*; -pub(crate) fn config(cfg: &mut web::ServiceConfig) { - cfg.service(binding_list) - .service(executor_list) - .service(casbin_test) - .service(permission_list); +pub(crate) fn config_route(route: Route) -> Route { + route + .at("/api/binding/list", get(binding_list)) + .at("/api/executor/list", get(executor_list)) + .at("/api/permission/list", get(permission_list)) } -#[get("/api/binding/list")] -async fn binding_list(pool: ShareData) -> HttpResponse { +#[handler] +async fn binding_list(pool: Data<&db::ConnectionPool>) -> impl IntoResponse { use model::{BindingSelection, ExecutorProcessorBindQueryBuilder}; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::< - UnifiedResponseMessages>, - >::into( - web::block::<_, _, diesel::result::Error>(move || { - ExecutorProcessorBindQueryBuilder::query_binding_columns() - .load::(&conn) - }) - .await, - )); + return Json( + Into::>>::into( + web::block::<_, _, diesel::result::Error>(move || { + ExecutorProcessorBindQueryBuilder::query_binding_columns() + .load::(&conn) + }) + .await, + ), + ); } - HttpResponse::Ok().json(UnifiedResponseMessages::>::error()) + Json(UnifiedResponseMessages::>::error()) } -#[get("/api/executor/list")] -async fn executor_list(pool: ShareData) -> HttpResponse { +#[handler] +async fn executor_list(pool: Data<&db::ConnectionPool>) -> impl IntoResponse { use model::{ExecutorProcessorQueryBuilder, ExecutorSelection}; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::< - UnifiedResponseMessages>, - >::into( - web::block::<_, _, diesel::result::Error>(move || { - ExecutorProcessorQueryBuilder::query_selection_columns() - .load::(&conn) - }) - .await, - )); + return Json( + Into::>>::into( + web::block::<_, _, diesel::result::Error>(move || { + ExecutorProcessorQueryBuilder::query_selection_columns() + .load::(&conn) + }) + .await, + ), + ); } - HttpResponse::Ok().json(UnifiedResponseMessages::>::error()) + Json(UnifiedResponseMessages::>::error()) } -#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] -struct CasbinDemo { - name: String, - permissions: Option>, - role: Option, - operation: isize, -} - -// TODO: Remove it later. -#[post("/api/casbin/test")] -async fn casbin_test( - enforcer: ShareData>, - web::Json(CasbinDemo { - name, - permissions, - role, - operation, - }): web::Json, -) -> HttpResponse { - match operation { - 1 => { - enforcer - .write() - .await - .add_permission_for_user(&name, permissions.expect("")) - .await - .expect(""); - } - 2 => { - enforcer - .write() - .await - .delete_permission_for_user(&name, permissions.expect("")) - .await - .expect(""); - } - 3 => { - enforcer - .write() - .await - .add_role_for_user(&name, &(role.expect("")), None) - .await - .expect(""); - } - 4 => { - enforcer - .write() - .await - .delete_role_for_user(&name, &(role.expect("")), None) - .await - .expect(""); - } - - 5 => { - let roles = enforcer.write().await.get_roles_for_user(&name, None); - - dbg!(roles); - } - - 6 => { - let users = enforcer - .write() - .await - .get_users_for_role(&(role.expect("")), None); - - dbg!(users); - } - - _ => {} - } - - HttpResponse::Ok().json(UnifiedResponseMessages::<()>::success()) -} - -#[get("/api/permission/list")] -async fn permission_list(pool: ShareData) -> HttpResponse { +#[handler] +async fn permission_list(pool: Data<&db::ConnectionPool>) -> impl IntoResponse { use db::schema::casbin_rule; // TODO: Awaiting follow-up adjustment. @@ -145,9 +71,7 @@ async fn permission_list(pool: ShareData) -> HttpResponse { let response_permissions: UnifiedResponseMessages> = permissions.into(); - return HttpResponse::Ok().json(UnifiedResponseMessages::success_with_data( - response_permissions, - )); + return Json(response_permissions); } - HttpResponse::Ok().json(UnifiedResponseMessages::<()>::error()) + Json(UnifiedResponseMessages::>::error()) } diff --git a/delicate-scheduler/src/actions/data_reports.rs b/delicate-scheduler/src/actions/data_reports.rs index b14e249..373872b 100644 --- a/delicate-scheduler/src/actions/data_reports.rs +++ b/delicate-scheduler/src/actions/data_reports.rs @@ -1,11 +1,11 @@ use super::prelude::*; -pub(crate) fn config(cfg: &mut web::ServiceConfig) { - cfg.service(show_one_day_tasks_state); +pub(crate) fn config_route(route: Route) -> Route { + route.at("/api/tasks_state/one_day", get(show_one_day_tasks_state)) } -#[get("/api/tasks_state/one_day")] -async fn show_one_day_tasks_state(pool: ShareData) -> HttpResponse { +#[handler] +async fn show_one_day_tasks_state(pool: Data<&db::ConnectionPool>) -> impl IntoResponse { use db::schema::task_log; use state::task_log::State; @@ -74,12 +74,12 @@ async fn show_one_day_tasks_state(pool: ShareData) -> HttpRe )) }) .await; - return HttpResponse::Ok().json(Into::>::into( + return Json(Into::>::into( daily_state_result, )); } - HttpResponse::Ok().json(UnifiedResponseMessages::::error()) + Json(UnifiedResponseMessages::::error()) } pub(crate) fn pre_show_one_day_tasks_state( diff --git a/delicate-scheduler/src/actions/executor_group.rs b/delicate-scheduler/src/actions/executor_group.rs index cb92fb0..18df194 100644 --- a/delicate-scheduler/src/actions/executor_group.rs +++ b/delicate-scheduler/src/actions/executor_group.rs @@ -1,27 +1,32 @@ use super::prelude::*; -pub(crate) fn config(cfg: &mut web::ServiceConfig) { - cfg.service(show_executor_groups) - .service(show_executor_group_detail) - .service(create_executor_group) - .service(update_executor_group) - .service(delete_executor_group); +pub(crate) fn route(route: Route) -> Route { + route + .at("/api/executor_group/list", post(show_executor_groups)) + .at( + "/api/executor_group/detail", + post(show_executor_group_detail), + ) + .at("/api/executor_group/create", post(create_executor_group)) + .at("/api/executor_group/update", post(update_executor_group)) + .at("/api/executor_group/delete", post(delete_executor_group)) } -#[post("/api/executor_group/create")] +#[handler] async fn create_executor_group( - req: HttpRequest, - web::Json(executor_group): web::Json, - pool: ShareData, -) -> HttpResponse { + req: &Request, + Json(executor_group): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { use db::schema::executor_group; - let operation_log_pair_option = - generate_operation_executor_group_addtion_log(&req.get_session(), &executor_group).ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + // FIXME: + // let operation_log_pair_option = + // generate_operation_executor_group_addtion_log(&req.get_session(), &executor_group).ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::>::into( + return Json(Into::>::into( web::block(move || { diesel::insert_into(executor_group::table) .values(&executor_group) @@ -33,16 +38,16 @@ async fn create_executor_group( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::<()>::error()) + Json(UnifiedResponseMessages::::error()) } -#[post("/api/executor_group/list")] +#[handler] async fn show_executor_groups( - web::Json(query_params): web::Json, - pool: ShareData, -) -> HttpResponse { + Json(query_params): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::< + return Json(Into::< UnifiedResponseMessages>, >::into( web::block::<_, _, diesel::result::Error>(move || { @@ -70,32 +75,35 @@ async fn show_executor_groups( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::>::error()) + Json(UnifiedResponseMessages::>::error()) } -#[post("/api/executor_group/detail")] +#[handler] async fn show_executor_group_detail( - web::Json(model::ExecutorGroupId { executor_group_id }): web::Json, - pool: ShareData, -) -> HttpResponse { + Json(model::ExecutorGroupId { executor_group_id }): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { let executor_group_detail_result = pre_show_executor_group_detail(executor_group_id, pool).await; if let Ok(executor_group_detail) = executor_group_detail_result { - return HttpResponse::Ok().json( + return Json( UnifiedResponseMessages::::success_with_data( executor_group_detail, ), ); }; - HttpResponse::Ok().json( - UnifiedResponseMessages::<()>::error() - .customized_error_msg(executor_group_detail_result.expect_err("").to_string()), - ) + + // FIXME: + todo!(); + // Json( + // UnifiedResponseMessages::::error() + // .customized_error_msg(executor_group_detail_result.expect_err("").to_string()), + // ) } async fn pre_show_executor_group_detail( executor_group_id: i64, - pool: ShareData, + pool: Data<&db::ConnectionPool>, ) -> Result { use db::schema::{executor_group, executor_processor, executor_processor_bind}; @@ -131,18 +139,20 @@ async fn pre_show_executor_group_detail( Ok(executor_group_detail) } -#[post("/api/executor_group/update")] +#[handler] async fn update_executor_group( - req: HttpRequest, - web::Json(executor_group): web::Json, - pool: ShareData, -) -> HttpResponse { - let operation_log_pair_option = - generate_operation_executor_group_modify_log(&req.get_session(), &executor_group).ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + req: &Request, + Json(executor_group): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { + // FIXME: + + // let operation_log_pair_option = + // generate_operation_executor_group_modify_log(&req.get_session(), &executor_group).ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::>::into( + return Json(Into::>::into( web::block(move || { diesel::update(&executor_group) .set(&executor_group) @@ -152,25 +162,28 @@ async fn update_executor_group( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::::error()) + Json(UnifiedResponseMessages::::error()) } -#[post("/api/executor_group/delete")] + +#[handler] async fn delete_executor_group( - req: HttpRequest, - web::Json(model::ExecutorGroupId { executor_group_id }): web::Json, - pool: ShareData, -) -> HttpResponse { + req: &Request, + Json(model::ExecutorGroupId { executor_group_id }): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { use db::schema::executor_group::dsl::*; - let operation_log_pair_option = generate_operation_executor_group_delete_log( - &req.get_session(), - &CommonTableRecord::default().set_id(executor_group_id), - ) - .ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + // FIXME: + + // let operation_log_pair_option = generate_operation_executor_group_delete_log( + // &req.get_session(), + // &CommonTableRecord::default().set_id(executor_group_id), + // ) + // .ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::>::into( + return Json(Into::>::into( web::block(move || { // Cannot link to delete internal bindings, otherwise it will cause data misalignment. diesel::delete(executor_group.find(executor_group_id)).execute(&conn) @@ -179,5 +192,5 @@ async fn delete_executor_group( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::::error()) + Json(UnifiedResponseMessages::::error()) } diff --git a/delicate-scheduler/src/actions/executor_processor.rs b/delicate-scheduler/src/actions/executor_processor.rs index 27aa2d8..6b34db5 100644 --- a/delicate-scheduler/src/actions/executor_processor.rs +++ b/delicate-scheduler/src/actions/executor_processor.rs @@ -1,26 +1,46 @@ use super::prelude::*; use db::schema::executor_processor; -pub(crate) fn config(cfg: &mut web::ServiceConfig) { - cfg.service(show_executor_processors) - .service(create_executor_processor) - .service(update_executor_processor) - .service(delete_executor_processor) - .service(activate_executor_processor); + +pub(crate) fn route(route: Route) -> Route { + route + .at( + "/api/executor_processor/list", + post(show_executor_processors), + ) + .at( + "/api/executor_processor/create", + post(create_executor_processor), + ) + .at( + "/api/executor_processor/update", + post(update_executor_processor), + ) + .at( + "/api/executor_processor/delete", + post(delete_executor_processor), + ) + + // FIXME: + // .at( + // "/api/executor_processor/activate", + // post(activate_executor_processor), + // ) } -#[post("/api/executor_processor/create")] +#[handler] async fn create_executor_processor( - req: HttpRequest, - web::Json(executor_processor): web::Json, - pool: ShareData, -) -> HttpResponse { - let operation_log_pair_option = - generate_operation_executor_processor_addtion_log(&req.get_session(), &executor_processor) - .ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + req: &Request, + Json(executor_processor): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { + // FIXME: + // let operation_log_pair_option = + // generate_operation_executor_processor_addtion_log(&req.get_session(), &executor_processor) + // .ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::>::into( + return Json(Into::>::into( web::block(move || { diesel::insert_into(executor_processor::table) .values(&executor_processor) @@ -30,16 +50,16 @@ async fn create_executor_processor( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::<()>::error()) + Json(UnifiedResponseMessages::::error()) } -#[post("/api/executor_processor/list")] +#[handler] async fn show_executor_processors( - web::Json(query_params): web::Json, - pool: ShareData, -) -> HttpResponse { + Json(query_params): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::< + return Json(Into::< UnifiedResponseMessages>, >::into( web::block::<_, _, diesel::result::Error>(move || { @@ -68,24 +88,25 @@ async fn show_executor_processors( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::< + Json(UnifiedResponseMessages::< PaginateData, >::error()) } -#[post("/api/executor_processor/update")] +#[handler] async fn update_executor_processor( - req: HttpRequest, - web::Json(executor_processor): web::Json, - pool: ShareData, -) -> HttpResponse { - let operation_log_pair_option = - generate_operation_executor_processor_modify_log(&req.get_session(), &executor_processor) - .ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + req: &Request, + Json(executor_processor): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { + // FIXME: + // let operation_log_pair_option = + // generate_operation_executor_processor_modify_log(&req.get_session(), &executor_processor) + // .ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::>::into( + return Json(Into::>::into( web::block(move || { diesel::update(&executor_processor) .set(&executor_processor) @@ -95,27 +116,30 @@ async fn update_executor_processor( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::::error()) + Json(UnifiedResponseMessages::::error()) } -#[post("/api/executor_processor/delete")] + +#[handler] async fn delete_executor_processor( - req: HttpRequest, - web::Json(model::ExecutorProcessorId { + req: &Request, + Json(model::ExecutorProcessorId { executor_processor_id, - }): web::Json, - pool: ShareData, -) -> HttpResponse { + }): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { use db::schema::executor_processor::dsl::*; - let operation_log_pair_option = generate_operation_executor_processor_delete_log( - &req.get_session(), - &CommonTableRecord::default().set_id(executor_processor_id), - ) - .ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + // FIXME: + + // let operation_log_pair_option = generate_operation_executor_processor_delete_log( + // &req.get_session(), + // &CommonTableRecord::default().set_id(executor_processor_id), + // ) + // .ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::>::into( + return Json(Into::>::into( web::block(move || { diesel::delete(executor_processor.find(executor_processor_id)).execute(&conn) }) @@ -123,29 +147,31 @@ async fn delete_executor_processor( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::::error()) + Json(UnifiedResponseMessages::::error()) } // Update `status` and `token`. -#[post("/api/executor_processor/activate")] -async fn activate_executor_processor( - web::Json(model::ExecutorProcessorId { - executor_processor_id, - }): web::Json, - pool: ShareData, - scheduler: SharedSchedulerMetaInfo, -) -> HttpResponse { - let uniform_data: UnifiedResponseMessages<()> = - do_activate(pool, executor_processor_id, scheduler) - .await - .into(); - HttpResponse::Ok().json(uniform_data) -} +// FIXME: + +// #[handler] +// async fn activate_executor_processor( +// Json(model::ExecutorProcessorId { +// executor_processor_id, +// }): Json, +// pool: Data<&db::ConnectionPool>, +// scheduler: Data<&SchedulerMetaInfo>, +// ) -> impl IntoResponse { +// let uniform_data: UnifiedResponseMessages<()> = +// do_activate(pool, executor_processor_id, scheduler) +// .await +// .into(); +// Json(uniform_data) +// } async fn do_activate( - pool: ShareData, + pool: Data<&db::ConnectionPool>, executor_processor_id: i64, - scheduler: SharedSchedulerMetaInfo, + scheduler: Data<&SchedulerMetaInfo>, ) -> Result<(), CommonError> { let bind_info = activate_executor(pool.get()?, executor_processor_id, scheduler).await?; activate_executor_row(pool.get()?, executor_processor_id, bind_info).await?; @@ -154,7 +180,7 @@ async fn do_activate( async fn activate_executor( conn: db::PoolConnection, executor_processor_id: i64, - scheduler: SharedSchedulerMetaInfo, + scheduler: Data<&SchedulerMetaInfo>, ) -> Result { let query = web::block::<_, model::UpdateExecutorProcessor, diesel::result::Error>(move || { executor_processor::table diff --git a/delicate-scheduler/src/actions/executor_processor_bind.rs b/delicate-scheduler/src/actions/executor_processor_bind.rs index 2fa61a0..407385c 100644 --- a/delicate-scheduler/src/actions/executor_processor_bind.rs +++ b/delicate-scheduler/src/actions/executor_processor_bind.rs @@ -1,29 +1,45 @@ use super::prelude::*; -pub(crate) fn config(cfg: &mut web::ServiceConfig) { - cfg.service(show_executor_processor_binds) - .service(create_executor_processor_bind) - .service(update_executor_processor_bind) - .service(delete_executor_processor_bind); +pub(crate) fn route(route: Route) -> Route { + route + .at( + "/api/executor_processor_bind/list", + post(show_executor_processor_binds), + ) + .at( + "/api/executor_processor_bind/create", + post(create_executor_processor_bind), + ) + // FIXME: + // .at( + // "/api/executor_processor_bind/update", + // post(update_executor_processor_bind), + // ) + .at( + "/api/executor_processor_bind/delete", + post(delete_executor_processor_bind), + ) } -#[post("/api/executor_processor_bind/create")] +#[handler] + async fn create_executor_processor_bind( - req: HttpRequest, - web::Json(executor_processor_binds): web::Json, - pool: ShareData, -) -> HttpResponse { + req: &Request, + Json(executor_processor_binds): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { use db::schema::executor_processor_bind; - let operation_log_pair_option = generate_operation_executor_processor_bind_addtion_log( - &req.get_session(), - &executor_processor_binds, - ) - .ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + // FIXME: + // let operation_log_pair_option = generate_operation_executor_processor_bind_addtion_log( + // &req.get_session(), + // &executor_processor_binds, + // ) + // .ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::>::into( + return Json(Into::>::into( web::block(move || { let new_binds: Vec = executor_processor_binds .executor_ids @@ -44,16 +60,17 @@ async fn create_executor_processor_bind( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::<()>::error()) + Json(UnifiedResponseMessages::::error()) } -#[post("/api/executor_processor_bind/list")] +#[handler] + async fn show_executor_processor_binds( - web::Json(query_params): web::Json, - pool: ShareData, -) -> HttpResponse { + Json(query_params): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::< + return Json(Into::< UnifiedResponseMessages>, >::into( web::block::<_, _, diesel::result::Error>(move || { @@ -81,149 +98,158 @@ async fn show_executor_processor_binds( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::>::error()) + // FIXME: + todo!(); + // Json(UnifiedResponseMessages::>::error()) } -#[post("/api/executor_processor_bind/update")] -async fn update_executor_processor_bind( - req: HttpRequest, - web::Json(executor_processor_bind): web::Json, - pool: ShareData, -) -> HttpResponse { - return HttpResponse::Ok().json(Into::>::into( - pre_update_executor_processor_bind(req, executor_processor_bind, pool).await, - )); -} +// FIXME: -async fn pre_update_executor_processor_bind( - req: HttpRequest, - executor_processor_bind: model::UpdateExecutorProcessorBind, - pool: ShareData, -) -> Result<(), CommonError> { - use db::schema::{executor_processor, executor_processor_bind, task, task_bind}; - use delicate_utils_task::{TaskPackage, TaskUnit}; - use state::task::State; - - let conn = pool.get()?; - let executor_processor_bind_id = executor_processor_bind.id; - let executor_processor_bind_executor_id = executor_processor_bind.executor_id; - - let operation_log_pair_option = generate_operation_executor_processor_bind_modify_log( - &req.get_session(), - &executor_processor_bind, - ) - .ok(); - send_option_operation_log_pair(operation_log_pair_option).await; - - let (older_executor_id, older_executor_host, older_executor_token) = - web::block::<_, _, diesel::result::Error>(move || { - let older_executor = executor_processor_bind::table - .inner_join(executor_processor::table) - .filter(executor_processor_bind::id.eq(executor_processor_bind.id)) - .select(( - executor_processor_bind::executor_id, - executor_processor::host, - executor_processor::token, - )) - .first::<(i64, String, String)>(&conn)?; - - diesel::update(&executor_processor_bind) - .set(&executor_processor_bind) - .execute(&conn)?; - Ok(older_executor) - }) - .await?; - - if older_executor_id == executor_processor_bind_executor_id { - return Ok(()); - } +// #[handler] - // Task migration needs to be performed only when `executor_id` is modified. - let conn = pool.get()?; - let task_packages: Vec<(TaskPackage, (String, String))> = - web::block::<_, _, diesel::result::Error>(move || { - let task_packages: Vec<(TaskPackage, (String, String))> = task_bind::table - .inner_join(executor_processor_bind::table.inner_join(executor_processor::table)) - .inner_join(task::table) - .filter(task::status.eq(State::Enabled as i16)) - .filter(executor_processor_bind::id.eq(executor_processor_bind_id)) - .select(( - ( - task::id, - task::command, - task::frequency, - task::cron_expression, - task::timeout, - task::maximum_parallel_runnable_num, - ), - (executor_processor::host, executor_processor::token), - )) - .load::<(TaskPackage, (String, String))>(&conn)?; - - Ok(task_packages) - }) - .await?; - - let task_ids = task_packages.iter().map(|&(ref t, _)| t.id); - - let remove_task_units: JoinAll<_> = task_ids - .filter_map(|task_id| { - let executor_host = - "http://".to_string() + (older_executor_host.deref()) + "/api/task/remove"; - TaskUnit::default() - .set_task_id(task_id) - .set_time(get_timestamp()) - .sign(Some(older_executor_token.deref())) - .map(|t| (t, executor_host)) - .ok() - }) - .map(|(signed_task_unit, executor_host)| { - RequestClient::default() - .post(executor_host) - .send_json(&signed_task_unit) - }) - .collect(); - - let create_task_packages: JoinAll<_> = task_packages - .into_iter() - .filter_map(|(t, (host, token))| { - let executor_host = "http://".to_string() + (host.deref()) + "/api/task/create"; - t.sign(Some(&token)).map(|t| (t, executor_host)).ok() - }) - .map(|(signed_task_package, executor_host)| { - RequestClient::default() - .post(executor_host) - .send_json(&signed_task_package) - }) - .collect(); - - join( - handle_response::>(remove_task_units), - handle_response::>(create_task_packages), - ) - .await; - Ok(()) -} -#[post("/api/executor_processor_bind/delete")] +// async fn update_executor_processor_bind( +// req: &Request, +// Json(executor_processor_bind): Json, +// pool: Data<&db::ConnectionPool>, +// ) -> impl IntoResponse { +// return Json(Into::>::into( +// pre_update_executor_processor_bind(req, executor_processor_bind, pool).await, +// )); +// } + +// async fn pre_update_executor_processor_bind( +// req: &Request, +// executor_processor_bind: model::UpdateExecutorProcessorBind, +// pool: Data<&db::ConnectionPool>, +// ) -> Result<(), CommonError> { +// use db::schema::{executor_processor, executor_processor_bind, task, task_bind}; +// use delicate_utils_task::{TaskPackage, TaskUnit}; +// use state::task::State; + +// let conn = pool.get()?; +// let executor_processor_bind_id = executor_processor_bind.id; +// let executor_processor_bind_executor_id = executor_processor_bind.executor_id; + +// // FIXME: +// // todo!(); +// // let operation_log_pair_option = generate_operation_executor_processor_bind_modify_log( +// // &req.get_session(), +// // &executor_processor_bind, +// // ) +// // .ok(); +// // send_option_operation_log_pair(operation_log_pair_option).await; + +// let (older_executor_id, older_executor_host, older_executor_token) = +// web::block::<_, _, diesel::result::Error>(move || { +// let older_executor = executor_processor_bind::table +// .inner_join(executor_processor::table) +// .filter(executor_processor_bind::id.eq(executor_processor_bind.id)) +// .select(( +// executor_processor_bind::executor_id, +// executor_processor::host, +// executor_processor::token, +// )) +// .first::<(i64, String, String)>(&conn)?; + +// diesel::update(&executor_processor_bind) +// .set(&executor_processor_bind) +// .execute(&conn)?; +// Ok(older_executor) +// }) +// .await?; + +// if older_executor_id == executor_processor_bind_executor_id { +// return Ok(()); +// } + +// // Task migration needs to be performed only when `executor_id` is modified. +// let conn = pool.get()?; +// let task_packages: Vec<(TaskPackage, (String, String))> = +// web::block::<_, _, diesel::result::Error>(move || { +// let task_packages: Vec<(TaskPackage, (String, String))> = task_bind::table +// .inner_join(executor_processor_bind::table.inner_join(executor_processor::table)) +// .inner_join(task::table) +// .filter(task::status.eq(State::Enabled as i16)) +// .filter(executor_processor_bind::id.eq(executor_processor_bind_id)) +// .select(( +// ( +// task::id, +// task::command, +// task::frequency, +// task::cron_expression, +// task::timeout, +// task::maximum_parallel_runnable_num, +// ), +// (executor_processor::host, executor_processor::token), +// )) +// .load::<(TaskPackage, (String, String))>(&conn)?; + +// Ok(task_packages) +// }) +// .await?; + +// let task_ids = task_packages.iter().map(|&(ref t, _)| t.id); + +// let remove_task_units: JoinAll<_> = task_ids +// .filter_map(|task_id| { +// let executor_host = +// "http://".to_string() + (older_executor_host.deref()) + "/api/task/remove"; +// TaskUnit::default() +// .set_task_id(task_id) +// .set_time(get_timestamp()) +// .sign(Some(older_executor_token.deref())) +// .map(|t| (t, executor_host)) +// .ok() +// }) +// .map(|(signed_task_unit, executor_host)| { +// RequestClient::default() +// .post(executor_host) +// .send_json(&signed_task_unit) +// }) +// .collect(); + +// let create_task_packages: JoinAll<_> = task_packages +// .into_iter() +// .filter_map(|(t, (host, token))| { +// let executor_host = "http://".to_string() + (host.deref()) + "/api/task/create"; +// t.sign(Some(&token)).map(|t| (t, executor_host)).ok() +// }) +// .map(|(signed_task_package, executor_host)| { +// RequestClient::default() +// .post(executor_host) +// .send_json(&signed_task_package) +// }) +// .collect(); + +// join( +// handle_response::>(remove_task_units), +// handle_response::>(create_task_packages), +// ) +// .await; +// Ok(()) +// } + +#[handler] async fn delete_executor_processor_bind( - req: HttpRequest, - web::Json(model::ExecutorProcessorBindId { + req: &Request, + Json(model::ExecutorProcessorBindId { executor_processor_bind_id, - }): web::Json, - pool: ShareData, -) -> HttpResponse { + }): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { use db::schema::executor_processor_bind::dsl::*; - let operation_log_pair_option = generate_operation_executor_processor_bind_delete_log( - &req.get_session(), - &CommonTableRecord::default().set_id(executor_processor_bind_id), - ) - .ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + // FIXME: + // let operation_log_pair_option = generate_operation_executor_processor_bind_delete_log( + // &req.get_session(), + // &CommonTableRecord::default().set_id(executor_processor_bind_id), + // ) + // .ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; // TODO: Check if there are associated tasks on the binding. if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::>::into( + return Json(Into::>::into( web::block(move || { diesel::delete(executor_processor_bind.find(executor_processor_bind_id)) .execute(&conn) @@ -232,5 +258,5 @@ async fn delete_executor_processor_bind( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::::error()) + Json(UnifiedResponseMessages::::error()) } diff --git a/delicate-scheduler/src/actions/operation_log.rs b/delicate-scheduler/src/actions/operation_log.rs index 50be3db..063f846 100644 --- a/delicate-scheduler/src/actions/operation_log.rs +++ b/delicate-scheduler/src/actions/operation_log.rs @@ -1,17 +1,19 @@ use super::prelude::*; -pub(crate) fn config(cfg: &mut web::ServiceConfig) { - cfg.service(show_operation_log) - .service(show_operation_log_detail); +pub(crate) fn route(route: Route) -> Route { + route + .at("/api/operation_log/list", post(show_operation_log)) + .at("/api/operation_log/detail", post(show_operation_log_detail)) } -#[post("/api/operation_log/list")] +#[handler] + async fn show_operation_log( - web::Json(query_params): web::Json, - pool: ShareData, -) -> HttpResponse { + Json(query_params): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::< + return Json(Into::< UnifiedResponseMessages>, >::into( web::block::<_, _, diesel::result::Error>(move || { @@ -42,20 +44,20 @@ async fn show_operation_log( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::< + Json(UnifiedResponseMessages::< PaginateData, >::error()) } +#[handler] -#[post("/api/operation_log/detail")] async fn show_operation_log_detail( - web::Json(query_params): web::Json, - pool: ShareData, -) -> HttpResponse { + Json(query_params): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { use db::schema::operation_log_detail; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::< + return Json(Into::< UnifiedResponseMessages>, >::into( web::block::<_, _, diesel::result::Error>(move || { @@ -71,5 +73,5 @@ async fn show_operation_log_detail( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::>::error()) + Json(UnifiedResponseMessages::>::error()) } diff --git a/delicate-scheduler/src/actions/role.rs b/delicate-scheduler/src/actions/role.rs index 61653f3..185e0ae 100644 --- a/delicate-scheduler/src/actions/role.rs +++ b/delicate-scheduler/src/actions/role.rs @@ -1,21 +1,24 @@ use super::prelude::*; use db::model::casbin_rule::RoleId; -#[allow(dead_code)] -pub(crate) fn config(cfg: &mut web::ServiceConfig) { - cfg.service(list).service(permission_detail).service(users); +pub(crate) fn route(route: Route) -> Route { + route + .at("/api/role/list", get(list)) + .at("/api/role/permission_detail", post(permission_detail)) + .at("/api/role/users", post(users)) } -#[get("/api/role/list")] -async fn list() -> HttpResponse { - HttpResponse::Ok().json(UnifiedResponseMessages::<[&'static str; 7]>::success_with_data(ROLES)) +#[handler] + +async fn list() -> impl IntoResponse { + Json(UnifiedResponseMessages::<[&'static str; 7]>::success_with_data(ROLES)) } -#[post("/api/role/permission_detail")] +#[handler] async fn permission_detail( - enforcer: ShareData>, - web::Json(RoleId { role_id }): web::Json, -) -> HttpResponse { + enforcer: Data<&RwLock>, + Json(RoleId { role_id }): Json, +) -> impl IntoResponse { // [ // ["role_name", "business", "action"] // ] @@ -24,23 +27,23 @@ async fn permission_detail( .read() .await .get_filtered_policy(0, vec![role_name.to_string()]); - return HttpResponse::Ok() - .json(UnifiedResponseMessages::>>::success_with_data(permissions)); + return Json(UnifiedResponseMessages::>>::success_with_data(permissions)); } - HttpResponse::Ok().json(UnifiedResponseMessages::<()>::error()) + Json(UnifiedResponseMessages::>>::error()) } -#[post("/api/role/users")] +#[handler] + async fn users( - enforcer: ShareData>, - web::Json(RoleId { role_id }): web::Json, -) -> HttpResponse { + enforcer: Data<&RwLock>, + Json(RoleId { role_id }): Json, +) -> impl IntoResponse { if let Some(role_name) = ROLES.get(role_id) { let users = enforcer.read().await.get_users_for_role(role_name, None); - return HttpResponse::Ok().json(UnifiedResponseMessages::>::success_with_data( + return Json(UnifiedResponseMessages::>::success_with_data( users, )); } - HttpResponse::Ok().json(UnifiedResponseMessages::<()>::error()) + Json(UnifiedResponseMessages::>::error()) } diff --git a/delicate-scheduler/src/actions/task.rs b/delicate-scheduler/src/actions/task.rs index 8125db4..c512398 100644 --- a/delicate-scheduler/src/actions/task.rs +++ b/delicate-scheduler/src/actions/task.rs @@ -1,29 +1,33 @@ use super::prelude::*; -pub(crate) fn config(cfg: &mut web::ServiceConfig) { - cfg.service(show_tasks) - .service(create_task) - .service(update_task) - .service(run_task) - .service(suspend_task) - .service(advance_task) - .service(delete_task); +pub(crate) fn route(route: Route) -> Route { + route + .at("/api/task/create", post(create_task)) + .at("/api/task/list", post(show_tasks)) + // FIXME: + // .at("/api/task/update", post(update_task)) + // .at("/api/task/run", post(run_task)) + // .at("/api/task/suspend", post(suspend_task)) + // .at("/api/task/advance", post(advance_task)) + .at("/api/task/delete", post(delete_task)) } -#[post("/api/task/create")] +#[handler] + async fn create_task( - req: HttpRequest, - web::Json(model::NewTaskBody { task, binding_ids }): web::Json, - pool: ShareData, -) -> HttpResponse { + req: &Request, + Json(model::NewTaskBody { task, binding_ids }): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { use db::schema::{task, task_bind}; if let Ok(conn) = pool.get() { - let operation_log_pair_option = - generate_operation_task_addtion_log(&req.get_session(), &task).ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + // // FIXME: + // let operation_log_pair_option = + // generate_operation_task_addtion_log(&req.get_session(), &task).ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; - return HttpResponse::Ok().json(Into::>::into( + return Json(Into::>::into( web::block::<_, _, diesel::result::Error>(move || { conn.transaction::<_, _, _>(|| { diesel::insert_into(task::table) @@ -46,18 +50,19 @@ async fn create_task( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::<()>::error()) + Json(UnifiedResponseMessages::::error()) } -#[post("/api/task/list")] +#[handler] + async fn show_tasks( - web::Json(query_params): web::Json, - pool: ShareData, -) -> HttpResponse { + Json(query_params): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { use db::schema::task_bind; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::< + return Json(Into::< UnifiedResponseMessages>, >::into( web::block::<_, _, diesel::result::Error>(move || { @@ -108,32 +113,35 @@ async fn show_tasks( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::>::error()) + Json(UnifiedResponseMessages::>::error()) } -#[post("/api/task/update")] -async fn update_task( - req: HttpRequest, - web::Json(update_task_body): web::Json, - pool: ShareData, -) -> HttpResponse { - let respose: UnifiedResponseMessages<()> = pre_update_task(req, update_task_body, pool) - .instrument(span!(Level::INFO, "update-task")) - .await - .into(); - HttpResponse::Ok().json(respose) -} +// FIXME: + +// #[handler] +// async fn update_task( +// req: &Request, +// Json(update_task_body): Json, +// pool: Data<&db::ConnectionPool>, +// ) -> impl IntoResponse { +// let respose: UnifiedResponseMessages<()> = pre_update_task(req, update_task_body, pool) +// .instrument(span!(Level::INFO, "update-task")) +// .await +// .into(); +// Json(respose) +// } pub async fn pre_update_task( - req: HttpRequest, + req: &Request, model::UpdateTaskBody { task, binding_ids }: model::UpdateTaskBody, - pool: ShareData, + pool: Data<&db::ConnectionPool>, ) -> Result<(), CommonError> { let task_id = task.id; let conn = pool.get()?; - let operation_log_pair_option = - generate_operation_task_modify_log(&req.get_session(), &task).ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + // FIXME: + // let operation_log_pair_option = + // generate_operation_task_modify_log(&req.get_session(), &task).ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; let task_binds_pair = pre_update_task_row(conn, task, binding_ids).await?; @@ -366,24 +374,27 @@ pub async fn pre_update_task_sevice( Ok(()) } -#[post("/api/task/delete")] +#[handler] + async fn delete_task( - req: HttpRequest, - web::Json(model::TaskId { task_id }): web::Json, - pool: ShareData, -) -> HttpResponse { + req: &Request, + Json(model::TaskId { task_id }): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { use db::schema::{task, task_bind}; - let operation_log_pair_option = generate_operation_task_delete_log( - &req.get_session(), - &CommonTableRecord::default().set_id(task_id), - ) - .ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + // FIXME: + + // let operation_log_pair_option = generate_operation_task_delete_log( + // &req.get_session(), + // &CommonTableRecord::default().set_id(task_id), + // ) + // .ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; // delete if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::>::into( + return Json(Into::>::into( web::block::<_, _, diesel::result::Error>(move || { diesel::delete(task::table.find(task_id)).execute(&conn)?; diesel::delete(task_bind::table.filter(task_bind::task_id.eq(task_id))) @@ -394,58 +405,65 @@ async fn delete_task( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::<()>::error()) -} - -#[post("/api/task/run")] -async fn run_task( - req: HttpRequest, - web::Json(model::TaskId { task_id }): web::Json, - pool: ShareData, -) -> HttpResponse { - let result: UnifiedResponseMessages<()> = Into::into( - pre_run_task(req, task_id, pool) - .instrument(span!(Level::INFO, "run-task")) - .await, - ); - - HttpResponse::Ok().json(result) -} - -#[post("/api/task/suspend")] -async fn suspend_task( - req: HttpRequest, - web::Json(model::TaskId { task_id }): web::Json, - pool: ShareData, -) -> HttpResponse { - let result: UnifiedResponseMessages<()> = Into::into( - pre_operate_task(req, pool.clone(), (task_id, "/api/task/remove", "Suspend")) - .instrument(span!(Level::INFO, "Suspend", task_id)) - .await, - ); - - HttpResponse::Ok().json(result) + Json(UnifiedResponseMessages::<()>::error()) } -#[post("/api/task/advance")] -async fn advance_task( - req: HttpRequest, - web::Json(model::TaskId { task_id }): web::Json, - pool: ShareData, -) -> HttpResponse { - let result: UnifiedResponseMessages<()> = Into::into( - pre_operate_task(req, pool, (task_id, "/api/task/advance", "Advance")) - .instrument(span!(Level::INFO, "Advance", task_id)) - .await, - ); - - HttpResponse::Ok().json(result) -} +// FIXME: + +// #[handler] +// async fn run_task( +// req: &Request, +// Json(model::TaskId { task_id }): Json, +// pool: Data<&db::ConnectionPool>, +// ) -> impl IntoResponse { +// let result: UnifiedResponseMessages<()> = Into::into( +// pre_run_task(req, task_id, pool) +// .instrument(span!(Level::INFO, "run-task")) +// .await, +// ); + +// Json(result) +// } + +// FIXME: + +// #[handler] + +// async fn suspend_task( +// req: &Request, +// Json(model::TaskId { task_id }): Json, +// pool: Data<&Arc>, +// ) -> impl IntoResponse { +// let result: UnifiedResponseMessages<()> = Into::into( +// pre_operate_task(req, pool.clone(), (task_id, "/api/task/remove", "Suspend")) +// .instrument(span!(Level::INFO, "Suspend", task_id)) +// .await, +// ); + +// Json(result) +// } + +// FIXME: + +// #[handler] +// async fn advance_task( +// req: &Request, +// Json(model::TaskId { task_id }): Json, +// pool: Data<&Arc>, +// ) -> impl IntoResponse { +// let result: UnifiedResponseMessages<()> = Into::into( +// pre_operate_task(req, pool, (task_id, "/api/task/advance", "Advance")) +// .instrument(span!(Level::INFO, "Advance", task_id)) +// .await, +// ); + +// Json(result) +// } async fn pre_run_task( - req: HttpRequest, + req: &Request, task_id: i64, - pool: ShareData, + pool: Data<&db::ConnectionPool>, ) -> Result<(), CommonError> { use db::schema::executor_processor::dsl::{host, token}; use db::schema::task::dsl::*; @@ -453,14 +471,16 @@ async fn pre_run_task( use state::task::State; - let operation_log_pair_option = generate_operation_task_modify_log( - &req.get_session(), - &CommonTableRecord::default() - .set_id(task_id) - .set_description("Run task"), - ) - .ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + // FIXME: + + // let operation_log_pair_option = generate_operation_task_modify_log( + // &req.get_session(), + // &CommonTableRecord::default() + // .set_id(task_id) + // .set_description("Run task"), + // ) + // .ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; let conn = pool.get()?; @@ -515,70 +535,74 @@ async fn pre_run_task( Ok(()) } -async fn pre_operate_task( - req: HttpRequest, - pool: ShareData, - (task_id, url, action): (i64, &str, &'static str), -) -> Result<(), CommonError> { - use db::schema::executor_processor::dsl::{host, token}; - use db::schema::{executor_processor, executor_processor_bind, task, task_bind}; - use state::task::State; - - let conn = pool.get()?; - - let operation_log_pair_option = generate_operation_task_modify_log( - &req.get_session(), - &CommonTableRecord::default() - .set_id(task_id) - .set_description(action), - ) - .ok(); - send_option_operation_log_pair(operation_log_pair_option).await; - - // Many machine. - let executor_packages: IntoIter<(String, String)> = web::block(move || { - // TODO: Optimize. - if action.eq("Suspend") { - diesel::update(task::table.find(task_id)) - .set(task::status.eq(State::NotEnabled as i16)) - .execute(&conn)?; - } - - task_bind::table - .inner_join(executor_processor_bind::table.inner_join(executor_processor::table)) - .inner_join(task::table) - .select((host, token)) - .filter(task_bind::task_id.eq(task_id)) - .load::<(String, String)>(&conn) - }) - .await? - .into_iter(); - - let request_all: JoinAll = executor_packages - .filter_map(|(executor_host, executor_token)| { - let message = delicate_utils_task::TaskUnit::default() - .set_task_id(task_id) - .set_time(get_timestamp()); - - let executor_host = "http://".to_string() + (executor_host.deref()) + url; - - info!("{} task{} at:{}", action, message, &executor_host); - message - .sign(Some(&executor_token)) - .map(|s| (s, executor_host)) - .ok() - }) - .map(|(signed_task_unit, executor_host)| { - RequestClient::builder() - .timeout(Duration::from_secs(15)) - .finish() - .post(executor_host) - .send_json(&signed_task_unit) - }) - .collect::>() - .into_iter() - .collect(); - - handle_response::>(request_all).await; - Ok(()) -} +// FIXME: + +// async fn pre_operate_task( +// req: &Request, +// pool: Arc, +// (task_id, url, action): (i64, &str, &'static str), +// ) { +// use db::schema::executor_processor::dsl::{host, token}; +// use db::schema::{executor_processor, executor_processor_bind, task, task_bind}; +// use state::task::State; + +// let conn = pool.get()?; + +// let operation_log_pair_option = generate_operation_task_modify_log( +// &req.get_session(), +// &CommonTableRecord::default() +// .set_id(task_id) +// .set_description(action), +// ) +// .ok(); +// send_option_operation_log_pair(operation_log_pair_option).await; + +// Many machine. +// let executor_packages: IntoIter<(String, String)> = web::block(move || { +// // TODO: Optimize. +// if action.eq("Suspend") { +// diesel::update(task::table.find(task_id)) +// .set(task::status.eq(State::NotEnabled as i16)) +// .execute(&conn)?; +// } + +// task_bind::table +// .inner_join(executor_processor_bind::table.inner_join(executor_processor::table)) +// .inner_join(task::table) +// .select((host, token)) +// .filter(task_bind::task_id.eq(task_id)) +// .load::<(String, String)>(&conn) +// }) +// .await? +// .into_iter(); + +// let request_all: JoinAll = executor_packages +// .filter_map(|(executor_host, executor_token)| { +// let message = delicate_utils_task::TaskUnit::default() +// .set_task_id(task_id) +// .set_time(get_timestamp()); + +// let executor_host = "http://".to_string() + (executor_host.deref()) + url; + +// info!("{} task{} at:{}", action, message, &executor_host); +// message +// .sign(Some(&executor_token)) +// .map(|s| (s, executor_host)) +// .ok() +// }) +// .map(|(signed_task_unit, executor_host)| { +// RequestClient::builder() +// .timeout(Duration::from_secs(15)) +// .finish() +// .post(executor_host) +// .send_json(&signed_task_unit) +// }) +// .collect::>() +// .into_iter() +// .collect(); + +// handle_response::>(request_all).await; +// Ok(()) + +// todo!(); +// } diff --git a/delicate-scheduler/src/actions/task_log.rs b/delicate-scheduler/src/actions/task_log.rs index 55dd433..11bdb8c 100644 --- a/delicate-scheduler/src/actions/task_log.rs +++ b/delicate-scheduler/src/actions/task_log.rs @@ -1,19 +1,23 @@ use super::prelude::*; -pub(crate) fn config(cfg: &mut web::ServiceConfig) { - cfg.service(create_task_logs) - .service(show_task_logs) - .service(show_task_log_detail) - .service(kill_task_instance); +pub(crate) fn route(route: Route) -> Route { + route + .at("/api/task_log/event_trigger", post(create_task_logs)) + .at("/api/task_log/list", post(show_task_logs)) + .at("/api/task_log/detail", post(show_task_log_detail)) + // FIXME: + // .at("/api/task_instance/kill", post(kill_task_instance)) + .at("/api/task_log/delete", post(delete_task_log)) } // Depending on the event, scheduler records/updates different logs. // Bulk operations are supported for log messages passed from delicate-executor. -#[post("/api/task_logs/event_trigger")] +#[handler] + async fn create_task_logs( - web::Json(events_collection): web::Json, - pool: ShareData, -) -> HttpResponse { + Json(events_collection): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { let r = async { debug!( "Event collection - {:?}", @@ -30,12 +34,12 @@ async fn create_task_logs( .await; let response = Into::>::into(r); - HttpResponse::Ok().json(response) + Json(response) } async fn pre_create_task_logs( events_collection: delicate_utils_task_log::SignedExecutorEventCollection, - pool: ShareData, + pool: Data<&db::ConnectionPool>, ) -> Result { use delicate_utils_task_log::EventType; @@ -81,13 +85,14 @@ async fn pre_create_task_logs( Ok(num) } -#[post("/api/task_log/list")] +#[handler] + async fn show_task_logs( - web::Json(query_params): web::Json, - pool: ShareData, -) -> HttpResponse { + Json(query_params): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::< + return Json(Into::< UnifiedResponseMessages>, >::into( web::block::<_, _, diesel::result::Error>(move || { @@ -118,47 +123,48 @@ async fn show_task_logs( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::< + Json(UnifiedResponseMessages::< PaginateData, >::error()) } -#[post("/api/task_log/detail")] +#[handler] + async fn show_task_log_detail( - web::Json(query_params): web::Json, - pool: ShareData, -) -> HttpResponse { + Json(query_params): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { use db::schema::task_log_extend; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json( - Into::>::into( - web::block::<_, _, diesel::result::Error>(move || { - let task_log_extend = task_log_extend::table - .find(query_params.record_id.0) - .first::(&conn)?; - - Ok(task_log_extend) - }) - .await, - ), - ); + return Json(Into::>::into( + web::block::<_, _, diesel::result::Error>(move || { + let task_log_extend = task_log_extend::table + .find(query_params.record_id.0) + .first::(&conn)?; + + Ok(task_log_extend) + }) + .await, + )); } - HttpResponse::Ok().json(UnifiedResponseMessages::::error()) + Json(UnifiedResponseMessages::::error()) } -#[post("/api/task_instance/kill")] -async fn kill_task_instance( - req: HttpRequest, - web::Json(task_record): web::Json, - pool: ShareData, -) -> HttpResponse { - let response_result = kill_one_task_instance(req, pool, task_record).await; +// #[handler] - let response = Into::>::into(response_result); - HttpResponse::Ok().json(response) -} +// FIXME: +// async fn kill_task_instance( +// req: &Request, +// Json(task_record): Json, +// pool: Data<&db::ConnectionPool>, +// ) -> impl IntoResponse { +// let response_result = kill_one_task_instance(req, pool, task_record).await; + +// let response = Into::>::into(response_result); +// Json(response) +// } fn batch_insert_task_logs( conn: &db::PoolConnection, @@ -225,8 +231,8 @@ fn batch_update_task_logs( } async fn kill_one_task_instance( - req: HttpRequest, - pool: ShareData, + req: &Request, + pool: Data<&db::ConnectionPool>, model::TaskRecord { task_id, record_id, @@ -235,14 +241,16 @@ async fn kill_one_task_instance( ) -> Result<(), CommonError> { use db::schema::task_log; - let operation_log_pair_option = generate_operation_task_log_modify_log( - &req.get_session(), - &CommonTableRecord::default() - .set_id(record_id.0) - .set_description("kill task instance."), - ) - .ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + // FIXME: + + // let operation_log_pair_option = generate_operation_task_log_modify_log( + // &req.get_session(), + // &CommonTableRecord::default() + // .set_id(record_id.0) + // .set_description("kill task instance."), + // ) + // .ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; let token = model::get_executor_token_by_id(executor_processor_id, pool.get()?).await; @@ -281,26 +289,27 @@ async fn kill_one_task_instance( .into() } -#[post("/api/task_log/delete")] -async fn delete_task( - req: HttpRequest, - web::Json(delete_params): web::Json, - pool: ShareData, -) -> HttpResponse { - let operation_log_pair_option = - generate_operation_task_delete_log(&req.get_session(), &delete_params).ok(); - send_option_operation_log_pair(operation_log_pair_option).await; +#[handler] +async fn delete_task_log( + req: &Request, + Json(delete_params): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { + // FIXME: + // let operation_log_pair_option = + // generate_operation_task_delete_log(&req.get_session(), &delete_params).ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::>::into( - pre_delete_task(delete_params, conn).await, + return Json(Into::>::into( + pre_delete_task_log(delete_params, conn).await, )); } - HttpResponse::Ok().json(UnifiedResponseMessages::<()>::error()) + Json(UnifiedResponseMessages::<()>::error()) } -async fn pre_delete_task( +async fn pre_delete_task_log( delete_params: model::DeleteParamsTaskLog, conn: db::PoolConnection, ) -> Result<(), CommonError> { diff --git a/delicate-scheduler/src/actions/user.rs b/delicate-scheduler/src/actions/user.rs index 34114e7..ed011de 100644 --- a/delicate-scheduler/src/actions/user.rs +++ b/delicate-scheduler/src/actions/user.rs @@ -4,42 +4,47 @@ use model::user::{ get_encrypted_certificate_by_raw_certificate, UserAndPermissions, UserAndRoles, UserName, }; -pub(crate) fn config(cfg: &mut web::ServiceConfig) { - cfg.service(create_user) - .service(show_users) - .service(update_user) - .service(delete_user) - .service(login_user) - .service(logout_user) - .service(check_user) - .service(change_password) - .service(roles) - .service(permissions) - .service(append_permission) - .service(delete_permission) - .service(append_role) - .service(delete_role); +pub(crate) fn route(route: Route) -> Route { + route + .at("/api/user/create", post(create_user)) + .at("/api/user/list", post(show_users)) + .at("/api/user/update", post(update_user)) + .at("/api/user/delete", post(delete_user)) + // FIXME: + // .at("/api/user/login", post(login_user)) + // .at("/api/user/logout", post(logout_user)) + // .at("/api/user/check", post(check_user)) + .at("/api/user/change_password", post(change_password)) + .at("/api/user/roles", post(roles)) + .at("/api/user/permissions", post(permissions)) + .at("/api/user/append_permission", post(append_permission)) + .at("/api/user/delete_permission", post(delete_permission)) + .at("/api/user/append_role", post(append_role)) + .at("/api/user/delete_role", post(delete_role)) } -#[post("/api/user/create")] +#[handler] + async fn create_user( - req: HttpRequest, - web::Json(user): web::Json, - pool: ShareData, -) -> HttpResponse { + req: &Request, + Json(user): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { let validate_result: Result<(), ValidationErrors> = user.validate(); if validate_result.is_err() { - return HttpResponse::Ok().json(Into::>::into(validate_result)); + return Json(Into::>::into(validate_result)); } let new_user = Into::::into(&user); - let operation_log_pair_option = - generate_operation_user_addtion_log(&req.get_session(), &new_user).ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + // FIXME: + + // let operation_log_pair_option = + // generate_operation_user_addtion_log(&req.get_session(), &new_user).ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::>::into( + return Json(Into::>::into( web::block::<_, _, diesel::result::Error>(move || { conn.transaction(|| { diesel::insert_into(user::table) @@ -62,16 +67,17 @@ async fn create_user( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::<()>::error()) + Json(UnifiedResponseMessages::<()>::error()) } -#[post("/api/user/list")] +#[handler] + async fn show_users( - web::Json(query_params): web::Json, - pool: ShareData, -) -> HttpResponse { + Json(query_params): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json( + return Json( Into::>>::into( web::block::<_, _, diesel::result::Error>(move || { let query_builder = model::UserQueryBuilder::query_all_columns(); @@ -99,82 +105,89 @@ async fn show_users( ); } - HttpResponse::Ok().json(UnifiedResponseMessages::>::error()) + Json(UnifiedResponseMessages::>::error()) } -#[post("/api/user/update")] +#[handler] + async fn update_user( - req: HttpRequest, - web::Json(user_value): web::Json, - pool: ShareData, -) -> HttpResponse { - let operation_log_pair_option = - generate_operation_user_modify_log(&req.get_session(), &user_value).ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + req: &Request, + Json(user_value): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { + // FIXME: + + // let operation_log_pair_option = + // generate_operation_user_modify_log(&req.get_session(), &user_value).ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::>::into( + return Json(Into::>::into( web::block(move || diesel::update(&user_value).set(&user_value).execute(&conn)).await, )); } - HttpResponse::Ok().json(UnifiedResponseMessages::::error()) + Json(UnifiedResponseMessages::::error()) } -#[post("/api/user/change_password")] -async fn change_password( - req: HttpRequest, - web::Json(user_value): web::Json, - pool: ShareData, -) -> HttpResponse { - let session = req.get_session(); - let user_id = session - .get::("user_id") - .unwrap_or_default() - .unwrap_or_default(); +#[handler] - if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::>::into( - web::block::<_, _, diesel::result::Error>(move || { - let user_auth_id = user_auth::table - .select(user_auth::id) - .filter(user_auth::user_id.eq(&user_id)) - .filter(user_auth::identity_type.eq(user_value.identity_type)) - .filter(user_auth::certificate.eq( - get_encrypted_certificate_by_raw_certificate(&user_value.current_password), - )) - .first::(&conn)?; - - diesel::update(user_auth::table.find(user_auth_id)) - .set( - user_auth::certificate.eq(get_encrypted_certificate_by_raw_certificate( - &user_value.modified_password, - )), - ) - .execute(&conn) - }) - .await, - )); - } - - HttpResponse::Ok().json(UnifiedResponseMessages::::error()) +async fn change_password( + req: &Request, + Json(user_value): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { + // FIXME: + + // let session = req.get_session(); + // let user_id = session + // .get::("user_id") + // .unwrap_or_default() + // .unwrap_or_default(); + + // if let Ok(conn) = pool.get() { + // return Json(Into::>::into( + // web::block::<_, _, diesel::result::Error>(move || { + // let user_auth_id = user_auth::table + // .select(user_auth::id) + // .filter(user_auth::user_id.eq(&user_id)) + // .filter(user_auth::identity_type.eq(user_value.identity_type)) + // .filter(user_auth::certificate.eq( + // get_encrypted_certificate_by_raw_certificate(&user_value.current_password), + // )) + // .first::(&conn)?; + + // diesel::update(user_auth::table.find(user_auth_id)) + // .set( + // user_auth::certificate.eq(get_encrypted_certificate_by_raw_certificate( + // &user_value.modified_password, + // )), + // ) + // .execute(&conn) + // }) + // .await, + // )); + // } + + Json(UnifiedResponseMessages::::error()) } +#[handler] -#[post("/api/user/delete")] async fn delete_user( - req: HttpRequest, - web::Json(model::UserId { user_id }): web::Json, - pool: ShareData, -) -> HttpResponse { - let operation_log_pair_option = generate_operation_user_delete_log( - &req.get_session(), - &CommonTableRecord::default().set_id(user_id as i64), - ) - .ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + req: &Request, + Json(model::UserId { user_id }): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { + // FIXME: + // let operation_log_pair_option = generate_operation_user_delete_log( + // &req.get_session(), + // &CommonTableRecord::default().set_id(user_id as i64), + // ) + // .ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::>::into( + return Json(Into::>::into( web::block::<_, _, diesel::result::Error>(move || { conn.transaction(|| { diesel::delete(user::table.filter(user::id.eq(user_id))).execute(&conn)?; @@ -188,79 +201,84 @@ async fn delete_user( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::<()>::error()) + Json(UnifiedResponseMessages::<()>::error()) } -#[post("/api/user/login")] -async fn login_user( - req: HttpRequest, - web::Json(user_login): web::Json, - session: Session, - pool: ShareData, -) -> HttpResponse { - let login_result: UnifiedResponseMessages<()> = - pre_login_user(req, user_login, session, pool).await.into(); +// FIXME: +// #[handler] - HttpResponse::Ok().json(login_result) -} +// async fn login_user( +// req: &Request, +// Json(user_login): Json, +// session: Session, +// pool: Data<&db::ConnectionPool>, +// ) -> impl IntoResponse { +// let login_result: UnifiedResponseMessages<()> = +// pre_login_user(req, user_login, session, pool).await.into(); + +// Json(login_result) +// } async fn pre_login_user( - req: HttpRequest, + req: &Request, model::UserAuthLogin { login_type, account, password, }: model::UserAuthLogin, session: Session, - pool: ShareData, + pool: Data<&db::ConnectionPool>, ) -> Result<(), CommonError> { use model::user_login_log::NewUserLoginLog; - let connection = req.connection_info(); - let client_ip = connection.realip_remote_addr(); - let mut new_user_login_log = NewUserLoginLog::default(); - new_user_login_log - .set_lastip(client_ip) - .set_login_type(login_type); - - let conn = pool.get()?; - let user_package: (model::UserAuth, model::User) = - web::block::<_, _, diesel::result::Error>(move || { - let login_result = user_auth::table - .inner_join(user::table) - .select((user_auth::all_columns, user::all_columns)) - .filter(user_auth::identity_type.eq(login_type)) - .filter(user_auth::identifier.eq(&account)) - .filter( - user_auth::certificate - .eq(get_encrypted_certificate_by_raw_certificate(&password)), - ) - .first::<(model::UserAuth, model::User)>(&conn); - - login_result - .as_ref() - .map(|(_, user)| { - new_user_login_log - .set_user_name(user.user_name.clone()) - .set_user_id(user.id) - .set_command(state::user_login_log::LoginCommand::LoginSuccess as u8); - }) - .map_err(|_| { - new_user_login_log - .set_user_name(account) - .set_command(state::user_login_log::LoginCommand::Logoutfailure as u8); - }) - .ok(); - - diesel::insert_into(user_login_log::table) - .values(&new_user_login_log) - .execute(&conn) - .ok(); - - login_result - }) - .await?; - save_session(session, user_package) + // FIXME: + + todo!(); + // let connection = req.connection_info(); + // let client_ip = connection.realip_remote_addr(); + // let mut new_user_login_log = NewUserLoginLog::default(); + // new_user_login_log + // .set_lastip(client_ip) + // .set_login_type(login_type); + + // let conn = pool.get()?; + // let user_package: (model::UserAuth, model::User) = + // web::block::<_, _, diesel::result::Error>(move || { + // let login_result = user_auth::table + // .inner_join(user::table) + // .select((user_auth::all_columns, user::all_columns)) + // .filter(user_auth::identity_type.eq(login_type)) + // .filter(user_auth::identifier.eq(&account)) + // .filter( + // user_auth::certificate + // .eq(get_encrypted_certificate_by_raw_certificate(&password)), + // ) + // .first::<(model::UserAuth, model::User)>(&conn); + + // login_result + // .as_ref() + // .map(|(_, user)| { + // new_user_login_log + // .set_user_name(user.user_name.clone()) + // .set_user_id(user.id) + // .set_command(state::user_login_log::LoginCommand::LoginSuccess as u8); + // }) + // .map_err(|_| { + // new_user_login_log + // .set_user_name(account) + // .set_command(state::user_login_log::LoginCommand::Logoutfailure as u8); + // }) + // .ok(); + + // diesel::insert_into(user_login_log::table) + // .values(&new_user_login_log) + // .execute(&conn) + // .ok(); + + // login_result + // }) + // .await?; + // save_session(session, user_package) } fn save_session( @@ -274,90 +292,103 @@ fn save_session( Ok(()) } -#[post("/api/user/check")] -async fn check_user(session: Session, pool: ShareData) -> HttpResponse { - let check_result = pre_check_user(session, pool).await; - if let Ok(user) = check_result { - return HttpResponse::Ok().json(UnifiedResponseMessages::::success_with_data( - user, - )); - }; - - HttpResponse::Ok().json( - UnifiedResponseMessages::<()>::error() - .customized_error_msg(check_result.expect_err("").to_string()), - ) -} - -async fn pre_check_user( - session: Session, - pool: ShareData, -) -> Result { - let conn = pool.get()?; - let user_id = session - .get::("user_id")? - .ok_or_else(|| CommonError::DisPass("Without set `user_id` .".into()))?; - - let user = web::block::<_, _, diesel::result::Error>(move || { - let user = user::table - .select(user::all_columns) - .find(user_id) - .first::(&conn)?; - - Ok(user) - }) - .await?; - - Ok(user) -} - -#[post("/api/user/logout")] -async fn logout_user(session: Session) -> HttpResponse { - HttpResponse::Ok().json({ - session.clear(); - UnifiedResponseMessages::<()>::success() - }) -} +// FIXME: + +// #[handler] + +// async fn check_user(session: Session, pool: Data<&db::ConnectionPool>) -> impl IntoResponse { +// let check_result = pre_check_user(session, pool).await; +// if let Ok(user) = check_result { +// return Json(UnifiedResponseMessages::::success_with_data( +// user, +// )); +// }; + +// // FIXME: +// todo!(); +// // Json( +// // UnifiedResponseMessages::<()>::error() +// // .customized_error_msg(check_result.expect_err("").to_string()), +// // ) +// } + +// FIXME: + +// async fn pre_check_user( +// session: Session, +// pool: Data<&db::ConnectionPool>, +// ) -> Result { +// let conn = pool.get()?; +// let user_id = session +// .get::("user_id")? +// .ok_or_else(|| CommonError::DisPass("Without set `user_id` .".into()))?; + +// let user = web::block::<_, _, diesel::result::Error>(move || { +// let user = user::table +// .select(user::all_columns) +// .find(user_id) +// .first::(&conn)?; + +// Ok(user) +// }) +// .await?; + +// Ok(user) +// } + +// FIXME: +// #[handler] + +// async fn logout_user(session: Session) -> impl IntoResponse { +// Json({ +// session.clear(); +// UnifiedResponseMessages::<()>::success() +// }) +// } + +#[handler] -#[post("/api/user/roles")] async fn roles( - enforcer: ShareData>, - web::Json(UserName { user_name }): web::Json, -) -> HttpResponse { + enforcer: Data<&RwLock>, + Json(UserName { user_name }): Json, +) -> impl IntoResponse { let mut enforcer_guard = enforcer.write().await; let mut roles = enforcer_guard.get_roles_for_user(&user_name, None); let implicit_roles = enforcer_guard.get_implicit_roles_for_user(&user_name, None); roles.extend(implicit_roles.into_iter()); - HttpResponse::Ok().json(UnifiedResponseMessages::>::success_with_data( + Json(UnifiedResponseMessages::>::success_with_data( roles, )) } -#[post("/api/user/permissions")] +#[handler] + async fn permissions( - enforcer: ShareData>, - web::Json(UserName { user_name }): web::Json, -) -> HttpResponse { + enforcer: Data<&RwLock>, + Json(UserName { user_name }): Json, +) -> impl IntoResponse { let mut enforcer_guard = enforcer.write().await; let mut permissions = enforcer_guard.get_permissions_for_user(&user_name, None); let implicit_permissions = enforcer_guard.get_implicit_permissions_for_user(&user_name, None); permissions.extend(implicit_permissions.into_iter()); - HttpResponse::Ok() - .json(UnifiedResponseMessages::>>::success_with_data(permissions)) + Json(UnifiedResponseMessages::>>::success_with_data(permissions)) } -#[post("/api/user/append_role")] +#[handler] + async fn append_role( - req: HttpRequest, - enforcer: ShareData>, - web::Json(user_and_roles): web::Json, -) -> HttpResponse { - let operation_log_pair_option = - generate_operation_user_role_addtion_log(&req.get_session(), &user_and_roles).ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + req: &Request, + enforcer: Data<&RwLock>, + Json(user_and_roles): Json, +) -> impl IntoResponse { + // FIXME: + + // let operation_log_pair_option = + // generate_operation_user_role_addtion_log(&req.get_session(), &user_and_roles).ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; let UserAndRoles { user_name, @@ -372,7 +403,7 @@ async fn append_role( .collect(); if append_roles.is_empty() { - return HttpResponse::Ok().json(UnifiedResponseMessages::::error()); + return Json(UnifiedResponseMessages::::error()); } let mut enforcer_guard = enforcer.write().await; @@ -381,18 +412,21 @@ async fn append_role( .await; let msg = Into::>::into(operated_result); - HttpResponse::Ok().json(msg) + Json(msg) } -#[post("/api/user/delete_role")] +#[handler] + async fn delete_role( - req: HttpRequest, - enforcer: ShareData>, - web::Json(user_and_roles): web::Json, -) -> HttpResponse { - let operation_log_pair_option = - generate_operation_user_role_delete_log(&req.get_session(), &user_and_roles).ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + req: &Request, + enforcer: Data<&RwLock>, + Json(user_and_roles): Json, +) -> impl IntoResponse { + // FIXME: + + // let operation_log_pair_option = + // generate_operation_user_role_delete_log(&req.get_session(), &user_and_roles).ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; let UserAndRoles { user_name, @@ -408,7 +442,7 @@ async fn delete_role( .collect(); if delete_roles.is_empty() { - return HttpResponse::Ok().json(UnifiedResponseMessages::::error()); + return Json(UnifiedResponseMessages::::error()); } let mut enforcer_guard = enforcer.write().await; @@ -421,19 +455,22 @@ async fn delete_role( .unwrap_or_default(); } - HttpResponse::Ok().json(UnifiedResponseMessages::<()>::success()) + Json(UnifiedResponseMessages::::success()) } -#[post("/api/user/append_permission")] +#[handler] + async fn append_permission( - req: HttpRequest, - enforcer: ShareData>, - web::Json(user_and_permissions): web::Json, -) -> HttpResponse { - let operation_log_pair_option = - generate_operation_user_permission_addtion_log(&req.get_session(), &user_and_permissions) - .ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + req: &Request, + enforcer: Data<&RwLock>, + Json(user_and_permissions): Json, +) -> impl IntoResponse { + // FIXME: + + // let operation_log_pair_option = + // generate_operation_user_permission_addtion_log(&req.get_session(), &user_and_permissions) + // .ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; let UserAndPermissions { user_name, @@ -445,19 +482,21 @@ async fn append_permission( .add_permissions_for_user(&user_name, operate_permissions) .await; let msg = Into::>::into(operated_result); - HttpResponse::Ok().json(msg) + Json(msg) } -#[post("/api/user/delete_permission")] +#[handler] async fn delete_permission( - req: HttpRequest, - enforcer: ShareData>, - web::Json(user_and_permissions): web::Json, -) -> HttpResponse { - let operation_log_pair_option = - generate_operation_user_permission_delete_log(&req.get_session(), &user_and_permissions) - .ok(); - send_option_operation_log_pair(operation_log_pair_option).await; + req: &Request, + enforcer: Data<&RwLock>, + Json(user_and_permissions): Json, +) -> impl IntoResponse { + // FIXME: + + // let operation_log_pair_option = + // generate_operation_user_permission_delete_log(&req.get_session(), &user_and_permissions) + // .ok(); + // send_option_operation_log_pair(operation_log_pair_option).await; let UserAndPermissions { user_name, @@ -475,5 +514,5 @@ async fn delete_permission( } let msg = UnifiedResponseMessages::<()>::success(); - HttpResponse::Ok().json(msg) + Json(msg) } diff --git a/delicate-scheduler/src/actions/user_login_log.rs b/delicate-scheduler/src/actions/user_login_log.rs index 4e744df..eb312e3 100644 --- a/delicate-scheduler/src/actions/user_login_log.rs +++ b/delicate-scheduler/src/actions/user_login_log.rs @@ -1,16 +1,16 @@ use super::prelude::*; -pub(crate) fn config(cfg: &mut web::ServiceConfig) { - cfg.service(show_user_login_log); +pub(crate) fn route(route: Route) -> Route { + route.at("/api/user_login_log/list", post(show_user_login_log)) } -#[post("/api/user_login_log/list")] +#[handler] async fn show_user_login_log( - web::Json(query_params): web::Json, - pool: ShareData, -) -> HttpResponse { + Json(query_params): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { if let Ok(conn) = pool.get() { - return HttpResponse::Ok().json(Into::< + return Json(Into::< UnifiedResponseMessages>, >::into( web::block::<_, _, diesel::result::Error>(move || { @@ -43,7 +43,7 @@ async fn show_user_login_log( )); } - HttpResponse::Ok().json(UnifiedResponseMessages::< + Json(UnifiedResponseMessages::< PaginateData, >::error()) } diff --git a/delicate-scheduler/src/components/auth/casbin/adapter/adapter_core.rs b/delicate-scheduler/src/components/auth/casbin/adapter/adapter_core.rs index c2a9cba..5b8e13e 100644 --- a/delicate-scheduler/src/components/auth/casbin/adapter/adapter_core.rs +++ b/delicate-scheduler/src/components/auth/casbin/adapter/adapter_core.rs @@ -7,13 +7,13 @@ use async_trait::async_trait; use casbin::{Adapter, Error as CasbinError, Filter, Model}; pub struct DieselAdapter { - pool: ShareData, + pool: Arc, is_filtered: bool, } impl DieselAdapter { #[allow(dead_code)] - pub fn new(pool: ShareData) -> Self { + pub fn new(pool: Arc) -> Self { Self { pool, is_filtered: false, @@ -357,7 +357,7 @@ mod tests { let mut e = Enforcer::new(m, file_adapter).await.unwrap(); let mut adapter = DieselAdapter::new({ let connection_pool = db::get_connection_pool(); - ShareData::new(connection_pool) + Arc::new(connection_pool) }); assert!(adapter.save_policy(e.get_mut_model()).await.is_ok()); diff --git a/delicate-scheduler/src/components/auth/casbin/casbin_event_consumer.rs b/delicate-scheduler/src/components/auth/casbin/casbin_event_consumer.rs index 5c493b7..8499001 100644 --- a/delicate-scheduler/src/components/auth/casbin/casbin_event_consumer.rs +++ b/delicate-scheduler/src/components/auth/casbin/casbin_event_consumer.rs @@ -185,10 +185,10 @@ pub(crate) fn handle_event_for_watcher(event: CasbinEventData) { #[allow(dead_code)] pub(crate) fn launch_casbin_rule_events_consumer( redis_client: redis::Client, - enforcer: ShareData>, + enforcer: Arc>, ) { - rt_spawn(loop_publish_casbin_rule_events(redis_client.clone())); - rt_spawn(loop_subscribe_casbin_rule_events(redis_client, enforcer)); + tokio_spawn(loop_publish_casbin_rule_events(redis_client.clone())); + tokio_spawn(loop_subscribe_casbin_rule_events(redis_client, enforcer)); } pub(crate) async fn loop_publish_casbin_rule_events(redis_client: redis::Client) { @@ -220,7 +220,7 @@ pub(crate) async fn publish_casbin_rule_events(mut publish_conn: Connection) -> pub(crate) async fn loop_subscribe_casbin_rule_events( redis_client: redis::Client, - enforcer: ShareData>, + enforcer: Arc>, ) { loop { let pubsub_conn_result = redis_client.get_async_connection().await; @@ -239,7 +239,7 @@ pub(crate) async fn loop_subscribe_casbin_rule_events( pub(crate) async fn subscribe_casbin_rule_events( conn: Connection, - enforcer: ShareData>, + enforcer: Arc>, ) -> Result<(), CommonError> { let mut pubsub_conn = conn.into_pubsub(); diff --git a/delicate-scheduler/src/components/auth/casbin/middleware.rs b/delicate-scheduler/src/components/auth/casbin/middleware.rs index a51086f..670e6d7 100644 --- a/delicate-scheduler/src/components/auth/casbin/middleware.rs +++ b/delicate-scheduler/src/components/auth/casbin/middleware.rs @@ -46,7 +46,7 @@ impl CasbinWatcher for CasbinGuard { } #[allow(dead_code)] -pub(crate) async fn get_casbin_enforcer(pool: ShareData) -> Enforcer { +pub(crate) async fn get_casbin_enforcer(pool: Arc) -> Enforcer { let adapter = DieselAdapter::new(pool); let mut enforcer = Enforcer::new(get_casbin_model_conf_path(), adapter) .await @@ -100,7 +100,7 @@ const WHITE_LIST: [&str; 9] = [ "/api/user/check", "/api/executor/list", "/api/user/change_password", - "/api/task_logs/event_trigger", + "/api/task_log/event_trigger", "/api/casbin/test", ]; @@ -124,7 +124,7 @@ where fn call(&mut self, req: ServiceRequest) -> Self::Future { let enforcer = req - .app_data::>>() + .app_data::>>() .expect("Casbin's enforcer acquisition failed") .clone(); let mut service = self.service.clone(); @@ -139,52 +139,54 @@ where .unwrap_or_default() .unwrap_or_default(); - Box::pin(async move { - // Path in the whitelist do not need to be verified. - if WHITE_LIST.contains(&path.deref()) { - return service.call(req).await; - } - - #[cfg(APP_DEBUG_MODE)] - { - return service.call(req).await; - } - - let auther = enforcer.read().await; - - if username.is_empty() || resource.is_empty() || action.is_empty() { - return Ok(req.error_response( - HttpResponseBuilder::new(StatusCode::default()).json( - UnifiedResponseMessages::<()>::error() - .customized_error_msg(String::from("Permission check failed.")), - ), - )); - } - - match auther.enforce(vec![username, resource, action]) { - Ok(true) => { - drop(auther); - service.call(req).await - } - Ok(false) => { - drop(auther); - Ok(req.error_response( - HttpResponseBuilder::new(StatusCode::default()).json( - UnifiedResponseMessages::<()>::error() - .customized_error_msg(String::from("Permission check failed.")), - ), - )) - } - Err(e) => { - drop(auther); - Ok(req.error_response( - HttpResponseBuilder::new(StatusCode::default()).json( - UnifiedResponseMessages::<()>::error() - .customized_error_msg(format!("Permission check failed. ({})", e)), - ), - )) - } - } - }) + // FIXME: + todo!(); + // Box::pin(async move { + // // Path in the whitelist do not need to be verified. + // if WHITE_LIST.contains(&path.deref()) { + // return service.call(req).await; + // } + + // #[cfg(APP_DEBUG_MODE)] + // { + // return service.call(req).await; + // } + + // let auther = enforcer.read().await; + + // if username.is_empty() || resource.is_empty() || action.is_empty() { + // return Ok(req.error_response( + // HttpResponseBuilder::new(StatusCode::default()).json( + // UnifiedResponseMessages::<()>::error() + // .customized_error_msg(String::from("Permission check failed.")), + // ), + // )); + // } + + // match auther.enforce(vec![username, resource, action]) { + // Ok(true) => { + // drop(auther); + // service.call(req).await + // } + // Ok(false) => { + // drop(auther); + // Ok(req.error_response( + // HttpResponseBuilder::new(StatusCode::default()).json( + // UnifiedResponseMessages::<()>::error() + // .customized_error_msg(String::from("Permission check failed.")), + // ), + // )) + // } + // Err(e) => { + // drop(auther); + // Ok(req.error_response( + // HttpResponseBuilder::new(StatusCode::default()).json( + // UnifiedResponseMessages::<()>::error() + // .customized_error_msg(format!("Permission check failed. ({})", e)), + // ), + // )) + // } + // } + // }) } } diff --git a/delicate-scheduler/src/components/base.rs b/delicate-scheduler/src/components/base.rs index 4874192..b2749b7 100644 --- a/delicate-scheduler/src/components/base.rs +++ b/delicate-scheduler/src/components/base.rs @@ -1,7 +1,6 @@ use crate::prelude::*; use crate::security::SchedulerSecurityConf; -pub(crate) type SharedSchedulerMetaInfo = ShareData; #[derive(Debug, Clone, Serialize, Deserialize)] pub(crate) struct SchedulerMetaInfo { name: String, diff --git a/delicate-scheduler/src/components/health_checker.rs b/delicate-scheduler/src/components/health_checker.rs index 0da3da2..d11a631 100644 --- a/delicate-scheduler/src/components/health_checker.rs +++ b/delicate-scheduler/src/components/health_checker.rs @@ -1,21 +1,22 @@ use super::prelude::*; use db::schema::executor_processor; -pub(crate) async fn loop_health_check(pool: ShareData) { - let mut interval = interval(Duration::from_secs(20)); - loop { - interval.tick().await; - if let Ok(conn) = pool.get() { - health_check(conn) - .await - .map_err(|e| error!(target:"loop-health-check", "{}", e.to_string())) - .ok(); - continue; - } +// FIXME: +// pub(crate) async fn loop_health_check(pool: Arc) { +// let mut interval = interval(Duration::from_secs(20)); +// loop { +// interval.tick().await; +// if let Ok(conn) = pool.get() { +// health_check(conn) +// .await +// .map_err(|e| error!(target:"loop-health-check", "{}", e.to_string())) +// .ok(); +// continue; +// } - error!(target:"loop-health-check", "No available database connection."); - } -} +// error!(target:"loop-health-check", "No available database connection."); +// } +// } async fn health_check(conn: db::PoolConnection) -> Result<(), CommonError> { let (executor_packages, conn) = web::block::<_, _, diesel::result::Error>(move || { diff --git a/delicate-scheduler/src/components/operation_log_consumer.rs b/delicate-scheduler/src/components/operation_log_consumer.rs index 194d349..2b85c18 100644 --- a/delicate-scheduler/src/components/operation_log_consumer.rs +++ b/delicate-scheduler/src/components/operation_log_consumer.rs @@ -13,7 +13,7 @@ lazy_static! { // The user's operations in the system are logged to track, // But in order not to affect the performance of the system, // These logs go through the channel with the asynchronous state machine to consume. -pub(crate) async fn loop_operate_logs(pool: ShareData) { +pub(crate) async fn loop_operate_logs(pool: Arc) { loop { let mut operation_log_pairs: Vec = Vec::new(); diff --git a/delicate-scheduler/src/components/session.rs b/delicate-scheduler/src/components/session.rs index d785cbf..43d4e9f 100644 --- a/delicate-scheduler/src/components/session.rs +++ b/delicate-scheduler/src/components/session.rs @@ -29,86 +29,66 @@ pub(crate) fn auth_middleware() -> SessionAuth { pub struct SessionAuth; -impl Transform for SessionAuth -where - S: Service, Error = ActixWebError>, - S::Future: 'static, - B: 'static, -{ - type Request = ServiceRequest; - type Response = ServiceResponse; - type Error = ActixWebError; - type InitError = (); - type Transform = SessionAuthMiddleware; - type Future = Ready>; +impl Middleware for SessionAuth { + type Output = SessionAuthMiddleware; - fn new_transform(&self, service: S) -> Self::Future { - ok(SessionAuthMiddleware { service }) + fn transform(&self, service: E) -> Self::Output { + SessionAuthMiddleware { service } } } -pub struct SessionAuthMiddleware { - service: S, +pub struct SessionAuthMiddleware { + service: E, } -impl Service for SessionAuthMiddleware -where - S: Service, Error = ActixWebError>, - S::Future: 'static, - B: 'static, -{ - type Request = ServiceRequest; - type Response = ServiceResponse; - type Error = ActixWebError; - type Future = MiddlewareFuture; +#[poem::async_trait] +impl Endpoint for SessionAuthMiddleware { + type Output = E::Output; - fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll> { - self.service.poll_ready(cx) - } - - fn call(&mut self, req: ServiceRequest) -> Self::Future { - #[cfg(APP_DEBUG_MODE)] - { - let fut = self.service.call(req); - return Box::pin(async move { - let res = fut.await?; - Ok(res) - }); - } - let session = req.get_session(); - let uri = req.uri(); - let path = uri.path(); + async fn call(&self, mut req: Request) -> Self::Output { + // #[cfg(APP_DEBUG_MODE)] + // { + // let fut = self.service.call(req); + // return Box::pin(async move { + // let res = fut.await?; + // Ok(res) + // }); + // } + // let session = req.get_session(); + // let uri = req.uri(); + // let path = uri.path(); - // Judgment, if it is a special api will not check the token. - // (for example: login-api, event-collection-api) + // // Judgment, if it is a special api will not check the token. + // // (for example: login-api, event-collection-api) - match path { - "/api/user/login" | "/api/task_logs/event_trigger" => { - let fut = self.service.call(req); - Box::pin(async move { - let res = fut.await?; - Ok(res) - }) - } - _ => { - if let Ok(Some(_)) = session.get::("user_id") { - let fut = self.service.call(req); - Box::pin(async move { - let res = fut.await?; - Ok(res) - }) - } else { - Box::pin(async move { - Ok(req.error_response( - HttpResponseBuilder::new(StatusCode::default()).json( - UnifiedResponseMessages::<()>::error().customized_error_msg( - String::from("Please log in and operate."), - ), - ), - )) - }) - } - } - } + // match path { + // "/api/user/login" | "/api/task_log/event_trigger" => { + // let fut = self.service.call(req); + // Box::pin(async move { + // let res = fut.await?; + // Ok(res) + // }) + // } + // _ => { + // if let Ok(Some(_)) = session.get::("user_id") { + // let fut = self.service.call(req); + // Box::pin(async move { + // let res = fut.await?; + // Ok(res) + // }) + // } else { + // Box::pin(async move { + // Ok(req.error_response( + // Json( + // UnifiedResponseMessages::<()>::error().customized_error_msg( + // String::from("Please log in and operate."), + // ), + // ), + // )) + // }) + // } + // } + // } + todo!(); } } diff --git a/delicate-scheduler/src/main.rs b/delicate-scheduler/src/main.rs index f4abdcd..12a3442 100644 --- a/delicate-scheduler/src/main.rs +++ b/delicate-scheduler/src/main.rs @@ -23,13 +23,24 @@ pub(crate) mod prelude; pub(crate) use prelude::*; -#[actix_web::main] -async fn main() -> AnyResut<()> { +fn main() -> AnyResut<()> { // Loads environment variables. dotenv().ok(); db::init(); + let raw_runtime = Builder::new_multi_thread() + .thread_name_fn(|| { + static ATOMIC_ID: AtomicUsize = AtomicUsize::new(0); + let id = ATOMIC_ID.fetch_add(1, Ordering::SeqCst); + format!("executor-{}", id) + }) + .thread_stack_size(4 * 1024 * 1024) + .build() + .expect("Init Tokio runtime failed."); + let arc_runtime = Arc::new(raw_runtime); + let arc_runtime_cloned = arc_runtime.clone(); + let scheduler_listening_address = env::var("SCHEDULER_LISTENING_ADDRESS") .expect("Without `SCHEDULER_LISTENING_ADDRESS` set in .env"); @@ -62,86 +73,101 @@ async fn main() -> AnyResut<()> { // completes the builder. .init(); - let delay_timer = DelayTimerBuilder::default().enable_status_report().build(); - let shared_delay_timer = ShareData::new(delay_timer); - - let connection_pool = db::get_connection_pool(); - let shared_connection_pool = ShareData::new(connection_pool); - let shared_scheduler_meta_info: SharedSchedulerMetaInfo = - ShareData::new(SchedulerMetaInfo::default()); + arc_runtime.block_on(async { + let delay_timer = DelayTimerBuilder::default() + .tokio_runtime_shared_by_custom(arc_runtime_cloned) + .enable_status_report() + .build(); + let arc_delay_timer = Arc::new(delay_timer); + let shared_delay_timer = AddData::new(arc_delay_timer.clone()); - #[cfg(AUTH_CASBIN)] - let enforcer = get_casbin_enforcer(shared_connection_pool.clone()).await; - #[cfg(AUTH_CASBIN)] - let shared_enforcer = ShareData::new(RwLock::new(enforcer)); + let connection_pool = db::get_connection_pool(); + let arc_connection_pool = Arc::new(connection_pool); + let shared_connection_pool = AddData::new(arc_connection_pool.clone()); + let shared_scheduler_meta_info: AddData> = + AddData::new(Arc::new(SchedulerMetaInfo::default())); - // All ready work when the delicate-application starts. - launch_ready_operation( - shared_connection_pool.clone(), #[cfg(AUTH_CASBIN)] - shared_enforcer.clone(), - ) - .await; - - let result = HttpServer::new(move || { - let cors = Cors::default() - .allowed_origin(&scheduler_front_end_domain) - .allow_any_method() - .allow_any_header() - .supports_credentials() - .max_age(3600); - - #[cfg(APP_DEBUG_MODE)] - let cors = cors.allow_any_origin(); - - let app = App::new() - .configure(actions::task::config) - .configure(actions::user::config) - .configure(actions::task_log::config) - .configure(actions::executor_group::config) - .configure(actions::executor_processor::config) - .configure(actions::executor_processor_bind::config) - .configure(actions::data_reports::config) - .configure(actions::components::config) - .configure(actions::operation_log::config) - .configure(actions::user_login_log::config) - .app_data(shared_delay_timer.clone()) - .app_data(shared_connection_pool.clone()) - .app_data(shared_scheduler_meta_info.clone()); - + let enforcer = get_casbin_enforcer(shared_connection_pool.clone()).await; #[cfg(AUTH_CASBIN)] - let app = app - .configure(actions::role::config) - .wrap(CasbinService) - .app_data(shared_enforcer.clone()); - - app.wrap(components::session::auth_middleware()) - .wrap(components::session::session_middleware()) - .wrap(cors) - .wrap(MiddlewareLogger::default()) - .wrap_fn(|req, srv| { - let unique_id = get_unique_id_string(); - let unique_id_str = unique_id.deref(); - let fut = srv - .call(req) - .instrument(info_span!("log-id: ", unique_id_str)); - async { - let res = fut.await?; - Ok(res) - } - }) - }) - .bind(scheduler_listening_address)? - .run() - .await; - - Ok(result?) + let shared_enforcer = AddData::new(RwLock::new(enforcer)); + + // All ready work when the delicate-application starts. + launch_ready_operation( + arc_connection_pool.clone(), + #[cfg(AUTH_CASBIN)] + shared_enforcer.clone(), + ) + .await; + + // let result = HttpServer::new(move || { + // let cors = Cors::new() + // .allow_origin(&scheduler_front_end_domain) + // .allow_method(Method::GET) + // .allow_method(Method::POST) + // .allow_header("*") + // .allow_credentials(true) + // .max_age(3600); + + // #[cfg(APP_DEBUG_MODE)] + // let cors = cors.allow_origin("*"); + + // let app = App::new() + // // .configure(actions::task::config) + // // .configure(actions::user::config) + // // .configure(actions::task_log::config) + // // .configure(actions::executor_group::config) + // // .configure(actions::executor_processor::config) + // // .configure(actions::executor_processor_bind::config) + // // .configure(actions::data_reports::config) + // // .configure(actions::components::config) + // // .configure(actions::operation_log::config) + // // .configure(actions::user_login_log::config) + // .app_data(shared_delay_timer.clone()) + // .app_data(shared_connection_pool.clone()) + // .app_data(shared_scheduler_meta_info.clone()); + + // #[cfg(AUTH_CASBIN)] + // let app = app + // .configure(actions::role::config) + // .wrap(CasbinService) + // .app_data(shared_enforcer.clone()); + + // app.wrap(components::session::auth_middleware()) + // .wrap(components::session::session_middleware()) + // .wrap(cors) + // .wrap(MiddlewareLogger::default()) + // .wrap_fn(|req, srv| { + // let unique_id = get_unique_id_string(); + // let unique_id_str = unique_id.deref(); + // let fut = srv + // .call(req) + // .instrument(info_span!("log-id: ", unique_id_str)); + // async { + // let res = fut.await?; + // Ok(res) + // } + // }) + // }) + // .bind(scheduler_listening_address)? + // .run() + // .await; + + // let address = env::var("EXECUTOR_LISTENING_ADDRESS") + // .expect("Without `EXECUTOR_LISTENING_ADDRESS` set in .env"); + // let listener = TcpListener::bind(address); + // let server = Server::new(listener).await?; + // Ok(server.run(route).await?) + }); + + // Ok(result?) + todo!(); } // All ready work when the delicate-application starts. async fn launch_ready_operation( - pool: ShareData, - #[cfg(AUTH_CASBIN)] enforcer: ShareData>, + pool: Arc, + #[cfg(AUTH_CASBIN)] enforcer: AddData>, ) { launch_health_check(pool.clone()); launch_operation_log_consumer(pool); @@ -158,8 +184,9 @@ async fn launch_ready_operation( // Heartbeat checker // That constantly goes to detect whether the machine survives with the machine's indicators. -fn launch_health_check(pool: ShareData) { - rt_spawn(loop_health_check(pool)); +fn launch_health_check(pool: Arc) { + // FIXME: + // tokio_spawn(loop_health_check(pool)); } // Operation log asynchronous consumer @@ -167,6 +194,6 @@ fn launch_health_check(pool: ShareData) { // The user's operations in the system are logged to track, // But in order not to affect the performance of the system, // These logs go through the channel with the asynchronous state machine to consume. -fn launch_operation_log_consumer(pool: ShareData) { - rt_spawn(loop_operate_logs(pool)); +fn launch_operation_log_consumer(pool: Arc) { + tokio_spawn(loop_operate_logs(pool)); } diff --git a/delicate-scheduler/src/prelude.rs b/delicate-scheduler/src/prelude.rs index a8c9adf..e00c2e5 100644 --- a/delicate-scheduler/src/prelude.rs +++ b/delicate-scheduler/src/prelude.rs @@ -4,8 +4,9 @@ pub(crate) use super::components::auth::casbin::casbin_event_consumer::{ }; #[allow(unused_imports)] pub(crate) use super::components::auth::casbin::*; -pub(crate) use super::components::base::{SchedulerMetaInfo, SharedSchedulerMetaInfo}; -pub(crate) use super::components::health_checker::loop_health_check; +pub(crate) use super::components::base::SchedulerMetaInfo; +// FIXME: +// pub(crate) use super::components::health_checker::loop_health_check; pub(crate) use super::components::helper::handle_response; pub(crate) use super::components::operation_log_consumer::{ loop_operate_logs, send_option_operation_log_pair, @@ -40,6 +41,8 @@ pub(crate) use std::ops::Deref; pub(crate) use std::rc::Rc; pub(crate) use std::str::FromStr; pub(crate) use std::string::ToString; +pub(crate) use std::sync::atomic::{AtomicUsize, Ordering}; +pub(crate) use std::sync::Arc; pub(crate) use std::task::{Context, Poll}; pub(crate) use std::time::Duration; pub(crate) use std::time::SystemTime; @@ -64,7 +67,6 @@ pub(crate) use diesel::r2d2::CustomizeConnection; pub(crate) use diesel::result::Error as DieselError; pub(crate) use diesel::sql_types; -pub(crate) use actix_cors::Cors; pub(crate) use actix_session::{CookieSession, Session, UserSession}; pub(crate) use actix_web::client::Client as RequestClient; pub(crate) use actix_web::dev::Decompress; @@ -79,7 +81,6 @@ pub(crate) use actix_web::rt::time::{ delay_for as rt_delay_for, interval, timeout as rt_timeout, Timeout as RtTimeout, }; pub(crate) use actix_web::web::{self, Data as ShareData}; -pub(crate) use actix_web::{get, post, App, HttpRequest, HttpResponse, HttpServer}; pub(crate) use actix_web::{Error as ActixWebError, Result}; pub(crate) use awc::{JsonBody, SendClientRequest}; @@ -89,6 +90,9 @@ pub(crate) use async_lock::RwLock; pub(crate) use delay_timer::prelude::*; pub(crate) use diesel::query_dsl::RunQueryDsl; pub(crate) use dotenv::dotenv; +pub(crate) use tokio::runtime::Builder; +pub(crate) use tokio::spawn as tokio_spawn; +pub(crate) use tokio::time::{timeout as tokio_timeout, Timeout as TokioTimeout}; pub(crate) use tracing::{debug, error, info, info_span, span, Instrument, Level}; pub(crate) use tracing_subscriber::FmtSubscriber; @@ -105,6 +109,14 @@ pub(crate) use strum::IntoEnumIterator; pub(crate) use strum_macros::{AsRefStr, EnumIter, IntoStaticStr, ToString as StrumToString}; pub(crate) use validator::{Validate, ValidationErrors}; +pub(crate) use poem::http::Method; +pub(crate) use poem::listener::TcpListener; +pub(crate) use poem::middleware::AddData; +pub(crate) use poem::middleware::Cors; +pub(crate) use poem::web::{Data, IntoResponse, Json}; +pub(crate) use poem::{ + get, handler, post, Endpoint, EndpointExt, Middleware, Request, Route, Server, +}; // The public middleware output type. pub(crate) type MiddlewareFuture = std::pin::Pin>>>; diff --git a/delicate-utils/Cargo.toml b/delicate-utils/Cargo.toml index 6beb44b..803aa2a 100644 --- a/delicate-utils/Cargo.toml +++ b/delicate-utils/Cargo.toml @@ -19,6 +19,7 @@ derive_more = "^0.99.14" delay_timer = {version = "^0.9.0", features = ["full"]} fastrand = "^1.4.1" flexi_logger = {version = "0.19", features = ["trc"]} +reqwest = { version = "0.11", features = ["json"] } hex = {version = "^0.4", features = ["serde"]} log = "^0.4" poem = "1.0.1" diff --git a/delicate-utils/src/error.rs b/delicate-utils/src/error.rs index d1989a4..da38d36 100644 --- a/delicate-utils/src/error.rs +++ b/delicate-utils/src/error.rs @@ -34,6 +34,28 @@ pub enum CommonError { DisAuth(#[from] AuthServiceError), } +#[derive(ThisError, Debug)] +pub enum NewCommonError { + #[error("db connect fail.")] + DisConnDb(#[from] PoolError), + #[error("redis connect fail.")] + DisConnRedis(#[from] redis::RedisError), + #[error("data query fail.")] + DisQuery(#[from] diesel::result::Error), + #[error("data serializing fail.")] + DisSer(#[from] serde_json_error::Error), + #[error("data sign or decrypt or verify fail.")] + DisSign(#[from] ras_error::Error), + #[error("Consensus message signature verification failed.")] + DisVerify, + #[error("DelayTimer's task operation failed.")] + DisOpeate(#[from] TaskError), + #[error("Invalid operation, or invalid data.(`{0}`)")] + DisPass(String), + #[error("The errors reported by the auth-service cannot be ignored.")] + DisAuth(#[from] AuthServiceError), +} + #[derive(ThisError, Debug)] pub enum AuthServiceError { #[error("db connect fail.")] diff --git a/delicate-utils/src/prelude.rs b/delicate-utils/src/prelude.rs index 5a31d83..dddeb6a 100644 --- a/delicate-utils/src/prelude.rs +++ b/delicate-utils/src/prelude.rs @@ -4,6 +4,7 @@ pub use flexi_logger; pub use hex; pub use poem; pub use redis; +pub use reqwest; pub use tokio; pub use tracing; pub use tracing_subscriber; diff --git a/migrate_to_poem..md b/migrate_to_poem..md index d7e5791..89b3806 100644 --- a/migrate_to_poem..md +++ b/migrate_to_poem..md @@ -5,6 +5,8 @@ 1. 5w lines of code + documentation, etc. 2. main language is Rust + js. +The migration involved 50 file changes and 3500 lines of code changes, which were completed in 2 days. + For more details please check: xxx Why migrate to `poem`? @@ -23,4 +25,35 @@ The focus of the migration. 2. api level modifications to avoid business logic adjustments. -etc..... \ No newline at end of file +etc..... + + +*. handle in poem, is an asynchronous state machine, using tokio it can be computed efficiently in a multi-threaded runtime. + This is not the case with actix-web, which is single-threaded. Because of this subtle difference, the handle previously used for actix-web + The difference here is that the handle previously used for actix-web cannot be used for `poem`, because the values across .await need to be kept in Send, which is a lot of work. + +*. poem's route, a root route, and then multiple mods constantly at inside, different from the original actix-web config. + +*. poem's error supports Send, actix-web's error does not support Send, which makes cross-threading difficult. + +Need to modify all middleware implementations, need to revamp all handlers, need to adjust all global state. + +I am also grateful to the actix-web community for such a great piece of work, and I decided to migrate to `poem` because of technical selection issues. + +Translated with www.DeepL.com/Translator (free version) + + +// actix-web +pub(crate) fn config(cfg: &mut web::ServiceConfig) { + cfg.service(binding_list) + .service(executor_list) + .service(permission_list); +} + +// poem +pub(crate) fn config_route(route: Route) -> Route { + route + .at("/api/binding/list", get(binding_list)) + .at("/api/executor/list", get(executor_list)) + .at("/api/permission/list", get(permission_list)) +} \ No newline at end of file From 6049886d3c19960b0d6e14410ef83bd0604cd85c Mon Sep 17 00:00:00 2001 From: BinChengZhao Date: Thu, 14 Oct 2021 02:37:57 +0800 Subject: [PATCH 04/13] feat: second step of migrate to poem. --- Cargo.toml | 4 - delicate-scheduler/Cargo.toml | 1 - .../src/actions/executor_group.rs | 2 +- .../src/actions/executor_processor.rs | 2 +- .../src/actions/executor_processor_bind.rs | 2 +- .../src/actions/operation_log.rs | 2 +- delicate-scheduler/src/actions/role.rs | 2 +- delicate-scheduler/src/actions/task.rs | 2 +- delicate-scheduler/src/actions/task_log.rs | 2 +- delicate-scheduler/src/actions/user.rs | 19 ++-- .../src/actions/user_login_log.rs | 2 +- .../src/components/auth/casbin/middleware.rs | 66 ++++------- delicate-scheduler/src/components/session.rs | 104 ++++++++---------- delicate-scheduler/src/db/common/helper.rs | 24 ++-- delicate-scheduler/src/main.rs | 25 +++-- delicate-scheduler/src/prelude.rs | 5 +- delicate-utils/Cargo.toml | 8 +- migrate_to_poem..md | 44 +++++++- 18 files changed, 164 insertions(+), 152 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 3d8b45e..c806a35 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,3 @@ members = [ "delicate-scheduler", "delicate-utils" ] - -# TODO: This(casbin-patch) must be remove when upgrading to actix-web4. -[patch.crates-io] -casbin = { git = 'https://github.com/BinChengZhao/casbin-rs', branch = 'fix-casbin-v2.0.5-compile-bug' } \ No newline at end of file diff --git a/delicate-scheduler/Cargo.toml b/delicate-scheduler/Cargo.toml index 2228169..dfa0fe7 100644 --- a/delicate-scheduler/Cargo.toml +++ b/delicate-scheduler/Cargo.toml @@ -15,7 +15,6 @@ documentation = "" [dependencies] actix-web = "^3.3.2" -actix-session = "0.4.1" async-channel = "1.6.1" async-lock = "^2.4.0" async-trait = "0.1.51" diff --git a/delicate-scheduler/src/actions/executor_group.rs b/delicate-scheduler/src/actions/executor_group.rs index 18df194..e410b71 100644 --- a/delicate-scheduler/src/actions/executor_group.rs +++ b/delicate-scheduler/src/actions/executor_group.rs @@ -1,6 +1,6 @@ use super::prelude::*; -pub(crate) fn route(route: Route) -> Route { +pub(crate) fn config_route(route: Route) -> Route { route .at("/api/executor_group/list", post(show_executor_groups)) .at( diff --git a/delicate-scheduler/src/actions/executor_processor.rs b/delicate-scheduler/src/actions/executor_processor.rs index 6b34db5..731a259 100644 --- a/delicate-scheduler/src/actions/executor_processor.rs +++ b/delicate-scheduler/src/actions/executor_processor.rs @@ -1,7 +1,7 @@ use super::prelude::*; use db::schema::executor_processor; -pub(crate) fn route(route: Route) -> Route { +pub(crate) fn config_route(route: Route) -> Route { route .at( "/api/executor_processor/list", diff --git a/delicate-scheduler/src/actions/executor_processor_bind.rs b/delicate-scheduler/src/actions/executor_processor_bind.rs index 407385c..73c8020 100644 --- a/delicate-scheduler/src/actions/executor_processor_bind.rs +++ b/delicate-scheduler/src/actions/executor_processor_bind.rs @@ -1,6 +1,6 @@ use super::prelude::*; -pub(crate) fn route(route: Route) -> Route { +pub(crate) fn config_route(route: Route) -> Route { route .at( "/api/executor_processor_bind/list", diff --git a/delicate-scheduler/src/actions/operation_log.rs b/delicate-scheduler/src/actions/operation_log.rs index 063f846..5df8e29 100644 --- a/delicate-scheduler/src/actions/operation_log.rs +++ b/delicate-scheduler/src/actions/operation_log.rs @@ -1,6 +1,6 @@ use super::prelude::*; -pub(crate) fn route(route: Route) -> Route { +pub(crate) fn config_route(route: Route) -> Route { route .at("/api/operation_log/list", post(show_operation_log)) .at("/api/operation_log/detail", post(show_operation_log_detail)) diff --git a/delicate-scheduler/src/actions/role.rs b/delicate-scheduler/src/actions/role.rs index 185e0ae..0b22c16 100644 --- a/delicate-scheduler/src/actions/role.rs +++ b/delicate-scheduler/src/actions/role.rs @@ -1,7 +1,7 @@ use super::prelude::*; use db::model::casbin_rule::RoleId; -pub(crate) fn route(route: Route) -> Route { +pub(crate) fn config_route(route: Route) -> Route { route .at("/api/role/list", get(list)) .at("/api/role/permission_detail", post(permission_detail)) diff --git a/delicate-scheduler/src/actions/task.rs b/delicate-scheduler/src/actions/task.rs index c512398..b1839bb 100644 --- a/delicate-scheduler/src/actions/task.rs +++ b/delicate-scheduler/src/actions/task.rs @@ -1,6 +1,6 @@ use super::prelude::*; -pub(crate) fn route(route: Route) -> Route { +pub(crate) fn config_route(route: Route) -> Route { route .at("/api/task/create", post(create_task)) .at("/api/task/list", post(show_tasks)) diff --git a/delicate-scheduler/src/actions/task_log.rs b/delicate-scheduler/src/actions/task_log.rs index 11bdb8c..1cc3939 100644 --- a/delicate-scheduler/src/actions/task_log.rs +++ b/delicate-scheduler/src/actions/task_log.rs @@ -1,6 +1,6 @@ use super::prelude::*; -pub(crate) fn route(route: Route) -> Route { +pub(crate) fn config_route(route: Route) -> Route { route .at("/api/task_log/event_trigger", post(create_task_logs)) .at("/api/task_log/list", post(show_task_logs)) diff --git a/delicate-scheduler/src/actions/user.rs b/delicate-scheduler/src/actions/user.rs index ed011de..af7048b 100644 --- a/delicate-scheduler/src/actions/user.rs +++ b/delicate-scheduler/src/actions/user.rs @@ -4,7 +4,7 @@ use model::user::{ get_encrypted_certificate_by_raw_certificate, UserAndPermissions, UserAndRoles, UserName, }; -pub(crate) fn route(route: Route) -> Route { +pub(crate) fn config_route(route: Route) -> Route { route .at("/api/user/create", post(create_user)) .at("/api/user/list", post(show_users)) @@ -226,7 +226,7 @@ async fn pre_login_user( account, password, }: model::UserAuthLogin, - session: Session, + // session: Session, pool: Data<&db::ConnectionPool>, ) -> Result<(), CommonError> { use model::user_login_log::NewUserLoginLog; @@ -282,14 +282,17 @@ async fn pre_login_user( } fn save_session( - session: Session, + // session: Session, (_, user): (model::UserAuth, model::User), ) -> Result<(), CommonError> { - session.set("login_time", get_timestamp())?; - session.set("user_id", user.id)?; - session.set("user_name", user.user_name)?; - session.set("nick_name", user.nick_name)?; - Ok(()) + // FIXME: + + // session.set("login_time", get_timestamp())?; + // session.set("user_id", user.id)?; + // session.set("user_name", user.user_name)?; + // session.set("nick_name", user.nick_name)?; + // Ok(()) + todo!(); } // FIXME: diff --git a/delicate-scheduler/src/actions/user_login_log.rs b/delicate-scheduler/src/actions/user_login_log.rs index eb312e3..203f853 100644 --- a/delicate-scheduler/src/actions/user_login_log.rs +++ b/delicate-scheduler/src/actions/user_login_log.rs @@ -1,6 +1,6 @@ use super::prelude::*; -pub(crate) fn route(route: Route) -> Route { +pub(crate) fn config_route(route: Route) -> Route { route.at("/api/user_login_log/list", post(show_user_login_log)) } diff --git a/delicate-scheduler/src/components/auth/casbin/middleware.rs b/delicate-scheduler/src/components/auth/casbin/middleware.rs index 670e6d7..3b53bb4 100644 --- a/delicate-scheduler/src/components/auth/casbin/middleware.rs +++ b/delicate-scheduler/src/components/auth/casbin/middleware.rs @@ -65,31 +65,18 @@ pub(crate) fn get_casbin_model_conf_path() -> &'static str { #[derive(Copy, Clone, Debug, Serialize, Deserialize)] pub(crate) struct CasbinService; -impl Transform for CasbinService -where - S: Service, Error = ActixWebError> - + 'static, - S::Future: 'static, - B: 'static, -{ - type Request = ServiceRequest; - type Response = ServiceResponse; - type Error = ActixWebError; - type InitError = (); - type Transform = CasbinAuthMiddleware; - type Future = Ready>; - - fn new_transform(&self, service: S) -> Self::Future { - ok(CasbinAuthMiddleware { - service: Rc::new(RefCell::new(service)), - }) +impl Middleware for CasbinService { + type Output = CasbinAuthMiddleware; + + fn transform(&self, ep: E) -> Self::Output { + CasbinAuthMiddleware { ep } } } #[derive(Clone)] -pub struct CasbinAuthMiddleware { - service: Rc>, +pub struct CasbinAuthMiddleware { + ep: E, } const WHITE_LIST: [&str; 9] = [ @@ -104,43 +91,30 @@ const WHITE_LIST: [&str; 9] = [ "/api/casbin/test", ]; -impl Service for CasbinAuthMiddleware -where - S: Service, Error = ActixWebError> - + 'static, - S::Future: 'static, - B: 'static, -{ - type Request = ServiceRequest; - type Response = ServiceResponse; - type Error = ActixWebError; - type Future = MiddlewareFuture; - - fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll> { - // Because also impl Service for Rc> in actix. - // So it work. - self.service.poll_ready(cx) - } +#[poem::async_trait] +impl Endpoint for CasbinAuthMiddleware { + type Output = E::Output; - fn call(&mut self, req: ServiceRequest) -> Self::Future { + async fn call(&self, mut req: Request) -> Self::Output { let enforcer = req - .app_data::>>() + .extensions() + .get::>>>() .expect("Casbin's enforcer acquisition failed") .clone(); - let mut service = self.service.clone(); - let session = req.get_session(); - let path = req.path().to_string(); + let extensions = req.extensions(); + let session = extensions.get::(); + let path = req.uri().path().to_string(); let auth_part = path.split('/').into_iter().collect::>(); let resource = auth_part.get(2).map(|s| s.to_string()).unwrap_or_default(); let action = auth_part.get(3).map(|s| s.to_string()).unwrap_or_default(); - let username = session - .get::("user_name") - .unwrap_or_default() - .unwrap_or_default(); // FIXME: todo!(); + // let username = session + // .get::("user_name") + // .unwrap_or_default() + // .unwrap_or_default(); // Box::pin(async move { // // Path in the whitelist do not need to be verified. // if WHITE_LIST.contains(&path.deref()) { diff --git a/delicate-scheduler/src/components/session.rs b/delicate-scheduler/src/components/session.rs index 43d4e9f..6315445 100644 --- a/delicate-scheduler/src/components/session.rs +++ b/delicate-scheduler/src/components/session.rs @@ -8,19 +8,19 @@ use super::prelude::*; // And when the request is processed `CookieSession` gets the latest state content // in the `Session` and sets it to the client // (all this is done in the middleware of `CookieSession`). -pub(crate) fn session_middleware() -> CookieSession { - CookieSession::signed( - &env::var("SESSION_TOKEN") - .expect("Without `SESSION_TOKEN` set in .env") - .into_bytes(), - ) - .domain( - env::var("SCHEDULER_COOKIE_DOMAIN").expect("Without `SCHEDULER_COOKIE_DOMAIN` set in .env"), - ) - .name(env::var("SCHEDULER_NAME").expect("Without `SCHEDULER_NAME` set in .env")) - .http_only(true) - .secure(false) -} +// pub(crate) fn session_middleware() -> CookieSession { +// CookieSession::signed( +// &env::var("SESSION_TOKEN") +// .expect("Without `SESSION_TOKEN` set in .env") +// .into_bytes(), +// ) +// .domain( +// env::var("SCHEDULER_COOKIE_DOMAIN").expect("Without `SCHEDULER_COOKIE_DOMAIN` set in .env"), +// ) +// .name(env::var("SCHEDULER_NAME").expect("Without `SCHEDULER_NAME` set in .env")) +// .http_only(true) +// .secure(false) +// } // Register authentication middleware to check login status based on `CookieSession`. pub(crate) fn auth_middleware() -> SessionAuth { @@ -32,13 +32,13 @@ pub struct SessionAuth; impl Middleware for SessionAuth { type Output = SessionAuthMiddleware; - fn transform(&self, service: E) -> Self::Output { - SessionAuthMiddleware { service } + fn transform(&self, ep: E) -> Self::Output { + SessionAuthMiddleware { ep } } } pub struct SessionAuthMiddleware { - service: E, + ep: E, } #[poem::async_trait] @@ -46,49 +46,41 @@ impl Endpoint for SessionAuthMiddleware { type Output = E::Output; async fn call(&self, mut req: Request) -> Self::Output { - // #[cfg(APP_DEBUG_MODE)] - // { - // let fut = self.service.call(req); - // return Box::pin(async move { - // let res = fut.await?; - // Ok(res) - // }); - // } - // let session = req.get_session(); - // let uri = req.uri(); - // let path = uri.path(); + #[cfg(APP_DEBUG_MODE)] + { + return self.ep.call(req).await; + } + + let extensions = req.extensions(); + let session = extensions.get::(); + let uri = req.uri(); + let path = uri.path(); + + // https://github.com/poem-web/poem/blob/master/examples/poem/cookie-session/src/main.rs + // TODO: Use `CookieJar` as the backend of `Session`. // // Judgment, if it is a special api will not check the token. // // (for example: login-api, event-collection-api) - // match path { - // "/api/user/login" | "/api/task_log/event_trigger" => { - // let fut = self.service.call(req); - // Box::pin(async move { - // let res = fut.await?; - // Ok(res) - // }) - // } - // _ => { - // if let Ok(Some(_)) = session.get::("user_id") { - // let fut = self.service.call(req); - // Box::pin(async move { - // let res = fut.await?; - // Ok(res) - // }) - // } else { - // Box::pin(async move { - // Ok(req.error_response( - // Json( - // UnifiedResponseMessages::<()>::error().customized_error_msg( - // String::from("Please log in and operate."), - // ), - // ), - // )) - // }) - // } - // } - // } - todo!(); + match path { + "/api/user/login" | "/api/task_log/event_trigger" => { + return self.ep.call(req).await; + } + _ => { + let user_id = session.map(|s| s.get("user_id")).flatten().map(|c|c.value::()); + if let Some(Ok(_)) = user_id { + return self.ep.call(req).await; + } else { + // FIXME: + // TODO: early return. + /// actix : req.error(msg). + // Json( + // UnifiedResponseMessages::<()>::error() + // .customized_error_msg(String::from("Please log in and operate.")), + // ) + todo!(); + } + } + } } } diff --git a/delicate-scheduler/src/db/common/helper.rs b/delicate-scheduler/src/db/common/helper.rs index 6c82175..ed385ac 100644 --- a/delicate-scheduler/src/db/common/helper.rs +++ b/delicate-scheduler/src/db/common/helper.rs @@ -104,7 +104,7 @@ impl_seek_table_id_unify!(NewTaskLog=>0, NewTask=>0, NewUser=>0, NewTaskBind=>0, #[inline(always)] pub(crate) fn generate_operation_log( operation_name: impl ToString, - session: &Session, + session: &CookieJar, operation_type: OperationType, value: impl Serialize + SeekTableId, column_comment: impl Serialize, @@ -112,8 +112,14 @@ pub(crate) fn generate_operation_log( let name = operation_name.to_string(); let table_id = value.seek_table_id(); let operation_type = operation_type as i8; - let user_id = session.get::("user_id")?.unwrap_or_default(); - let user_name = session.get::("user_name")?.unwrap_or_default(); + let user_id = session + .get("user_id") + .map(|c| c.value::().unwrap_or_default()) + .unwrap_or_default(); + let user_name = session + .get("user_name") + .map(|c| c.value::().unwrap_or_default()) + .unwrap_or_default(); let operation_log_id = 0; let column_comment = to_json_string(&column_comment)?; let values = to_json_string(&value)?; @@ -137,7 +143,7 @@ pub(crate) fn generate_operation_log( #[inline(always)] pub(crate) fn generate_operation_addtion_log( operation_name: impl ToString, - session: &Session, + session: &CookieJar, values: impl Serialize + SeekTableId, column_comment: impl Serialize, ) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { @@ -153,7 +159,7 @@ pub(crate) fn generate_operation_addtion_log( #[inline(always)] pub(crate) fn generate_operation_modify_log( operation_name: impl ToString, - session: &Session, + session: &CookieJar, values: impl Serialize + SeekTableId, column_comment: impl Serialize, ) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { @@ -169,7 +175,7 @@ pub(crate) fn generate_operation_modify_log( #[inline(always)] pub(crate) fn generate_operation_delete_log( operation_name: impl ToString, - session: &Session, + session: &CookieJar, values: impl Serialize + SeekTableId, column_comment: impl Serialize, ) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { @@ -187,7 +193,7 @@ macro_rules! generate_operation_log_fn{ $( concat_idents!(fn_name = generate_operation_, $operation_name, _, "addtion", _log { #[allow(dead_code)] - pub(crate) fn fn_name(session: &Session, values: impl Serialize + SeekTableId) + pub(crate) fn fn_name(session: &CookieJar, values: impl Serialize + SeekTableId) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { generate_operation_addtion_log($operation_name, session, values, $column_comment) } @@ -195,7 +201,7 @@ macro_rules! generate_operation_log_fn{ concat_idents!(fn_name = generate_operation_, $operation_name, _, "modify", _log { #[allow(dead_code)] - pub(crate) fn fn_name(session: &Session, values: impl Serialize + SeekTableId) + pub(crate) fn fn_name(session: &CookieJar, values: impl Serialize + SeekTableId) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { generate_operation_modify_log($operation_name, session, values, $column_comment) } @@ -203,7 +209,7 @@ macro_rules! generate_operation_log_fn{ concat_idents!(fn_name = generate_operation_, $operation_name, _, "delete", _log { #[allow(dead_code)] - pub(crate) fn fn_name(session: &Session, values: impl Serialize + SeekTableId) + pub(crate) fn fn_name(session: &CookieJar, values: impl Serialize + SeekTableId) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { generate_operation_delete_log($operation_name, session, values, $column_comment) } diff --git a/delicate-scheduler/src/main.rs b/delicate-scheduler/src/main.rs index 12a3442..3ff3d54 100644 --- a/delicate-scheduler/src/main.rs +++ b/delicate-scheduler/src/main.rs @@ -112,17 +112,20 @@ fn main() -> AnyResut<()> { // #[cfg(APP_DEBUG_MODE)] // let cors = cors.allow_origin("*"); - // let app = App::new() - // // .configure(actions::task::config) - // // .configure(actions::user::config) - // // .configure(actions::task_log::config) - // // .configure(actions::executor_group::config) - // // .configure(actions::executor_processor::config) - // // .configure(actions::executor_processor_bind::config) - // // .configure(actions::data_reports::config) - // // .configure(actions::components::config) - // // .configure(actions::operation_log::config) - // // .configure(actions::user_login_log::config) + // FIXME: Reference poem/routes.rs + let app = Some(Route::new()) + .map(actions::task::config_route) + .map(actions::user::config_route) + .map(actions::task_log::config_route) + .map(actions::executor_group::config_route) + .map(actions::executor_processor::config_route) + .map(actions::executor_processor_bind::config_route) + .map(actions::data_reports::config_route) + .map(actions::components::config_route) + .map(actions::operation_log::config_route) + .map(actions::user_login_log::config_route) + .expect(""); + // .app_data(shared_delay_timer.clone()) // .app_data(shared_connection_pool.clone()) // .app_data(shared_scheduler_meta_info.clone()); diff --git a/delicate-scheduler/src/prelude.rs b/delicate-scheduler/src/prelude.rs index e00c2e5..a164d0b 100644 --- a/delicate-scheduler/src/prelude.rs +++ b/delicate-scheduler/src/prelude.rs @@ -67,14 +67,12 @@ pub(crate) use diesel::r2d2::CustomizeConnection; pub(crate) use diesel::result::Error as DieselError; pub(crate) use diesel::sql_types; -pub(crate) use actix_session::{CookieSession, Session, UserSession}; pub(crate) use actix_web::client::Client as RequestClient; pub(crate) use actix_web::dev::Decompress; pub(crate) use actix_web::dev::Payload; pub(crate) use actix_web::dev::{ HttpResponseBuilder, Service, ServiceRequest, ServiceResponse, Transform, }; -pub(crate) use actix_web::http::StatusCode; pub(crate) use actix_web::middleware::Logger as MiddlewareLogger; pub(crate) use actix_web::rt::spawn as rt_spawn; pub(crate) use actix_web::rt::time::{ @@ -109,10 +107,11 @@ pub(crate) use strum::IntoEnumIterator; pub(crate) use strum_macros::{AsRefStr, EnumIter, IntoStaticStr, ToString as StrumToString}; pub(crate) use validator::{Validate, ValidationErrors}; -pub(crate) use poem::http::Method; +pub(crate) use poem::http::{Method, Uri}; pub(crate) use poem::listener::TcpListener; pub(crate) use poem::middleware::AddData; pub(crate) use poem::middleware::Cors; +pub(crate) use poem::web::cookie::{Cookie, CookieJar}; pub(crate) use poem::web::{Data, IntoResponse, Json}; pub(crate) use poem::{ get, handler, post, Endpoint, EndpointExt, Middleware, Request, Route, Server, diff --git a/delicate-utils/Cargo.toml b/delicate-utils/Cargo.toml index 803aa2a..b71d05b 100644 --- a/delicate-utils/Cargo.toml +++ b/delicate-utils/Cargo.toml @@ -13,8 +13,7 @@ name = "delicate_utils" async-lock = "^2.3.0" actix-web = "^3.3.2" actix-session = "0.4.1" -# TODO: This(casbin-version) must be changed when upgrading to actix-web4. -casbin = {version = '2.0.5', default-features = false, features = ["incremental", "logging", "tokio", "runtime-tokio", "watcher"]} +casbin = {version = '2.0.9', default-features = false, features = ["incremental", "logging", "tokio", "runtime-tokio", "watcher"]} derive_more = "^0.99.14" delay_timer = {version = "^0.9.0", features = ["full"]} fastrand = "^1.4.1" @@ -22,12 +21,11 @@ flexi_logger = {version = "0.19", features = ["trc"]} reqwest = { version = "0.11", features = ["json"] } hex = {version = "^0.4", features = ["serde"]} log = "^0.4" -poem = "1.0.1" +poem = {version = "1.0.1", features = ["cookie", "tower-compat"]} rand = "^0.8.3" ring = "^0.16.20" rsa = { version = "^0.4.0", features = ["std", "pem" ,"serde"] } -# TODO: This(redis-version) must be changed when upgrading to actix-web4. -redis = { version = "= 0.17.0", features = ["connection-manager", "tokio-comp"] } +redis = { version = "0.21.2", features = ["connection-manager", "tokio-comp"] } serde = { version = "^1.0", features = ["derive"] } serde_json = "^1.0.62" sysinfo = "^0.16.5" diff --git a/migrate_to_poem..md b/migrate_to_poem..md index 89b3806..6d86b60 100644 --- a/migrate_to_poem..md +++ b/migrate_to_poem..md @@ -56,4 +56,46 @@ pub(crate) fn config_route(route: Route) -> Route { .at("/api/binding/list", get(binding_list)) .at("/api/executor/list", get(executor_list)) .at("/api/permission/list", get(permission_list)) -} \ No newline at end of file +} + + let app = App::new() + .configure(actions::task::config) + .configure(actions::user::config) + .configure(actions::task_log::config) + .configure(actions::executor_group::config) + .configure(actions::executor_processor::config) + .configure(actions::executor_processor_bind::config) + .configure(actions::data_reports::config) + .configure(actions::components::config) + .configure(actions::operation_log::config) + .configure(actions::user_login_log::config); + + let app = Some(Route::new()) + .map(actions::task::config_route) + .map(actions::user::config_route) + .map(actions::task_log::config_route) + .map(actions::executor_group::config_route) + .map(actions::executor_processor::config_route) + .map(actions::executor_processor_bind::config_route) + .map(actions::data_reports::config_route) + .map(actions::components::config_route) + .map(actions::operation_log::config_route) + .map(actions::user_login_log::config_route) + .expect(""); + +// remove patch and older packages. + +# TODO: This(casbin-patch) must be remove when upgrading to actix-web4. +[patch.crates-io] +casbin = { git = 'https://github.com/BinChengZhao/casbin-rs', branch = 'fix-casbin-v2.0.5-compile-bug' } + + # TODO: This(casbin-version) must be changed when upgrading to poem. +casbin = {version = '2.0.5', default-features = false, features = ["incremental", "logging", "tokio", "runtime-tokio", "watcher"]} + + +# TODO: This(redis-version) must be changed when upgrading to poem. +redis = { version = "= 0.17.0", features = ["connection-manager", "tokio-comp"] } + +// Cookie 中间件,不能用户配置属性有点不方便。 +// 通过CookieJar,每存一个新Cookie都需要手动配置安全相关的属性。 +// 如果中间件支持用户配置一次,后续默认走配置的属性就可以很简洁。 \ No newline at end of file From 54d1a950eedbbdb40081a2c8196d597b554392fc Mon Sep 17 00:00:00 2001 From: BinChengZhao Date: Fri, 15 Oct 2021 01:23:08 +0800 Subject: [PATCH 05/13] feat: Thrid step of migrate to poem. --- delicate-scheduler/Cargo.toml | 1 - delicate-scheduler/src/actions/components.rs | 25 +- .../src/actions/data_reports.rs | 14 +- .../src/actions/executor_group.rs | 127 +++--- .../src/actions/executor_processor.rs | 144 ++++--- .../src/actions/executor_processor_bind.rs | 124 +++--- .../src/actions/operation_log.rs | 88 ++-- delicate-scheduler/src/actions/task.rs | 379 +++++++++--------- delicate-scheduler/src/actions/task_log.rs | 114 +++--- delicate-scheduler/src/actions/user.rs | 142 ++++--- .../src/actions/user_login_log.rs | 68 ++-- .../auth/casbin/adapter/adapter_core.rs | 74 ++-- .../auth/casbin/casbin_event_consumer.rs | 14 +- .../src/components/auth/casbin/middleware.rs | 103 +++-- .../src/components/health_checker.rs | 155 +++---- delicate-scheduler/src/components/helper.rs | 66 +-- .../src/components/operation_log_consumer.rs | 8 +- delicate-scheduler/src/components/session.rs | 33 +- .../src/db/mysql/model/executor_processor.rs | 8 +- delicate-scheduler/src/main.rs | 69 ++-- delicate-scheduler/src/prelude.rs | 32 +- delicate-utils/Cargo.toml | 2 - delicate-utils/src/error.rs | 15 +- delicate-utils/src/prelude.rs | 11 +- delicate-utils/src/uniform_data.rs | 48 ++- migrate_to_poem..md | 45 ++- 26 files changed, 1077 insertions(+), 832 deletions(-) diff --git a/delicate-scheduler/Cargo.toml b/delicate-scheduler/Cargo.toml index dfa0fe7..b7be277 100644 --- a/delicate-scheduler/Cargo.toml +++ b/delicate-scheduler/Cargo.toml @@ -14,7 +14,6 @@ documentation = "" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -actix-web = "^3.3.2" async-channel = "1.6.1" async-lock = "^2.4.0" async-trait = "0.1.51" diff --git a/delicate-scheduler/src/actions/components.rs b/delicate-scheduler/src/actions/components.rs index b1e00a7..c8e8446 100644 --- a/delicate-scheduler/src/actions/components.rs +++ b/delicate-scheduler/src/actions/components.rs @@ -16,11 +16,16 @@ async fn binding_list(pool: Data<&db::ConnectionPool>) -> impl IntoResponse { if let Ok(conn) = pool.get() { return Json( Into::>>::into( - web::block::<_, _, diesel::result::Error>(move || { + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { ExecutorProcessorBindQueryBuilder::query_binding_columns() .load::(&conn) }) - .await, + .await + .map(|r| r.into()) + .unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }), ), ); } @@ -35,11 +40,16 @@ async fn executor_list(pool: Data<&db::ConnectionPool>) -> impl IntoResponse { if let Ok(conn) = pool.get() { return Json( Into::>>::into( - web::block::<_, _, diesel::result::Error>(move || { + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { ExecutorProcessorQueryBuilder::query_selection_columns() .load::(&conn) }) - .await, + .await + .map(|r| r.into()) + .unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }), ), ); } @@ -53,7 +63,7 @@ async fn permission_list(pool: Data<&db::ConnectionPool>) -> impl IntoResponse { // TODO: Awaiting follow-up adjustment. if let Ok(conn) = pool.get() { - let permissions = web::block::<_, _, diesel::result::Error>(move || { + let permissions = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { casbin_rule::table .select((casbin_rule::v1, casbin_rule::v2)) .filter(casbin_rule::ptype.eq("p")) @@ -69,7 +79,10 @@ async fn permission_list(pool: Data<&db::ConnectionPool>) -> impl IntoResponse { .await; let response_permissions: UnifiedResponseMessages> = - permissions.into(); + permissions.map(|r| r.into()).unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }); return Json(response_permissions); } diff --git a/delicate-scheduler/src/actions/data_reports.rs b/delicate-scheduler/src/actions/data_reports.rs index 373872b..045888d 100644 --- a/delicate-scheduler/src/actions/data_reports.rs +++ b/delicate-scheduler/src/actions/data_reports.rs @@ -10,7 +10,7 @@ async fn show_one_day_tasks_state(pool: Data<&db::ConnectionPool>) -> impl IntoR use state::task_log::State; if let Ok(conn) = pool.get() { - let daily_state_result = web::block::<_, _, diesel::result::Error>(move || { + let daily_state_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { let datetime: DateTime = SystemTime::now().into(); let now = datetime.naive_local(); let raw_past_day = now - ChronoDuration::days(1); @@ -74,9 +74,15 @@ async fn show_one_day_tasks_state(pool: Data<&db::ConnectionPool>) -> impl IntoR )) }) .await; - return Json(Into::>::into( - daily_state_result, - )); + let daily_state = daily_state_result + .map(|daily_state_result| { + Into::>::into(daily_state_result) + }) + .unwrap_or_else(|e| { + UnifiedResponseMessages::::error() + .customized_error_msg(e.to_string()) + }); + return Json(daily_state); } Json(UnifiedResponseMessages::::error()) diff --git a/delicate-scheduler/src/actions/executor_group.rs b/delicate-scheduler/src/actions/executor_group.rs index e410b71..5cfb7f0 100644 --- a/delicate-scheduler/src/actions/executor_group.rs +++ b/delicate-scheduler/src/actions/executor_group.rs @@ -26,16 +26,22 @@ async fn create_executor_group( // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return Json(Into::>::into( - web::block(move || { - diesel::insert_into(executor_group::table) - .values(&executor_group) - .execute(&conn)?; + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + diesel::insert_into(executor_group::table) + .values(&executor_group) + .execute(&conn)?; - diesel::select(db::last_insert_id).get_result::(&conn) - }) - .await, - )); + diesel::select(db::last_insert_id).get_result::(&conn) + }) + .await; + + let id = f_result + .map(|id_result| Into::>::into(id_result)) + .unwrap_or_else(|e| { + UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) + }); + + return Json(id); } Json(UnifiedResponseMessages::::error()) @@ -47,32 +53,40 @@ async fn show_executor_groups( pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { if let Ok(conn) = pool.get() { - return Json(Into::< - UnifiedResponseMessages>, - >::into( - web::block::<_, _, diesel::result::Error>(move || { - let query_builder = model::ExecutorGroupQueryBuilder::query_all_columns(); - - let executor_groups = query_params - .clone() - .query_filter(query_builder) - .paginate(query_params.page) - .set_per_page(query_params.per_page) - .load::(&conn)?; - - let per_page = query_params.per_page; - let count_builder = model::ExecutorGroupQueryBuilder::query_count(); - let count = query_params - .query_filter(count_builder) - .get_result::(&conn)?; - - Ok(PaginateData::::default() - .set_data_source(executor_groups) - .set_page_size(per_page) - .set_total(count)) + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let query_builder = model::ExecutorGroupQueryBuilder::query_all_columns(); + + let executor_groups = query_params + .clone() + .query_filter(query_builder) + .paginate(query_params.page) + .set_per_page(query_params.per_page) + .load::(&conn)?; + + let per_page = query_params.per_page; + let count_builder = model::ExecutorGroupQueryBuilder::query_count(); + let count = query_params + .query_filter(count_builder) + .get_result::(&conn)?; + + Ok(PaginateData::::default() + .set_data_source(executor_groups) + .set_page_size(per_page) + .set_total(count)) + }) + .await; + + let page = f_result + .map(|page_result| { + Into::>>::into( + page_result, + ) }) - .await, - )); + .unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }); + return Json(page); } Json(UnifiedResponseMessages::>::error()) @@ -109,7 +123,7 @@ async fn pre_show_executor_group_detail( let conn = pool.get()?; let executor_group_detail: model::ExecutorGroupDetail = - web::block::<_, _, diesel::result::Error>(move || { + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { let executor_group_detail_inner = executor_group::table .select(executor_group::all_columns) .find(executor_group_id) @@ -134,7 +148,7 @@ async fn pre_show_executor_group_detail( bindings, }) }) - .await?; + .await??; Ok(executor_group_detail) } @@ -152,14 +166,20 @@ async fn update_executor_group( // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return Json(Into::>::into( - web::block(move || { - diesel::update(&executor_group) - .set(&executor_group) - .execute(&conn) - }) - .await, - )); + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + diesel::update(&executor_group) + .set(&executor_group) + .execute(&conn) + }) + .await; + + let count = f_result + .map(|count_result| Into::>::into(count_result)) + .unwrap_or_else(|e| { + UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) + }); + + return Json(count); } Json(UnifiedResponseMessages::::error()) @@ -183,13 +203,18 @@ async fn delete_executor_group( // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return Json(Into::>::into( - web::block(move || { - // Cannot link to delete internal bindings, otherwise it will cause data misalignment. - diesel::delete(executor_group.find(executor_group_id)).execute(&conn) - }) - .await, - )); + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + // Cannot link to delete internal bindings, otherwise it will cause data misalignment. + diesel::delete(executor_group.find(executor_group_id)).execute(&conn) + }) + .await; + + let count = f_result + .map(|count_result| Into::>::into(count_result)) + .unwrap_or_else(|e| { + UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) + }); + return Json(count); } Json(UnifiedResponseMessages::::error()) diff --git a/delicate-scheduler/src/actions/executor_processor.rs b/delicate-scheduler/src/actions/executor_processor.rs index 731a259..c9af1e6 100644 --- a/delicate-scheduler/src/actions/executor_processor.rs +++ b/delicate-scheduler/src/actions/executor_processor.rs @@ -40,14 +40,19 @@ async fn create_executor_processor( // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return Json(Into::>::into( - web::block(move || { - diesel::insert_into(executor_processor::table) - .values(&executor_processor) - .execute(&conn) - }) - .await, - )); + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + diesel::insert_into(executor_processor::table) + .values(&executor_processor) + .execute(&conn) + }) + .await; + + let count = f_result + .map(|count_result| Into::>::into(count_result)) + .unwrap_or_else(|e| { + UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) + }); + return Json(count); } Json(UnifiedResponseMessages::::error()) @@ -59,33 +64,40 @@ async fn show_executor_processors( pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { if let Ok(conn) = pool.get() { - return Json(Into::< - UnifiedResponseMessages>, - >::into( - web::block::<_, _, diesel::result::Error>(move || { - let query_builder = model::ExecutorProcessorQueryBuilder::query_all_columns(); - - let executor_processors = query_params - .clone() - .query_filter(query_builder) - .paginate(query_params.page) - .set_per_page(query_params.per_page) - .load::(&conn)?; - - let per_page = query_params.per_page; - let count_builder = model::ExecutorProcessorQueryBuilder::query_count(); - let count = query_params - .query_filter(count_builder) - .get_result::(&conn)?; - - Ok(PaginateData::::default() - .set_data_source(executor_processors) - .set_page_size(per_page) - .set_total(count) - .set_state_desc::()) + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let query_builder = model::ExecutorProcessorQueryBuilder::query_all_columns(); + + let executor_processors = query_params + .clone() + .query_filter(query_builder) + .paginate(query_params.page) + .set_per_page(query_params.per_page) + .load::(&conn)?; + + let per_page = query_params.per_page; + let count_builder = model::ExecutorProcessorQueryBuilder::query_count(); + let count = query_params + .query_filter(count_builder) + .get_result::(&conn)?; + + Ok(PaginateData::::default() + .set_data_source(executor_processors) + .set_page_size(per_page) + .set_total(count) + .set_state_desc::()) + }) + .await; + let processor = f_result + .map(|processor_result| { + Into::>>::into( + processor_result, + ) }) - .await, - )); + .unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }); + return Json(processor); } Json(UnifiedResponseMessages::< @@ -106,14 +118,19 @@ async fn update_executor_processor( // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return Json(Into::>::into( - web::block(move || { - diesel::update(&executor_processor) - .set(&executor_processor) - .execute(&conn) - }) - .await, - )); + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + diesel::update(&executor_processor) + .set(&executor_processor) + .execute(&conn) + }) + .await; + + let count = f_result + .map(|count_result| Into::>::into(count_result)) + .unwrap_or_else(|e| { + UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) + }); + return Json(count); } Json(UnifiedResponseMessages::::error()) @@ -139,12 +156,17 @@ async fn delete_executor_processor( // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return Json(Into::>::into( - web::block(move || { - diesel::delete(executor_processor.find(executor_processor_id)).execute(&conn) - }) - .await, - )); + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + diesel::delete(executor_processor.find(executor_processor_id)).execute(&conn) + }) + .await; + + let count = f_result + .map(|count_result| Into::>::into(count_result)) + .unwrap_or_else(|e| { + UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) + }); + return Json(count); } Json(UnifiedResponseMessages::::error()) @@ -182,7 +204,7 @@ async fn activate_executor( executor_processor_id: i64, scheduler: Data<&SchedulerMetaInfo>, ) -> Result { - let query = web::block::<_, model::UpdateExecutorProcessor, diesel::result::Error>(move || { + let query = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { executor_processor::table .find(executor_processor_id) .select(( @@ -195,7 +217,7 @@ async fn activate_executor( )) .first(&conn) }) - .await?; + .await??; let model::UpdateExecutorProcessor { id, @@ -219,15 +241,17 @@ async fn activate_executor( .set_time(get_timestamp()) .sign(private_key)?; - let response: Result = client - .post(url) - .send_json(&signed_scheduler) - .await? - .json::>() - .await? - .into(); + // FIXME: + todo!(); + // let response: Result = client + // .post(url) + // .send_json(&signed_scheduler) + // .await? + // .json::>() + // .await? + // .into(); - Ok(response?.decrypt_self(private_key)?) + // Ok(response?.decrypt_self(private_key)?) } async fn activate_executor_row( @@ -242,7 +266,7 @@ async fn activate_executor_row( // This will avoid querying the database. // However, cached record operations cannot be placed in the context of the operation db update token. - web::block::<_, usize, diesel::result::Error>(move || { + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { diesel::update(executor_processor.find(executor_processor_id)) .set(( token.eq(&bind_info.token.unwrap_or_default()), @@ -250,7 +274,7 @@ async fn activate_executor_row( )) .execute(&conn) }) - .await?; + .await??; Ok(()) } diff --git a/delicate-scheduler/src/actions/executor_processor_bind.rs b/delicate-scheduler/src/actions/executor_processor_bind.rs index 73c8020..419512e 100644 --- a/delicate-scheduler/src/actions/executor_processor_bind.rs +++ b/delicate-scheduler/src/actions/executor_processor_bind.rs @@ -39,25 +39,30 @@ async fn create_executor_processor_bind( // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return Json(Into::>::into( - web::block(move || { - let new_binds: Vec = executor_processor_binds - .executor_ids - .iter() - .map(|executor_id| model::NewExecutorProcessorBind { - name: executor_processor_binds.name.clone(), - group_id: executor_processor_binds.group_id, - executor_id: *executor_id, - weight: executor_processor_binds.weight, - }) - .collect(); - - diesel::insert_into(executor_processor_bind::table) - .values(&new_binds[..]) - .execute(&conn) - }) - .await, - )); + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let new_binds: Vec = executor_processor_binds + .executor_ids + .iter() + .map(|executor_id| model::NewExecutorProcessorBind { + name: executor_processor_binds.name.clone(), + group_id: executor_processor_binds.group_id, + executor_id: *executor_id, + weight: executor_processor_binds.weight, + }) + .collect(); + + diesel::insert_into(executor_processor_bind::table) + .values(&new_binds[..]) + .execute(&conn) + }) + .await; + + let count = f_result + .map(|count_result| Into::>::into(count_result)) + .unwrap_or_else(|e| { + UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) + }); + return Json(count); } Json(UnifiedResponseMessages::::error()) @@ -70,32 +75,40 @@ async fn show_executor_processor_binds( pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { if let Ok(conn) = pool.get() { - return Json(Into::< - UnifiedResponseMessages>, - >::into( - web::block::<_, _, diesel::result::Error>(move || { - let query_builder = model::ExecutorProcessorBindQueryBuilder::query_all_columns(); - - let executor_processor_binds = query_params - .clone() - .query_filter(query_builder) - .paginate(query_params.page) - .set_per_page(query_params.per_page) - .load::(&conn)?; - - let per_page = query_params.per_page; - let count_builder = model::ExecutorProcessorBindQueryBuilder::query_count(); - let count = query_params - .query_filter(count_builder) - .get_result::(&conn)?; - - Ok(PaginateData::::default() - .set_data_source(executor_processor_binds) - .set_page_size(per_page) - .set_total(count)) + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let query_builder = model::ExecutorProcessorBindQueryBuilder::query_all_columns(); + + let executor_processor_binds = query_params + .clone() + .query_filter(query_builder) + .paginate(query_params.page) + .set_per_page(query_params.per_page) + .load::(&conn)?; + + let per_page = query_params.per_page; + let count_builder = model::ExecutorProcessorBindQueryBuilder::query_count(); + let count = query_params + .query_filter(count_builder) + .get_result::(&conn)?; + + Ok(PaginateData::::default() + .set_data_source(executor_processor_binds) + .set_page_size(per_page) + .set_total(count)) + }) + .await; + + let binds = f_result + .map(|binds_result| { + Into::>>::into( + binds_result, + ) }) - .await, - )); + .unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }); + return Json(binds); } // FIXME: @@ -140,7 +153,7 @@ async fn show_executor_processor_binds( // // send_option_operation_log_pair(operation_log_pair_option).await; // let (older_executor_id, older_executor_host, older_executor_token) = -// web::block::<_, _, diesel::result::Error>(move || { +// spawn_blocking::<_,Result<_, diesel::result::Error>>(move || { // let older_executor = executor_processor_bind::table // .inner_join(executor_processor::table) // .filter(executor_processor_bind::id.eq(executor_processor_bind.id)) @@ -165,7 +178,7 @@ async fn show_executor_processor_binds( // // Task migration needs to be performed only when `executor_id` is modified. // let conn = pool.get()?; // let task_packages: Vec<(TaskPackage, (String, String))> = -// web::block::<_, _, diesel::result::Error>(move || { +// spawn_blocking::<_,Result<_, diesel::result::Error>>(move || { // let task_packages: Vec<(TaskPackage, (String, String))> = task_bind::table // .inner_join(executor_processor_bind::table.inner_join(executor_processor::table)) // .inner_join(task::table) @@ -249,13 +262,18 @@ async fn delete_executor_processor_bind( // TODO: Check if there are associated tasks on the binding. if let Ok(conn) = pool.get() { - return Json(Into::>::into( - web::block(move || { - diesel::delete(executor_processor_bind.find(executor_processor_bind_id)) - .execute(&conn) - }) - .await, - )); + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + diesel::delete(executor_processor_bind.find(executor_processor_bind_id)).execute(&conn) + }) + .await; + + let count = f_result + .map(|count_result| Into::>::into(count_result)) + .unwrap_or_else(|e| { + UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) + }); + + return Json(count); } Json(UnifiedResponseMessages::::error()) diff --git a/delicate-scheduler/src/actions/operation_log.rs b/delicate-scheduler/src/actions/operation_log.rs index 5df8e29..c5fa0d5 100644 --- a/delicate-scheduler/src/actions/operation_log.rs +++ b/delicate-scheduler/src/actions/operation_log.rs @@ -13,35 +13,43 @@ async fn show_operation_log( pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { if let Ok(conn) = pool.get() { - return Json(Into::< - UnifiedResponseMessages>, - >::into( - web::block::<_, _, diesel::result::Error>(move || { - let query_builder = model::OperationLogQueryBuilder::query_all_columns(); + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let query_builder = model::OperationLogQueryBuilder::query_all_columns(); - let operation_log = query_params - .clone() - .query_filter(query_builder) - .paginate(query_params.page) - .set_per_page(query_params.per_page) - .load::(&conn)?; + let operation_log = query_params + .clone() + .query_filter(query_builder) + .paginate(query_params.page) + .set_per_page(query_params.per_page) + .load::(&conn)?; - let per_page = query_params.per_page; - let count_builder = model::OperationLogQueryBuilder::query_count(); - let count = query_params - .query_filter(count_builder) - .get_result::(&conn)?; + let per_page = query_params.per_page; + let count_builder = model::OperationLogQueryBuilder::query_count(); + let count = query_params + .query_filter(count_builder) + .get_result::(&conn)?; - let front_end_operation_log: Vec = - operation_log.into_iter().map(|log| log.into()).collect(); - Ok(PaginateData::::default() - .set_data_source(front_end_operation_log) - .set_page_size(per_page) - .set_total(count) - .set_state_desc::()) + let front_end_operation_log: Vec = + operation_log.into_iter().map(|log| log.into()).collect(); + Ok(PaginateData::::default() + .set_data_source(front_end_operation_log) + .set_page_size(per_page) + .set_total(count) + .set_state_desc::()) + }) + .await; + + let page = f_result + .map(|page_result| { + Into::>>::into( + page_result, + ) }) - .await, - )); + .unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }); + return Json(page); } Json(UnifiedResponseMessages::< @@ -57,20 +65,26 @@ async fn show_operation_log_detail( use db::schema::operation_log_detail; if let Ok(conn) = pool.get() { - return Json(Into::< - UnifiedResponseMessages>, - >::into( - web::block::<_, _, diesel::result::Error>(move || { - let operation_log_extend = operation_log_detail::table - .filter( - operation_log_detail::operation_log_id.eq(query_params.operation_log_id), - ) - .load::(&conn)?; + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let operation_log_extend = operation_log_detail::table + .filter(operation_log_detail::operation_log_id.eq(query_params.operation_log_id)) + .load::(&conn)?; + + Ok(operation_log_extend) + }) + .await; - Ok(operation_log_extend) + let log_detail = f_result + .map(|log_detail_result| { + Into::>>::into( + log_detail_result, + ) }) - .await, - )); + .unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }); + return Json(log_detail); } Json(UnifiedResponseMessages::>::error()) diff --git a/delicate-scheduler/src/actions/task.rs b/delicate-scheduler/src/actions/task.rs index b1839bb..bcb1a61 100644 --- a/delicate-scheduler/src/actions/task.rs +++ b/delicate-scheduler/src/actions/task.rs @@ -27,27 +27,31 @@ async fn create_task( // generate_operation_task_addtion_log(&req.get_session(), &task).ok(); // send_option_operation_log_pair(operation_log_pair_option).await; - return Json(Into::>::into( - web::block::<_, _, diesel::result::Error>(move || { - conn.transaction::<_, _, _>(|| { - diesel::insert_into(task::table) - .values(&task) - .execute(&conn)?; - let task_id = - diesel::select(db::last_insert_id).get_result::(&conn)? as i64; - - let new_task_binds: Vec = binding_ids - .into_iter() - .map(|bind_id| model::NewTaskBind { task_id, bind_id }) - .collect(); - - diesel::insert_into(task_bind::table) - .values(&new_task_binds) - .execute(&conn) - }) + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + conn.transaction::<_, _, _>(|| { + diesel::insert_into(task::table) + .values(&task) + .execute(&conn)?; + let task_id = diesel::select(db::last_insert_id).get_result::(&conn)? as i64; + + let new_task_binds: Vec = binding_ids + .into_iter() + .map(|bind_id| model::NewTaskBind { task_id, bind_id }) + .collect(); + + diesel::insert_into(task_bind::table) + .values(&new_task_binds) + .execute(&conn) }) - .await, - )); + }) + .await; + + let count = f_result + .map(|count_result| Into::>::into(count_result)) + .unwrap_or_else(|e| { + UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) + }); + return Json(count); } Json(UnifiedResponseMessages::::error()) @@ -62,55 +66,63 @@ async fn show_tasks( use db::schema::task_bind; if let Ok(conn) = pool.get() { - return Json(Into::< - UnifiedResponseMessages>, - >::into( - web::block::<_, _, diesel::result::Error>(move || { - let query_builder = model::TaskQueryBuilder::query_all_columns(); - - let mut tasks: HashMap = query_params - .clone() - .query_filter(query_builder) - .paginate(query_params.page) - .set_per_page(query_params.per_page) - .load::(&conn)? - .into_iter() - .map(|t| (t.id, t.into())) - .collect(); + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let query_builder = model::TaskQueryBuilder::query_all_columns(); - let tasks_ids: Vec = tasks.iter().map(|(id, _)| *id).collect(); + let mut tasks: HashMap = query_params + .clone() + .query_filter(query_builder) + .paginate(query_params.page) + .set_per_page(query_params.per_page) + .load::(&conn)? + .into_iter() + .map(|t| (t.id, t.into())) + .collect(); - let tasks_bind_pairs = task_bind::table - .select((task_bind::task_id, task_bind::bind_id)) - .filter(task_bind::task_id.eq_any(&tasks_ids[..])) - .load::<(i64, i64)>(&conn)?; + let tasks_ids: Vec = tasks.iter().map(|(id, _)| *id).collect(); - tasks_bind_pairs.into_iter().for_each(|(task_id, bind_id)| { - if let Some(task) = tasks.get_mut(&task_id) { - task.binding_ids.push(bind_id); - } - }); + let tasks_bind_pairs = task_bind::table + .select((task_bind::task_id, task_bind::bind_id)) + .filter(task_bind::task_id.eq_any(&tasks_ids[..])) + .load::<(i64, i64)>(&conn)?; - let per_page = query_params.per_page; - let count_builder = model::TaskQueryBuilder::query_count(); - let count = query_params - .query_filter(count_builder) - .get_result::(&conn)?; + tasks_bind_pairs.into_iter().for_each(|(task_id, bind_id)| { + if let Some(task) = tasks.get_mut(&task_id) { + task.binding_ids.push(bind_id); + } + }); - let mut front_end_task = tasks - .into_iter() - .map(|(_, t)| t) - .collect::>(); - - front_end_task.sort_by(|a, b| a.id.cmp(&b.id)); - Ok(PaginateData::::default() - .set_data_source(front_end_task) - .set_page_size(per_page) - .set_total(count) - .set_state_desc::()) + let per_page = query_params.per_page; + let count_builder = model::TaskQueryBuilder::query_count(); + let count = query_params + .query_filter(count_builder) + .get_result::(&conn)?; + + let mut front_end_task = tasks + .into_iter() + .map(|(_, t)| t) + .collect::>(); + + front_end_task.sort_by(|a, b| a.id.cmp(&b.id)); + Ok(PaginateData::::default() + .set_data_source(front_end_task) + .set_page_size(per_page) + .set_total(count) + .set_state_desc::()) + }) + .await; + + let page = f_result + .map(|page_result| { + Into::>>::into( + page_result, + ) }) - .await, - )); + .unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }); + return Json(page); } Json(UnifiedResponseMessages::>::error()) @@ -166,7 +178,7 @@ pub async fn pre_update_task_row( use db::schema::{executor_processor, executor_processor_bind, task_bind}; use model::BindProcessor; - let task_binds_pair = web::block::<_, _, diesel::result::Error>(move || { + let task_binds_pair = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { conn.transaction(|| { let task_id = task.id; let update_effect_row = diesel::update(&task).set(&task).execute(&conn)?; @@ -259,7 +271,7 @@ pub async fn pre_update_task_row( )) }) }) - .await?; + .await??; Ok(task_binds_pair) } @@ -293,85 +305,87 @@ pub async fn pre_update_task_sevice( let task_id = task_package.id; - if status == state::task::State::Enabled as i16 { - let remove_tasks_future: JoinAll<_> = removed_bind_processors - .into_iter() - .filter_map(|processor| { - let executor_host = - "http://".to_string() + (processor.host.deref()) + "/api/task/remove"; - - let message = delicate_utils_task::TaskUnit::default() - .set_task_id(task_id) - .set_time(get_timestamp()); - - info!("Remove task{} at:{}", &task_package, &executor_host); - message - .sign(Some(&processor.token)) - .map(|s| (s, executor_host)) - .ok() - }) - .map(|(signed_task_unit, executor_host)| { - RequestClient::default() - .post(executor_host) - .send_json(&signed_task_unit) - }) - .collect::>() - .into_iter() - .collect(); - - let append_tasks_future: JoinAll<_> = append_bind_processors - .into_iter() - .filter_map(|processor| { - let executor_host = - "http://".to_string() + (processor.host.deref()) + "/api/task/create"; - - info!("Create task{} at:{}", &task_package, &executor_host); - task_package - .clone() - .sign(Some(&processor.token)) - .map(|s| (s, executor_host)) - .ok() - }) - .map(|(signed_task_package, executor_host)| { - RequestClient::default() - .post(executor_host) - .send_json(&signed_task_package) - }) - .collect::>() - .into_iter() - .collect(); - - let update_tasks_future: JoinAll<_> = reserved_bind_processors - .into_iter() - .filter_map(|processor| { - let executor_host = - "http://".to_string() + (processor.host.deref()) + "/api/task/update"; - - info!("Update task {} at:{}", &task_package, &executor_host); - task_package - .clone() - .sign(Some(&processor.token)) - .map(|s| (s, executor_host)) - .ok() - }) - .map(|(signed_task_package, executor_host)| { - RequestClient::default() - .post(executor_host) - .send_json(&signed_task_package) - }) - .collect::>() - .into_iter() - .collect(); - - join3( - handle_response::>(remove_tasks_future), - handle_response::>(append_tasks_future), - handle_response::>(update_tasks_future), - ) - .await; - } - - Ok(()) + // FIXME: + todo!(); + // if status == state::task::State::Enabled as i16 { + // let remove_tasks_future: JoinAll<_> = removed_bind_processors + // .into_iter() + // .filter_map(|processor| { + // let executor_host = + // "http://".to_string() + (processor.host.deref()) + "/api/task/remove"; + + // let message = delicate_utils_task::TaskUnit::default() + // .set_task_id(task_id) + // .set_time(get_timestamp()); + + // info!("Remove task{} at:{}", &task_package, &executor_host); + // message + // .sign(Some(&processor.token)) + // .map(|s| (s, executor_host)) + // .ok() + // }) + // .map(|(signed_task_unit, executor_host)| { + // RequestClient::default() + // .post(executor_host) + // .send_json(&signed_task_unit) + // }) + // .collect::>() + // .into_iter() + // .collect(); + + // let append_tasks_future: JoinAll<_> = append_bind_processors + // .into_iter() + // .filter_map(|processor| { + // let executor_host = + // "http://".to_string() + (processor.host.deref()) + "/api/task/create"; + + // info!("Create task{} at:{}", &task_package, &executor_host); + // task_package + // .clone() + // .sign(Some(&processor.token)) + // .map(|s| (s, executor_host)) + // .ok() + // }) + // .map(|(signed_task_package, executor_host)| { + // RequestClient::default() + // .post(executor_host) + // .send_json(&signed_task_package) + // }) + // .collect::>() + // .into_iter() + // .collect(); + + // let update_tasks_future: JoinAll<_> = reserved_bind_processors + // .into_iter() + // .filter_map(|processor| { + // let executor_host = + // "http://".to_string() + (processor.host.deref()) + "/api/task/update"; + + // info!("Update task {} at:{}", &task_package, &executor_host); + // task_package + // .clone() + // .sign(Some(&processor.token)) + // .map(|s| (s, executor_host)) + // .ok() + // }) + // .map(|(signed_task_package, executor_host)| { + // RequestClient::default() + // .post(executor_host) + // .send_json(&signed_task_package) + // }) + // .collect::>() + // .into_iter() + // .collect(); + + // join3( + // handle_response::>(remove_tasks_future), + // handle_response::>(append_tasks_future), + // handle_response::>(update_tasks_future), + // ) + // .await; + // } + + // Ok(()) } #[handler] @@ -394,15 +408,20 @@ async fn delete_task( // delete if let Ok(conn) = pool.get() { - return Json(Into::>::into( - web::block::<_, _, diesel::result::Error>(move || { - diesel::delete(task::table.find(task_id)).execute(&conn)?; - diesel::delete(task_bind::table.filter(task_bind::task_id.eq(task_id))) - .execute(&conn)?; - Ok(()) - }) - .await, - )); + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + diesel::delete(task::table.find(task_id)).execute(&conn)?; + diesel::delete(task_bind::table.filter(task_bind::task_id.eq(task_id))) + .execute(&conn)?; + Ok(()) + }) + .await; + + let resp = f_result + .map(|resp_result| Into::>::into(resp_result)) + .unwrap_or_else(|e| { + UnifiedResponseMessages::<()>::error().customized_error_msg(e.to_string()) + }); + return Json(resp); } Json(UnifiedResponseMessages::<()>::error()) @@ -486,7 +505,7 @@ async fn pre_run_task( // Many machine. let task_packages: Vec<(delicate_utils_task::TaskPackage, (String, String))> = - web::block(move || { + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { diesel::update(task.find(task_id)) .set(task::status.eq(State::Enabled as i16)) .execute(&conn)?; @@ -508,31 +527,33 @@ async fn pre_run_task( .filter(task_bind::task_id.eq(task_id)) .load::<(delicate_utils_task::TaskPackage, (String, String))>(&conn) }) - .await?; - - let request_all: JoinAll<_> = task_packages - .into_iter() - .filter_map(|(task_package, (executor_host_str, executor_token))| { - let executor_host = - "http://".to_string() + (executor_host_str.deref()) + "/api/task/create"; - info!("Run task{} at:{}", &task_package, &executor_host); - task_package - .sign(Some(&executor_token)) - .map(|s| (s, executor_host)) - .ok() - }) - .map(|(signed_task_package, executor_host)| { - RequestClient::default() - .post(executor_host) - .send_json(&signed_task_package) - }) - .collect::>() - .into_iter() - .collect(); - - handle_response::>(request_all).await; + .await??; - Ok(()) + // FIXME: + todo!(); + // let request_all: JoinAll<_> = task_packages + // .into_iter() + // .filter_map(|(task_package, (executor_host_str, executor_token))| { + // let executor_host = + // "http://".to_string() + (executor_host_str.deref()) + "/api/task/create"; + // info!("Run task{} at:{}", &task_package, &executor_host); + // task_package + // .sign(Some(&executor_token)) + // .map(|s| (s, executor_host)) + // .ok() + // }) + // .map(|(signed_task_package, executor_host)| { + // RequestClient::default() + // .post(executor_host) + // .send_json(&signed_task_package) + // }) + // .collect::>() + // .into_iter() + // .collect(); + + // handle_response::>(request_all).await; + + // Ok(()) } // FIXME: @@ -558,7 +579,7 @@ async fn pre_run_task( // send_option_operation_log_pair(operation_log_pair_option).await; // Many machine. -// let executor_packages: IntoIter<(String, String)> = web::block(move || { +// let executor_packages: IntoIter<(String, String)> = spawn_blocking::<_,Result<_, diesel::result::Error>>(move || { // // TODO: Optimize. // if action.eq("Suspend") { // diesel::update(task::table.find(task_id)) diff --git a/delicate-scheduler/src/actions/task_log.rs b/delicate-scheduler/src/actions/task_log.rs index 1cc3939..c6f1478 100644 --- a/delicate-scheduler/src/actions/task_log.rs +++ b/delicate-scheduler/src/actions/task_log.rs @@ -71,7 +71,7 @@ async fn pre_create_task_logs( debug!("{:?}, {:?}", &new_task_logs, &supply_task_logs); - let num = web::block::<_, _, diesel::result::Error>(move || { + let num = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { conn.transaction(|| { effect_num += batch_insert_task_logs(&conn, new_task_logs)?; @@ -80,7 +80,7 @@ async fn pre_create_task_logs( Ok(effect_num) }) }) - .await?; + .await??; Ok(num) } @@ -92,35 +92,43 @@ async fn show_task_logs( pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { if let Ok(conn) = pool.get() { - return Json(Into::< - UnifiedResponseMessages>, - >::into( - web::block::<_, _, diesel::result::Error>(move || { - let query_builder = model::TaskLogQueryBuilder::query_all_columns(); - - let task_logs = query_params - .clone() - .query_filter(query_builder) - .paginate(query_params.page) - .set_per_page(query_params.per_page) - .load::(&conn)?; - - let per_page = query_params.per_page; - let count_builder = model::TaskLogQueryBuilder::query_count(); - let count = query_params - .query_filter(count_builder) - .get_result::(&conn)?; - - let front_end_task_logs: Vec = - task_logs.into_iter().map(|t| t.into()).collect(); - Ok(PaginateData::::default() - .set_data_source(front_end_task_logs) - .set_page_size(per_page) - .set_total(count) - .set_state_desc::()) + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let query_builder = model::TaskLogQueryBuilder::query_all_columns(); + + let task_logs = query_params + .clone() + .query_filter(query_builder) + .paginate(query_params.page) + .set_per_page(query_params.per_page) + .load::(&conn)?; + + let per_page = query_params.per_page; + let count_builder = model::TaskLogQueryBuilder::query_count(); + let count = query_params + .query_filter(count_builder) + .get_result::(&conn)?; + + let front_end_task_logs: Vec = + task_logs.into_iter().map(|t| t.into()).collect(); + Ok(PaginateData::::default() + .set_data_source(front_end_task_logs) + .set_page_size(per_page) + .set_total(count) + .set_state_desc::()) + }) + .await; + + let page = f_result + .map(|page_result| { + Into::>>::into( + page_result, + ) }) - .await, - )); + .unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }); + return Json(page); } Json(UnifiedResponseMessages::< @@ -137,16 +145,24 @@ async fn show_task_log_detail( use db::schema::task_log_extend; if let Ok(conn) = pool.get() { - return Json(Into::>::into( - web::block::<_, _, diesel::result::Error>(move || { - let task_log_extend = task_log_extend::table - .find(query_params.record_id.0) - .first::(&conn)?; + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let task_log_extend = task_log_extend::table + .find(query_params.record_id.0) + .first::(&conn)?; - Ok(task_log_extend) + Ok(task_log_extend) + }) + .await; + + let log_extend = f_result + .map(|log_extend_result| { + Into::>::into(log_extend_result) }) - .await, - )); + .unwrap_or_else(|e| { + UnifiedResponseMessages::::error() + .customized_error_msg(e.to_string()) + }); + return Json(log_extend); } Json(UnifiedResponseMessages::::error()) @@ -255,7 +271,7 @@ async fn kill_one_task_instance( let token = model::get_executor_token_by_id(executor_processor_id, pool.get()?).await; let conn = pool.get()?; - let host = web::block::<_, String, diesel::result::Error>(move || { + let host = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { let host = task_log::table .find(&record_id.0) .filter(task_log::status.eq(state::task_log::State::Running as i16)) @@ -269,7 +285,7 @@ async fn kill_one_task_instance( Ok(host) }) - .await?; + .await??; let client = RequestClient::default(); let url = "http://".to_string() + (host.deref()) + "/api/task_instance/kill"; @@ -280,13 +296,15 @@ async fn kill_one_task_instance( .set_time(get_timestamp()) .sign(token.as_deref())?; - client - .post(url) - .send_json(&record) - .await? - .json::>() - .await? - .into() + // FIXME: + todo!(); + // client + // .post(url) + // .send_json(&record) + // .await? + // .json::>() + // .await? + // .into() } #[handler] @@ -321,7 +339,7 @@ async fn pre_delete_task_log( // 2. the primary key in batches of 2048 items and then start executing the deletion, task-log and task-log-extend. - web::block::<_, _, diesel::result::Error>(move || { + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { let query_builder = model::TaskLogQueryBuilder::query_id_column(); let task_log_ids = delete_params .query_filter(query_builder) diff --git a/delicate-scheduler/src/actions/user.rs b/delicate-scheduler/src/actions/user.rs index af7048b..a9f2a01 100644 --- a/delicate-scheduler/src/actions/user.rs +++ b/delicate-scheduler/src/actions/user.rs @@ -44,27 +44,32 @@ async fn create_user( // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return Json(Into::>::into( - web::block::<_, _, diesel::result::Error>(move || { - conn.transaction(|| { - diesel::insert_into(user::table) - .values(&new_user) - .execute(&conn)?; + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + conn.transaction(|| { + diesel::insert_into(user::table) + .values(&new_user) + .execute(&conn)?; - let last_id = diesel::select(db::last_insert_id).get_result::(&conn)?; + let last_id = diesel::select(db::last_insert_id).get_result::(&conn)?; - let user_auths: model::NewUserAuths = - From::<(model::QueryNewUser, u64)>::from((user, last_id)); + let user_auths: model::NewUserAuths = + From::<(model::QueryNewUser, u64)>::from((user, last_id)); - diesel::insert_into(user_auth::table) - .values(&user_auths.0[..]) - .execute(&conn)?; + diesel::insert_into(user_auth::table) + .values(&user_auths.0[..]) + .execute(&conn)?; - Ok(()) - }) + Ok(()) }) - .await, - )); + }) + .await; + + let resp = f_result + .map(|resp_result| Into::>::into(resp_result)) + .unwrap_or_else(|e| { + UnifiedResponseMessages::<()>::error().customized_error_msg(e.to_string()) + }); + return Json(resp); } Json(UnifiedResponseMessages::<()>::error()) @@ -77,32 +82,38 @@ async fn show_users( pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { if let Ok(conn) = pool.get() { - return Json( - Into::>>::into( - web::block::<_, _, diesel::result::Error>(move || { - let query_builder = model::UserQueryBuilder::query_all_columns(); - - let users = query_params - .clone() - .query_filter(query_builder) - .paginate(query_params.page) - .set_per_page(query_params.per_page) - .load::(&conn)?; - - let per_page = query_params.per_page; - let count_builder = model::UserQueryBuilder::query_count(); - let count = query_params - .query_filter(count_builder) - .get_result::(&conn)?; - - Ok(PaginateData::::default() - .set_data_source(users) - .set_page_size(per_page) - .set_total(count)) - }) - .await, - ), - ); + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let query_builder = model::UserQueryBuilder::query_all_columns(); + + let users = query_params + .clone() + .query_filter(query_builder) + .paginate(query_params.page) + .set_per_page(query_params.per_page) + .load::(&conn)?; + + let per_page = query_params.per_page; + let count_builder = model::UserQueryBuilder::query_count(); + let count = query_params + .query_filter(count_builder) + .get_result::(&conn)?; + + Ok(PaginateData::::default() + .set_data_source(users) + .set_page_size(per_page) + .set_total(count)) + }) + .await; + + let page = f_result + .map(|page_result| { + Into::>>::into(page_result) + }) + .unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }); + return Json(page); } Json(UnifiedResponseMessages::>::error()) @@ -122,9 +133,17 @@ async fn update_user( // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return Json(Into::>::into( - web::block(move || diesel::update(&user_value).set(&user_value).execute(&conn)).await, - )); + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + diesel::update(&user_value).set(&user_value).execute(&conn) + }) + .await; + + let count = f_result + .map(|count_result| Into::>::into(count_result)) + .unwrap_or_else(|e| { + UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) + }); + return Json(count); } Json(UnifiedResponseMessages::::error()) @@ -147,7 +166,7 @@ async fn change_password( // if let Ok(conn) = pool.get() { // return Json(Into::>::into( - // web::block::<_, _, diesel::result::Error>(move || { + // spawn_blocking::<_,Result<_, diesel::result::Error>>(move || { // let user_auth_id = user_auth::table // .select(user_auth::id) // .filter(user_auth::user_id.eq(&user_id)) @@ -187,18 +206,23 @@ async fn delete_user( // send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { - return Json(Into::>::into( - web::block::<_, _, diesel::result::Error>(move || { - conn.transaction(|| { - diesel::delete(user::table.filter(user::id.eq(user_id))).execute(&conn)?; - diesel::delete(user_auth::table.filter(user_auth::user_id.eq(user_id))) - .execute(&conn)?; - - Ok(()) - }) + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + conn.transaction(|| { + diesel::delete(user::table.filter(user::id.eq(user_id))).execute(&conn)?; + diesel::delete(user_auth::table.filter(user_auth::user_id.eq(user_id))) + .execute(&conn)?; + + Ok(()) }) - .await, - )); + }) + .await; + + let resp = f_result + .map(|resp_result| Into::>::into(resp_result)) + .unwrap_or_else(|e| { + UnifiedResponseMessages::<()>::error().customized_error_msg(e.to_string()) + }); + return Json(resp); } Json(UnifiedResponseMessages::<()>::error()) @@ -243,7 +267,7 @@ async fn pre_login_user( // let conn = pool.get()?; // let user_package: (model::UserAuth, model::User) = - // web::block::<_, _, diesel::result::Error>(move || { + // spawn_blocking::<_,Result<_, diesel::result::Error>>(move || { // let login_result = user_auth::table // .inner_join(user::table) // .select((user_auth::all_columns, user::all_columns)) @@ -326,7 +350,7 @@ fn save_session( // .get::("user_id")? // .ok_or_else(|| CommonError::DisPass("Without set `user_id` .".into()))?; -// let user = web::block::<_, _, diesel::result::Error>(move || { +// let user = spawn_blocking::<_,Result<_, diesel::result::Error>>(move || { // let user = user::table // .select(user::all_columns) // .find(user_id) diff --git a/delicate-scheduler/src/actions/user_login_log.rs b/delicate-scheduler/src/actions/user_login_log.rs index 203f853..79fe2a8 100644 --- a/delicate-scheduler/src/actions/user_login_log.rs +++ b/delicate-scheduler/src/actions/user_login_log.rs @@ -10,37 +10,45 @@ async fn show_user_login_log( pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { if let Ok(conn) = pool.get() { - return Json(Into::< - UnifiedResponseMessages>, - >::into( - web::block::<_, _, diesel::result::Error>(move || { - let query_builder = model::UserLoginLogQueryBuilder::query_all_columns(); - - let user_login_log = query_params - .clone() - .query_filter(query_builder) - .paginate(query_params.page) - .set_per_page(query_params.per_page) - .load::(&conn)?; - - let per_page = query_params.per_page; - let count_builder = model::UserLoginLogQueryBuilder::query_count(); - let count = query_params - .query_filter(count_builder) - .get_result::(&conn)?; - - let front_end_user_login_log: Vec = - user_login_log.into_iter().map(|log| log.into()).collect(); - - Ok(PaginateData::::default() - .set_data_source(front_end_user_login_log) - .set_page_size(per_page) - .set_total(count) - .set_state_desc::() - .set_state_desc::()) + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let query_builder = model::UserLoginLogQueryBuilder::query_all_columns(); + + let user_login_log = query_params + .clone() + .query_filter(query_builder) + .paginate(query_params.page) + .set_per_page(query_params.per_page) + .load::(&conn)?; + + let per_page = query_params.per_page; + let count_builder = model::UserLoginLogQueryBuilder::query_count(); + let count = query_params + .query_filter(count_builder) + .get_result::(&conn)?; + + let front_end_user_login_log: Vec = + user_login_log.into_iter().map(|log| log.into()).collect(); + + Ok(PaginateData::::default() + .set_data_source(front_end_user_login_log) + .set_page_size(per_page) + .set_total(count) + .set_state_desc::() + .set_state_desc::()) + }) + .await; + + let page = f_result + .map(|page_result| { + Into::>>::into( + page_result, + ) }) - .await, - )); + .unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }); + return Json(page); } Json(UnifiedResponseMessages::< diff --git a/delicate-scheduler/src/components/auth/casbin/adapter/adapter_core.rs b/delicate-scheduler/src/components/auth/casbin/adapter/adapter_core.rs index 5b8e13e..764a74a 100644 --- a/delicate-scheduler/src/components/auth/casbin/adapter/adapter_core.rs +++ b/delicate-scheduler/src/components/auth/casbin/adapter/adapter_core.rs @@ -2,9 +2,8 @@ use super::actions as adapter; use crate::db::model::casbin_rule::*; use crate::prelude::*; -use actix_web::web::block as spawn_blocking; use async_trait::async_trait; -use casbin::{Adapter, Error as CasbinError, Filter, Model}; +use casbin::{error::AdapterError, Adapter, Error as CasbinError, Filter, Model}; pub struct DieselAdapter { pool: Arc, @@ -121,9 +120,11 @@ impl Adapter for DieselAdapter { .get() .map_err(|e| casbin::error::AdapterError(Box::new(e)))?; - let rules = spawn_blocking(move || adapter::load_policy(conn)) - .await - .map_err(|e| casbin::error::AdapterError(Box::new(e)))?; + let rules = + spawn_blocking::<_, Result<_, AuthServiceError>>(move || adapter::load_policy(conn)) + .await + .map_err(|e| casbin::error::AdapterError(Box::new(e)))? + .map_err(|e| AdapterError(Box::new(e)))?; for casbin_rule in &rules { let rule = load_policy_line(casbin_rule); @@ -148,9 +149,12 @@ impl Adapter for DieselAdapter { .get() .map_err(|e| casbin::error::AdapterError(Box::new(e)))?; - Ok(spawn_blocking(move || adapter::clear_policy(conn)) - .await - .map_err(|e| casbin::error::AdapterError(Box::new(e)))?) + Ok( + spawn_blocking::<_, Result<_, AuthServiceError>>(move || adapter::clear_policy(conn)) + .await + .map_err(|e| casbin::error::AdapterError(Box::new(e)))? + .map_err(|e| AdapterError(Box::new(e)))?, + ) } async fn load_filtered_policy<'a>( @@ -163,9 +167,11 @@ impl Adapter for DieselAdapter { .get() .map_err(|e| casbin::error::AdapterError(Box::new(e)))?; - let rules = spawn_blocking(move || adapter::load_policy(conn)) - .await - .map_err(|e| casbin::error::AdapterError(Box::new(e)))?; + let rules = + spawn_blocking::<_, Result<_, AuthServiceError>>(move || adapter::load_policy(conn)) + .await + .map_err(|e| casbin::error::AdapterError(Box::new(e)))? + .map_err(|e| AdapterError(Box::new(e)))?; for casbin_rule in &rules { let rule = load_filtered_policy_line(casbin_rule, &f); @@ -217,9 +223,12 @@ impl Adapter for DieselAdapter { } } - Ok(spawn_blocking(move || adapter::save_policy(conn, rules)) - .await - .map_err(|e| casbin::error::AdapterError(Box::new(e)))?) + Ok(spawn_blocking::<_, Result<_, AuthServiceError>>(move || { + adapter::save_policy(conn, rules) + }) + .await + .map_err(|e| casbin::error::AdapterError(Box::new(e)))? + .map_err(|e| AdapterError(Box::new(e)))?) } async fn add_policy( @@ -234,14 +243,15 @@ impl Adapter for DieselAdapter { .map_err(|e| casbin::error::AdapterError(Box::new(e)))?; let ptype_c = ptype.to_string(); - Ok(spawn_blocking(move || { + Ok(spawn_blocking::<_, Result<_, AuthServiceError>>(move || { if let Some(new_rule) = save_policy_line(&ptype_c, &rule) { return adapter::add_policy(conn, new_rule); } Ok(false) }) .await - .map_err(|e| casbin::error::AdapterError(Box::new(e)))?) + .map_err(|e| casbin::error::AdapterError(Box::new(e)))? + .map_err(|e| AdapterError(Box::new(e)))?) } async fn add_policies( @@ -256,7 +266,7 @@ impl Adapter for DieselAdapter { .map_err(|e| casbin::error::AdapterError(Box::new(e)))?; let ptype_c = ptype.to_string(); - Ok(spawn_blocking(move || { + Ok(spawn_blocking::<_, Result<_, AuthServiceError>>(move || { let new_rules = rules .iter() .filter_map(|x: &Vec| save_policy_line(&ptype_c, x)) @@ -264,7 +274,8 @@ impl Adapter for DieselAdapter { adapter::add_policies(conn, new_rules) }) .await - .map_err(|e| casbin::error::AdapterError(Box::new(e)))?) + .map_err(|e| casbin::error::AdapterError(Box::new(e)))? + .map_err(|e| AdapterError(Box::new(e)))?) } async fn remove_policy( @@ -279,11 +290,12 @@ impl Adapter for DieselAdapter { .map_err(|e| casbin::error::AdapterError(Box::new(e)))?; let ptype_c = pt.to_string(); - Ok( - spawn_blocking(move || adapter::remove_policy(conn, &ptype_c, rule)) - .await - .map_err(|e| casbin::error::AdapterError(Box::new(e)))?, - ) + Ok(spawn_blocking::<_, Result<_, AuthServiceError>>(move || { + adapter::remove_policy(conn, &ptype_c, rule) + }) + .await + .map_err(|e| casbin::error::AdapterError(Box::new(e)))? + .map_err(|e| AdapterError(Box::new(e)))?) } async fn remove_policies( @@ -298,11 +310,12 @@ impl Adapter for DieselAdapter { .map_err(|e| casbin::error::AdapterError(Box::new(e)))?; let ptype_c = pt.to_string(); - Ok( - spawn_blocking(move || adapter::remove_policies(conn, &ptype_c, rules)) - .await - .map_err(|e| casbin::error::AdapterError(Box::new(e)))?, - ) + Ok(spawn_blocking::<_, Result<_, AuthServiceError>>(move || { + adapter::remove_policies(conn, &ptype_c, rules) + }) + .await + .map_err(|e| casbin::error::AdapterError(Box::new(e)))? + .map_err(|e| AdapterError(Box::new(e)))?) } async fn remove_filtered_policy( @@ -319,11 +332,12 @@ impl Adapter for DieselAdapter { .map_err(|e| casbin::error::AdapterError(Box::new(e)))?; let ptype_c = pt.to_string(); - Ok(spawn_blocking(move || { + Ok(spawn_blocking::<_, Result<_, AuthServiceError>>(move || { adapter::remove_filtered_policy(conn, &ptype_c, field_index, field_values) }) .await - .map_err(|e| casbin::error::AdapterError(Box::new(e)))?) + .map_err(|e| casbin::error::AdapterError(Box::new(e)))? + .map_err(|e| AdapterError(Box::new(e)))?) } else { Ok(false) } diff --git a/delicate-scheduler/src/components/auth/casbin/casbin_event_consumer.rs b/delicate-scheduler/src/components/auth/casbin/casbin_event_consumer.rs index 8499001..8f79fbb 100644 --- a/delicate-scheduler/src/components/auth/casbin/casbin_event_consumer.rs +++ b/delicate-scheduler/src/components/auth/casbin/casbin_event_consumer.rs @@ -117,7 +117,7 @@ pub(crate) enum CasbinDynamicField { #[inline(always)] pub(crate) fn handle_event_for_watcher(event: CasbinEventData) { let delicate_auth_rule_event = match event { - EventData::AddPolicy(sec, ptype, dynamic_fields) => { + CasbinEventData::AddPolicy(sec, ptype, dynamic_fields) => { let operation = AuthAdapterEventOperation::AddPolicy; let dynamic_fields = CasbinDynamicField::Singlelayer(dynamic_fields); let casbin_event_model = CasbinEventModel { @@ -128,7 +128,7 @@ pub(crate) fn handle_event_for_watcher(event: CasbinEventData) { }; DelicateAuthRuleEvent::casbin_event(casbin_event_model) } - EventData::RemovePolicy(sec, ptype, dynamic_fields) => { + CasbinEventData::RemovePolicy(sec, ptype, dynamic_fields) => { let operation = AuthAdapterEventOperation::RemovePolicy; let dynamic_fields = CasbinDynamicField::Singlelayer(dynamic_fields); let casbin_event_model = CasbinEventModel { @@ -139,7 +139,7 @@ pub(crate) fn handle_event_for_watcher(event: CasbinEventData) { }; DelicateAuthRuleEvent::casbin_event(casbin_event_model) } - EventData::AddPolicies(sec, ptype, dynamic_fields) => { + CasbinEventData::AddPolicies(sec, ptype, dynamic_fields) => { let operation = AuthAdapterEventOperation::AddPolicy; let dynamic_fields = CasbinDynamicField::MultiLayer(dynamic_fields); @@ -151,7 +151,7 @@ pub(crate) fn handle_event_for_watcher(event: CasbinEventData) { }; DelicateAuthRuleEvent::casbin_event(casbin_event_model) } - EventData::RemovePolicies(sec, ptype, dynamic_fields) => { + CasbinEventData::RemovePolicies(sec, ptype, dynamic_fields) => { let operation = AuthAdapterEventOperation::RemovePolicy; let dynamic_fields = CasbinDynamicField::MultiLayer(dynamic_fields); let casbin_event_model = CasbinEventModel { @@ -167,7 +167,7 @@ pub(crate) fn handle_event_for_watcher(event: CasbinEventData) { } }; - rt_spawn(async move { + tokio_spawn(async move { DELICATE_AUTH_RULE_EVENT_CONSUMERS .0 .send(delicate_auth_rule_event) @@ -201,7 +201,7 @@ pub(crate) async fn loop_publish_casbin_rule_events(redis_client: redis::Client) } error!(target:"loop-publish-casbin-rule-events", "No available redis connection."); - rt_delay_for(Duration::from_secs(1)).await; + sleep(Duration::from_secs(1)).await; } } @@ -233,7 +233,7 @@ pub(crate) async fn loop_subscribe_casbin_rule_events( } error!(target:"loop-subscribe-casbin-rule-events", "No available redis connection."); - rt_delay_for(Duration::from_secs(1)).await; + sleep(Duration::from_secs(1)).await; } } diff --git a/delicate-scheduler/src/components/auth/casbin/middleware.rs b/delicate-scheduler/src/components/auth/casbin/middleware.rs index 3b53bb4..91b2650 100644 --- a/delicate-scheduler/src/components/auth/casbin/middleware.rs +++ b/delicate-scheduler/src/components/auth/casbin/middleware.rs @@ -39,7 +39,7 @@ impl CasbinWatcher for CasbinGuard { error!(target:"set_update_callback", "unreachable."); } - fn update(&mut self, d: EventData) { + fn update(&mut self, d: CasbinEventData) { debug!("CasbinGuard: {}", &d); handle_event_for_watcher(d); } @@ -93,7 +93,7 @@ const WHITE_LIST: [&str; 9] = [ #[poem::async_trait] impl Endpoint for CasbinAuthMiddleware { - type Output = E::Output; + type Output = Response; async fn call(&self, mut req: Request) -> Self::Output { let enforcer = req @@ -102,65 +102,56 @@ impl Endpoint for CasbinAuthMiddleware { .expect("Casbin's enforcer acquisition failed") .clone(); let extensions = req.extensions(); - let session = extensions.get::(); + let session = extensions + .get::() + .expect("CookieJar acquisition failed"); let path = req.uri().path().to_string(); let auth_part = path.split('/').into_iter().collect::>(); let resource = auth_part.get(2).map(|s| s.to_string()).unwrap_or_default(); let action = auth_part.get(3).map(|s| s.to_string()).unwrap_or_default(); - // FIXME: - todo!(); - // let username = session - // .get::("user_name") - // .unwrap_or_default() - // .unwrap_or_default(); - // Box::pin(async move { - // // Path in the whitelist do not need to be verified. - // if WHITE_LIST.contains(&path.deref()) { - // return service.call(req).await; - // } - - // #[cfg(APP_DEBUG_MODE)] - // { - // return service.call(req).await; - // } - - // let auther = enforcer.read().await; - - // if username.is_empty() || resource.is_empty() || action.is_empty() { - // return Ok(req.error_response( - // HttpResponseBuilder::new(StatusCode::default()).json( - // UnifiedResponseMessages::<()>::error() - // .customized_error_msg(String::from("Permission check failed.")), - // ), - // )); - // } - - // match auther.enforce(vec![username, resource, action]) { - // Ok(true) => { - // drop(auther); - // service.call(req).await - // } - // Ok(false) => { - // drop(auther); - // Ok(req.error_response( - // HttpResponseBuilder::new(StatusCode::default()).json( - // UnifiedResponseMessages::<()>::error() - // .customized_error_msg(String::from("Permission check failed.")), - // ), - // )) - // } - // Err(e) => { - // drop(auther); - // Ok(req.error_response( - // HttpResponseBuilder::new(StatusCode::default()).json( - // UnifiedResponseMessages::<()>::error() - // .customized_error_msg(format!("Permission check failed. ({})", e)), - // ), - // )) - // } - // } - // }) + let username = session + .get("user_name") + .map(|c| c.value::().unwrap_or_default()) + .unwrap_or_default(); + + // Path in the whitelist do not need to be verified. + if WHITE_LIST.contains(&path.deref()) { + return self.ep.call(req).await.into_response(); + } + + #[cfg(APP_DEBUG_MODE)] + { + return self.ep.call(req).await.into_response(); + } + + let auther = enforcer.read().await; + + if username.is_empty() || resource.is_empty() || action.is_empty() { + return UnifiedResponseMessages::<()>::error() + .customized_error_msg(String::from("Permission check failed.")) + .into_response(); + } + + match auther.enforce(vec![username, resource, action]) { + Ok(true) => { + drop(auther); + self.ep.call(req).await.into_response() + } + Ok(false) => { + drop(auther); + UnifiedResponseMessages::<()>::error() + .customized_error_msg(String::from("Permission check failed.")) + .into_response() + } + Err(e) => { + drop(auther); + + UnifiedResponseMessages::<()>::error() + .customized_error_msg(format!("Permission check failed. ({})", e)) + .into_response() + } + } } } diff --git a/delicate-scheduler/src/components/health_checker.rs b/delicate-scheduler/src/components/health_checker.rs index d11a631..b6944d4 100644 --- a/delicate-scheduler/src/components/health_checker.rs +++ b/delicate-scheduler/src/components/health_checker.rs @@ -2,88 +2,99 @@ use super::prelude::*; use db::schema::executor_processor; // FIXME: -// pub(crate) async fn loop_health_check(pool: Arc) { -// let mut interval = interval(Duration::from_secs(20)); -// loop { -// interval.tick().await; -// if let Ok(conn) = pool.get() { -// health_check(conn) -// .await -// .map_err(|e| error!(target:"loop-health-check", "{}", e.to_string())) -// .ok(); -// continue; -// } +pub(crate) async fn loop_health_check( + pool: Arc, + request_client: RequestClient, +) { + let mut interval = interval(Duration::from_secs(20)); + loop { + interval.tick().await; + if let Ok(conn) = pool.get() { + health_check(conn, request_client.clone()) + .await + .map_err(|e| error!(target:"loop-health-check", "{}", e.to_string())) + .ok(); + continue; + } -// error!(target:"loop-health-check", "No available database connection."); -// } -// } + error!(target:"loop-health-check", "No available database connection."); + } +} -async fn health_check(conn: db::PoolConnection) -> Result<(), CommonError> { - let (executor_packages, conn) = web::block::<_, _, diesel::result::Error>(move || { - let executors = executor_processor::table - .select(( - executor_processor::id, - executor_processor::host, - executor_processor::token, - )) - .filter(executor_processor::status.eq(state::executor_processor::State::Enabled as i16)) - .load::<(i64, String, String)>(&conn)?; +async fn health_check( + conn: db::PoolConnection, + request_client: RequestClient, +) -> Result<(), CommonError> { + let (executor_packages, conn) = + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let executors = executor_processor::table + .select(( + executor_processor::id, + executor_processor::host, + executor_processor::token, + )) + .filter( + executor_processor::status.eq(state::executor_processor::State::Enabled as i16), + ) + .load::<(i64, String, String)>(&conn)?; - Ok((executors, conn)) - }) - .await?; + Ok((executors, conn)) + }) + .await??; let all_executor_ids: HashSet = executor_packages.iter().map(|(id, _, _)| *id).collect(); - let request_all: JoinAll = executor_packages - .into_iter() - .filter_map(|(_, executor_host, executor_token)| { - let message = delicate_utils_executor_processor::HealthScreenUnit::default(); + // FIXME: + todo!(); + // let request_all: JoinAll<_> = executor_packages + // .into_iter() + // .filter_map(|(_, executor_host, executor_token)| { + // let message = delicate_utils_executor_processor::HealthScreenUnit::default(); - let executor_host = - "http://".to_string() + (executor_host.deref()) + "/api/executor/health_screen"; + // let executor_host = + // "http://".to_string() + (executor_host.deref()) + "/api/executor/health_screen"; - message - .sign(Some(&executor_token)) - .map(|s| (s, executor_host)) - .ok() - }) - .map(|(signed_health_screen_unit, executor_host)| { - RequestClient::builder() - .finish() - .post(executor_host) - .send_json(&signed_health_screen_unit) - }) - .collect::>() - .into_iter() - .collect(); + // message + // .sign(Some(&executor_token)) + // .map(|s| (s, executor_host)) + // .ok() + // }) + // .map(|(signed_health_screen_unit, executor_host)| { + // request_client + // .post(executor_host) + // .json(&signed_health_screen_unit) + // .send() + // }) + // .collect::>() + // .into_iter() + // .collect(); - let health_check_packages = handle_response::< - UnifiedResponseMessages, - >(request_all) - .instrument(span!(Level::INFO, "health-check")) - .await; + // let health_check_packages = handle_response::< + // UnifiedResponseMessages, + // >(request_all) + // .instrument(span!(Level::INFO, "health-check")) + // .await; - let health_processors: HashSet = health_check_packages - .iter() - .map(|e| e.get_data_ref().bind_request.executor_processor_id) - .collect(); + // let health_processors: HashSet = health_check_packages + // .iter() + // .map(|e| e.get_data_ref().bind_request.executor_processor_id) + // .collect(); - let abnormal_processor: Vec = all_executor_ids - .difference(&health_processors) - .copied() - .collect(); + // let abnormal_processor: Vec = all_executor_ids + // .difference(&health_processors) + // .copied() + // .collect(); - if !abnormal_processor.is_empty() { - web::block::<_, _, diesel::result::Error>(move || { - diesel::update( - executor_processor::table - .filter(executor_processor::id.eq_any(&abnormal_processor[..])), - ) - .set(executor_processor::status.eq(state::executor_processor::State::Abnormal as i16)) - .execute(&conn) - }) - .await?; - } + // if !abnormal_processor.is_empty() { + // spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + // diesel::update( + // executor_processor::table + // .filter(executor_processor::id.eq_any(&abnormal_processor[..])), + // ) + // .set(executor_processor::status.eq(state::executor_processor::State::Abnormal as i16)) + // .execute(&conn) + // }) + // .await?; + // } - Ok(()) + // Ok(()) } diff --git a/delicate-scheduler/src/components/helper.rs b/delicate-scheduler/src/components/helper.rs index 590189b..0b9c599 100644 --- a/delicate-scheduler/src/components/helper.rs +++ b/delicate-scheduler/src/components/helper.rs @@ -3,37 +3,39 @@ use super::prelude::*; pub(crate) async fn handle_response( request_all: JoinAll, ) -> Vec { - let response_json_all: JoinAll, T>> = request_all - .await - .into_iter() - .map(|response| match response { - Ok(mut r) => Some(r.json::()), - Err(e) => { - error!("SendRequestError : {}", e); - None - } - }) - .filter(|r| r.is_some()) - .map(|r| r.expect("")) - .collect::, T>>>() - .into_iter() - .collect(); + // FIXME: + todo!(); + // let response_json_all: JoinAll, T>> = request_all + // .await + // .into_iter() + // .map(|response| match response { + // Ok(mut r) => Some(r.json::()), + // Err(e) => { + // error!("SendRequestError : {}", e); + // None + // } + // }) + // .filter(|r| r.is_some()) + // .map(|r| r.expect("")) + // .collect::, T>>>() + // .into_iter() + // .collect(); - response_json_all - .await - .into_iter() - .map(|json_result| { - match json_result { - Err(ref e) => { - error!("Payload errors: {}", e); - } - Ok(ref json) if json.is_err() => { - error!("Customized error messages: {}", json.get_msg()); - } - _ => {} - } - json_result - }) - .filter_map(|r| r.ok()) - .collect::>() + // response_json_all + // .await + // .into_iter() + // .map(|json_result| { + // match json_result { + // Err(ref e) => { + // error!("Payload errors: {}", e); + // } + // Ok(ref json) if json.is_err() => { + // error!("Customized error messages: {}", json.get_msg()); + // } + // _ => {} + // } + // json_result + // }) + // .filter_map(|r| r.ok()) + // .collect::>() } diff --git a/delicate-scheduler/src/components/operation_log_consumer.rs b/delicate-scheduler/src/components/operation_log_consumer.rs index 2b85c18..2521d18 100644 --- a/delicate-scheduler/src/components/operation_log_consumer.rs +++ b/delicate-scheduler/src/components/operation_log_consumer.rs @@ -18,8 +18,8 @@ pub(crate) async fn loop_operate_logs(pool: Arc) { let mut operation_log_pairs: Vec = Vec::new(); 'logs_collection: for _ in 0..512 { - let logs_future: RtTimeout<_> = - rt_timeout(Duration::from_secs(3), OPERATION_LOG_CONSUMERS.1.recv()); + let logs_future: TokioTimeout<_> = + tokio_timeout(Duration::from_secs(3), OPERATION_LOG_CONSUMERS.1.recv()); match logs_future.await { // No new events and timeout. @@ -70,7 +70,7 @@ async fn operate_logs( operation_logs.push(operation_log); operation_log_details.push(operation_log_detail); }); - web::block::<_, _, diesel::result::Error>(move || { + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { // Use this solution to ensure that the conditions are met (innodb_autoinc_lock_mode = 1 ("executive" lock mode)): // https://stackoverflow.com/questions/27225804/mysql-batch-insert-on-multiple-tables-with-last-insert-id // https://dev.mysql.com/doc/refman/8.0/en/innodb-auto-increment-handling.html @@ -96,7 +96,7 @@ async fn operate_logs( .execute(&conn)?; Ok(()) }) - .await?; + .await??; Ok(()) } diff --git a/delicate-scheduler/src/components/session.rs b/delicate-scheduler/src/components/session.rs index 6315445..33351c5 100644 --- a/delicate-scheduler/src/components/session.rs +++ b/delicate-scheduler/src/components/session.rs @@ -23,6 +23,7 @@ use super::prelude::*; // } // Register authentication middleware to check login status based on `CookieSession`. + pub(crate) fn auth_middleware() -> SessionAuth { SessionAuth } @@ -43,12 +44,12 @@ pub struct SessionAuthMiddleware { #[poem::async_trait] impl Endpoint for SessionAuthMiddleware { - type Output = E::Output; + type Output = Response; async fn call(&self, mut req: Request) -> Self::Output { #[cfg(APP_DEBUG_MODE)] { - return self.ep.call(req).await; + return self.ep.call(req).await.into_response(); } let extensions = req.extensions(); @@ -56,29 +57,25 @@ impl Endpoint for SessionAuthMiddleware { let uri = req.uri(); let path = uri.path(); - // https://github.com/poem-web/poem/blob/master/examples/poem/cookie-session/src/main.rs - - // TODO: Use `CookieJar` as the backend of `Session`. - // // Judgment, if it is a special api will not check the token. - // // (for example: login-api, event-collection-api) + // Use `CookieJar` as the backend of `Session`. + // Judgment, if it is a special api will not check the token. + // (for example: login-api, event-collection-api) match path { "/api/user/login" | "/api/task_log/event_trigger" => { - return self.ep.call(req).await; + self.ep.call(req).await.into_response() } _ => { - let user_id = session.map(|s| s.get("user_id")).flatten().map(|c|c.value::()); + let user_id = session + .map(|s| s.get("user_id")) + .flatten() + .map(|c| c.value::()); if let Some(Ok(_)) = user_id { - return self.ep.call(req).await; + self.ep.call(req).await.into_response() } else { - // FIXME: - // TODO: early return. - /// actix : req.error(msg). - // Json( - // UnifiedResponseMessages::<()>::error() - // .customized_error_msg(String::from("Please log in and operate.")), - // ) - todo!(); + UnifiedResponseMessages::<()>::error() + .customized_error_msg(String::from("Please log in and operate.")) + .into_response() } } } diff --git a/delicate-scheduler/src/db/mysql/model/executor_processor.rs b/delicate-scheduler/src/db/mysql/model/executor_processor.rs index c1b9879..36c3c0d 100644 --- a/delicate-scheduler/src/db/mysql/model/executor_processor.rs +++ b/delicate-scheduler/src/db/mysql/model/executor_processor.rs @@ -129,12 +129,12 @@ impl QueryParamsExecutorProcessor { pub(crate) async fn get_executor_token_by_id(id: i64, conn: db::PoolConnection) -> Option { use db::schema::executor_processor; - web::block(move || { + spawn_blocking::<_,_>(move || { executor_processor::table .find(id) .select(executor_processor::token) - .first::(&conn) + .first::(&conn).ok() }) - .await - .ok() + .await.ok().flatten() + } diff --git a/delicate-scheduler/src/main.rs b/delicate-scheduler/src/main.rs index 3ff3d54..30527da 100644 --- a/delicate-scheduler/src/main.rs +++ b/delicate-scheduler/src/main.rs @@ -73,6 +73,8 @@ fn main() -> AnyResut<()> { // completes the builder. .init(); + let request_client = RequestClient::new(); + arc_runtime.block_on(async { let delay_timer = DelayTimerBuilder::default() .tokio_runtime_shared_by_custom(arc_runtime_cloned) @@ -95,22 +97,23 @@ fn main() -> AnyResut<()> { // All ready work when the delicate-application starts. launch_ready_operation( arc_connection_pool.clone(), + request_client, #[cfg(AUTH_CASBIN)] shared_enforcer.clone(), ) .await; // let result = HttpServer::new(move || { - // let cors = Cors::new() - // .allow_origin(&scheduler_front_end_domain) - // .allow_method(Method::GET) - // .allow_method(Method::POST) - // .allow_header("*") - // .allow_credentials(true) - // .max_age(3600); + let cors = Cors::new() + .allow_origin(&scheduler_front_end_domain) + .allow_method(Method::GET) + .allow_method(Method::POST) + .allow_header("*") + .allow_credentials(true) + .max_age(3600); - // #[cfg(APP_DEBUG_MODE)] - // let cors = cors.allow_origin("*"); + #[cfg(APP_DEBUG_MODE)] + let cors = cors.allow_origin("*"); // FIXME: Reference poem/routes.rs let app = Some(Route::new()) @@ -124,21 +127,21 @@ fn main() -> AnyResut<()> { .map(actions::components::config_route) .map(actions::operation_log::config_route) .map(actions::user_login_log::config_route) - .expect(""); - - // .app_data(shared_delay_timer.clone()) - // .app_data(shared_connection_pool.clone()) - // .app_data(shared_scheduler_meta_info.clone()); - - // #[cfg(AUTH_CASBIN)] - // let app = app - // .configure(actions::role::config) - // .wrap(CasbinService) - // .app_data(shared_enforcer.clone()); + .expect("") + .with(shared_delay_timer) + .with(shared_connection_pool) + .with(shared_scheduler_meta_info); - // app.wrap(components::session::auth_middleware()) - // .wrap(components::session::session_middleware()) - // .wrap(cors) + #[cfg(AUTH_CASBIN)] + let app = app + .configure(actions::role::config_route) + .wrap(CasbinService) + .app_data(shared_enforcer.clone()); + + let app = app + .with(components::session::auth_middleware()) + // .wrap(components::session::session_middleware()) + .with(cors); // .wrap(MiddlewareLogger::default()) // .wrap_fn(|req, srv| { // let unique_id = get_unique_id_string(); @@ -156,23 +159,19 @@ fn main() -> AnyResut<()> { // .run() // .await; - // let address = env::var("EXECUTOR_LISTENING_ADDRESS") - // .expect("Without `EXECUTOR_LISTENING_ADDRESS` set in .env"); - // let listener = TcpListener::bind(address); - // let server = Server::new(listener).await?; - // Ok(server.run(route).await?) - }); - - // Ok(result?) - todo!(); + let listener = TcpListener::bind(scheduler_listening_address); + let server = Server::new(listener).await?; + Ok(server.run(app).await?) + }) } // All ready work when the delicate-application starts. async fn launch_ready_operation( pool: Arc, + request_client: RequestClient, #[cfg(AUTH_CASBIN)] enforcer: AddData>, ) { - launch_health_check(pool.clone()); + launch_health_check(pool.clone(), request_client); launch_operation_log_consumer(pool); #[cfg(AUTH_CASBIN)] @@ -187,9 +186,9 @@ async fn launch_ready_operation( // Heartbeat checker // That constantly goes to detect whether the machine survives with the machine's indicators. -fn launch_health_check(pool: Arc) { +fn launch_health_check(pool: Arc, request_client: RequestClient) { // FIXME: - // tokio_spawn(loop_health_check(pool)); + tokio_spawn(loop_health_check(pool, request_client)); } // Operation log asynchronous consumer diff --git a/delicate-scheduler/src/prelude.rs b/delicate-scheduler/src/prelude.rs index a164d0b..debc865 100644 --- a/delicate-scheduler/src/prelude.rs +++ b/delicate-scheduler/src/prelude.rs @@ -5,8 +5,7 @@ pub(crate) use super::components::auth::casbin::casbin_event_consumer::{ #[allow(unused_imports)] pub(crate) use super::components::auth::casbin::*; pub(crate) use super::components::base::SchedulerMetaInfo; -// FIXME: -// pub(crate) use super::components::health_checker::loop_health_check; +pub(crate) use super::components::health_checker::loop_health_check; pub(crate) use super::components::helper::handle_response; pub(crate) use super::components::operation_log_consumer::{ loop_operate_logs, send_option_operation_log_pair, @@ -52,9 +51,9 @@ pub(crate) use futures::future::{join, join3, ok, JoinAll, Ready}; pub(crate) use cached::proc_macro::cached; pub(crate) use cached::TimedSizedCache; -pub(crate) use casbin::prelude::*; pub(crate) use casbin::{ - Enforcer, EventData as CasbinEventData, RbacApi, Watcher as CasbinWatcher, + CoreApi, Enforcer, EventData as CasbinEventData, InternalApi, MgmtApi, RbacApi, + Watcher as CasbinWatcher, }; pub(crate) use chrono::{DateTime, Duration as ChronoDuration, Local, NaiveDateTime, Timelike}; @@ -67,19 +66,6 @@ pub(crate) use diesel::r2d2::CustomizeConnection; pub(crate) use diesel::result::Error as DieselError; pub(crate) use diesel::sql_types; -pub(crate) use actix_web::client::Client as RequestClient; -pub(crate) use actix_web::dev::Decompress; -pub(crate) use actix_web::dev::Payload; -pub(crate) use actix_web::dev::{ - HttpResponseBuilder, Service, ServiceRequest, ServiceResponse, Transform, -}; -pub(crate) use actix_web::middleware::Logger as MiddlewareLogger; -pub(crate) use actix_web::rt::spawn as rt_spawn; -pub(crate) use actix_web::rt::time::{ - delay_for as rt_delay_for, interval, timeout as rt_timeout, Timeout as RtTimeout, -}; -pub(crate) use actix_web::web::{self, Data as ShareData}; -pub(crate) use actix_web::{Error as ActixWebError, Result}; pub(crate) use awc::{JsonBody, SendClientRequest}; pub(crate) use anyhow::Result as AnyResut; @@ -90,6 +76,8 @@ pub(crate) use diesel::query_dsl::RunQueryDsl; pub(crate) use dotenv::dotenv; pub(crate) use tokio::runtime::Builder; pub(crate) use tokio::spawn as tokio_spawn; +pub(crate) use tokio::task::spawn_blocking; +pub(crate) use tokio::time::{interval, sleep}; pub(crate) use tokio::time::{timeout as tokio_timeout, Timeout as TokioTimeout}; pub(crate) use tracing::{debug, error, info, info_span, span, Instrument, Level}; pub(crate) use tracing_subscriber::FmtSubscriber; @@ -98,6 +86,7 @@ pub(crate) use flexi_logger::{ writers::FileLogWriter, Age, Cleanup, Criterion, FileSpec, Naming, WriteMode, }; pub(crate) use regex::Regex; +pub(crate) use reqwest::{Client as RequestClient, RequestBuilder}; pub(crate) use ring::digest::{digest, SHA256}; pub(crate) use rsa::RSAPrivateKey; pub(crate) use serde::de::DeserializeOwned; @@ -107,18 +96,17 @@ pub(crate) use strum::IntoEnumIterator; pub(crate) use strum_macros::{AsRefStr, EnumIter, IntoStaticStr, ToString as StrumToString}; pub(crate) use validator::{Validate, ValidationErrors}; +pub(crate) use poem::error::ParseCookieError; pub(crate) use poem::http::{Method, Uri}; pub(crate) use poem::listener::TcpListener; pub(crate) use poem::middleware::AddData; +pub(crate) use poem::middleware::CookieJarManager; pub(crate) use poem::middleware::Cors; -pub(crate) use poem::web::cookie::{Cookie, CookieJar}; +pub(crate) use poem::web::cookie::{Cookie, CookieJar, SignedCookieJar}; pub(crate) use poem::web::{Data, IntoResponse, Json}; pub(crate) use poem::{ - get, handler, post, Endpoint, EndpointExt, Middleware, Request, Route, Server, + get, handler, post, Endpoint, EndpointExt, Middleware, Request, Response, Route, Server, }; -// The public middleware output type. -pub(crate) type MiddlewareFuture = - std::pin::Pin>>>; pub(crate) type AuthServiceResult = Result; diff --git a/delicate-utils/Cargo.toml b/delicate-utils/Cargo.toml index b71d05b..9a00dab 100644 --- a/delicate-utils/Cargo.toml +++ b/delicate-utils/Cargo.toml @@ -11,8 +11,6 @@ name = "delicate_utils" [dependencies] async-lock = "^2.3.0" -actix-web = "^3.3.2" -actix-session = "0.4.1" casbin = {version = '2.0.9', default-features = false, features = ["incremental", "logging", "tokio", "runtime-tokio", "watcher"]} derive_more = "^0.99.14" delay_timer = {version = "^0.9.0", features = ["full"]} diff --git a/delicate-utils/src/error.rs b/delicate-utils/src/error.rs index da38d36..cd6ad4d 100644 --- a/delicate-utils/src/error.rs +++ b/delicate-utils/src/error.rs @@ -1,7 +1,4 @@ use crate::prelude::*; -use actix_web::client::JsonPayloadError; -use actix_web::client::SendRequestError as ClientSendRequestError; -use actix_web::error::{BlockingError, Error as ActixWebError}; use diesel::r2d2::PoolError; #[derive(ThisError, Debug)] @@ -12,12 +9,6 @@ pub enum CommonError { DisConnRedis(#[from] redis::RedisError), #[error("data query fail.")] DisQuery(#[from] diesel::result::Error), - #[error("data blocking-query fail.")] - DisBlockingQuery(#[from] BlockingError), - #[error("data send fail.")] - DisSend(#[from] ClientSendRequestError), - #[error("data parse-json fail.")] - DisParse(#[from] JsonPayloadError), #[error("data serializing fail.")] DisSer(#[from] serde_json_error::Error), #[error("data sign or decrypt or verify fail.")] @@ -28,10 +19,10 @@ pub enum CommonError { DisOpeate(#[from] TaskError), #[error("Invalid operation, or invalid data.(`{0}`)")] DisPass(String), - #[error("The errors reported by the framework cannot be ignored.")] - DisAccept(#[from] ActixWebError), #[error("The errors reported by the auth-service cannot be ignored.")] DisAuth(#[from] AuthServiceError), + #[error("Blocking running fail.")] + JoinError(#[from] JoinError), } #[derive(ThisError, Debug)] @@ -62,8 +53,6 @@ pub enum AuthServiceError { DisConnDb(#[from] PoolError), #[error("data query fail.")] DisQuery(#[from] diesel::result::Error), - #[error("data blocking-query fail.")] - DisBlockingQuery(#[from] BlockingError), #[error("The errors reported by the casbin is Authentication-related errors.")] DisAuthCasbin(#[from] casbin::error::Error), } diff --git a/delicate-utils/src/prelude.rs b/delicate-utils/src/prelude.rs index dddeb6a..0f1b9f3 100644 --- a/delicate-utils/src/prelude.rs +++ b/delicate-utils/src/prelude.rs @@ -9,19 +9,19 @@ pub use tokio; pub use tracing; pub use tracing_subscriber; +pub(crate) use async_lock::{RwLock, RwLockReadGuard, RwLockWriteGuard}; + pub use crate::consensus_message::security::{ self, make_signature, verify_signature_by_raw_data, SecurityLevel, }; pub use crate::consensus_message::service_binding; pub use crate::error::*; pub use crate::helper_utils::*; - pub(crate) use delay_timer::prelude::*; pub(crate) use delay_timer::utils::status_report::PublicFinishOutput; -pub(crate) use log::error; - -pub(crate) use async_lock::{RwLock, RwLockReadGuard, RwLockWriteGuard}; pub(crate) use derive_more::Display; + +pub(crate) use log::error; pub(crate) use rand::rngs::OsRng; pub(crate) use ring::digest::{digest, SHA256}; pub(crate) use serde::{Deserialize, Serialize}; @@ -41,6 +41,9 @@ pub(crate) use rsa::{ pub(crate) use uuid::Uuid; +pub(crate) use poem::{web::IntoResponse, Response}; +pub(crate) use tokio::task::JoinError; + pub(crate) use std::collections::HashMap; pub(crate) use std::convert::{TryFrom, TryInto}; pub(crate) use std::env; diff --git a/delicate-utils/src/uniform_data.rs b/delicate-utils/src/uniform_data.rs index 77e4647..16f5abd 100644 --- a/delicate-utils/src/uniform_data.rs +++ b/delicate-utils/src/uniform_data.rs @@ -1,8 +1,8 @@ use super::prelude::*; -pub trait UniformData: Debug + Clone + Serialize {} +pub trait UniformData: Debug + Clone + Serialize + Send + Sync {} -impl UniformData for T {} +impl UniformData for T {} pub trait Trial { #[inline(always)] @@ -134,6 +134,27 @@ impl From> } } +impl From, E>> + for UnifiedResponseMessages +{ + #[inline(always)] + fn from(value: Result, E>) -> Self { + let f = |e: E| { + let message = format!( + "{} ({})", + e.to_string(), + e.source().map(|s| { s.to_string() }).unwrap_or_default() + ); + Self::error().customized_error_msg(message) + }; + match value { + Ok(Ok(d)) => Self::success_with_data(d), + Err(e) => f(e), + Ok(Err(e)) => f(e), + } + } +} + impl From> for Result { #[inline(always)] fn from(value: UnifiedResponseMessages) -> Self { @@ -143,3 +164,26 @@ impl From> for Result } } } + +impl From> for UnifiedResponseMessages { + #[inline(always)] + fn from(value: Option) -> Self { + match value { + Some(value) => UnifiedResponseMessages::success_with_data(value), + None => UnifiedResponseMessages::error(), + } + } +} + +impl IntoResponse for &UnifiedResponseMessages { + #[inline(always)] + fn into_response(self) -> Response { + Response::builder().content_type("application/json").body( + to_json_string(self) + .map_err(|e| { + error!("into_response happened error: {}", e); + }) + .unwrap_or_default(), + ) + } +} diff --git a/migrate_to_poem..md b/migrate_to_poem..md index 6d86b60..25312b7 100644 --- a/migrate_to_poem..md +++ b/migrate_to_poem..md @@ -96,6 +96,45 @@ casbin = {version = '2.0.5', default-features = false, features = ["incremental" # TODO: This(redis-version) must be changed when upgrading to poem. redis = { version = "= 0.17.0", features = ["connection-manager", "tokio-comp"] } -// Cookie 中间件,不能用户配置属性有点不方便。 -// 通过CookieJar,每存一个新Cookie都需要手动配置安全相关的属性。 -// 如果中间件支持用户配置一次,后续默认走配置的属性就可以很简洁。 \ No newline at end of file + Cookie 中间件,是否能支持用户自定义配置属性? + 目前使用CookieJar,每存一个新Cookie都需要手动配置安全相关的属性,这虽然很灵活,但是有很多重复的工作在做。 + + 对一个站点,通常cookie的安全策略是保持一致的,对每个key都单独配置的场景比较少。 + + 并且目前`poem`中,Cookie中间件是开启feature后自动注册的,这样用户缺少一些初始化属性的控制力。 + + 我建议:Cookie 中间件,用户在框架启动时支持自定义配置并且可以覆盖默认装载的Cookie中间件, + 后续 Cookie 默认走配置的安全属性,使用起来会很轻便优雅。 + + +如何在中间件中提前响应? + +我最近在迁移项目从 `actix-web` 到 `poem` 遇到了一些棘手的问题. + +问题描述: + +在 `actix-web` 中,我可以将任务分成两步: + +1.状态判断成功 -> service.call() (相似于`poem`中的 ep.call()) +2. 状态判断失败,提前响应 -> 通过 req.error_response() (ServiceRequest::error_response) + +步骤1可以在poem中实现,但是步骤2目前没找到好的办法。 + +参考example中的中间件实现,可以用 extensions 加一个 `状态X` +handler 中使用提取器提取 `Result<状态X>` 自己处理, +但是我有50/60个 handler,不方便给每个handler都加一个状态。 +并且每次加中间件,都需要给handler配套加 `状态*`, 会让handler 很冗长。 + +特定向您请教。 + +Box::pin(async move { + Ok(req.error_response( + HttpResponseBuilder::new(StatusCode::default()).json( + UnifiedResponseMessages::<()>::error().customized_error_msg( + String::from("Please log in and operate."), + ), + ), + )) + }) + + From 62152cb3d49380b749bfe93e992e1843ff9ad756 Mon Sep 17 00:00:00 2001 From: BinChengZhao Date: Fri, 15 Oct 2021 01:27:25 +0800 Subject: [PATCH 06/13] feat: Fourth step of migrate to poem. --- .../src/actions/executor_group.rs | 12 ++--- .../src/actions/executor_processor.rs | 18 ++++---- .../src/actions/executor_processor_bind.rs | 8 ++-- delicate-scheduler/src/actions/task.rs | 20 ++++----- delicate-scheduler/src/actions/task_log.rs | 10 ++--- delicate-scheduler/src/actions/user.rs | 44 +++++++++---------- .../src/components/auth/casbin/middleware.rs | 2 +- .../src/components/health_checker.rs | 6 +-- delicate-scheduler/src/components/helper.rs | 2 +- delicate-scheduler/src/components/session.rs | 2 +- delicate-scheduler/src/prelude.rs | 31 +++++++------ 11 files changed, 77 insertions(+), 78 deletions(-) diff --git a/delicate-scheduler/src/actions/executor_group.rs b/delicate-scheduler/src/actions/executor_group.rs index 5cfb7f0..6600a87 100644 --- a/delicate-scheduler/src/actions/executor_group.rs +++ b/delicate-scheduler/src/actions/executor_group.rs @@ -14,7 +14,7 @@ pub(crate) fn config_route(route: Route) -> Route { #[handler] async fn create_executor_group( - req: &Request, + _req: &Request, Json(executor_group): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { @@ -36,7 +36,7 @@ async fn create_executor_group( .await; let id = f_result - .map(|id_result| Into::>::into(id_result)) + .map(Into::>::into) .unwrap_or_else(|e| { UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) }); @@ -155,7 +155,7 @@ async fn pre_show_executor_group_detail( #[handler] async fn update_executor_group( - req: &Request, + _req: &Request, Json(executor_group): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { @@ -174,7 +174,7 @@ async fn update_executor_group( .await; let count = f_result - .map(|count_result| Into::>::into(count_result)) + .map(Into::>::into) .unwrap_or_else(|e| { UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) }); @@ -187,7 +187,7 @@ async fn update_executor_group( #[handler] async fn delete_executor_group( - req: &Request, + _req: &Request, Json(model::ExecutorGroupId { executor_group_id }): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { @@ -210,7 +210,7 @@ async fn delete_executor_group( .await; let count = f_result - .map(|count_result| Into::>::into(count_result)) + .map(Into::>::into) .unwrap_or_else(|e| { UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) }); diff --git a/delicate-scheduler/src/actions/executor_processor.rs b/delicate-scheduler/src/actions/executor_processor.rs index c9af1e6..fc9d788 100644 --- a/delicate-scheduler/src/actions/executor_processor.rs +++ b/delicate-scheduler/src/actions/executor_processor.rs @@ -29,7 +29,7 @@ pub(crate) fn config_route(route: Route) -> Route { #[handler] async fn create_executor_processor( - req: &Request, + _req: &Request, Json(executor_processor): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { @@ -48,7 +48,7 @@ async fn create_executor_processor( .await; let count = f_result - .map(|count_result| Into::>::into(count_result)) + .map(Into::>::into) .unwrap_or_else(|e| { UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) }); @@ -107,7 +107,7 @@ async fn show_executor_processors( #[handler] async fn update_executor_processor( - req: &Request, + _req: &Request, Json(executor_processor): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { @@ -126,7 +126,7 @@ async fn update_executor_processor( .await; let count = f_result - .map(|count_result| Into::>::into(count_result)) + .map(Into::>::into) .unwrap_or_else(|e| { UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) }); @@ -138,7 +138,7 @@ async fn update_executor_processor( #[handler] async fn delete_executor_processor( - req: &Request, + _req: &Request, Json(model::ExecutorProcessorId { executor_processor_id, }): Json, @@ -162,7 +162,7 @@ async fn delete_executor_processor( .await; let count = f_result - .map(|count_result| Into::>::into(count_result)) + .map(Into::>::into) .unwrap_or_else(|e| { UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) }); @@ -227,12 +227,12 @@ async fn activate_executor( .. }: model::UpdateExecutorProcessor = query; - let client = RequestClient::default(); - let url = "http://".to_string() + (host.deref()) + "/api/executor/bind"; + let _client = RequestClient::default(); + let _url = "http://".to_string() + (host.deref()) + "/api/executor/bind"; let private_key = scheduler.get_app_security_key(); let scheduler_host = scheduler.get_app_host_name().clone(); - let signed_scheduler = service_binding::BindRequest::default() + let _signed_scheduler = service_binding::BindRequest::default() .set_scheduler_host(scheduler_host) .set_executor_processor_id(id) .set_executor_processor_host(host) diff --git a/delicate-scheduler/src/actions/executor_processor_bind.rs b/delicate-scheduler/src/actions/executor_processor_bind.rs index 419512e..b490ca9 100644 --- a/delicate-scheduler/src/actions/executor_processor_bind.rs +++ b/delicate-scheduler/src/actions/executor_processor_bind.rs @@ -24,7 +24,7 @@ pub(crate) fn config_route(route: Route) -> Route { #[handler] async fn create_executor_processor_bind( - req: &Request, + _req: &Request, Json(executor_processor_binds): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { @@ -58,7 +58,7 @@ async fn create_executor_processor_bind( .await; let count = f_result - .map(|count_result| Into::>::into(count_result)) + .map(Into::>::into) .unwrap_or_else(|e| { UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) }); @@ -244,7 +244,7 @@ async fn show_executor_processor_binds( #[handler] async fn delete_executor_processor_bind( - req: &Request, + _req: &Request, Json(model::ExecutorProcessorBindId { executor_processor_bind_id, }): Json, @@ -268,7 +268,7 @@ async fn delete_executor_processor_bind( .await; let count = f_result - .map(|count_result| Into::>::into(count_result)) + .map(Into::>::into) .unwrap_or_else(|e| { UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) }); diff --git a/delicate-scheduler/src/actions/task.rs b/delicate-scheduler/src/actions/task.rs index bcb1a61..38c0f2a 100644 --- a/delicate-scheduler/src/actions/task.rs +++ b/delicate-scheduler/src/actions/task.rs @@ -15,7 +15,7 @@ pub(crate) fn config_route(route: Route) -> Route { #[handler] async fn create_task( - req: &Request, + _req: &Request, Json(model::NewTaskBody { task, binding_ids }): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { @@ -47,7 +47,7 @@ async fn create_task( .await; let count = f_result - .map(|count_result| Into::>::into(count_result)) + .map(Into::>::into) .unwrap_or_else(|e| { UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) }); @@ -144,7 +144,7 @@ async fn show_tasks( // } pub async fn pre_update_task( - req: &Request, + _req: &Request, model::UpdateTaskBody { task, binding_ids }: model::UpdateTaskBody, pool: Data<&db::ConnectionPool>, ) -> Result<(), CommonError> { @@ -279,7 +279,7 @@ pub async fn pre_update_task_row( pub async fn pre_update_task_sevice( conn: db::PoolConnection, task_id: i64, - (removed_bind_processors, append_bind_processors, reserved_bind_processors): ( + (_removed_bind_processors, _append_bind_processors, _reserved_bind_processors): ( Vec, Vec, Vec, @@ -288,7 +288,7 @@ pub async fn pre_update_task_sevice( use db::schema::task; use delicate_utils_task::TaskPackage; - let (task_package, status) = task::table + let (task_package, _status) = task::table .select(( ( task::id, @@ -303,7 +303,7 @@ pub async fn pre_update_task_sevice( .filter(task::id.eq(task_id)) .first::<(TaskPackage, i16)>(&conn)?; - let task_id = task_package.id; + let _task_id = task_package.id; // FIXME: todo!(); @@ -391,7 +391,7 @@ pub async fn pre_update_task_sevice( #[handler] async fn delete_task( - req: &Request, + _req: &Request, Json(model::TaskId { task_id }): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { @@ -417,7 +417,7 @@ async fn delete_task( .await; let resp = f_result - .map(|resp_result| Into::>::into(resp_result)) + .map(Into::>::into) .unwrap_or_else(|e| { UnifiedResponseMessages::<()>::error().customized_error_msg(e.to_string()) }); @@ -480,7 +480,7 @@ async fn delete_task( // } async fn pre_run_task( - req: &Request, + _req: &Request, task_id: i64, pool: Data<&db::ConnectionPool>, ) -> Result<(), CommonError> { @@ -504,7 +504,7 @@ async fn pre_run_task( let conn = pool.get()?; // Many machine. - let task_packages: Vec<(delicate_utils_task::TaskPackage, (String, String))> = + let _task_packages: Vec<(delicate_utils_task::TaskPackage, (String, String))> = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { diesel::update(task.find(task_id)) .set(task::status.eq(State::Enabled as i16)) diff --git a/delicate-scheduler/src/actions/task_log.rs b/delicate-scheduler/src/actions/task_log.rs index c6f1478..8a029dc 100644 --- a/delicate-scheduler/src/actions/task_log.rs +++ b/delicate-scheduler/src/actions/task_log.rs @@ -247,7 +247,7 @@ fn batch_update_task_logs( } async fn kill_one_task_instance( - req: &Request, + _req: &Request, pool: Data<&db::ConnectionPool>, model::TaskRecord { task_id, @@ -287,10 +287,10 @@ async fn kill_one_task_instance( }) .await??; - let client = RequestClient::default(); - let url = "http://".to_string() + (host.deref()) + "/api/task_instance/kill"; + let _client = RequestClient::default(); + let _url = "http://".to_string() + (host.deref()) + "/api/task_instance/kill"; - let record = delicate_utils_task_log::CancelTaskRecord::default() + let _record = delicate_utils_task_log::CancelTaskRecord::default() .set_task_id(task_id) .set_record_id(record_id.0) .set_time(get_timestamp()) @@ -309,7 +309,7 @@ async fn kill_one_task_instance( #[handler] async fn delete_task_log( - req: &Request, + _req: &Request, Json(delete_params): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { diff --git a/delicate-scheduler/src/actions/user.rs b/delicate-scheduler/src/actions/user.rs index a9f2a01..f12776a 100644 --- a/delicate-scheduler/src/actions/user.rs +++ b/delicate-scheduler/src/actions/user.rs @@ -1,7 +1,7 @@ use super::prelude::*; -use model::schema::{user, user_auth, user_login_log}; +use model::schema::{user, user_auth}; use model::user::{ - get_encrypted_certificate_by_raw_certificate, UserAndPermissions, UserAndRoles, UserName, + UserAndPermissions, UserAndRoles, UserName, }; pub(crate) fn config_route(route: Route) -> Route { @@ -26,7 +26,7 @@ pub(crate) fn config_route(route: Route) -> Route { #[handler] async fn create_user( - req: &Request, + _req: &Request, Json(user): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { @@ -65,7 +65,7 @@ async fn create_user( .await; let resp = f_result - .map(|resp_result| Into::>::into(resp_result)) + .map(Into::>::into) .unwrap_or_else(|e| { UnifiedResponseMessages::<()>::error().customized_error_msg(e.to_string()) }); @@ -122,7 +122,7 @@ async fn show_users( #[handler] async fn update_user( - req: &Request, + _req: &Request, Json(user_value): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { @@ -139,7 +139,7 @@ async fn update_user( .await; let count = f_result - .map(|count_result| Into::>::into(count_result)) + .map(Into::>::into) .unwrap_or_else(|e| { UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) }); @@ -152,9 +152,9 @@ async fn update_user( #[handler] async fn change_password( - req: &Request, - Json(user_value): Json, - pool: Data<&db::ConnectionPool>, + _req: &Request, + Json(_user_value): Json, + _pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { // FIXME: @@ -193,7 +193,7 @@ async fn change_password( #[handler] async fn delete_user( - req: &Request, + _req: &Request, Json(model::UserId { user_id }): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { @@ -218,7 +218,7 @@ async fn delete_user( .await; let resp = f_result - .map(|resp_result| Into::>::into(resp_result)) + .map(Into::>::into) .unwrap_or_else(|e| { UnifiedResponseMessages::<()>::error().customized_error_msg(e.to_string()) }); @@ -244,16 +244,16 @@ async fn delete_user( // } async fn pre_login_user( - req: &Request, + _req: &Request, model::UserAuthLogin { - login_type, - account, - password, + login_type: _, + account: _, + password: _, }: model::UserAuthLogin, // session: Session, - pool: Data<&db::ConnectionPool>, + _pool: Data<&db::ConnectionPool>, ) -> Result<(), CommonError> { - use model::user_login_log::NewUserLoginLog; + // FIXME: @@ -307,7 +307,7 @@ async fn pre_login_user( fn save_session( // session: Session, - (_, user): (model::UserAuth, model::User), + (_, _user): (model::UserAuth, model::User), ) -> Result<(), CommonError> { // FIXME: @@ -407,7 +407,7 @@ async fn permissions( #[handler] async fn append_role( - req: &Request, + _req: &Request, enforcer: Data<&RwLock>, Json(user_and_roles): Json, ) -> impl IntoResponse { @@ -445,7 +445,7 @@ async fn append_role( #[handler] async fn delete_role( - req: &Request, + _req: &Request, enforcer: Data<&RwLock>, Json(user_and_roles): Json, ) -> impl IntoResponse { @@ -488,7 +488,7 @@ async fn delete_role( #[handler] async fn append_permission( - req: &Request, + _req: &Request, enforcer: Data<&RwLock>, Json(user_and_permissions): Json, ) -> impl IntoResponse { @@ -514,7 +514,7 @@ async fn append_permission( #[handler] async fn delete_permission( - req: &Request, + _req: &Request, enforcer: Data<&RwLock>, Json(user_and_permissions): Json, ) -> impl IntoResponse { diff --git a/delicate-scheduler/src/components/auth/casbin/middleware.rs b/delicate-scheduler/src/components/auth/casbin/middleware.rs index 91b2650..54a1e29 100644 --- a/delicate-scheduler/src/components/auth/casbin/middleware.rs +++ b/delicate-scheduler/src/components/auth/casbin/middleware.rs @@ -95,7 +95,7 @@ const WHITE_LIST: [&str; 9] = [ impl Endpoint for CasbinAuthMiddleware { type Output = Response; - async fn call(&self, mut req: Request) -> Self::Output { + async fn call(&self, req: Request) -> Self::Output { let enforcer = req .extensions() .get::>>>() diff --git a/delicate-scheduler/src/components/health_checker.rs b/delicate-scheduler/src/components/health_checker.rs index b6944d4..80e777e 100644 --- a/delicate-scheduler/src/components/health_checker.rs +++ b/delicate-scheduler/src/components/health_checker.rs @@ -23,9 +23,9 @@ pub(crate) async fn loop_health_check( async fn health_check( conn: db::PoolConnection, - request_client: RequestClient, + _request_client: RequestClient, ) -> Result<(), CommonError> { - let (executor_packages, conn) = + let (executor_packages, _conn) = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { let executors = executor_processor::table .select(( @@ -41,7 +41,7 @@ async fn health_check( Ok((executors, conn)) }) .await??; - let all_executor_ids: HashSet = executor_packages.iter().map(|(id, _, _)| *id).collect(); + let _all_executor_ids: HashSet = executor_packages.iter().map(|(id, _, _)| *id).collect(); // FIXME: todo!(); diff --git a/delicate-scheduler/src/components/helper.rs b/delicate-scheduler/src/components/helper.rs index 0b9c599..764c686 100644 --- a/delicate-scheduler/src/components/helper.rs +++ b/delicate-scheduler/src/components/helper.rs @@ -1,7 +1,7 @@ use super::prelude::*; pub(crate) async fn handle_response( - request_all: JoinAll, + _request_all: JoinAll, ) -> Vec { // FIXME: todo!(); diff --git a/delicate-scheduler/src/components/session.rs b/delicate-scheduler/src/components/session.rs index 33351c5..20e33cc 100644 --- a/delicate-scheduler/src/components/session.rs +++ b/delicate-scheduler/src/components/session.rs @@ -46,7 +46,7 @@ pub struct SessionAuthMiddleware { impl Endpoint for SessionAuthMiddleware { type Output = Response; - async fn call(&self, mut req: Request) -> Self::Output { + async fn call(&self, req: Request) -> Self::Output { #[cfg(APP_DEBUG_MODE)] { return self.ep.call(req).await.into_response(); diff --git a/delicate-scheduler/src/prelude.rs b/delicate-scheduler/src/prelude.rs index debc865..dc9efb5 100644 --- a/delicate-scheduler/src/prelude.rs +++ b/delicate-scheduler/src/prelude.rs @@ -6,9 +6,9 @@ pub(crate) use super::components::auth::casbin::casbin_event_consumer::{ pub(crate) use super::components::auth::casbin::*; pub(crate) use super::components::base::SchedulerMetaInfo; pub(crate) use super::components::health_checker::loop_health_check; -pub(crate) use super::components::helper::handle_response; + pub(crate) use super::components::operation_log_consumer::{ - loop_operate_logs, send_option_operation_log_pair, + loop_operate_logs, }; pub(crate) use super::db; pub(crate) use super::db::common::helper::*; @@ -21,8 +21,7 @@ pub(crate) use common_model::PaginateData; pub(crate) use delicate_utils::consensus_message::security::{self, SecurityLevel}; pub(crate) use delicate_utils::consensus_message::service_binding; pub(crate) use delicate_utils::consensus_message::{ - executor_processor as delicate_utils_executor_processor, - health_check as delicate_utils_health_check, task as delicate_utils_task, + task as delicate_utils_task, task_log as delicate_utils_task_log, }; pub(crate) use delicate_utils::error::{AuthServiceError, CommonError}; @@ -30,24 +29,24 @@ pub(crate) use delicate_utils::helper_utils::get_unique_id_string; pub(crate) use delicate_utils::prelude::*; pub(crate) use delicate_utils::uniform_data::*; -pub(crate) use std::cell::RefCell; + pub(crate) use std::collections::{HashMap, HashSet}; pub(crate) use std::convert::{AsRef, TryFrom}; pub(crate) use std::env; pub(crate) use std::fmt::Debug; pub(crate) use std::iter::Iterator; pub(crate) use std::ops::Deref; -pub(crate) use std::rc::Rc; + pub(crate) use std::str::FromStr; pub(crate) use std::string::ToString; pub(crate) use std::sync::atomic::{AtomicUsize, Ordering}; pub(crate) use std::sync::Arc; -pub(crate) use std::task::{Context, Poll}; + pub(crate) use std::time::Duration; pub(crate) use std::time::SystemTime; -pub(crate) use std::vec::IntoIter; -pub(crate) use futures::future::{join, join3, ok, JoinAll, Ready}; + +pub(crate) use futures::future::{JoinAll}; pub(crate) use cached::proc_macro::cached; pub(crate) use cached::TimedSizedCache; @@ -66,7 +65,7 @@ pub(crate) use diesel::r2d2::CustomizeConnection; pub(crate) use diesel::result::Error as DieselError; pub(crate) use diesel::sql_types; -pub(crate) use awc::{JsonBody, SendClientRequest}; +pub(crate) use awc::{SendClientRequest}; pub(crate) use anyhow::Result as AnyResut; pub(crate) use async_channel::{Receiver as AsyncReceiver, Sender as AsyncSender}; @@ -79,14 +78,14 @@ pub(crate) use tokio::spawn as tokio_spawn; pub(crate) use tokio::task::spawn_blocking; pub(crate) use tokio::time::{interval, sleep}; pub(crate) use tokio::time::{timeout as tokio_timeout, Timeout as TokioTimeout}; -pub(crate) use tracing::{debug, error, info, info_span, span, Instrument, Level}; +pub(crate) use tracing::{debug, error, span, Instrument, Level}; pub(crate) use tracing_subscriber::FmtSubscriber; pub(crate) use flexi_logger::{ writers::FileLogWriter, Age, Cleanup, Criterion, FileSpec, Naming, WriteMode, }; pub(crate) use regex::Regex; -pub(crate) use reqwest::{Client as RequestClient, RequestBuilder}; +pub(crate) use reqwest::{Client as RequestClient}; pub(crate) use ring::digest::{digest, SHA256}; pub(crate) use rsa::RSAPrivateKey; pub(crate) use serde::de::DeserializeOwned; @@ -96,13 +95,13 @@ pub(crate) use strum::IntoEnumIterator; pub(crate) use strum_macros::{AsRefStr, EnumIter, IntoStaticStr, ToString as StrumToString}; pub(crate) use validator::{Validate, ValidationErrors}; -pub(crate) use poem::error::ParseCookieError; -pub(crate) use poem::http::{Method, Uri}; + +pub(crate) use poem::http::{Method}; pub(crate) use poem::listener::TcpListener; pub(crate) use poem::middleware::AddData; -pub(crate) use poem::middleware::CookieJarManager; + pub(crate) use poem::middleware::Cors; -pub(crate) use poem::web::cookie::{Cookie, CookieJar, SignedCookieJar}; +pub(crate) use poem::web::cookie::{CookieJar}; pub(crate) use poem::web::{Data, IntoResponse, Json}; pub(crate) use poem::{ get, handler, post, Endpoint, EndpointExt, Middleware, Request, Response, Route, Server, From ecedf2bd2c72e96e9f2d0528a49e9275ff7c06f0 Mon Sep 17 00:00:00 2001 From: BinChengZhao Date: Fri, 15 Oct 2021 20:28:17 +0800 Subject: [PATCH 07/13] feat: Fifth step of migrate to poem. --- delicate-executor/src/main.rs | 265 +++++---- delicate-executor/src/prelude.rs | 6 +- delicate-scheduler/Cargo.toml | 1 - .../src/actions/executor_group.rs | 49 +- .../src/actions/executor_processor.rs | 113 ++-- .../src/actions/executor_processor_bind.rs | 297 +++++----- delicate-scheduler/src/actions/task.rs | 557 +++++++++--------- delicate-scheduler/src/actions/task_log.rs | 80 ++- delicate-scheduler/src/actions/user.rs | 407 +++++++------ .../src/components/health_checker.rs | 100 ++-- delicate-scheduler/src/components/helper.rs | 71 ++- delicate-scheduler/src/components/session.rs | 40 +- delicate-scheduler/src/db/common/helper.rs | 23 +- .../src/db/mysql/model/user_login_log.rs | 4 +- delicate-scheduler/src/main.rs | 178 +++--- delicate-scheduler/src/prelude.rs | 47 +- delicate-utils/src/error.rs | 4 + migrate_to_poem..md | 4 + 18 files changed, 1123 insertions(+), 1123 deletions(-) diff --git a/delicate-executor/src/main.rs b/delicate-executor/src/main.rs index 365d4ca..633dff9 100644 --- a/delicate-executor/src/main.rs +++ b/delicate-executor/src/main.rs @@ -159,36 +159,34 @@ async fn health_screen( executor_conf: Data<&ExecutorSecurityConf>, system_mirror: Data<&SystemMirror>, ) -> Json> { - // FIXME: - todo!(); - // let guard = executor_conf.get_bind_scheduler_token_ref().await; - // let token = guard.as_ref().map(|s| s.deref()); - - // let verify_result = signed_health_screen_unit.get_health_screen_unit_after_verify(token); - // if let Ok(health_screen_unit) = verify_result { - // let ip = req.remote_addr(); - // info!("From: {}, Request-time:{}", ip, health_screen_unit); - - // let system_snapshot = system_mirror.refresh_all().await; - // let bind_request = executor_conf - // .get_bind_scheduler_inner_ref() - // .await - // .clone() - // .unwrap_or_default(); - - // let health_check_package = HealthCheckPackage { - // system_snapshot, - // bind_request, - // }; - // return Json( - // UnifiedResponseMessages::::success_with_data(health_check_package), - // ); - // } - - // Json( - // UnifiedResponseMessages::::error() - // .customized_error_msg(verify_result.expect_err("").to_string()), - // ) + let guard = executor_conf.get_bind_scheduler_token_ref().await; + let token = guard.as_ref().map(|s| s.deref()); + + let verify_result = signed_health_screen_unit.get_health_screen_unit_after_verify(token); + if let Ok(health_screen_unit) = verify_result { + let ip = req.remote_addr(); + info!("From: {}, Request-time:{}", ip, health_screen_unit); + + let system_snapshot = system_mirror.refresh_all().await; + let bind_request = executor_conf + .get_bind_scheduler_inner_ref() + .await + .clone() + .unwrap_or_default(); + + let health_check_package = HealthCheckPackage { + system_snapshot, + bind_request, + }; + return Json( + UnifiedResponseMessages::::success_with_data(health_check_package), + ); + } + + Json( + UnifiedResponseMessages::::error() + .customized_error_msg(verify_result.expect_err("").to_string()), + ) } #[handler] @@ -201,47 +199,55 @@ async fn bind_executor( ) -> Json> { info!("{}", &request_bind_scheduler.bind_request); - // FIXME: + let verify_result = request_bind_scheduler.verify(security_conf.get_rsa_public_key()); + if verify_result.is_ok() { + let SignedBindRequest { bind_request, .. } = request_bind_scheduler; - // let verify_result = request_bind_scheduler.verify(security_conf.get_rsa_public_key()); - // if verify_result.is_ok() { - // let SignedBindRequest { bind_request, .. } = request_bind_scheduler; + let token: Option = security_conf.generate_token(); - // let token: Option = security_conf.generate_token(); + // Take 10 bits from executor_machine_id and do machine_id and node_id in two groups. - // // Take 10 bits from executor_machine_id and do machine_id and node_id in two groups. + let executor_machine_id = bind_request.executor_machine_id; + let extractor: i16 = 0b00_0001_1111; + let node_id = executor_machine_id & extractor; + let machine_id = (executor_machine_id >> 5) & extractor; - // let executor_machine_id = bind_request.executor_machine_id; - // let extractor: i16 = 0b00_0001_1111; - // let node_id = executor_machine_id & extractor; - // let machine_id = (executor_machine_id >> 5) & extractor; + shared_delay_timer.update_id_generator_conf(machine_id as i32, node_id as i32); - // shared_delay_timer.update_id_generator_conf(machine_id as i32, node_id as i32); + *security_conf.get_bind_scheduler_inner_mut().await = Some(bind_request); + *security_conf.get_bind_scheduler_token_mut().await = token.clone(); - // *security_conf.get_bind_scheduler_inner_mut().await = Some(bind_request); - // *security_conf.get_bind_scheduler_token_mut().await = token.clone(); - - // let bind_response = BindResponse { - // time: get_timestamp() as i64, - // token, - // } - // .encrypt_self(security_conf.get_rsa_public_key()); + let bind_response = BindResponse { + time: get_timestamp() as i64, + token, + } + .encrypt_self(security_conf.get_rsa_public_key()); - // let response: UnifiedResponseMessages = Into::into(bind_response); - // return Json(response); - // } + let response: UnifiedResponseMessages = Into::into(bind_response); + return Json(response); + } - // Json( - // UnifiedResponseMessages::::error() - // .customized_error_msg(verify_result.expect_err("").to_string()), - // ) - todo!(); + Json( + UnifiedResponseMessages::::error() + .customized_error_msg(verify_result.expect_err("").to_string()), + ) } fn main() -> AnyResult<()> { // Loads environment variables. dotenv().ok(); + let log_level: Level = + FromStr::from_str(&env::var("LOG_LEVEL").unwrap_or_else(|_| String::from("info"))) + .expect("Log level acquired fail."); + + FmtSubscriber::builder() + // will be written to stdout. + .with_max_level(log_level) + .with_thread_names(true) + // completes the builder. + .init(); + let raw_runtime = Builder::new_multi_thread() .thread_name_fn(|| { static ATOMIC_ID: AtomicUsize = AtomicUsize::new(0); @@ -256,30 +262,6 @@ fn main() -> AnyResult<()> { let arc_runtime_cloned = arc_runtime.clone(); let block_result: AnyResult<()> = arc_runtime.block_on(async move { - let log_level: Level = - FromStr::from_str(&env::var("LOG_LEVEL").unwrap_or_else(|_| String::from("info"))) - .expect("Log level acquired fail."); - - FmtSubscriber::builder() - // will be written to stdout. - .with_max_level(log_level) - .with_thread_names(true) - // completes the builder. - .init(); - - let arc_security_conf = Arc::new(ExecutorSecurityConf::default()); - let shared_security_conf: AddData> = - AddData::new(arc_security_conf.clone()); - - let shared_system_mirror: AddData> = - AddData::new(Arc::new(SystemMirror::default())); - - let mut delay_timer = DelayTimerBuilder::default() - .tokio_runtime_shared_by_custom(arc_runtime_cloned) - .enable_status_report() - .build(); - launch_status_reporter(&mut delay_timer, arc_security_conf); - let shared_delay_timer: AddData> = AddData::new(Arc::new(delay_timer)); let route = Route::new() .at("/api/task/update", post(update_task)) .at("/api/task/create", post(create_task)) @@ -287,72 +269,93 @@ fn main() -> AnyResult<()> { .at("/api/task/advance", post(advance_task)) .at("/api/task_instance/kill", post(cancel_task)) .at("/api/executor/health_screen", post(health_screen)) - .at("/api/executor/bind", post(bind_executor)) - .with(shared_delay_timer) - .with(shared_security_conf); + .at("/api/executor/bind", post(bind_executor)); + let app = init_executor(route, arc_runtime_cloned).await; let address = env::var("EXECUTOR_LISTENING_ADDRESS") .expect("Without `EXECUTOR_LISTENING_ADDRESS` set in .env"); let listener = TcpListener::bind(address); let server = Server::new(listener).await?; - Ok(server.run(route).await?) + Ok(server.run(app).await?) }); block_result } +async fn init_executor(app: Route, arc_runtime: Arc) -> impl Endpoint { + let arc_security_conf = Arc::new(ExecutorSecurityConf::default()); + let shared_security_conf: AddData> = + AddData::new(arc_security_conf.clone()); + + let shared_system_mirror: AddData> = + AddData::new(Arc::new(SystemMirror::default())); + + let mut delay_timer = DelayTimerBuilder::default() + .tokio_runtime_shared_by_custom(arc_runtime) + .enable_status_report() + .build(); + let request_client = RequestClient::new(); + let shared_request_client = AddData::new(request_client.clone()); + launch_status_reporter(&mut delay_timer, arc_security_conf, request_client); + let shared_delay_timer: AddData> = AddData::new(Arc::new(delay_timer)); + + app.with(shared_delay_timer) + .with(shared_security_conf) + .with(shared_system_mirror) + .with(shared_request_client) +} fn launch_status_reporter( delay_timer: &mut DelayTimer, shared_security_conf: Arc, + client: RequestClient, ) { let status_reporter_option = delay_timer.take_status_reporter(); - // if let Some(status_reporter) = status_reporter_option { - // tokio_spawn(async move { - // // After taking the lock, get the resource quickly and release the lock. - - // let mut token: Option = None; - // let mut scheduler: Option = None; - // let client = RequestClient::new(); - - // loop { - // let f = async { - // fresh_scheduler_conf(&shared_security_conf, &mut token, &mut scheduler).await; - - // let events = collect_events(&status_reporter, scheduler.as_ref()).await?; - - // if events.is_empty() { - // return Ok(()); - // } - - // if let Ok(executor_event_collection) = - // Into::::into(events).sign(token.as_deref()) - // { - // send_event_collection( - // scheduler.as_ref(), - // executor_event_collection, - // &client, - // ) - // .await; - // } - - // Ok(()) - // }; - // let f_result: Result<(), NewCommonError> = f - // .instrument(span!( - // Level::INFO, - // "status-reporter", - // log_id = get_unique_id_string().deref() - // )) - // .await; - - // if let Err(e) = f_result { - // error!("{}", e); - // return; - // } - // } - // }); - // } + if let Some(status_reporter) = status_reporter_option { + tokio_spawn(async move { + // After taking the lock, get the resource quickly and release the lock. + + let mut token: Option = None; + let mut scheduler: Option = None; + + loop { + let f = async { + fresh_scheduler_conf(&shared_security_conf, &mut token, &mut scheduler).await; + + let events = collect_events(&status_reporter, scheduler.as_ref()).await?; + + if events.is_empty() { + return Ok(()); + } + + if let Ok(executor_event_collection) = + Into::::into(events).sign(token.as_deref()) + { + send_event_collection( + scheduler.as_ref(), + executor_event_collection, + &client, + ) + .await; + } + + Ok(()) + }; + let f_result: Result<(), NewCommonError> = f + .instrument(span!( + Level::INFO, + "status-reporter", + log_id = get_unique_id_string().deref() + )) + .await; + + if let Err(e) = f_result { + error!("{}", e); + return; + } + } + }); + } } async fn fresh_scheduler_conf( shared_security_conf: &ExecutorSecurityConf, diff --git a/delicate-executor/src/prelude.rs b/delicate-executor/src/prelude.rs index 9634988..522a31b 100644 --- a/delicate-executor/src/prelude.rs +++ b/delicate-executor/src/prelude.rs @@ -21,7 +21,7 @@ pub(crate) use delicate_utils::prelude::*; pub(crate) use crate::delay_timer::utils::status_report::StatusReporter; pub(crate) use delicate_utils::uniform_data::UnifiedResponseMessages; -pub(crate) use tokio::runtime::Builder; +pub(crate) use tokio::runtime::{Builder, Runtime}; pub(crate) use tokio::spawn as tokio_spawn; pub(crate) use tokio::time::{timeout as tokio_timeout, Timeout as TokioTimeout}; pub(crate) use tracing::{debug, error, info, instrument, span, Instrument, Level}; @@ -40,7 +40,9 @@ pub(crate) use sysinfo::{RefreshKind, System, SystemExt}; pub(crate) use poem::middleware::AddData; pub(crate) use poem::web::{Data, Json, Path}; -pub(crate) use poem::{handler, listener::TcpListener, post, EndpointExt, Request, Route, Server}; +pub(crate) use poem::{ + handler, listener::TcpListener, post, Endpoint, EndpointExt, Request, Route, Server, +}; pub(crate) use reqwest::Client as RequestClient; pub(crate) type UnitUnifiedResponseMessages = UnifiedResponseMessages<()>; diff --git a/delicate-scheduler/Cargo.toml b/delicate-scheduler/Cargo.toml index b7be277..12382ff 100644 --- a/delicate-scheduler/Cargo.toml +++ b/delicate-scheduler/Cargo.toml @@ -18,7 +18,6 @@ async-channel = "1.6.1" async-lock = "^2.4.0" async-trait = "0.1.51" anyhow = "^1.0.38" -awc = { version = "2.0.3", default-features = false } concat-idents = "1.1.3" cached = "^0.23.0" chrono = { version = "^0.4", features = ["serde"]} diff --git a/delicate-scheduler/src/actions/executor_group.rs b/delicate-scheduler/src/actions/executor_group.rs index 6600a87..d94ed85 100644 --- a/delicate-scheduler/src/actions/executor_group.rs +++ b/delicate-scheduler/src/actions/executor_group.rs @@ -14,16 +14,15 @@ pub(crate) fn config_route(route: Route) -> Route { #[handler] async fn create_executor_group( - _req: &Request, + req: &Request, Json(executor_group): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { use db::schema::executor_group; - // FIXME: - // let operation_log_pair_option = - // generate_operation_executor_group_addtion_log(&req.get_session(), &executor_group).ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = + generate_operation_executor_group_addtion_log(&req.get_session(), &executor_group).ok(); + send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -104,15 +103,15 @@ async fn show_executor_group_detail( UnifiedResponseMessages::::success_with_data( executor_group_detail, ), - ); + ) + .into_response(); }; - // FIXME: - todo!(); - // Json( - // UnifiedResponseMessages::::error() - // .customized_error_msg(executor_group_detail_result.expect_err("").to_string()), - // ) + Json( + UnifiedResponseMessages::<()>::error() + .customized_error_msg(executor_group_detail_result.expect_err("").to_string()), + ) + .into_response() } async fn pre_show_executor_group_detail( @@ -155,15 +154,13 @@ async fn pre_show_executor_group_detail( #[handler] async fn update_executor_group( - _req: &Request, + req: &Request, Json(executor_group): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { - // FIXME: - - // let operation_log_pair_option = - // generate_operation_executor_group_modify_log(&req.get_session(), &executor_group).ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = + generate_operation_executor_group_modify_log(&req.get_session(), &executor_group).ok(); + send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -187,20 +184,18 @@ async fn update_executor_group( #[handler] async fn delete_executor_group( - _req: &Request, + req: &Request, Json(model::ExecutorGroupId { executor_group_id }): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { use db::schema::executor_group::dsl::*; - // FIXME: - - // let operation_log_pair_option = generate_operation_executor_group_delete_log( - // &req.get_session(), - // &CommonTableRecord::default().set_id(executor_group_id), - // ) - // .ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = generate_operation_executor_group_delete_log( + &req.get_session(), + &CommonTableRecord::default().set_id(executor_group_id), + ) + .ok(); + send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { diff --git a/delicate-scheduler/src/actions/executor_processor.rs b/delicate-scheduler/src/actions/executor_processor.rs index fc9d788..9fa47d7 100644 --- a/delicate-scheduler/src/actions/executor_processor.rs +++ b/delicate-scheduler/src/actions/executor_processor.rs @@ -19,25 +19,22 @@ pub(crate) fn config_route(route: Route) -> Route { "/api/executor_processor/delete", post(delete_executor_processor), ) - - // FIXME: - // .at( - // "/api/executor_processor/activate", - // post(activate_executor_processor), - // ) + .at( + "/api/executor_processor/activate", + post(activate_executor_processor), + ) } #[handler] async fn create_executor_processor( - _req: &Request, + req: &Request, Json(executor_processor): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { - // FIXME: - // let operation_log_pair_option = - // generate_operation_executor_processor_addtion_log(&req.get_session(), &executor_processor) - // .ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = + generate_operation_executor_processor_addtion_log(&req.get_session(), &executor_processor) + .ok(); + send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -107,15 +104,14 @@ async fn show_executor_processors( #[handler] async fn update_executor_processor( - _req: &Request, + req: &Request, Json(executor_processor): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { - // FIXME: - // let operation_log_pair_option = - // generate_operation_executor_processor_modify_log(&req.get_session(), &executor_processor) - // .ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = + generate_operation_executor_processor_modify_log(&req.get_session(), &executor_processor) + .ok(); + send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -138,7 +134,7 @@ async fn update_executor_processor( #[handler] async fn delete_executor_processor( - _req: &Request, + req: &Request, Json(model::ExecutorProcessorId { executor_processor_id, }): Json, @@ -146,14 +142,12 @@ async fn delete_executor_processor( ) -> impl IntoResponse { use db::schema::executor_processor::dsl::*; - // FIXME: - - // let operation_log_pair_option = generate_operation_executor_processor_delete_log( - // &req.get_session(), - // &CommonTableRecord::default().set_id(executor_processor_id), - // ) - // .ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = generate_operation_executor_processor_delete_log( + &req.get_session(), + &CommonTableRecord::default().set_id(executor_processor_id), + ) + .ok(); + send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -172,34 +166,33 @@ async fn delete_executor_processor( Json(UnifiedResponseMessages::::error()) } -// Update `status` and `token`. - -// FIXME: - -// #[handler] -// async fn activate_executor_processor( -// Json(model::ExecutorProcessorId { -// executor_processor_id, -// }): Json, -// pool: Data<&db::ConnectionPool>, -// scheduler: Data<&SchedulerMetaInfo>, -// ) -> impl IntoResponse { -// let uniform_data: UnifiedResponseMessages<()> = -// do_activate(pool, executor_processor_id, scheduler) -// .await -// .into(); -// Json(uniform_data) -// } +#[handler] +async fn activate_executor_processor( + req: &Request, + Json(model::ExecutorProcessorId { + executor_processor_id, + }): Json, + pool: Data<&db::ConnectionPool>, + scheduler: Data<&SchedulerMetaInfo>, +) -> impl IntoResponse { + let uniform_data: UnifiedResponseMessages<()> = + do_activate(req, pool, executor_processor_id, scheduler) + .await + .into(); + Json(uniform_data) +} async fn do_activate( + req: &Request, pool: Data<&db::ConnectionPool>, executor_processor_id: i64, scheduler: Data<&SchedulerMetaInfo>, ) -> Result<(), CommonError> { - let bind_info = activate_executor(pool.get()?, executor_processor_id, scheduler).await?; + let bind_info = activate_executor(req, pool.get()?, executor_processor_id, scheduler).await?; activate_executor_row(pool.get()?, executor_processor_id, bind_info).await?; Ok(()) } async fn activate_executor( + req: &Request, conn: db::PoolConnection, executor_processor_id: i64, scheduler: Data<&SchedulerMetaInfo>, @@ -227,12 +220,15 @@ async fn activate_executor( .. }: model::UpdateExecutorProcessor = query; - let _client = RequestClient::default(); - let _url = "http://".to_string() + (host.deref()) + "/api/executor/bind"; + let request_client = req + .extensions() + .get::() + .expect("Missing Components `RequestClient`"); + let url = "http://".to_string() + (host.deref()) + "/api/executor/bind"; let private_key = scheduler.get_app_security_key(); let scheduler_host = scheduler.get_app_host_name().clone(); - let _signed_scheduler = service_binding::BindRequest::default() + let signed_scheduler = service_binding::BindRequest::default() .set_scheduler_host(scheduler_host) .set_executor_processor_id(id) .set_executor_processor_host(host) @@ -241,17 +237,16 @@ async fn activate_executor( .set_time(get_timestamp()) .sign(private_key)?; - // FIXME: - todo!(); - // let response: Result = client - // .post(url) - // .send_json(&signed_scheduler) - // .await? - // .json::>() - // .await? - // .into(); + let response: Result = request_client + .post(url) + .json(&signed_scheduler) + .send() + .await? + .json::>() + .await? + .into(); - // Ok(response?.decrypt_self(private_key)?) + Ok(response?.decrypt_self(private_key)?) } async fn activate_executor_row( diff --git a/delicate-scheduler/src/actions/executor_processor_bind.rs b/delicate-scheduler/src/actions/executor_processor_bind.rs index b490ca9..8ec9b54 100644 --- a/delicate-scheduler/src/actions/executor_processor_bind.rs +++ b/delicate-scheduler/src/actions/executor_processor_bind.rs @@ -10,11 +10,10 @@ pub(crate) fn config_route(route: Route) -> Route { "/api/executor_processor_bind/create", post(create_executor_processor_bind), ) - // FIXME: - // .at( - // "/api/executor_processor_bind/update", - // post(update_executor_processor_bind), - // ) + .at( + "/api/executor_processor_bind/update", + post(update_executor_processor_bind), + ) .at( "/api/executor_processor_bind/delete", post(delete_executor_processor_bind), @@ -24,19 +23,18 @@ pub(crate) fn config_route(route: Route) -> Route { #[handler] async fn create_executor_processor_bind( - _req: &Request, + req: &Request, Json(executor_processor_binds): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { use db::schema::executor_processor_bind; - // FIXME: - // let operation_log_pair_option = generate_operation_executor_processor_bind_addtion_log( - // &req.get_session(), - // &executor_processor_binds, - // ) - // .ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = generate_operation_executor_processor_bind_addtion_log( + &req.get_session(), + &executor_processor_binds, + ) + .ok(); + send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -108,143 +106,143 @@ async fn show_executor_processor_binds( UnifiedResponseMessages::>::error() .customized_error_msg(e.to_string()) }); - return Json(binds); + return Json(binds).into_response(); } - // FIXME: - todo!(); - // Json(UnifiedResponseMessages::>::error()) + Json(UnifiedResponseMessages::>::error()).into_response() +} + +#[handler] + +async fn update_executor_processor_bind( + req: &Request, + Json(executor_processor_bind): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { + return Json(Into::>::into( + pre_update_executor_processor_bind(req, executor_processor_bind, pool).await, + )); } -// FIXME: - -// #[handler] - -// async fn update_executor_processor_bind( -// req: &Request, -// Json(executor_processor_bind): Json, -// pool: Data<&db::ConnectionPool>, -// ) -> impl IntoResponse { -// return Json(Into::>::into( -// pre_update_executor_processor_bind(req, executor_processor_bind, pool).await, -// )); -// } - -// async fn pre_update_executor_processor_bind( -// req: &Request, -// executor_processor_bind: model::UpdateExecutorProcessorBind, -// pool: Data<&db::ConnectionPool>, -// ) -> Result<(), CommonError> { -// use db::schema::{executor_processor, executor_processor_bind, task, task_bind}; -// use delicate_utils_task::{TaskPackage, TaskUnit}; -// use state::task::State; - -// let conn = pool.get()?; -// let executor_processor_bind_id = executor_processor_bind.id; -// let executor_processor_bind_executor_id = executor_processor_bind.executor_id; - -// // FIXME: -// // todo!(); -// // let operation_log_pair_option = generate_operation_executor_processor_bind_modify_log( -// // &req.get_session(), -// // &executor_processor_bind, -// // ) -// // .ok(); -// // send_option_operation_log_pair(operation_log_pair_option).await; - -// let (older_executor_id, older_executor_host, older_executor_token) = -// spawn_blocking::<_,Result<_, diesel::result::Error>>(move || { -// let older_executor = executor_processor_bind::table -// .inner_join(executor_processor::table) -// .filter(executor_processor_bind::id.eq(executor_processor_bind.id)) -// .select(( -// executor_processor_bind::executor_id, -// executor_processor::host, -// executor_processor::token, -// )) -// .first::<(i64, String, String)>(&conn)?; - -// diesel::update(&executor_processor_bind) -// .set(&executor_processor_bind) -// .execute(&conn)?; -// Ok(older_executor) -// }) -// .await?; - -// if older_executor_id == executor_processor_bind_executor_id { -// return Ok(()); -// } - -// // Task migration needs to be performed only when `executor_id` is modified. -// let conn = pool.get()?; -// let task_packages: Vec<(TaskPackage, (String, String))> = -// spawn_blocking::<_,Result<_, diesel::result::Error>>(move || { -// let task_packages: Vec<(TaskPackage, (String, String))> = task_bind::table -// .inner_join(executor_processor_bind::table.inner_join(executor_processor::table)) -// .inner_join(task::table) -// .filter(task::status.eq(State::Enabled as i16)) -// .filter(executor_processor_bind::id.eq(executor_processor_bind_id)) -// .select(( -// ( -// task::id, -// task::command, -// task::frequency, -// task::cron_expression, -// task::timeout, -// task::maximum_parallel_runnable_num, -// ), -// (executor_processor::host, executor_processor::token), -// )) -// .load::<(TaskPackage, (String, String))>(&conn)?; - -// Ok(task_packages) -// }) -// .await?; - -// let task_ids = task_packages.iter().map(|&(ref t, _)| t.id); - -// let remove_task_units: JoinAll<_> = task_ids -// .filter_map(|task_id| { -// let executor_host = -// "http://".to_string() + (older_executor_host.deref()) + "/api/task/remove"; -// TaskUnit::default() -// .set_task_id(task_id) -// .set_time(get_timestamp()) -// .sign(Some(older_executor_token.deref())) -// .map(|t| (t, executor_host)) -// .ok() -// }) -// .map(|(signed_task_unit, executor_host)| { -// RequestClient::default() -// .post(executor_host) -// .send_json(&signed_task_unit) -// }) -// .collect(); - -// let create_task_packages: JoinAll<_> = task_packages -// .into_iter() -// .filter_map(|(t, (host, token))| { -// let executor_host = "http://".to_string() + (host.deref()) + "/api/task/create"; -// t.sign(Some(&token)).map(|t| (t, executor_host)).ok() -// }) -// .map(|(signed_task_package, executor_host)| { -// RequestClient::default() -// .post(executor_host) -// .send_json(&signed_task_package) -// }) -// .collect(); - -// join( -// handle_response::>(remove_task_units), -// handle_response::>(create_task_packages), -// ) -// .await; -// Ok(()) -// } +async fn pre_update_executor_processor_bind( + req: &Request, + executor_processor_bind: model::UpdateExecutorProcessorBind, + pool: Data<&db::ConnectionPool>, +) -> Result<(), CommonError> { + use db::schema::{executor_processor, executor_processor_bind, task, task_bind}; + use delicate_utils_task::{TaskPackage, TaskUnit}; + use state::task::State; + + let conn = pool.get()?; + let executor_processor_bind_id = executor_processor_bind.id; + let executor_processor_bind_executor_id = executor_processor_bind.executor_id; + let request_client = req + .extensions() + .get::() + .expect("Missing Components `RequestClient`"); + + let operation_log_pair_option = generate_operation_executor_processor_bind_modify_log( + &req.get_session(), + &executor_processor_bind, + ) + .ok(); + send_option_operation_log_pair(operation_log_pair_option).await; + + let (older_executor_id, older_executor_host, older_executor_token) = + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let older_executor = executor_processor_bind::table + .inner_join(executor_processor::table) + .filter(executor_processor_bind::id.eq(executor_processor_bind.id)) + .select(( + executor_processor_bind::executor_id, + executor_processor::host, + executor_processor::token, + )) + .first::<(i64, String, String)>(&conn)?; + + diesel::update(&executor_processor_bind) + .set(&executor_processor_bind) + .execute(&conn)?; + Ok(older_executor) + }) + .await??; + + if older_executor_id == executor_processor_bind_executor_id { + return Ok(()); + } + + // Task migration needs to be performed only when `executor_id` is modified. + let conn = pool.get()?; + let task_packages: Vec<(TaskPackage, (String, String))> = + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let task_packages: Vec<(TaskPackage, (String, String))> = task_bind::table + .inner_join(executor_processor_bind::table.inner_join(executor_processor::table)) + .inner_join(task::table) + .filter(task::status.eq(State::Enabled as i16)) + .filter(executor_processor_bind::id.eq(executor_processor_bind_id)) + .select(( + ( + task::id, + task::command, + task::frequency, + task::cron_expression, + task::timeout, + task::maximum_parallel_runnable_num, + ), + (executor_processor::host, executor_processor::token), + )) + .load::<(TaskPackage, (String, String))>(&conn)?; + + Ok(task_packages) + }) + .await??; + + let task_ids = task_packages.iter().map(|&(ref t, _)| t.id); + + let remove_task_units: JoinAll<_> = task_ids + .filter_map(|task_id| { + let executor_host = + "http://".to_string() + (older_executor_host.deref()) + "/api/task/remove"; + TaskUnit::default() + .set_task_id(task_id) + .set_time(get_timestamp()) + .sign(Some(older_executor_token.deref())) + .map(|t| (t, executor_host)) + .ok() + }) + .map(|(signed_task_unit, executor_host)| { + request_client + .post(executor_host) + .json(&signed_task_unit) + .send() + }) + .collect(); + + let create_task_packages: JoinAll<_> = task_packages + .into_iter() + .filter_map(|(t, (host, token))| { + let executor_host = "http://".to_string() + (host.deref()) + "/api/task/create"; + t.sign(Some(&token)).map(|t| (t, executor_host)).ok() + }) + .map(|(signed_task_package, executor_host)| { + request_client + .post(executor_host) + .json(&signed_task_package) + .send() + }) + .collect(); + + join( + handle_response::<_, UnifiedResponseMessages<()>>(remove_task_units), + handle_response::<_, UnifiedResponseMessages<()>>(create_task_packages), + ) + .await; + Ok(()) +} #[handler] async fn delete_executor_processor_bind( - _req: &Request, + req: &Request, Json(model::ExecutorProcessorBindId { executor_processor_bind_id, }): Json, @@ -252,13 +250,12 @@ async fn delete_executor_processor_bind( ) -> impl IntoResponse { use db::schema::executor_processor_bind::dsl::*; - // FIXME: - // let operation_log_pair_option = generate_operation_executor_processor_bind_delete_log( - // &req.get_session(), - // &CommonTableRecord::default().set_id(executor_processor_bind_id), - // ) - // .ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = generate_operation_executor_processor_bind_delete_log( + &req.get_session(), + &CommonTableRecord::default().set_id(executor_processor_bind_id), + ) + .ok(); + send_option_operation_log_pair(operation_log_pair_option).await; // TODO: Check if there are associated tasks on the binding. if let Ok(conn) = pool.get() { diff --git a/delicate-scheduler/src/actions/task.rs b/delicate-scheduler/src/actions/task.rs index 38c0f2a..671265b 100644 --- a/delicate-scheduler/src/actions/task.rs +++ b/delicate-scheduler/src/actions/task.rs @@ -5,27 +5,26 @@ pub(crate) fn config_route(route: Route) -> Route { .at("/api/task/create", post(create_task)) .at("/api/task/list", post(show_tasks)) // FIXME: - // .at("/api/task/update", post(update_task)) - // .at("/api/task/run", post(run_task)) - // .at("/api/task/suspend", post(suspend_task)) - // .at("/api/task/advance", post(advance_task)) + .at("/api/task/update", post(update_task)) + .at("/api/task/run", post(run_task)) + .at("/api/task/suspend", post(suspend_task)) + .at("/api/task/advance", post(advance_task)) .at("/api/task/delete", post(delete_task)) } #[handler] async fn create_task( - _req: &Request, + req: &Request, Json(model::NewTaskBody { task, binding_ids }): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { use db::schema::{task, task_bind}; if let Ok(conn) = pool.get() { - // // FIXME: - // let operation_log_pair_option = - // generate_operation_task_addtion_log(&req.get_session(), &task).ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = + generate_operation_task_addtion_log(&req.get_session(), &task).ok(); + send_option_operation_log_pair(operation_log_pair_option).await; let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { conn.transaction::<_, _, _>(|| { @@ -128,37 +127,34 @@ async fn show_tasks( Json(UnifiedResponseMessages::>::error()) } -// FIXME: - -// #[handler] -// async fn update_task( -// req: &Request, -// Json(update_task_body): Json, -// pool: Data<&db::ConnectionPool>, -// ) -> impl IntoResponse { -// let respose: UnifiedResponseMessages<()> = pre_update_task(req, update_task_body, pool) -// .instrument(span!(Level::INFO, "update-task")) -// .await -// .into(); -// Json(respose) -// } +#[handler] +async fn update_task( + req: &Request, + Json(update_task_body): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { + let respose: UnifiedResponseMessages<()> = pre_update_task(req, update_task_body, pool) + .instrument(span!(Level::INFO, "update-task")) + .await + .into(); + Json(respose) +} pub async fn pre_update_task( - _req: &Request, + req: &Request, model::UpdateTaskBody { task, binding_ids }: model::UpdateTaskBody, pool: Data<&db::ConnectionPool>, ) -> Result<(), CommonError> { let task_id = task.id; let conn = pool.get()?; - // FIXME: - // let operation_log_pair_option = - // generate_operation_task_modify_log(&req.get_session(), &task).ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = + generate_operation_task_modify_log(&req.get_session(), &task).ok(); + send_option_operation_log_pair(operation_log_pair_option).await; let task_binds_pair = pre_update_task_row(conn, task, binding_ids).await?; let conn = pool.get()?; - pre_update_task_sevice(conn, task_id, task_binds_pair).await?; + pre_update_task_sevice(req, conn, task_id, task_binds_pair).await?; Ok(()) } @@ -277,9 +273,10 @@ pub async fn pre_update_task_row( } pub async fn pre_update_task_sevice( + req: &Request, conn: db::PoolConnection, task_id: i64, - (_removed_bind_processors, _append_bind_processors, _reserved_bind_processors): ( + (removed_bind_processors, append_bind_processors, reserved_bind_processors): ( Vec, Vec, Vec, @@ -288,7 +285,12 @@ pub async fn pre_update_task_sevice( use db::schema::task; use delicate_utils_task::TaskPackage; - let (task_package, _status) = task::table + let request_client = req + .extensions() + .get::() + .expect("Missing Components `RequestClient`"); + + let (task_package, status) = task::table .select(( ( task::id, @@ -305,106 +307,105 @@ pub async fn pre_update_task_sevice( let _task_id = task_package.id; - // FIXME: - todo!(); - // if status == state::task::State::Enabled as i16 { - // let remove_tasks_future: JoinAll<_> = removed_bind_processors - // .into_iter() - // .filter_map(|processor| { - // let executor_host = - // "http://".to_string() + (processor.host.deref()) + "/api/task/remove"; - - // let message = delicate_utils_task::TaskUnit::default() - // .set_task_id(task_id) - // .set_time(get_timestamp()); - - // info!("Remove task{} at:{}", &task_package, &executor_host); - // message - // .sign(Some(&processor.token)) - // .map(|s| (s, executor_host)) - // .ok() - // }) - // .map(|(signed_task_unit, executor_host)| { - // RequestClient::default() - // .post(executor_host) - // .send_json(&signed_task_unit) - // }) - // .collect::>() - // .into_iter() - // .collect(); - - // let append_tasks_future: JoinAll<_> = append_bind_processors - // .into_iter() - // .filter_map(|processor| { - // let executor_host = - // "http://".to_string() + (processor.host.deref()) + "/api/task/create"; - - // info!("Create task{} at:{}", &task_package, &executor_host); - // task_package - // .clone() - // .sign(Some(&processor.token)) - // .map(|s| (s, executor_host)) - // .ok() - // }) - // .map(|(signed_task_package, executor_host)| { - // RequestClient::default() - // .post(executor_host) - // .send_json(&signed_task_package) - // }) - // .collect::>() - // .into_iter() - // .collect(); - - // let update_tasks_future: JoinAll<_> = reserved_bind_processors - // .into_iter() - // .filter_map(|processor| { - // let executor_host = - // "http://".to_string() + (processor.host.deref()) + "/api/task/update"; - - // info!("Update task {} at:{}", &task_package, &executor_host); - // task_package - // .clone() - // .sign(Some(&processor.token)) - // .map(|s| (s, executor_host)) - // .ok() - // }) - // .map(|(signed_task_package, executor_host)| { - // RequestClient::default() - // .post(executor_host) - // .send_json(&signed_task_package) - // }) - // .collect::>() - // .into_iter() - // .collect(); - - // join3( - // handle_response::>(remove_tasks_future), - // handle_response::>(append_tasks_future), - // handle_response::>(update_tasks_future), - // ) - // .await; - // } - - // Ok(()) + if status == state::task::State::Enabled as i16 { + let remove_tasks_future: JoinAll<_> = removed_bind_processors + .into_iter() + .filter_map(|processor| { + let executor_host = + "http://".to_string() + (processor.host.deref()) + "/api/task/remove"; + + let message = delicate_utils_task::TaskUnit::default() + .set_task_id(task_id) + .set_time(get_timestamp()); + + info!("Remove task{} at:{}", &task_package, &executor_host); + message + .sign(Some(&processor.token)) + .map(|s| (s, executor_host)) + .ok() + }) + .map(|(signed_task_unit, executor_host)| { + request_client + .post(executor_host) + .json(&signed_task_unit) + .send() + }) + .collect::>() + .into_iter() + .collect(); + + let append_tasks_future: JoinAll<_> = append_bind_processors + .into_iter() + .filter_map(|processor| { + let executor_host = + "http://".to_string() + (processor.host.deref()) + "/api/task/create"; + + info!("Create task{} at:{}", &task_package, &executor_host); + task_package + .clone() + .sign(Some(&processor.token)) + .map(|s| (s, executor_host)) + .ok() + }) + .map(|(signed_task_package, executor_host)| { + request_client + .post(executor_host) + .json(&signed_task_package) + .send() + }) + .collect::>() + .into_iter() + .collect(); + + let update_tasks_future: JoinAll<_> = reserved_bind_processors + .into_iter() + .filter_map(|processor| { + let executor_host = + "http://".to_string() + (processor.host.deref()) + "/api/task/update"; + + info!("Update task {} at:{}", &task_package, &executor_host); + task_package + .clone() + .sign(Some(&processor.token)) + .map(|s| (s, executor_host)) + .ok() + }) + .map(|(signed_task_package, executor_host)| { + request_client + .post(executor_host) + .json(&signed_task_package) + .send() + }) + .collect::>() + .into_iter() + .collect(); + + join3( + handle_response::<_, UnifiedResponseMessages<()>>(remove_tasks_future), + handle_response::<_, UnifiedResponseMessages<()>>(append_tasks_future), + handle_response::<_, UnifiedResponseMessages<()>>(update_tasks_future), + ) + .await; + } + + Ok(()) } #[handler] async fn delete_task( - _req: &Request, + req: &Request, Json(model::TaskId { task_id }): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { use db::schema::{task, task_bind}; - // FIXME: - - // let operation_log_pair_option = generate_operation_task_delete_log( - // &req.get_session(), - // &CommonTableRecord::default().set_id(task_id), - // ) - // .ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = generate_operation_task_delete_log( + &req.get_session(), + &CommonTableRecord::default().set_id(task_id), + ) + .ok(); + send_option_operation_log_pair(operation_log_pair_option).await; // delete if let Ok(conn) = pool.get() { @@ -427,62 +428,56 @@ async fn delete_task( Json(UnifiedResponseMessages::<()>::error()) } -// FIXME: - -// #[handler] -// async fn run_task( -// req: &Request, -// Json(model::TaskId { task_id }): Json, -// pool: Data<&db::ConnectionPool>, -// ) -> impl IntoResponse { -// let result: UnifiedResponseMessages<()> = Into::into( -// pre_run_task(req, task_id, pool) -// .instrument(span!(Level::INFO, "run-task")) -// .await, -// ); - -// Json(result) -// } - -// FIXME: - -// #[handler] - -// async fn suspend_task( -// req: &Request, -// Json(model::TaskId { task_id }): Json, -// pool: Data<&Arc>, -// ) -> impl IntoResponse { -// let result: UnifiedResponseMessages<()> = Into::into( -// pre_operate_task(req, pool.clone(), (task_id, "/api/task/remove", "Suspend")) -// .instrument(span!(Level::INFO, "Suspend", task_id)) -// .await, -// ); - -// Json(result) -// } - -// FIXME: - -// #[handler] -// async fn advance_task( -// req: &Request, -// Json(model::TaskId { task_id }): Json, -// pool: Data<&Arc>, -// ) -> impl IntoResponse { -// let result: UnifiedResponseMessages<()> = Into::into( -// pre_operate_task(req, pool, (task_id, "/api/task/advance", "Advance")) -// .instrument(span!(Level::INFO, "Advance", task_id)) -// .await, -// ); - -// Json(result) -// } +#[handler] +async fn run_task( + req: &Request, + Json(model::TaskId { task_id }): Json, + pool: Data<&Arc>, +) -> impl IntoResponse { + let result: UnifiedResponseMessages<()> = Into::into( + pre_run_task(req, task_id, pool) + .instrument(span!(Level::INFO, "run-task")) + .await, + ); + + Json(result) +} + +#[handler] + +async fn suspend_task( + req: &Request, + Json(model::TaskId { task_id }): Json, + pool: Data<&Arc>, +) -> impl IntoResponse { + let result: UnifiedResponseMessages<()> = Into::into( + pre_operate_task(req, pool.clone(), (task_id, "/api/task/remove", "Suspend")) + .instrument(span!(Level::INFO, "Suspend", task_id)) + .await, + ); + + Json(result) +} + +#[handler] +async fn advance_task( + req: &Request, + Json(model::TaskId { task_id }): Json, + pool: Data<&Arc>, +) -> impl IntoResponse { + let result: UnifiedResponseMessages<()> = Into::into( + pre_operate_task(req, pool.clone(), (task_id, "/api/task/advance", "Advance")) + .instrument(span!(Level::INFO, "Advance", task_id)) + .await, + ); + + Json(result) +} async fn pre_run_task( - _req: &Request, + req: &Request, task_id: i64, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> Result<(), CommonError> { use db::schema::executor_processor::dsl::{host, token}; use db::schema::task::dsl::*; @@ -490,21 +485,24 @@ async fn pre_run_task( use state::task::State; - // FIXME: + let request_client = req + .extensions() + .get::() + .expect("Missing Components `RequestClient`"); - // let operation_log_pair_option = generate_operation_task_modify_log( - // &req.get_session(), - // &CommonTableRecord::default() - // .set_id(task_id) - // .set_description("Run task"), - // ) - // .ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = generate_operation_task_modify_log( + &req.get_session(), + &CommonTableRecord::default() + .set_id(task_id) + .set_description("Run task"), + ) + .ok(); + send_option_operation_log_pair(operation_log_pair_option).await; let conn = pool.get()?; // Many machine. - let _task_packages: Vec<(delicate_utils_task::TaskPackage, (String, String))> = + let task_packages: Vec<(delicate_utils_task::TaskPackage, (String, String))> = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { diesel::update(task.find(task_id)) .set(task::status.eq(State::Enabled as i16)) @@ -529,101 +527,100 @@ async fn pre_run_task( }) .await??; - // FIXME: - todo!(); - // let request_all: JoinAll<_> = task_packages - // .into_iter() - // .filter_map(|(task_package, (executor_host_str, executor_token))| { - // let executor_host = - // "http://".to_string() + (executor_host_str.deref()) + "/api/task/create"; - // info!("Run task{} at:{}", &task_package, &executor_host); - // task_package - // .sign(Some(&executor_token)) - // .map(|s| (s, executor_host)) - // .ok() - // }) - // .map(|(signed_task_package, executor_host)| { - // RequestClient::default() - // .post(executor_host) - // .send_json(&signed_task_package) - // }) - // .collect::>() - // .into_iter() - // .collect(); - - // handle_response::>(request_all).await; - - // Ok(()) + let request_all: JoinAll<_> = task_packages + .into_iter() + .filter_map(|(task_package, (executor_host_str, executor_token))| { + let executor_host = + "http://".to_string() + (executor_host_str.deref()) + "/api/task/create"; + info!("Run task{} at:{}", &task_package, &executor_host); + task_package + .sign(Some(&executor_token)) + .map(|s| (s, executor_host)) + .ok() + }) + .map(|(signed_task_package, executor_host)| { + request_client + .post(executor_host) + .json(&signed_task_package) + .send() + }) + .collect::>() + .into_iter() + .collect(); + + handle_response::<_, UnifiedResponseMessages<()>>(request_all).await; + + Ok(()) } -// FIXME: - -// async fn pre_operate_task( -// req: &Request, -// pool: Arc, -// (task_id, url, action): (i64, &str, &'static str), -// ) { -// use db::schema::executor_processor::dsl::{host, token}; -// use db::schema::{executor_processor, executor_processor_bind, task, task_bind}; -// use state::task::State; - -// let conn = pool.get()?; - -// let operation_log_pair_option = generate_operation_task_modify_log( -// &req.get_session(), -// &CommonTableRecord::default() -// .set_id(task_id) -// .set_description(action), -// ) -// .ok(); -// send_option_operation_log_pair(operation_log_pair_option).await; - -// Many machine. -// let executor_packages: IntoIter<(String, String)> = spawn_blocking::<_,Result<_, diesel::result::Error>>(move || { -// // TODO: Optimize. -// if action.eq("Suspend") { -// diesel::update(task::table.find(task_id)) -// .set(task::status.eq(State::NotEnabled as i16)) -// .execute(&conn)?; -// } - -// task_bind::table -// .inner_join(executor_processor_bind::table.inner_join(executor_processor::table)) -// .inner_join(task::table) -// .select((host, token)) -// .filter(task_bind::task_id.eq(task_id)) -// .load::<(String, String)>(&conn) -// }) -// .await? -// .into_iter(); - -// let request_all: JoinAll = executor_packages -// .filter_map(|(executor_host, executor_token)| { -// let message = delicate_utils_task::TaskUnit::default() -// .set_task_id(task_id) -// .set_time(get_timestamp()); - -// let executor_host = "http://".to_string() + (executor_host.deref()) + url; - -// info!("{} task{} at:{}", action, message, &executor_host); -// message -// .sign(Some(&executor_token)) -// .map(|s| (s, executor_host)) -// .ok() -// }) -// .map(|(signed_task_unit, executor_host)| { -// RequestClient::builder() -// .timeout(Duration::from_secs(15)) -// .finish() -// .post(executor_host) -// .send_json(&signed_task_unit) -// }) -// .collect::>() -// .into_iter() -// .collect(); - -// handle_response::>(request_all).await; -// Ok(()) - -// todo!(); -// } +async fn pre_operate_task( + req: &Request, + pool: Arc, + (task_id, url, action): (i64, &'static str, &'static str), +) -> Result<(), CommonError> { + use db::schema::executor_processor::dsl::{host, token}; + use db::schema::{executor_processor, executor_processor_bind, task, task_bind}; + use state::task::State; + + let request_client = req + .extensions() + .get::() + .expect("Missing Components `RequestClient`"); + + let conn = pool.get()?; + + let operation_log_pair_option = generate_operation_task_modify_log( + &req.get_session(), + &CommonTableRecord::default() + .set_id(task_id) + .set_description(action), + ) + .ok(); + send_option_operation_log_pair(operation_log_pair_option).await; + + let executor_packages: IntoIter<(String, String)> = + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + // TODO: Optimize. + if action.eq("Suspend") { + diesel::update(task::table.find(task_id)) + .set(task::status.eq(State::NotEnabled as i16)) + .execute(&conn)?; + } + + task_bind::table + .inner_join(executor_processor_bind::table.inner_join(executor_processor::table)) + .inner_join(task::table) + .select((host, token)) + .filter(task_bind::task_id.eq(task_id)) + .load::<(String, String)>(&conn) + }) + .await?? + .into_iter(); + + let request_all: JoinAll<_> = executor_packages + .filter_map(|(executor_host, executor_token)| { + let message = delicate_utils_task::TaskUnit::default() + .set_task_id(task_id) + .set_time(get_timestamp()); + + let executor_host = "http://".to_string() + (executor_host.deref()) + url; + + info!("{} task{} at:{}", action, message, &executor_host); + message + .sign(Some(&executor_token)) + .map(|s| (s, executor_host)) + .ok() + }) + .map(|(signed_task_unit, executor_host)| { + request_client + .post(executor_host) + .json(&signed_task_unit) + .send() + }) + .collect::>() + .into_iter() + .collect(); + + handle_response::<_, UnifiedResponseMessages<()>>(request_all).await; + Ok(()) +} diff --git a/delicate-scheduler/src/actions/task_log.rs b/delicate-scheduler/src/actions/task_log.rs index 8a029dc..595d886 100644 --- a/delicate-scheduler/src/actions/task_log.rs +++ b/delicate-scheduler/src/actions/task_log.rs @@ -5,8 +5,7 @@ pub(crate) fn config_route(route: Route) -> Route { .at("/api/task_log/event_trigger", post(create_task_logs)) .at("/api/task_log/list", post(show_task_logs)) .at("/api/task_log/detail", post(show_task_log_detail)) - // FIXME: - // .at("/api/task_instance/kill", post(kill_task_instance)) + .at("/api/task_instance/kill", post(kill_task_instance)) .at("/api/task_log/delete", post(delete_task_log)) } @@ -168,19 +167,18 @@ async fn show_task_log_detail( Json(UnifiedResponseMessages::::error()) } -// #[handler] +#[handler] -// FIXME: -// async fn kill_task_instance( -// req: &Request, -// Json(task_record): Json, -// pool: Data<&db::ConnectionPool>, -// ) -> impl IntoResponse { -// let response_result = kill_one_task_instance(req, pool, task_record).await; +async fn kill_task_instance( + req: &Request, + Json(task_record): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { + let response_result = kill_one_task_instance(req, pool, task_record).await; -// let response = Into::>::into(response_result); -// Json(response) -// } + let response = Into::>::into(response_result); + Json(response) +} fn batch_insert_task_logs( conn: &db::PoolConnection, @@ -247,7 +245,7 @@ fn batch_update_task_logs( } async fn kill_one_task_instance( - _req: &Request, + req: &Request, pool: Data<&db::ConnectionPool>, model::TaskRecord { task_id, @@ -257,16 +255,19 @@ async fn kill_one_task_instance( ) -> Result<(), CommonError> { use db::schema::task_log; - // FIXME: + let operation_log_pair_option = generate_operation_task_log_modify_log( + &req.get_session(), + &CommonTableRecord::default() + .set_id(record_id.0) + .set_description("kill task instance."), + ) + .ok(); + send_option_operation_log_pair(operation_log_pair_option).await; - // let operation_log_pair_option = generate_operation_task_log_modify_log( - // &req.get_session(), - // &CommonTableRecord::default() - // .set_id(record_id.0) - // .set_description("kill task instance."), - // ) - // .ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let request_client = req + .extensions() + .get::() + .expect("Missing Components `RequestClient`"); let token = model::get_executor_token_by_id(executor_processor_id, pool.get()?).await; @@ -287,36 +288,33 @@ async fn kill_one_task_instance( }) .await??; - let _client = RequestClient::default(); - let _url = "http://".to_string() + (host.deref()) + "/api/task_instance/kill"; + let url = "http://".to_string() + (host.deref()) + "/api/task_instance/kill"; - let _record = delicate_utils_task_log::CancelTaskRecord::default() + let record = delicate_utils_task_log::CancelTaskRecord::default() .set_task_id(task_id) .set_record_id(record_id.0) .set_time(get_timestamp()) .sign(token.as_deref())?; - // FIXME: - todo!(); - // client - // .post(url) - // .send_json(&record) - // .await? - // .json::>() - // .await? - // .into() + request_client + .post(url) + .json(&record) + .send() + .await? + .json::>() + .await? + .into() } #[handler] async fn delete_task_log( - _req: &Request, + req: &Request, Json(delete_params): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { - // FIXME: - // let operation_log_pair_option = - // generate_operation_task_delete_log(&req.get_session(), &delete_params).ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = + generate_operation_task_delete_log(&req.get_session(), &delete_params).ok(); + send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { return Json(Into::>::into( @@ -357,6 +355,6 @@ async fn pre_delete_task_log( Ok(()) }) - .await?; + .await??; Ok(()) } diff --git a/delicate-scheduler/src/actions/user.rs b/delicate-scheduler/src/actions/user.rs index f12776a..8666d43 100644 --- a/delicate-scheduler/src/actions/user.rs +++ b/delicate-scheduler/src/actions/user.rs @@ -1,8 +1,9 @@ use super::prelude::*; -use model::schema::{user, user_auth}; +use model::schema::{user, user_auth, user_login_log}; use model::user::{ - UserAndPermissions, UserAndRoles, UserName, + get_encrypted_certificate_by_raw_certificate, UserAndPermissions, UserAndRoles, UserName, }; +use model::user_login_log::NewUserLoginLog; pub(crate) fn config_route(route: Route) -> Route { route @@ -10,10 +11,9 @@ pub(crate) fn config_route(route: Route) -> Route { .at("/api/user/list", post(show_users)) .at("/api/user/update", post(update_user)) .at("/api/user/delete", post(delete_user)) - // FIXME: - // .at("/api/user/login", post(login_user)) - // .at("/api/user/logout", post(logout_user)) - // .at("/api/user/check", post(check_user)) + .at("/api/user/login", post(login_user)) + .at("/api/user/logout", post(logout_user)) + .at("/api/user/check", post(check_user)) .at("/api/user/change_password", post(change_password)) .at("/api/user/roles", post(roles)) .at("/api/user/permissions", post(permissions)) @@ -26,7 +26,7 @@ pub(crate) fn config_route(route: Route) -> Route { #[handler] async fn create_user( - _req: &Request, + req: &Request, Json(user): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { @@ -37,11 +37,9 @@ async fn create_user( let new_user = Into::::into(&user); - // FIXME: - - // let operation_log_pair_option = - // generate_operation_user_addtion_log(&req.get_session(), &new_user).ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = + generate_operation_user_addtion_log(&req.get_session(), &new_user).ok(); + send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -122,15 +120,13 @@ async fn show_users( #[handler] async fn update_user( - _req: &Request, + req: &Request, Json(user_value): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { - // FIXME: - - // let operation_log_pair_option = - // generate_operation_user_modify_log(&req.get_session(), &user_value).ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = + generate_operation_user_modify_log(&req.get_session(), &user_value).ok(); + send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -152,58 +148,67 @@ async fn update_user( #[handler] async fn change_password( - _req: &Request, - Json(_user_value): Json, - _pool: Data<&db::ConnectionPool>, + req: &Request, + Json(user_value): Json, + pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { - // FIXME: + let session = req.get_session(); + let user_id = session + .get("user_id") + .map(|c| c.value::()) + .map(|r| r.ok()) + .unwrap_or_default(); + + if user_id.is_none() { + return Json(UnifiedResponseMessages::::error()); + } - // let session = req.get_session(); - // let user_id = session - // .get::("user_id") - // .unwrap_or_default() - // .unwrap_or_default(); - - // if let Ok(conn) = pool.get() { - // return Json(Into::>::into( - // spawn_blocking::<_,Result<_, diesel::result::Error>>(move || { - // let user_auth_id = user_auth::table - // .select(user_auth::id) - // .filter(user_auth::user_id.eq(&user_id)) - // .filter(user_auth::identity_type.eq(user_value.identity_type)) - // .filter(user_auth::certificate.eq( - // get_encrypted_certificate_by_raw_certificate(&user_value.current_password), - // )) - // .first::(&conn)?; - - // diesel::update(user_auth::table.find(user_auth_id)) - // .set( - // user_auth::certificate.eq(get_encrypted_certificate_by_raw_certificate( - // &user_value.modified_password, - // )), - // ) - // .execute(&conn) - // }) - // .await, - // )); - // } + if let Ok(conn) = pool.get() { + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let user_auth_id = + user_auth::table + .select(user_auth::id) + .filter(user_auth::user_id.eq(&user_id.expect(""))) + .filter(user_auth::identity_type.eq(user_value.identity_type)) + .filter(user_auth::certificate.eq( + get_encrypted_certificate_by_raw_certificate(&user_value.current_password), + )) + .first::(&conn)?; + + diesel::update(user_auth::table.find(user_auth_id)) + .set( + user_auth::certificate.eq(get_encrypted_certificate_by_raw_certificate( + &user_value.modified_password, + )), + ) + .execute(&conn) + }) + .await; + + let count = f_result + .map(|count_result| Into::>::into(count_result)) + .unwrap_or_else(|e| { + UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) + }); + + return Json(count); + } Json(UnifiedResponseMessages::::error()) } #[handler] async fn delete_user( - _req: &Request, + req: &Request, Json(model::UserId { user_id }): Json, pool: Data<&db::ConnectionPool>, ) -> impl IntoResponse { - // FIXME: - // let operation_log_pair_option = generate_operation_user_delete_log( - // &req.get_session(), - // &CommonTableRecord::default().set_id(user_id as i64), - // ) - // .ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = generate_operation_user_delete_log( + &req.get_session(), + &CommonTableRecord::default().set_id(user_id as i64), + ) + .ok(); + send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -228,85 +233,79 @@ async fn delete_user( Json(UnifiedResponseMessages::<()>::error()) } -// FIXME: -// #[handler] +#[handler] -// async fn login_user( -// req: &Request, -// Json(user_login): Json, -// session: Session, -// pool: Data<&db::ConnectionPool>, -// ) -> impl IntoResponse { -// let login_result: UnifiedResponseMessages<()> = -// pre_login_user(req, user_login, session, pool).await.into(); +async fn login_user( + req: &Request, + Json(user_login): Json, + pool: Data<&db::ConnectionPool>, +) -> impl IntoResponse { + let login_result: UnifiedResponseMessages<()> = + pre_login_user(req, user_login, pool).await.into(); -// Json(login_result) -// } + Json(login_result) +} async fn pre_login_user( - _req: &Request, + req: &Request, model::UserAuthLogin { - login_type: _, - account: _, - password: _, + login_type, + account, + password, }: model::UserAuthLogin, - // session: Session, - _pool: Data<&db::ConnectionPool>, + pool: Data<&db::ConnectionPool>, ) -> Result<(), CommonError> { - - - // FIXME: - - todo!(); - // let connection = req.connection_info(); - // let client_ip = connection.realip_remote_addr(); - // let mut new_user_login_log = NewUserLoginLog::default(); - // new_user_login_log - // .set_lastip(client_ip) - // .set_login_type(login_type); - - // let conn = pool.get()?; - // let user_package: (model::UserAuth, model::User) = - // spawn_blocking::<_,Result<_, diesel::result::Error>>(move || { - // let login_result = user_auth::table - // .inner_join(user::table) - // .select((user_auth::all_columns, user::all_columns)) - // .filter(user_auth::identity_type.eq(login_type)) - // .filter(user_auth::identifier.eq(&account)) - // .filter( - // user_auth::certificate - // .eq(get_encrypted_certificate_by_raw_certificate(&password)), - // ) - // .first::<(model::UserAuth, model::User)>(&conn); - - // login_result - // .as_ref() - // .map(|(_, user)| { - // new_user_login_log - // .set_user_name(user.user_name.clone()) - // .set_user_id(user.id) - // .set_command(state::user_login_log::LoginCommand::LoginSuccess as u8); - // }) - // .map_err(|_| { - // new_user_login_log - // .set_user_name(account) - // .set_command(state::user_login_log::LoginCommand::Logoutfailure as u8); - // }) - // .ok(); - - // diesel::insert_into(user_login_log::table) - // .values(&new_user_login_log) - // .execute(&conn) - // .ok(); - - // login_result - // }) - // .await?; - // save_session(session, user_package) + let client_ip = req + .remote_addr() + .as_socket_addr() + .map(|sock| sock.ip().to_string()); + let mut new_user_login_log = NewUserLoginLog::default(); + new_user_login_log + .set_lastip(client_ip) + .set_login_type(login_type); + + let conn = pool.get()?; + let user_package: (model::UserAuth, model::User) = + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let login_result = user_auth::table + .inner_join(user::table) + .select((user_auth::all_columns, user::all_columns)) + .filter(user_auth::identity_type.eq(login_type)) + .filter(user_auth::identifier.eq(&account)) + .filter( + user_auth::certificate + .eq(get_encrypted_certificate_by_raw_certificate(&password)), + ) + .first::<(model::UserAuth, model::User)>(&conn); + + login_result + .as_ref() + .map(|(_, user)| { + new_user_login_log + .set_user_name(user.user_name.clone()) + .set_user_id(user.id) + .set_command(state::user_login_log::LoginCommand::LoginSuccess as u8); + }) + .map_err(|_| { + new_user_login_log + .set_user_name(account) + .set_command(state::user_login_log::LoginCommand::Logoutfailure as u8); + }) + .ok(); + + diesel::insert_into(user_login_log::table) + .values(&new_user_login_log) + .execute(&conn) + .ok(); + + login_result + }) + .await??; + save_session(req, user_package) } fn save_session( - // session: Session, + req: &Request, (_, _user): (model::UserAuth, model::User), ) -> Result<(), CommonError> { // FIXME: @@ -319,59 +318,61 @@ fn save_session( todo!(); } -// FIXME: - -// #[handler] - -// async fn check_user(session: Session, pool: Data<&db::ConnectionPool>) -> impl IntoResponse { -// let check_result = pre_check_user(session, pool).await; -// if let Ok(user) = check_result { -// return Json(UnifiedResponseMessages::::success_with_data( -// user, -// )); -// }; - -// // FIXME: -// todo!(); -// // Json( -// // UnifiedResponseMessages::<()>::error() -// // .customized_error_msg(check_result.expect_err("").to_string()), -// // ) -// } - -// FIXME: - -// async fn pre_check_user( -// session: Session, -// pool: Data<&db::ConnectionPool>, -// ) -> Result { -// let conn = pool.get()?; -// let user_id = session -// .get::("user_id")? -// .ok_or_else(|| CommonError::DisPass("Without set `user_id` .".into()))?; - -// let user = spawn_blocking::<_,Result<_, diesel::result::Error>>(move || { -// let user = user::table -// .select(user::all_columns) -// .find(user_id) -// .first::(&conn)?; - -// Ok(user) -// }) -// .await?; - -// Ok(user) -// } - -// FIXME: -// #[handler] - -// async fn logout_user(session: Session) -> impl IntoResponse { -// Json({ -// session.clear(); -// UnifiedResponseMessages::<()>::success() -// }) -// } +#[handler] + +async fn check_user(req: &Request, pool: Data<&db::ConnectionPool>) -> impl IntoResponse { + let check_result = pre_check_user(req, pool).await; + if let Ok(user) = check_result { + return Json(UnifiedResponseMessages::::success_with_data( + user, + )) + .into_response(); + }; + + Json( + UnifiedResponseMessages::<()>::error() + .customized_error_msg(check_result.expect_err("").to_string()), + ) + .into_response() +} + +async fn pre_check_user( + req: &Request, + pool: Data<&db::ConnectionPool>, +) -> Result { + let session = req.get_session(); + let conn = pool.get()?; + let user_id = session + .get("user_id") + .map(|c| c.value::()) + .transpose()? + .ok_or_else(|| CommonError::DisPass("Without set `user_id` .".into()))?; + + let user = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let user = user::table + .select(user::all_columns) + .find(user_id) + .first::(&conn)?; + + Ok(user) + }) + .await??; + + Ok(user) +} + +#[handler] + +async fn logout_user(req: &Request) -> impl IntoResponse { + let session = req.extensions().get::(); + match session { + Some(c) => Json({ + c.reset_delta(); + UnifiedResponseMessages::<()>::success() + }), + None => Json(UnifiedResponseMessages::<()>::error()), + } +} #[handler] @@ -407,15 +408,13 @@ async fn permissions( #[handler] async fn append_role( - _req: &Request, + req: &Request, enforcer: Data<&RwLock>, Json(user_and_roles): Json, ) -> impl IntoResponse { - // FIXME: - - // let operation_log_pair_option = - // generate_operation_user_role_addtion_log(&req.get_session(), &user_and_roles).ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = + generate_operation_user_role_addtion_log(&req.get_session(), &user_and_roles).ok(); + send_option_operation_log_pair(operation_log_pair_option).await; let UserAndRoles { user_name, @@ -445,15 +444,13 @@ async fn append_role( #[handler] async fn delete_role( - _req: &Request, + req: &Request, enforcer: Data<&RwLock>, Json(user_and_roles): Json, ) -> impl IntoResponse { - // FIXME: - - // let operation_log_pair_option = - // generate_operation_user_role_delete_log(&req.get_session(), &user_and_roles).ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = + generate_operation_user_role_delete_log(&req.get_session(), &user_and_roles).ok(); + send_option_operation_log_pair(operation_log_pair_option).await; let UserAndRoles { user_name, @@ -488,16 +485,14 @@ async fn delete_role( #[handler] async fn append_permission( - _req: &Request, + req: &Request, enforcer: Data<&RwLock>, Json(user_and_permissions): Json, ) -> impl IntoResponse { - // FIXME: - - // let operation_log_pair_option = - // generate_operation_user_permission_addtion_log(&req.get_session(), &user_and_permissions) - // .ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = + generate_operation_user_permission_addtion_log(&req.get_session(), &user_and_permissions) + .ok(); + send_option_operation_log_pair(operation_log_pair_option).await; let UserAndPermissions { user_name, @@ -514,16 +509,14 @@ async fn append_permission( #[handler] async fn delete_permission( - _req: &Request, + req: &Request, enforcer: Data<&RwLock>, Json(user_and_permissions): Json, ) -> impl IntoResponse { - // FIXME: - - // let operation_log_pair_option = - // generate_operation_user_permission_delete_log(&req.get_session(), &user_and_permissions) - // .ok(); - // send_option_operation_log_pair(operation_log_pair_option).await; + let operation_log_pair_option = + generate_operation_user_permission_delete_log(&req.get_session(), &user_and_permissions) + .ok(); + send_option_operation_log_pair(operation_log_pair_option).await; let UserAndPermissions { user_name, diff --git a/delicate-scheduler/src/components/health_checker.rs b/delicate-scheduler/src/components/health_checker.rs index 80e777e..195a8e7 100644 --- a/delicate-scheduler/src/components/health_checker.rs +++ b/delicate-scheduler/src/components/health_checker.rs @@ -1,7 +1,6 @@ use super::prelude::*; use db::schema::executor_processor; -// FIXME: pub(crate) async fn loop_health_check( pool: Arc, request_client: RequestClient, @@ -23,9 +22,9 @@ pub(crate) async fn loop_health_check( async fn health_check( conn: db::PoolConnection, - _request_client: RequestClient, + request_client: RequestClient, ) -> Result<(), CommonError> { - let (executor_packages, _conn) = + let (executor_packages, conn) = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { let executors = executor_processor::table .select(( @@ -41,60 +40,59 @@ async fn health_check( Ok((executors, conn)) }) .await??; - let _all_executor_ids: HashSet = executor_packages.iter().map(|(id, _, _)| *id).collect(); + let all_executor_ids: HashSet = executor_packages.iter().map(|(id, _, _)| *id).collect(); - // FIXME: - todo!(); - // let request_all: JoinAll<_> = executor_packages - // .into_iter() - // .filter_map(|(_, executor_host, executor_token)| { - // let message = delicate_utils_executor_processor::HealthScreenUnit::default(); + let request_all: JoinAll<_> = executor_packages + .into_iter() + .filter_map(|(_, executor_host, executor_token)| { + let message = delicate_utils_executor_processor::HealthScreenUnit::default(); - // let executor_host = - // "http://".to_string() + (executor_host.deref()) + "/api/executor/health_screen"; + let executor_host = + "http://".to_string() + (executor_host.deref()) + "/api/executor/health_screen"; - // message - // .sign(Some(&executor_token)) - // .map(|s| (s, executor_host)) - // .ok() - // }) - // .map(|(signed_health_screen_unit, executor_host)| { - // request_client - // .post(executor_host) - // .json(&signed_health_screen_unit) - // .send() - // }) - // .collect::>() - // .into_iter() - // .collect(); + message + .sign(Some(&executor_token)) + .map(|s| (s, executor_host)) + .ok() + }) + .map(|(signed_health_screen_unit, executor_host)| { + request_client + .post(executor_host) + .json(&signed_health_screen_unit) + .send() + }) + .collect::>() + .into_iter() + .collect(); - // let health_check_packages = handle_response::< - // UnifiedResponseMessages, - // >(request_all) - // .instrument(span!(Level::INFO, "health-check")) - // .await; + let health_check_packages = handle_response::< + _, + UnifiedResponseMessages, + >(request_all) + .instrument(span!(Level::INFO, "health-check")) + .await; - // let health_processors: HashSet = health_check_packages - // .iter() - // .map(|e| e.get_data_ref().bind_request.executor_processor_id) - // .collect(); + let health_processors: HashSet = health_check_packages + .iter() + .map(|e| e.get_data_ref().bind_request.executor_processor_id) + .collect(); - // let abnormal_processor: Vec = all_executor_ids - // .difference(&health_processors) - // .copied() - // .collect(); + let abnormal_processor: Vec = all_executor_ids + .difference(&health_processors) + .copied() + .collect(); - // if !abnormal_processor.is_empty() { - // spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { - // diesel::update( - // executor_processor::table - // .filter(executor_processor::id.eq_any(&abnormal_processor[..])), - // ) - // .set(executor_processor::status.eq(state::executor_processor::State::Abnormal as i16)) - // .execute(&conn) - // }) - // .await?; - // } + if !abnormal_processor.is_empty() { + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + diesel::update( + executor_processor::table + .filter(executor_processor::id.eq_any(&abnormal_processor[..])), + ) + .set(executor_processor::status.eq(state::executor_processor::State::Abnormal as i16)) + .execute(&conn) + }) + .await??; + } - // Ok(()) + Ok(()) } diff --git a/delicate-scheduler/src/components/helper.rs b/delicate-scheduler/src/components/helper.rs index 764c686..2bca344 100644 --- a/delicate-scheduler/src/components/helper.rs +++ b/delicate-scheduler/src/components/helper.rs @@ -1,41 +1,40 @@ use super::prelude::*; -pub(crate) async fn handle_response( - _request_all: JoinAll, +pub(crate) async fn handle_response< + F: Future>, + T: DeserializeOwned + Trial, +>( + request_all: JoinAll, ) -> Vec { - // FIXME: - todo!(); - // let response_json_all: JoinAll, T>> = request_all - // .await - // .into_iter() - // .map(|response| match response { - // Ok(mut r) => Some(r.json::()), - // Err(e) => { - // error!("SendRequestError : {}", e); - // None - // } - // }) - // .filter(|r| r.is_some()) - // .map(|r| r.expect("")) - // .collect::, T>>>() - // .into_iter() - // .collect(); + let response_json_all: JoinAll<_> = request_all + .await + .into_iter() + .map(|response| match response { + Ok(mut r) => Some(r.json::()), + Err(e) => { + error!("SendRequestError : {}", e); + None + } + }) + .filter(|r| r.is_some()) + .map(|r| r.expect("")) + .collect(); - // response_json_all - // .await - // .into_iter() - // .map(|json_result| { - // match json_result { - // Err(ref e) => { - // error!("Payload errors: {}", e); - // } - // Ok(ref json) if json.is_err() => { - // error!("Customized error messages: {}", json.get_msg()); - // } - // _ => {} - // } - // json_result - // }) - // .filter_map(|r| r.ok()) - // .collect::>() + response_json_all + .await + .into_iter() + .map(|json_result| { + match json_result { + Err(ref e) => { + error!("Payload errors: {}", e); + } + Ok(ref json) if json.is_err() => { + error!("Customized error messages: {}", json.get_msg()); + } + _ => {} + } + json_result + }) + .filter_map(|r| r.ok()) + .collect::>() } diff --git a/delicate-scheduler/src/components/session.rs b/delicate-scheduler/src/components/session.rs index 20e33cc..85b721f 100644 --- a/delicate-scheduler/src/components/session.rs +++ b/delicate-scheduler/src/components/session.rs @@ -9,21 +9,31 @@ use super::prelude::*; // in the `Session` and sets it to the client // (all this is done in the middleware of `CookieSession`). // pub(crate) fn session_middleware() -> CookieSession { -// CookieSession::signed( -// &env::var("SESSION_TOKEN") -// .expect("Without `SESSION_TOKEN` set in .env") -// .into_bytes(), -// ) -// .domain( -// env::var("SCHEDULER_COOKIE_DOMAIN").expect("Without `SCHEDULER_COOKIE_DOMAIN` set in .env"), -// ) -// .name(env::var("SCHEDULER_NAME").expect("Without `SCHEDULER_NAME` set in .env")) -// .http_only(true) -// .secure(false) +// CookieSession::signed( +// &env::var("SESSION_TOKEN") +// .expect("Without `SESSION_TOKEN` set in .env") +// .into_bytes(), +// ) +// .domain( +// env::var("SCHEDULER_COOKIE_DOMAIN").expect("Without `SCHEDULER_COOKIE_DOMAIN` set in .env"), +// ) +// .name(env::var("SCHEDULER_NAME").expect("Without `SCHEDULER_NAME` set in .env")) +// .http_only(true) +// .secure(false) // } // Register authentication middleware to check login status based on `CookieSession`. +pub(crate) fn session_middleware() -> CookieJarManager { + // Be sure to use a uniform `SESSION_TOKEN` here, + // If each server generates a random key, it will cause inconsistency and the login status will continue to fail. + let token_bytes = env::var("SESSION_TOKEN") + .expect("Without `SESSION_TOKEN` set in .env") + .into_bytes(); + + CookieJarManager::with_key(CookieKey::derive_from(&token_bytes)) +} + pub(crate) fn auth_middleware() -> SessionAuth { SessionAuth } @@ -52,8 +62,7 @@ impl Endpoint for SessionAuthMiddleware { return self.ep.call(req).await.into_response(); } - let extensions = req.extensions(); - let session = extensions.get::(); + let session = req.get_session(); let uri = req.uri(); let path = uri.path(); @@ -66,10 +75,7 @@ impl Endpoint for SessionAuthMiddleware { self.ep.call(req).await.into_response() } _ => { - let user_id = session - .map(|s| s.get("user_id")) - .flatten() - .map(|c| c.value::()); + let user_id = session.get("user_id").map(|c| c.value::()); if let Some(Ok(_)) = user_id { self.ep.call(req).await.into_response() } else { diff --git a/delicate-scheduler/src/db/common/helper.rs b/delicate-scheduler/src/db/common/helper.rs index ed385ac..3eadb2c 100644 --- a/delicate-scheduler/src/db/common/helper.rs +++ b/delicate-scheduler/src/db/common/helper.rs @@ -18,6 +18,15 @@ pub trait SeekTableId { } } +pub trait CookieSession { + fn get_session(&self) -> SignedCookieJar<'_>; +} + +impl CookieSession for Request { + fn get_session(&self) -> SignedCookieJar<'_> { + self.extensions().get::().expect("").signed() + } +} #[derive(Copy, Clone, Default, Debug, Serialize, Deserialize)] pub struct CommonTableRecord { pub id: i64, @@ -104,7 +113,7 @@ impl_seek_table_id_unify!(NewTaskLog=>0, NewTask=>0, NewUser=>0, NewTaskBind=>0, #[inline(always)] pub(crate) fn generate_operation_log( operation_name: impl ToString, - session: &CookieJar, + session: &SignedCookieJar, operation_type: OperationType, value: impl Serialize + SeekTableId, column_comment: impl Serialize, @@ -143,7 +152,7 @@ pub(crate) fn generate_operation_log( #[inline(always)] pub(crate) fn generate_operation_addtion_log( operation_name: impl ToString, - session: &CookieJar, + session: &SignedCookieJar, values: impl Serialize + SeekTableId, column_comment: impl Serialize, ) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { @@ -159,7 +168,7 @@ pub(crate) fn generate_operation_addtion_log( #[inline(always)] pub(crate) fn generate_operation_modify_log( operation_name: impl ToString, - session: &CookieJar, + session: &SignedCookieJar, values: impl Serialize + SeekTableId, column_comment: impl Serialize, ) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { @@ -175,7 +184,7 @@ pub(crate) fn generate_operation_modify_log( #[inline(always)] pub(crate) fn generate_operation_delete_log( operation_name: impl ToString, - session: &CookieJar, + session: &SignedCookieJar, values: impl Serialize + SeekTableId, column_comment: impl Serialize, ) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { @@ -193,7 +202,7 @@ macro_rules! generate_operation_log_fn{ $( concat_idents!(fn_name = generate_operation_, $operation_name, _, "addtion", _log { #[allow(dead_code)] - pub(crate) fn fn_name(session: &CookieJar, values: impl Serialize + SeekTableId) + pub(crate) fn fn_name(session: &SignedCookieJar, values: impl Serialize + SeekTableId) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { generate_operation_addtion_log($operation_name, session, values, $column_comment) } @@ -201,7 +210,7 @@ macro_rules! generate_operation_log_fn{ concat_idents!(fn_name = generate_operation_, $operation_name, _, "modify", _log { #[allow(dead_code)] - pub(crate) fn fn_name(session: &CookieJar, values: impl Serialize + SeekTableId) + pub(crate) fn fn_name(session: &SignedCookieJar, values: impl Serialize + SeekTableId) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { generate_operation_modify_log($operation_name, session, values, $column_comment) } @@ -209,7 +218,7 @@ macro_rules! generate_operation_log_fn{ concat_idents!(fn_name = generate_operation_, $operation_name, _, "delete", _log { #[allow(dead_code)] - pub(crate) fn fn_name(session: &CookieJar, values: impl Serialize + SeekTableId) + pub(crate) fn fn_name(session: &SignedCookieJar, values: impl Serialize + SeekTableId) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { generate_operation_delete_log($operation_name, session, values, $column_comment) } diff --git a/delicate-scheduler/src/db/mysql/model/user_login_log.rs b/delicate-scheduler/src/db/mysql/model/user_login_log.rs index a94741e..6e16086 100644 --- a/delicate-scheduler/src/db/mysql/model/user_login_log.rs +++ b/delicate-scheduler/src/db/mysql/model/user_login_log.rs @@ -75,9 +75,9 @@ impl NewUserLoginLog { self } - pub fn set_lastip(&mut self, lastip:Option<&str>) -> &mut Self{ + pub fn set_lastip(&mut self, lastip:Option) -> &mut Self{ if let Some(ip) = lastip{ - self.lastip = ip.to_string(); + self.lastip = ip; } self } diff --git a/delicate-scheduler/src/main.rs b/delicate-scheduler/src/main.rs index 30527da..85685f5 100644 --- a/delicate-scheduler/src/main.rs +++ b/delicate-scheduler/src/main.rs @@ -29,24 +29,6 @@ fn main() -> AnyResut<()> { db::init(); - let raw_runtime = Builder::new_multi_thread() - .thread_name_fn(|| { - static ATOMIC_ID: AtomicUsize = AtomicUsize::new(0); - let id = ATOMIC_ID.fetch_add(1, Ordering::SeqCst); - format!("executor-{}", id) - }) - .thread_stack_size(4 * 1024 * 1024) - .build() - .expect("Init Tokio runtime failed."); - let arc_runtime = Arc::new(raw_runtime); - let arc_runtime_cloned = arc_runtime.clone(); - - let scheduler_listening_address = env::var("SCHEDULER_LISTENING_ADDRESS") - .expect("Without `SCHEDULER_LISTENING_ADDRESS` set in .env"); - - let scheduler_front_end_domain: String = env::var("SCHEDULER_FRONT_END_DOMAIN") - .expect("Without `SCHEDULER_FRONT_END_DOMAIN` set in .env"); - let log_level: Level = FromStr::from_str(&env::var("LOG_LEVEL").unwrap_or_else(|_| String::from("info"))) .expect("Log level acquired fail."); @@ -73,48 +55,22 @@ fn main() -> AnyResut<()> { // completes the builder. .init(); - let request_client = RequestClient::new(); - - arc_runtime.block_on(async { - let delay_timer = DelayTimerBuilder::default() - .tokio_runtime_shared_by_custom(arc_runtime_cloned) - .enable_status_report() - .build(); - let arc_delay_timer = Arc::new(delay_timer); - let shared_delay_timer = AddData::new(arc_delay_timer.clone()); - - let connection_pool = db::get_connection_pool(); - let arc_connection_pool = Arc::new(connection_pool); - let shared_connection_pool = AddData::new(arc_connection_pool.clone()); - let shared_scheduler_meta_info: AddData> = - AddData::new(Arc::new(SchedulerMetaInfo::default())); - - #[cfg(AUTH_CASBIN)] - let enforcer = get_casbin_enforcer(shared_connection_pool.clone()).await; - #[cfg(AUTH_CASBIN)] - let shared_enforcer = AddData::new(RwLock::new(enforcer)); - - // All ready work when the delicate-application starts. - launch_ready_operation( - arc_connection_pool.clone(), - request_client, - #[cfg(AUTH_CASBIN)] - shared_enforcer.clone(), - ) - .await; - - // let result = HttpServer::new(move || { - let cors = Cors::new() - .allow_origin(&scheduler_front_end_domain) - .allow_method(Method::GET) - .allow_method(Method::POST) - .allow_header("*") - .allow_credentials(true) - .max_age(3600); + let raw_runtime = Builder::new_multi_thread() + .thread_name_fn(|| { + static ATOMIC_ID: AtomicUsize = AtomicUsize::new(0); + let id = ATOMIC_ID.fetch_add(1, Ordering::SeqCst); + format!("executor-{}", id) + }) + .thread_stack_size(4 * 1024 * 1024) + .build() + .expect("Init Tokio runtime failed."); + let arc_runtime = Arc::new(raw_runtime); + let arc_runtime_cloned = arc_runtime.clone(); - #[cfg(APP_DEBUG_MODE)] - let cors = cors.allow_origin("*"); + let scheduler_listening_address = env::var("SCHEDULER_LISTENING_ADDRESS") + .expect("Without `SCHEDULER_LISTENING_ADDRESS` set in .env"); + arc_runtime.block_on(async { // FIXME: Reference poem/routes.rs let app = Some(Route::new()) .map(actions::task::config_route) @@ -127,37 +83,10 @@ fn main() -> AnyResut<()> { .map(actions::components::config_route) .map(actions::operation_log::config_route) .map(actions::user_login_log::config_route) - .expect("") - .with(shared_delay_timer) - .with(shared_connection_pool) - .with(shared_scheduler_meta_info); + .map(actions::role::config_route) + .expect(""); - #[cfg(AUTH_CASBIN)] - let app = app - .configure(actions::role::config_route) - .wrap(CasbinService) - .app_data(shared_enforcer.clone()); - - let app = app - .with(components::session::auth_middleware()) - // .wrap(components::session::session_middleware()) - .with(cors); - // .wrap(MiddlewareLogger::default()) - // .wrap_fn(|req, srv| { - // let unique_id = get_unique_id_string(); - // let unique_id_str = unique_id.deref(); - // let fut = srv - // .call(req) - // .instrument(info_span!("log-id: ", unique_id_str)); - // async { - // let res = fut.await?; - // Ok(res) - // } - // }) - // }) - // .bind(scheduler_listening_address)? - // .run() - // .await; + let app = init_scheduler(app, arc_runtime_cloned).await; let listener = TcpListener::bind(scheduler_listening_address); let server = Server::new(listener).await?; @@ -165,6 +94,78 @@ fn main() -> AnyResut<()> { }) } +async fn init_scheduler(app: Route, arc_runtime_cloned: Arc) -> impl Endpoint { + let scheduler_front_end_domain: String = env::var("SCHEDULER_FRONT_END_DOMAIN") + .expect("Without `SCHEDULER_FRONT_END_DOMAIN` set in .env"); + let request_client = RequestClient::new(); + + let cors = Cors::new() + .allow_origin(&scheduler_front_end_domain) + .allow_method(Method::GET) + .allow_method(Method::POST) + .allow_header("*") + .allow_credentials(true) + .max_age(3600); + + #[cfg(APP_DEBUG_MODE)] + let cors = cors.allow_origin("*"); + + let delay_timer = DelayTimerBuilder::default() + .tokio_runtime_shared_by_custom(arc_runtime_cloned) + .enable_status_report() + .build(); + let connection_pool = db::get_connection_pool(); + let arc_delay_timer = Arc::new(delay_timer); + let arc_connection_pool = Arc::new(connection_pool); + + let shared_delay_timer = AddData::new(arc_delay_timer.clone()); + let shared_connection_pool = AddData::new(arc_connection_pool.clone()); + let shared_scheduler_meta_info: AddData> = + AddData::new(Arc::new(SchedulerMetaInfo::default())); + let shared_request_client = AddData::new(request_client.clone()); + + #[cfg(AUTH_CASBIN)] + { + let enforcer = get_casbin_enforcer(shared_connection_pool.clone()).await; + let shared_enforcer = AddData::new(RwLock::new(enforcer)); + + let app = app + .configure(actions::role::config_route) + .wrap(CasbinService) + .app_data(shared_enforcer.clone()); + } + + // All ready work when the delicate-application starts. + launch_ready_operation( + arc_connection_pool.clone(), + request_client, + #[cfg(AUTH_CASBIN)] + shared_enforcer.clone(), + ) + .await; + + app.with(shared_delay_timer) + .with(shared_connection_pool) + .with(shared_scheduler_meta_info) + .with(shared_request_client) + .with(components::session::auth_middleware()) + .with(components::session::session_middleware()) + .with(cors) + // .wrap(MiddlewareLogger::default()) + // .wrap_fn(|req, srv| { + // let unique_id = get_unique_id_string(); + // let unique_id_str = unique_id.deref(); + // let fut = srv + // .call(req) + // .instrument(info_span!("log-id: ", unique_id_str)); + // async { + // let res = fut.await?; + // Ok(res) + // } + // }) + // }) +} + // All ready work when the delicate-application starts. async fn launch_ready_operation( pool: Arc, @@ -187,7 +188,6 @@ async fn launch_ready_operation( // Heartbeat checker // That constantly goes to detect whether the machine survives with the machine's indicators. fn launch_health_check(pool: Arc, request_client: RequestClient) { - // FIXME: tokio_spawn(loop_health_check(pool, request_client)); } diff --git a/delicate-scheduler/src/prelude.rs b/delicate-scheduler/src/prelude.rs index dc9efb5..0d1fb93 100644 --- a/delicate-scheduler/src/prelude.rs +++ b/delicate-scheduler/src/prelude.rs @@ -6,9 +6,10 @@ pub(crate) use super::components::auth::casbin::casbin_event_consumer::{ pub(crate) use super::components::auth::casbin::*; pub(crate) use super::components::base::SchedulerMetaInfo; pub(crate) use super::components::health_checker::loop_health_check; +pub(crate) use super::components::helper::*; pub(crate) use super::components::operation_log_consumer::{ - loop_operate_logs, + loop_operate_logs, send_option_operation_log_pair, }; pub(crate) use super::db; pub(crate) use super::db::common::helper::*; @@ -21,7 +22,8 @@ pub(crate) use common_model::PaginateData; pub(crate) use delicate_utils::consensus_message::security::{self, SecurityLevel}; pub(crate) use delicate_utils::consensus_message::service_binding; pub(crate) use delicate_utils::consensus_message::{ - task as delicate_utils_task, + executor_processor as delicate_utils_executor_processor, + health_check as delicate_utils_health_check, task as delicate_utils_task, task_log as delicate_utils_task_log, }; pub(crate) use delicate_utils::error::{AuthServiceError, CommonError}; @@ -29,11 +31,11 @@ pub(crate) use delicate_utils::helper_utils::get_unique_id_string; pub(crate) use delicate_utils::prelude::*; pub(crate) use delicate_utils::uniform_data::*; - pub(crate) use std::collections::{HashMap, HashSet}; pub(crate) use std::convert::{AsRef, TryFrom}; pub(crate) use std::env; pub(crate) use std::fmt::Debug; +pub(crate) use std::future::Future; pub(crate) use std::iter::Iterator; pub(crate) use std::ops::Deref; @@ -41,13 +43,14 @@ pub(crate) use std::str::FromStr; pub(crate) use std::string::ToString; pub(crate) use std::sync::atomic::{AtomicUsize, Ordering}; pub(crate) use std::sync::Arc; +pub(crate) use std::vec::IntoIter; pub(crate) use std::time::Duration; pub(crate) use std::time::SystemTime; - -pub(crate) use futures::future::{JoinAll}; - +pub(crate) use anyhow::Result as AnyResut; +pub(crate) use async_channel::{Receiver as AsyncReceiver, Sender as AsyncSender}; +pub(crate) use async_lock::RwLock; pub(crate) use cached::proc_macro::cached; pub(crate) use cached::TimedSizedCache; pub(crate) use casbin::{ @@ -57,35 +60,34 @@ pub(crate) use casbin::{ pub(crate) use chrono::{DateTime, Duration as ChronoDuration, Local, NaiveDateTime, Timelike}; +pub(crate) use delay_timer::prelude::*; pub(crate) use diesel::mysql::Mysql; pub(crate) use diesel::prelude::*; pub(crate) use diesel::query_builder::{AsQuery, AstPass, Query, QueryFragment}; pub(crate) use diesel::query_dsl::methods::LoadQuery; +pub(crate) use diesel::query_dsl::RunQueryDsl; pub(crate) use diesel::r2d2::CustomizeConnection; pub(crate) use diesel::result::Error as DieselError; pub(crate) use diesel::sql_types; - -pub(crate) use awc::{SendClientRequest}; - -pub(crate) use anyhow::Result as AnyResut; -pub(crate) use async_channel::{Receiver as AsyncReceiver, Sender as AsyncSender}; -pub(crate) use async_lock::RwLock; -pub(crate) use delay_timer::prelude::*; -pub(crate) use diesel::query_dsl::RunQueryDsl; pub(crate) use dotenv::dotenv; +pub(crate) use flexi_logger::{ + writers::FileLogWriter, Age, Cleanup, Criterion, FileSpec, Naming, WriteMode, +}; +pub(crate) use futures::future::{join, join3, JoinAll}; + pub(crate) use tokio::runtime::Builder; +pub(crate) use tokio::runtime::Runtime; pub(crate) use tokio::spawn as tokio_spawn; pub(crate) use tokio::task::spawn_blocking; pub(crate) use tokio::time::{interval, sleep}; pub(crate) use tokio::time::{timeout as tokio_timeout, Timeout as TokioTimeout}; -pub(crate) use tracing::{debug, error, span, Instrument, Level}; +pub(crate) use tracing::{debug, error, info, span, Instrument, Level}; pub(crate) use tracing_subscriber::FmtSubscriber; -pub(crate) use flexi_logger::{ - writers::FileLogWriter, Age, Cleanup, Criterion, FileSpec, Naming, WriteMode, -}; pub(crate) use regex::Regex; -pub(crate) use reqwest::{Client as RequestClient}; +pub(crate) use reqwest::{ + Client as RequestClient, Error as RequestError, Response as RequestResponse, +}; pub(crate) use ring::digest::{digest, SHA256}; pub(crate) use rsa::RSAPrivateKey; pub(crate) use serde::de::DeserializeOwned; @@ -95,13 +97,12 @@ pub(crate) use strum::IntoEnumIterator; pub(crate) use strum_macros::{AsRefStr, EnumIter, IntoStaticStr, ToString as StrumToString}; pub(crate) use validator::{Validate, ValidationErrors}; - -pub(crate) use poem::http::{Method}; +pub(crate) use poem::http::Method; pub(crate) use poem::listener::TcpListener; -pub(crate) use poem::middleware::AddData; +pub(crate) use poem::middleware::{AddData, CookieJarManager}; pub(crate) use poem::middleware::Cors; -pub(crate) use poem::web::cookie::{CookieJar}; +pub(crate) use poem::web::cookie::{CookieJar, CookieKey, SignedCookieJar}; pub(crate) use poem::web::{Data, IntoResponse, Json}; pub(crate) use poem::{ get, handler, post, Endpoint, EndpointExt, Middleware, Request, Response, Route, Server, diff --git a/delicate-utils/src/error.rs b/delicate-utils/src/error.rs index cd6ad4d..302e951 100644 --- a/delicate-utils/src/error.rs +++ b/delicate-utils/src/error.rs @@ -23,6 +23,10 @@ pub enum CommonError { DisAuth(#[from] AuthServiceError), #[error("Blocking running fail.")] JoinError(#[from] JoinError), + #[error("request fail.")] + RequestError(#[from] reqwest::Error), + #[error("Parse Cookie fail.")] + ParseCookieError(#[from] poem::error::ParseCookieError), } #[derive(ThisError, Debug)] diff --git a/migrate_to_poem..md b/migrate_to_poem..md index 25312b7..a577204 100644 --- a/migrate_to_poem..md +++ b/migrate_to_poem..md @@ -85,6 +85,8 @@ pub(crate) fn config_route(route: Route) -> Route { // remove patch and older packages. +// actix-web RequestClient -> reqwest Client + # TODO: This(casbin-patch) must be remove when upgrading to actix-web4. [patch.crates-io] casbin = { git = 'https://github.com/BinChengZhao/casbin-rs', branch = 'fix-casbin-v2.0.5-compile-bug' } @@ -138,3 +140,5 @@ Box::pin(async move { }) + +##### I've been away from work for a while, and I'm ready to find a new job. If you are interested in my work or need a Rust engineer, please contact me `binchengZhao@outlook.com` . \ No newline at end of file From b5a6f5084986b17f24c188df073d25b667799b77 Mon Sep 17 00:00:00 2001 From: BinChengZhao Date: Fri, 15 Oct 2021 20:33:26 +0800 Subject: [PATCH 08/13] feat: Sixth step of migrate to poem. --- delicate-executor/src/prelude.rs | 2 +- delicate-scheduler/src/actions/task.rs | 1 - delicate-scheduler/src/actions/user.rs | 4 ++-- .../src/components/auth/casbin/middleware.rs | 3 +-- delicate-scheduler/src/components/helper.rs | 2 +- delicate-scheduler/src/db/common/helper.rs | 14 +++++++------- 6 files changed, 12 insertions(+), 14 deletions(-) diff --git a/delicate-executor/src/prelude.rs b/delicate-executor/src/prelude.rs index 522a31b..6f6554d 100644 --- a/delicate-executor/src/prelude.rs +++ b/delicate-executor/src/prelude.rs @@ -39,7 +39,7 @@ pub(crate) use std::time::Duration; pub(crate) use sysinfo::{RefreshKind, System, SystemExt}; pub(crate) use poem::middleware::AddData; -pub(crate) use poem::web::{Data, Json, Path}; +pub(crate) use poem::web::{Data, Json}; pub(crate) use poem::{ handler, listener::TcpListener, post, Endpoint, EndpointExt, Request, Route, Server, }; diff --git a/delicate-scheduler/src/actions/task.rs b/delicate-scheduler/src/actions/task.rs index 671265b..58ed0db 100644 --- a/delicate-scheduler/src/actions/task.rs +++ b/delicate-scheduler/src/actions/task.rs @@ -4,7 +4,6 @@ pub(crate) fn config_route(route: Route) -> Route { route .at("/api/task/create", post(create_task)) .at("/api/task/list", post(show_tasks)) - // FIXME: .at("/api/task/update", post(update_task)) .at("/api/task/run", post(run_task)) .at("/api/task/suspend", post(suspend_task)) diff --git a/delicate-scheduler/src/actions/user.rs b/delicate-scheduler/src/actions/user.rs index 8666d43..43d2b64 100644 --- a/delicate-scheduler/src/actions/user.rs +++ b/delicate-scheduler/src/actions/user.rs @@ -186,7 +186,7 @@ async fn change_password( .await; let count = f_result - .map(|count_result| Into::>::into(count_result)) + .map(Into::>::into) .unwrap_or_else(|e| { UnifiedResponseMessages::::error().customized_error_msg(e.to_string()) }); @@ -305,7 +305,7 @@ async fn pre_login_user( } fn save_session( - req: &Request, + _req: &Request, (_, _user): (model::UserAuth, model::User), ) -> Result<(), CommonError> { // FIXME: diff --git a/delicate-scheduler/src/components/auth/casbin/middleware.rs b/delicate-scheduler/src/components/auth/casbin/middleware.rs index 54a1e29..651f8b9 100644 --- a/delicate-scheduler/src/components/auth/casbin/middleware.rs +++ b/delicate-scheduler/src/components/auth/casbin/middleware.rs @@ -99,8 +99,7 @@ impl Endpoint for CasbinAuthMiddleware { let enforcer = req .extensions() .get::>>>() - .expect("Casbin's enforcer acquisition failed") - .clone(); + .expect("Casbin's enforcer acquisition failed"); let extensions = req.extensions(); let session = extensions .get::() diff --git a/delicate-scheduler/src/components/helper.rs b/delicate-scheduler/src/components/helper.rs index 2bca344..761994a 100644 --- a/delicate-scheduler/src/components/helper.rs +++ b/delicate-scheduler/src/components/helper.rs @@ -10,7 +10,7 @@ pub(crate) async fn handle_response< .await .into_iter() .map(|response| match response { - Ok(mut r) => Some(r.json::()), + Ok(r) => Some(r.json::()), Err(e) => { error!("SendRequestError : {}", e); None diff --git a/delicate-scheduler/src/db/common/helper.rs b/delicate-scheduler/src/db/common/helper.rs index 3eadb2c..7ca577a 100644 --- a/delicate-scheduler/src/db/common/helper.rs +++ b/delicate-scheduler/src/db/common/helper.rs @@ -113,7 +113,7 @@ impl_seek_table_id_unify!(NewTaskLog=>0, NewTask=>0, NewUser=>0, NewTaskBind=>0, #[inline(always)] pub(crate) fn generate_operation_log( operation_name: impl ToString, - session: &SignedCookieJar, + session: &SignedCookieJar<'_>, operation_type: OperationType, value: impl Serialize + SeekTableId, column_comment: impl Serialize, @@ -152,7 +152,7 @@ pub(crate) fn generate_operation_log( #[inline(always)] pub(crate) fn generate_operation_addtion_log( operation_name: impl ToString, - session: &SignedCookieJar, + session: &SignedCookieJar<'_>, values: impl Serialize + SeekTableId, column_comment: impl Serialize, ) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { @@ -168,7 +168,7 @@ pub(crate) fn generate_operation_addtion_log( #[inline(always)] pub(crate) fn generate_operation_modify_log( operation_name: impl ToString, - session: &SignedCookieJar, + session: &SignedCookieJar<'_>, values: impl Serialize + SeekTableId, column_comment: impl Serialize, ) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { @@ -184,7 +184,7 @@ pub(crate) fn generate_operation_modify_log( #[inline(always)] pub(crate) fn generate_operation_delete_log( operation_name: impl ToString, - session: &SignedCookieJar, + session: &SignedCookieJar<'_>, values: impl Serialize + SeekTableId, column_comment: impl Serialize, ) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { @@ -202,7 +202,7 @@ macro_rules! generate_operation_log_fn{ $( concat_idents!(fn_name = generate_operation_, $operation_name, _, "addtion", _log { #[allow(dead_code)] - pub(crate) fn fn_name(session: &SignedCookieJar, values: impl Serialize + SeekTableId) + pub(crate) fn fn_name(session: &SignedCookieJar<'_>, values: impl Serialize + SeekTableId) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { generate_operation_addtion_log($operation_name, session, values, $column_comment) } @@ -210,7 +210,7 @@ macro_rules! generate_operation_log_fn{ concat_idents!(fn_name = generate_operation_, $operation_name, _, "modify", _log { #[allow(dead_code)] - pub(crate) fn fn_name(session: &SignedCookieJar, values: impl Serialize + SeekTableId) + pub(crate) fn fn_name(session: &SignedCookieJar<'_>, values: impl Serialize + SeekTableId) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { generate_operation_modify_log($operation_name, session, values, $column_comment) } @@ -218,7 +218,7 @@ macro_rules! generate_operation_log_fn{ concat_idents!(fn_name = generate_operation_, $operation_name, _, "delete", _log { #[allow(dead_code)] - pub(crate) fn fn_name(session: &SignedCookieJar, values: impl Serialize + SeekTableId) + pub(crate) fn fn_name(session: &SignedCookieJar<'_>, values: impl Serialize + SeekTableId) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { generate_operation_delete_log($operation_name, session, values, $column_comment) } From 67f62682296452d47709c25a6395379c64537cf8 Mon Sep 17 00:00:00 2001 From: BinChengZhao Date: Sun, 17 Oct 2021 02:54:32 +0800 Subject: [PATCH 09/13] feat: Seventh step of migrate to poem. --- delicate-scheduler/src/actions/components.rs | 6 +- .../src/actions/data_reports.rs | 2 +- .../src/actions/executor_group.rs | 12 +-- .../src/actions/executor_processor.rs | 12 +-- .../src/actions/executor_processor_bind.rs | 10 +-- .../src/actions/operation_log.rs | 4 +- delicate-scheduler/src/actions/task.rs | 10 +-- delicate-scheduler/src/actions/task_log.rs | 14 ++-- delicate-scheduler/src/actions/user.rs | 61 ++++++++++----- .../src/actions/user_login_log.rs | 2 +- delicate-scheduler/src/components/base.rs | 5 ++ delicate-scheduler/src/db/common/helper.rs | 2 +- delicate-scheduler/src/main.rs | 77 +++++++++++-------- delicate-scheduler/src/prelude.rs | 3 +- .../src/consensus_message/security.rs | 25 ++++++ 15 files changed, 154 insertions(+), 91 deletions(-) diff --git a/delicate-scheduler/src/actions/components.rs b/delicate-scheduler/src/actions/components.rs index c8e8446..5badaaf 100644 --- a/delicate-scheduler/src/actions/components.rs +++ b/delicate-scheduler/src/actions/components.rs @@ -10,7 +10,7 @@ pub(crate) fn config_route(route: Route) -> Route { } #[handler] -async fn binding_list(pool: Data<&db::ConnectionPool>) -> impl IntoResponse { +async fn binding_list(pool: Data<&Arc>) -> impl IntoResponse { use model::{BindingSelection, ExecutorProcessorBindQueryBuilder}; if let Ok(conn) = pool.get() { @@ -34,7 +34,7 @@ async fn binding_list(pool: Data<&db::ConnectionPool>) -> impl IntoResponse { } #[handler] -async fn executor_list(pool: Data<&db::ConnectionPool>) -> impl IntoResponse { +async fn executor_list(pool: Data<&Arc>) -> impl IntoResponse { use model::{ExecutorProcessorQueryBuilder, ExecutorSelection}; if let Ok(conn) = pool.get() { @@ -58,7 +58,7 @@ async fn executor_list(pool: Data<&db::ConnectionPool>) -> impl IntoResponse { } #[handler] -async fn permission_list(pool: Data<&db::ConnectionPool>) -> impl IntoResponse { +async fn permission_list(pool: Data<&Arc>) -> impl IntoResponse { use db::schema::casbin_rule; // TODO: Awaiting follow-up adjustment. diff --git a/delicate-scheduler/src/actions/data_reports.rs b/delicate-scheduler/src/actions/data_reports.rs index 045888d..3691ab5 100644 --- a/delicate-scheduler/src/actions/data_reports.rs +++ b/delicate-scheduler/src/actions/data_reports.rs @@ -5,7 +5,7 @@ pub(crate) fn config_route(route: Route) -> Route { } #[handler] -async fn show_one_day_tasks_state(pool: Data<&db::ConnectionPool>) -> impl IntoResponse { +async fn show_one_day_tasks_state(pool: Data<&Arc>) -> impl IntoResponse { use db::schema::task_log; use state::task_log::State; diff --git a/delicate-scheduler/src/actions/executor_group.rs b/delicate-scheduler/src/actions/executor_group.rs index d94ed85..7e4832e 100644 --- a/delicate-scheduler/src/actions/executor_group.rs +++ b/delicate-scheduler/src/actions/executor_group.rs @@ -16,7 +16,7 @@ pub(crate) fn config_route(route: Route) -> Route { async fn create_executor_group( req: &Request, Json(executor_group): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { use db::schema::executor_group; @@ -49,7 +49,7 @@ async fn create_executor_group( #[handler] async fn show_executor_groups( Json(query_params): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -94,7 +94,7 @@ async fn show_executor_groups( #[handler] async fn show_executor_group_detail( Json(model::ExecutorGroupId { executor_group_id }): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { let executor_group_detail_result = pre_show_executor_group_detail(executor_group_id, pool).await; @@ -116,7 +116,7 @@ async fn show_executor_group_detail( async fn pre_show_executor_group_detail( executor_group_id: i64, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> Result { use db::schema::{executor_group, executor_processor, executor_processor_bind}; @@ -156,7 +156,7 @@ async fn pre_show_executor_group_detail( async fn update_executor_group( req: &Request, Json(executor_group): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { let operation_log_pair_option = generate_operation_executor_group_modify_log(&req.get_session(), &executor_group).ok(); @@ -186,7 +186,7 @@ async fn update_executor_group( async fn delete_executor_group( req: &Request, Json(model::ExecutorGroupId { executor_group_id }): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { use db::schema::executor_group::dsl::*; diff --git a/delicate-scheduler/src/actions/executor_processor.rs b/delicate-scheduler/src/actions/executor_processor.rs index 9fa47d7..ea51490 100644 --- a/delicate-scheduler/src/actions/executor_processor.rs +++ b/delicate-scheduler/src/actions/executor_processor.rs @@ -29,7 +29,7 @@ pub(crate) fn config_route(route: Route) -> Route { async fn create_executor_processor( req: &Request, Json(executor_processor): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { let operation_log_pair_option = generate_operation_executor_processor_addtion_log(&req.get_session(), &executor_processor) @@ -58,7 +58,7 @@ async fn create_executor_processor( #[handler] async fn show_executor_processors( Json(query_params): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -106,7 +106,7 @@ async fn show_executor_processors( async fn update_executor_processor( req: &Request, Json(executor_processor): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { let operation_log_pair_option = generate_operation_executor_processor_modify_log(&req.get_session(), &executor_processor) @@ -138,7 +138,7 @@ async fn delete_executor_processor( Json(model::ExecutorProcessorId { executor_processor_id, }): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { use db::schema::executor_processor::dsl::*; @@ -172,7 +172,7 @@ async fn activate_executor_processor( Json(model::ExecutorProcessorId { executor_processor_id, }): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, scheduler: Data<&SchedulerMetaInfo>, ) -> impl IntoResponse { let uniform_data: UnifiedResponseMessages<()> = @@ -183,7 +183,7 @@ async fn activate_executor_processor( } async fn do_activate( req: &Request, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, executor_processor_id: i64, scheduler: Data<&SchedulerMetaInfo>, ) -> Result<(), CommonError> { diff --git a/delicate-scheduler/src/actions/executor_processor_bind.rs b/delicate-scheduler/src/actions/executor_processor_bind.rs index 8ec9b54..5292178 100644 --- a/delicate-scheduler/src/actions/executor_processor_bind.rs +++ b/delicate-scheduler/src/actions/executor_processor_bind.rs @@ -25,7 +25,7 @@ pub(crate) fn config_route(route: Route) -> Route { async fn create_executor_processor_bind( req: &Request, Json(executor_processor_binds): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { use db::schema::executor_processor_bind; @@ -70,7 +70,7 @@ async fn create_executor_processor_bind( async fn show_executor_processor_binds( Json(query_params): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -117,7 +117,7 @@ async fn show_executor_processor_binds( async fn update_executor_processor_bind( req: &Request, Json(executor_processor_bind): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { return Json(Into::>::into( pre_update_executor_processor_bind(req, executor_processor_bind, pool).await, @@ -127,7 +127,7 @@ async fn update_executor_processor_bind( async fn pre_update_executor_processor_bind( req: &Request, executor_processor_bind: model::UpdateExecutorProcessorBind, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> Result<(), CommonError> { use db::schema::{executor_processor, executor_processor_bind, task, task_bind}; use delicate_utils_task::{TaskPackage, TaskUnit}; @@ -246,7 +246,7 @@ async fn delete_executor_processor_bind( Json(model::ExecutorProcessorBindId { executor_processor_bind_id, }): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { use db::schema::executor_processor_bind::dsl::*; diff --git a/delicate-scheduler/src/actions/operation_log.rs b/delicate-scheduler/src/actions/operation_log.rs index c5fa0d5..fb3f5ea 100644 --- a/delicate-scheduler/src/actions/operation_log.rs +++ b/delicate-scheduler/src/actions/operation_log.rs @@ -10,7 +10,7 @@ pub(crate) fn config_route(route: Route) -> Route { async fn show_operation_log( Json(query_params): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -60,7 +60,7 @@ async fn show_operation_log( async fn show_operation_log_detail( Json(query_params): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { use db::schema::operation_log_detail; diff --git a/delicate-scheduler/src/actions/task.rs b/delicate-scheduler/src/actions/task.rs index 58ed0db..e24af29 100644 --- a/delicate-scheduler/src/actions/task.rs +++ b/delicate-scheduler/src/actions/task.rs @@ -16,7 +16,7 @@ pub(crate) fn config_route(route: Route) -> Route { async fn create_task( req: &Request, Json(model::NewTaskBody { task, binding_ids }): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { use db::schema::{task, task_bind}; @@ -59,7 +59,7 @@ async fn create_task( async fn show_tasks( Json(query_params): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { use db::schema::task_bind; @@ -130,7 +130,7 @@ async fn show_tasks( async fn update_task( req: &Request, Json(update_task_body): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { let respose: UnifiedResponseMessages<()> = pre_update_task(req, update_task_body, pool) .instrument(span!(Level::INFO, "update-task")) @@ -142,7 +142,7 @@ async fn update_task( pub async fn pre_update_task( req: &Request, model::UpdateTaskBody { task, binding_ids }: model::UpdateTaskBody, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> Result<(), CommonError> { let task_id = task.id; let conn = pool.get()?; @@ -395,7 +395,7 @@ pub async fn pre_update_task_sevice( async fn delete_task( req: &Request, Json(model::TaskId { task_id }): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { use db::schema::{task, task_bind}; diff --git a/delicate-scheduler/src/actions/task_log.rs b/delicate-scheduler/src/actions/task_log.rs index 595d886..1dd321d 100644 --- a/delicate-scheduler/src/actions/task_log.rs +++ b/delicate-scheduler/src/actions/task_log.rs @@ -15,7 +15,7 @@ pub(crate) fn config_route(route: Route) -> Route { async fn create_task_logs( Json(events_collection): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { let r = async { debug!( @@ -38,7 +38,7 @@ async fn create_task_logs( async fn pre_create_task_logs( events_collection: delicate_utils_task_log::SignedExecutorEventCollection, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> Result { use delicate_utils_task_log::EventType; @@ -88,7 +88,7 @@ async fn pre_create_task_logs( async fn show_task_logs( Json(query_params): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -139,7 +139,7 @@ async fn show_task_logs( async fn show_task_log_detail( Json(query_params): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { use db::schema::task_log_extend; @@ -172,7 +172,7 @@ async fn show_task_log_detail( async fn kill_task_instance( req: &Request, Json(task_record): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { let response_result = kill_one_task_instance(req, pool, task_record).await; @@ -246,7 +246,7 @@ fn batch_update_task_logs( async fn kill_one_task_instance( req: &Request, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, model::TaskRecord { task_id, record_id, @@ -310,7 +310,7 @@ async fn kill_one_task_instance( async fn delete_task_log( req: &Request, Json(delete_params): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { let operation_log_pair_option = generate_operation_task_delete_log(&req.get_session(), &delete_params).ok(); diff --git a/delicate-scheduler/src/actions/user.rs b/delicate-scheduler/src/actions/user.rs index 43d2b64..08e55e0 100644 --- a/delicate-scheduler/src/actions/user.rs +++ b/delicate-scheduler/src/actions/user.rs @@ -28,7 +28,7 @@ pub(crate) fn config_route(route: Route) -> Route { async fn create_user( req: &Request, Json(user): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { let validate_result: Result<(), ValidationErrors> = user.validate(); if validate_result.is_err() { @@ -77,7 +77,7 @@ async fn create_user( async fn show_users( Json(query_params): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -122,7 +122,7 @@ async fn show_users( async fn update_user( req: &Request, Json(user_value): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { let operation_log_pair_option = generate_operation_user_modify_log(&req.get_session(), &user_value).ok(); @@ -150,7 +150,7 @@ async fn update_user( async fn change_password( req: &Request, Json(user_value): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { let session = req.get_session(); let user_id = session @@ -201,7 +201,7 @@ async fn change_password( async fn delete_user( req: &Request, Json(model::UserId { user_id }): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { let operation_log_pair_option = generate_operation_user_delete_log( &req.get_session(), @@ -238,7 +238,7 @@ async fn delete_user( async fn login_user( req: &Request, Json(user_login): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { let login_result: UnifiedResponseMessages<()> = pre_login_user(req, user_login, pool).await.into(); @@ -253,7 +253,7 @@ async fn pre_login_user( account, password, }: model::UserAuthLogin, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> Result<(), CommonError> { let client_ip = req .remote_addr() @@ -305,22 +305,45 @@ async fn pre_login_user( } fn save_session( - _req: &Request, - (_, _user): (model::UserAuth, model::User), + req: &Request, + (_, user): (model::UserAuth, model::User), ) -> Result<(), CommonError> { - // FIXME: - - // session.set("login_time", get_timestamp())?; - // session.set("user_id", user.id)?; - // session.set("user_name", user.user_name)?; - // session.set("nick_name", user.nick_name)?; - // Ok(()) - todo!(); + let session = req.get_session(); + + let meta_info = req + .extensions() + .get::() + .ok_or(CommonError::DisPass("Cannot get SchedulerMetaInfo".into()))?; + let security_conf = meta_info.get_app_security_conf(); + + let mut cookie = Cookie::new("login_time", get_timestamp()); + cookie.set_domain(&security_conf.cookie_conf.domain); + cookie.set_http_only(security_conf.cookie_conf.http_only); + cookie.set_secure(security_conf.cookie_conf.secure); + + session.add(cookie.clone()); + + session.add({ + cookie.set_name("user_id"); + cookie.set_value(user.id); + cookie.clone() + }); + session.add({ + cookie.set_name("user_name"); + cookie.set_value(user.user_name); + cookie.clone() + }); + session.add({ + cookie.set_name("nick_name"); + cookie.set_value(user.nick_name); + cookie + }); + Ok(()) } #[handler] -async fn check_user(req: &Request, pool: Data<&db::ConnectionPool>) -> impl IntoResponse { +async fn check_user(req: &Request, pool: Data<&Arc>) -> impl IntoResponse { let check_result = pre_check_user(req, pool).await; if let Ok(user) = check_result { return Json(UnifiedResponseMessages::::success_with_data( @@ -338,7 +361,7 @@ async fn check_user(req: &Request, pool: Data<&db::ConnectionPool>) -> impl Into async fn pre_check_user( req: &Request, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> Result { let session = req.get_session(); let conn = pool.get()?; diff --git a/delicate-scheduler/src/actions/user_login_log.rs b/delicate-scheduler/src/actions/user_login_log.rs index 79fe2a8..4d4d7ab 100644 --- a/delicate-scheduler/src/actions/user_login_log.rs +++ b/delicate-scheduler/src/actions/user_login_log.rs @@ -7,7 +7,7 @@ pub(crate) fn config_route(route: Route) -> Route { #[handler] async fn show_user_login_log( Json(query_params): Json, - pool: Data<&db::ConnectionPool>, + pool: Data<&Arc>, ) -> impl IntoResponse { if let Ok(conn) = pool.get() { let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { diff --git a/delicate-scheduler/src/components/base.rs b/delicate-scheduler/src/components/base.rs index b2749b7..2dc272c 100644 --- a/delicate-scheduler/src/components/base.rs +++ b/delicate-scheduler/src/components/base.rs @@ -19,6 +19,11 @@ impl SchedulerMetaInfo { self.security_conf.security_level } + #[allow(dead_code)] + pub(crate) fn get_app_security_conf(&self) -> &SchedulerSecurityConf { + &self.security_conf + } + pub(crate) fn get_app_security_key(&self) -> Option<&RSAPrivateKey> { self.security_conf.rsa_private_key.as_ref().map(|k| &k.0) } diff --git a/delicate-scheduler/src/db/common/helper.rs b/delicate-scheduler/src/db/common/helper.rs index 7ca577a..900a1b2 100644 --- a/delicate-scheduler/src/db/common/helper.rs +++ b/delicate-scheduler/src/db/common/helper.rs @@ -24,7 +24,7 @@ pub trait CookieSession { impl CookieSession for Request { fn get_session(&self) -> SignedCookieJar<'_> { - self.extensions().get::().expect("").signed() + self.extensions().get::().expect("Cannot be acquired CookieJar! ").signed() } } #[derive(Copy, Clone, Default, Debug, Serialize, Deserialize)] diff --git a/delicate-scheduler/src/main.rs b/delicate-scheduler/src/main.rs index 85685f5..4f3690e 100644 --- a/delicate-scheduler/src/main.rs +++ b/delicate-scheduler/src/main.rs @@ -27,34 +27,13 @@ fn main() -> AnyResut<()> { // Loads environment variables. dotenv().ok(); + // Automatic execution of database migration db::init(); - let log_level: Level = - FromStr::from_str(&env::var("LOG_LEVEL").unwrap_or_else(|_| String::from("info"))) - .expect("Log level acquired fail."); - - // Prepare a `FileLogWriter` and a handle to it, and keep the handle alive - // until the program ends (it will flush and shutdown the `FileLogWriter` when dropped). - // For the `FileLogWriter`, use the settings that fit your needs - let (file_writer, _fw_handle) = FileLogWriter::builder(FileSpec::default()) - .rotate( - // If the program runs long enough, - Criterion::Age(Age::Day), // - create a new file every day - Naming::Timestamps, // - let the rotated files have a timestamp in their name - Cleanup::KeepLogFiles(15), // - keep at most seven log files - ) - .write_mode(WriteMode::Async) - .try_build_with_handle() - .expect("flexi_logger init failed"); - - FmtSubscriber::builder() - // will be written to file_writer. - .with_max_level(log_level) - .with_thread_names(true) - .with_writer(move || file_writer.clone()) - // completes the builder. - .init(); + // Automatic initialization of log consumers + let _fw_handle = init_logger(); + // Initialize custom asynchronous runtime let raw_runtime = Builder::new_multi_thread() .thread_name_fn(|| { static ATOMIC_ID: AtomicUsize = AtomicUsize::new(0); @@ -62,6 +41,7 @@ fn main() -> AnyResut<()> { format!("executor-{}", id) }) .thread_stack_size(4 * 1024 * 1024) + .enable_all() .build() .expect("Init Tokio runtime failed."); let arc_runtime = Arc::new(raw_runtime); @@ -94,6 +74,36 @@ fn main() -> AnyResut<()> { }) } +fn init_logger() -> FileLogWriterHandle { + let log_level: Level = + FromStr::from_str(&env::var("LOG_LEVEL").unwrap_or_else(|_| String::from("info"))) + .expect("Log level acquired fail."); + + // Prepare a `FileLogWriter` and a handle to it, and keep the handle alive + // until the program ends (it will flush and shutdown the `FileLogWriter` when dropped). + // For the `FileLogWriter`, use the settings that fit your needs + let (file_writer, _fw_handle) = FileLogWriter::builder(FileSpec::default()) + .rotate( + // If the program runs long enough, + Criterion::Age(Age::Day), // - create a new file every day + Naming::Timestamps, // - let the rotated files have a timestamp in their name + Cleanup::KeepLogFiles(15), // - keep at most seven log files + ) + .write_mode(WriteMode::Async) + .try_build_with_handle() + .expect("flexi_logger init failed"); + + FmtSubscriber::builder() + // will be written to file_writer. + .with_max_level(log_level) + .with_thread_names(true) + .with_writer(move || file_writer.clone()) + // completes the builder. + .init(); + + _fw_handle +} + async fn init_scheduler(app: Route, arc_runtime_cloned: Arc) -> impl Endpoint { let scheduler_front_end_domain: String = env::var("SCHEDULER_FRONT_END_DOMAIN") .expect("Without `SCHEDULER_FRONT_END_DOMAIN` set in .env"); @@ -125,15 +135,14 @@ async fn init_scheduler(app: Route, arc_runtime_cloned: Arc) -> impl En let shared_request_client = AddData::new(request_client.clone()); #[cfg(AUTH_CASBIN)] - { - let enforcer = get_casbin_enforcer(shared_connection_pool.clone()).await; - let shared_enforcer = AddData::new(RwLock::new(enforcer)); + let enforcer = get_casbin_enforcer(arc_connection_pool.clone()).await; + #[cfg(AUTH_CASBIN)] + let shared_enforcer = Arc::new(RwLock::new(enforcer)); - let app = app - .configure(actions::role::config_route) - .wrap(CasbinService) - .app_data(shared_enforcer.clone()); - } + #[cfg(AUTH_CASBIN)] + let app = app + .with(CasbinService) + .with(AddData::new(shared_enforcer.clone())); // All ready work when the delicate-application starts. launch_ready_operation( @@ -170,7 +179,7 @@ async fn init_scheduler(app: Route, arc_runtime_cloned: Arc) -> impl En async fn launch_ready_operation( pool: Arc, request_client: RequestClient, - #[cfg(AUTH_CASBIN)] enforcer: AddData>, + #[cfg(AUTH_CASBIN)] enforcer: Arc>, ) { launch_health_check(pool.clone(), request_client); launch_operation_log_consumer(pool); diff --git a/delicate-scheduler/src/prelude.rs b/delicate-scheduler/src/prelude.rs index 0d1fb93..6d22ed1 100644 --- a/delicate-scheduler/src/prelude.rs +++ b/delicate-scheduler/src/prelude.rs @@ -70,6 +70,7 @@ pub(crate) use diesel::r2d2::CustomizeConnection; pub(crate) use diesel::result::Error as DieselError; pub(crate) use diesel::sql_types; pub(crate) use dotenv::dotenv; +pub(crate) use flexi_logger::writers::FileLogWriterHandle; pub(crate) use flexi_logger::{ writers::FileLogWriter, Age, Cleanup, Criterion, FileSpec, Naming, WriteMode, }; @@ -102,7 +103,7 @@ pub(crate) use poem::listener::TcpListener; pub(crate) use poem::middleware::{AddData, CookieJarManager}; pub(crate) use poem::middleware::Cors; -pub(crate) use poem::web::cookie::{CookieJar, CookieKey, SignedCookieJar}; +pub(crate) use poem::web::cookie::{Cookie, CookieJar, CookieKey, SignedCookieJar}; pub(crate) use poem::web::{Data, IntoResponse, Json}; pub(crate) use poem::{ get, handler, post, Endpoint, EndpointExt, Middleware, Request, Response, Route, Server, diff --git a/delicate-utils/src/consensus_message/security.rs b/delicate-utils/src/consensus_message/security.rs index dad8e1a..4fb9e6f 100644 --- a/delicate-utils/src/consensus_message/security.rs +++ b/delicate-utils/src/consensus_message/security.rs @@ -24,14 +24,38 @@ impl SecurityRsaKey for SecurityeKey {} #[derive(Debug, Clone, Serialize, Deserialize)] pub struct SecurityeKey(pub T); +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct CookieConf { + pub domain: String, + pub http_only: bool, + pub secure: bool, +} + +impl Default for CookieConf { + fn default() -> Self { + let domain = env::var("SCHEDULER_COOKIE_DOMAIN") + .expect("Without `SCHEDULER_COOKIE_DOMAIN` set in .env"); + + let http_only = true; + let secure = false; + Self { + domain, + http_only, + secure, + } + } +} + #[derive(Debug, Clone, Serialize, Deserialize)] pub struct SchedulerSecurityConf { + pub cookie_conf: CookieConf, pub security_level: SecurityLevel, pub rsa_private_key: Option>, } impl Default for SchedulerSecurityConf { fn default() -> Self { + let cookie_conf = CookieConf::default(); let security_level = SecurityLevel::get_app_security_level(); let rsa_private_key = SecurityeKey::::get_app_rsa_key("DELICATE_SECURITY_PRIVATE_KEY"); @@ -48,6 +72,7 @@ impl Default for SchedulerSecurityConf { } Self { + cookie_conf, security_level: SecurityLevel::get_app_security_level(), rsa_private_key: rsa_private_key.map(SecurityeKey).ok(), } From 5b9d1fd03fb07a2eb97e64c46dca907abcc5e419 Mon Sep 17 00:00:00 2001 From: BinChengZhao Date: Mon, 18 Oct 2021 16:07:56 +0800 Subject: [PATCH 10/13] feat: Eighth step of migrate to poem. --- delicate-executor/src/main.rs | 90 ++++++++++--------- .../src/actions/executor_processor.rs | 6 +- delicate-scheduler/src/actions/role.rs | 4 +- delicate-scheduler/src/actions/user.rs | 25 +++--- .../src/components/auth/casbin/middleware.rs | 6 +- delicate-scheduler/src/db/common/helper.rs | 2 +- delicate-scheduler/src/main.rs | 11 +-- delicate-utils/src/uniform_data.rs | 13 +++ migrate_to_poem..md | 1 + 9 files changed, 83 insertions(+), 75 deletions(-) diff --git a/delicate-executor/src/main.rs b/delicate-executor/src/main.rs index 633dff9..74d6492 100644 --- a/delicate-executor/src/main.rs +++ b/delicate-executor/src/main.rs @@ -7,8 +7,8 @@ use prelude::*; #[instrument(skip(executor_conf, shared_delay_timer, signed_task_package), fields(task_package = signed_task_package.task_package.id))] async fn create_task( Json(signed_task_package): Json, - shared_delay_timer: Data<&DelayTimer>, - executor_conf: Data<&ExecutorSecurityConf>, + shared_delay_timer: Data<&Arc>, + executor_conf: Data<&Arc>, ) -> Json { let response: UnitUnifiedResponseMessages = Into::into(pre_create_task(signed_task_package, shared_delay_timer, executor_conf).await); @@ -18,8 +18,8 @@ async fn create_task( pub async fn pre_create_task( signed_task_package: SignedTaskPackage, - shared_delay_timer: Data<&DelayTimer>, - executor_conf: Data<&ExecutorSecurityConf>, + shared_delay_timer: Data<&Arc>, + executor_conf: Data<&Arc>, ) -> Result<(), CommonError> { info!("pre_create_task: {}", &signed_task_package.task_package); let guard = executor_conf.get_bind_scheduler_token_ref().await; @@ -35,8 +35,8 @@ pub async fn pre_create_task( #[instrument(skip(executor_conf, shared_delay_timer, signed_task_package), fields(task_package = signed_task_package.task_package.id))] async fn update_task( Json(signed_task_package): Json, - shared_delay_timer: Data<&DelayTimer>, - executor_conf: Data<&ExecutorSecurityConf>, + shared_delay_timer: Data<&Arc>, + executor_conf: Data<&Arc>, ) -> Json { let response: UnitUnifiedResponseMessages = Into::into(pre_update_task(signed_task_package, shared_delay_timer, executor_conf).await); @@ -46,8 +46,8 @@ async fn update_task( pub async fn pre_update_task( signed_task_package: SignedTaskPackage, - shared_delay_timer: Data<&DelayTimer>, - executor_conf: Data<&ExecutorSecurityConf>, + shared_delay_timer: Data<&Arc>, + executor_conf: Data<&Arc>, ) -> Result<(), CommonError> { info!("pre_update_task: {}", &signed_task_package.task_package); let guard = executor_conf.get_bind_scheduler_token_ref().await; @@ -63,8 +63,8 @@ pub async fn pre_update_task( #[instrument(skip(executor_conf, shared_delay_timer, signed_task_unit), fields(task_id = signed_task_unit.task_unit.task_id))] async fn remove_task( Json(signed_task_unit): Json, - shared_delay_timer: Data<&DelayTimer>, - executor_conf: Data<&ExecutorSecurityConf>, + shared_delay_timer: Data<&Arc>, + executor_conf: Data<&Arc>, ) -> Json { let response: UnitUnifiedResponseMessages = pre_remove_task(signed_task_unit, shared_delay_timer, executor_conf) @@ -75,8 +75,8 @@ async fn remove_task( pub async fn pre_remove_task( signed_task_unit: SignedTaskUnit, - shared_delay_timer: Data<&DelayTimer>, - executor_conf: Data<&ExecutorSecurityConf>, + shared_delay_timer: Data<&Arc>, + executor_conf: Data<&Arc>, ) -> Result<(), CommonError> { info!("pre_remove_task: {}", &signed_task_unit); @@ -90,8 +90,8 @@ pub async fn pre_remove_task( #[instrument(skip(executor_conf, shared_delay_timer, signed_task_unit), fields(task_id = signed_task_unit.task_unit.task_id))] async fn advance_task( Json(signed_task_unit): Json, - shared_delay_timer: Data<&DelayTimer>, - executor_conf: Data<&ExecutorSecurityConf>, + shared_delay_timer: Data<&Arc>, + executor_conf: Data<&Arc>, ) -> Json { let response: UnitUnifiedResponseMessages = pre_advance_task(signed_task_unit, shared_delay_timer, executor_conf) @@ -102,8 +102,8 @@ async fn advance_task( pub async fn pre_advance_task( signed_task_unit: SignedTaskUnit, - shared_delay_timer: Data<&DelayTimer>, - executor_conf: Data<&ExecutorSecurityConf>, + shared_delay_timer: Data<&Arc>, + executor_conf: Data<&Arc>, ) -> Result<(), CommonError> { info!("pre_advance_task: {}", &signed_task_unit); let guard = executor_conf.get_bind_scheduler_token_ref().await; @@ -116,8 +116,8 @@ pub async fn pre_advance_task( #[instrument(skip(executor_conf, shared_delay_timer, signed_cancel_task_record), fields(cancel_task_record = signed_cancel_task_record.cancel_task_record.to_string().deref()))] async fn cancel_task( Json(signed_cancel_task_record): Json, - shared_delay_timer: Data<&DelayTimer>, - executor_conf: Data<&ExecutorSecurityConf>, + shared_delay_timer: Data<&Arc>, + executor_conf: Data<&Arc>, ) -> Json { let response: UnitUnifiedResponseMessages = pre_cancel_task(signed_cancel_task_record, shared_delay_timer, executor_conf) @@ -128,8 +128,8 @@ async fn cancel_task( pub async fn pre_cancel_task( signed_cancel_task_record: SignedCancelTaskRecord, - shared_delay_timer: Data<&DelayTimer>, - executor_conf: Data<&ExecutorSecurityConf>, + shared_delay_timer: Data<&Arc>, + executor_conf: Data<&Arc>, ) -> Result<(), CommonError> { info!("pre_cancel_task: {}", &signed_cancel_task_record); @@ -144,7 +144,9 @@ pub async fn pre_cancel_task( } #[allow(dead_code)] -async fn maintenance(shared_delay_timer: Data<&DelayTimer>) -> Json { +async fn maintenance( + shared_delay_timer: Data<&Arc>, +) -> Json { Json(Into::::into( shared_delay_timer.stop_delay_timer(), )) @@ -156,8 +158,8 @@ async fn maintenance(shared_delay_timer: Data<&DelayTimer>) -> Json, - executor_conf: Data<&ExecutorSecurityConf>, - system_mirror: Data<&SystemMirror>, + executor_conf: Data<&Arc>, + system_mirror: Data<&Arc>, ) -> Json> { let guard = executor_conf.get_bind_scheduler_token_ref().await; let token = guard.as_ref().map(|s| s.deref()); @@ -194,8 +196,8 @@ async fn health_screen( // Or set security level, no authentication at level 0, public and private keys required at level 1. async fn bind_executor( Json(request_bind_scheduler): Json, - security_conf: Data<&ExecutorSecurityConf>, - shared_delay_timer: Data<&DelayTimer>, + security_conf: Data<&Arc>, + shared_delay_timer: Data<&Arc>, ) -> Json> { info!("{}", &request_bind_scheduler.bind_request); @@ -236,17 +238,7 @@ async fn bind_executor( fn main() -> AnyResult<()> { // Loads environment variables. dotenv().ok(); - - let log_level: Level = - FromStr::from_str(&env::var("LOG_LEVEL").unwrap_or_else(|_| String::from("info"))) - .expect("Log level acquired fail."); - - FmtSubscriber::builder() - // will be written to stdout. - .with_max_level(log_level) - .with_thread_names(true) - // completes the builder. - .init(); + init_logger(); let raw_runtime = Builder::new_multi_thread() .thread_name_fn(|| { @@ -255,6 +247,7 @@ fn main() -> AnyResult<()> { format!("executor-{}", id) }) .thread_stack_size(4 * 1024 * 1024) + .enable_all() .build() .expect("Init Tokio runtime failed."); @@ -282,19 +275,30 @@ fn main() -> AnyResult<()> { block_result } -async fn init_executor(app: Route, arc_runtime: Arc) -> impl Endpoint { - let arc_security_conf = Arc::new(ExecutorSecurityConf::default()); - let shared_security_conf: AddData> = - AddData::new(arc_security_conf.clone()); - - let shared_system_mirror: AddData> = - AddData::new(Arc::new(SystemMirror::default())); +fn init_logger() { + let log_level: Level = + FromStr::from_str(&env::var("LOG_LEVEL").unwrap_or_else(|_| String::from("info"))) + .expect("Log level acquired fail."); + FmtSubscriber::builder() + // will be written to stdout. + .with_max_level(log_level) + .with_thread_names(true) + // completes the builder. + .init(); +} +async fn init_executor(app: Route, arc_runtime: Arc) -> impl Endpoint { let mut delay_timer = DelayTimerBuilder::default() .tokio_runtime_shared_by_custom(arc_runtime) .enable_status_report() .build(); let request_client = RequestClient::new(); + let arc_security_conf = Arc::new(ExecutorSecurityConf::default()); + + let shared_security_conf: AddData> = + AddData::new(arc_security_conf.clone()); + let shared_system_mirror: AddData> = + AddData::new(Arc::new(SystemMirror::default())); let shared_request_client = AddData::new(request_client.clone()); launch_status_reporter(&mut delay_timer, arc_security_conf, request_client); let shared_delay_timer: AddData> = AddData::new(Arc::new(delay_timer)); diff --git a/delicate-scheduler/src/actions/executor_processor.rs b/delicate-scheduler/src/actions/executor_processor.rs index ea51490..9a99632 100644 --- a/delicate-scheduler/src/actions/executor_processor.rs +++ b/delicate-scheduler/src/actions/executor_processor.rs @@ -173,7 +173,7 @@ async fn activate_executor_processor( executor_processor_id, }): Json, pool: Data<&Arc>, - scheduler: Data<&SchedulerMetaInfo>, + scheduler: Data<&Arc>, ) -> impl IntoResponse { let uniform_data: UnifiedResponseMessages<()> = do_activate(req, pool, executor_processor_id, scheduler) @@ -185,7 +185,7 @@ async fn do_activate( req: &Request, pool: Data<&Arc>, executor_processor_id: i64, - scheduler: Data<&SchedulerMetaInfo>, + scheduler: Data<&Arc>, ) -> Result<(), CommonError> { let bind_info = activate_executor(req, pool.get()?, executor_processor_id, scheduler).await?; activate_executor_row(pool.get()?, executor_processor_id, bind_info).await?; @@ -195,7 +195,7 @@ async fn activate_executor( req: &Request, conn: db::PoolConnection, executor_processor_id: i64, - scheduler: Data<&SchedulerMetaInfo>, + scheduler: Data<&Arc>, ) -> Result { let query = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { executor_processor::table diff --git a/delicate-scheduler/src/actions/role.rs b/delicate-scheduler/src/actions/role.rs index 0b22c16..98ef84a 100644 --- a/delicate-scheduler/src/actions/role.rs +++ b/delicate-scheduler/src/actions/role.rs @@ -16,7 +16,7 @@ async fn list() -> impl IntoResponse { #[handler] async fn permission_detail( - enforcer: Data<&RwLock>, + enforcer: Data<&Arc>>, Json(RoleId { role_id }): Json, ) -> impl IntoResponse { // [ @@ -36,7 +36,7 @@ async fn permission_detail( #[handler] async fn users( - enforcer: Data<&RwLock>, + enforcer: Data<&Arc>>, Json(RoleId { role_id }): Json, ) -> impl IntoResponse { if let Some(role_name) = ROLES.get(role_id) { diff --git a/delicate-scheduler/src/actions/user.rs b/delicate-scheduler/src/actions/user.rs index 08e55e0..2c7c83a 100644 --- a/delicate-scheduler/src/actions/user.rs +++ b/delicate-scheduler/src/actions/user.rs @@ -312,7 +312,7 @@ fn save_session( let meta_info = req .extensions() - .get::() + .get::>() .ok_or(CommonError::DisPass("Cannot get SchedulerMetaInfo".into()))?; let security_conf = meta_info.get_app_security_conf(); @@ -387,20 +387,15 @@ async fn pre_check_user( #[handler] async fn logout_user(req: &Request) -> impl IntoResponse { - let session = req.extensions().get::(); - match session { - Some(c) => Json({ - c.reset_delta(); - UnifiedResponseMessages::<()>::success() - }), - None => Json(UnifiedResponseMessages::<()>::error()), - } + let session = req.cookie(); + session.reset_delta(); + UnifiedResponseMessages::<()>::success() } #[handler] async fn roles( - enforcer: Data<&RwLock>, + enforcer: Data<&Arc>>, Json(UserName { user_name }): Json, ) -> impl IntoResponse { let mut enforcer_guard = enforcer.write().await; @@ -416,7 +411,7 @@ async fn roles( #[handler] async fn permissions( - enforcer: Data<&RwLock>, + enforcer: Data<&Arc>>, Json(UserName { user_name }): Json, ) -> impl IntoResponse { let mut enforcer_guard = enforcer.write().await; @@ -432,7 +427,7 @@ async fn permissions( async fn append_role( req: &Request, - enforcer: Data<&RwLock>, + enforcer: Data<&Arc>>, Json(user_and_roles): Json, ) -> impl IntoResponse { let operation_log_pair_option = @@ -468,7 +463,7 @@ async fn append_role( async fn delete_role( req: &Request, - enforcer: Data<&RwLock>, + enforcer: Data<&Arc>>, Json(user_and_roles): Json, ) -> impl IntoResponse { let operation_log_pair_option = @@ -509,7 +504,7 @@ async fn delete_role( async fn append_permission( req: &Request, - enforcer: Data<&RwLock>, + enforcer: Data<&Arc>>, Json(user_and_permissions): Json, ) -> impl IntoResponse { let operation_log_pair_option = @@ -533,7 +528,7 @@ async fn append_permission( #[handler] async fn delete_permission( req: &Request, - enforcer: Data<&RwLock>, + enforcer: Data<&Arc>>, Json(user_and_permissions): Json, ) -> impl IntoResponse { let operation_log_pair_option = diff --git a/delicate-scheduler/src/components/auth/casbin/middleware.rs b/delicate-scheduler/src/components/auth/casbin/middleware.rs index 651f8b9..b5489b0 100644 --- a/delicate-scheduler/src/components/auth/casbin/middleware.rs +++ b/delicate-scheduler/src/components/auth/casbin/middleware.rs @@ -98,12 +98,10 @@ impl Endpoint for CasbinAuthMiddleware { async fn call(&self, req: Request) -> Self::Output { let enforcer = req .extensions() - .get::>>>() + .get::>>() .expect("Casbin's enforcer acquisition failed"); let extensions = req.extensions(); - let session = extensions - .get::() - .expect("CookieJar acquisition failed"); + let session = req.cookie(); let path = req.uri().path().to_string(); let auth_part = path.split('/').into_iter().collect::>(); diff --git a/delicate-scheduler/src/db/common/helper.rs b/delicate-scheduler/src/db/common/helper.rs index 900a1b2..4fd4e3b 100644 --- a/delicate-scheduler/src/db/common/helper.rs +++ b/delicate-scheduler/src/db/common/helper.rs @@ -24,7 +24,7 @@ pub trait CookieSession { impl CookieSession for Request { fn get_session(&self) -> SignedCookieJar<'_> { - self.extensions().get::().expect("Cannot be acquired CookieJar! ").signed() + self.cookie().signed() } } #[derive(Copy, Clone, Default, Debug, Serialize, Deserialize)] diff --git a/delicate-scheduler/src/main.rs b/delicate-scheduler/src/main.rs index 4f3690e..db3cd80 100644 --- a/delicate-scheduler/src/main.rs +++ b/delicate-scheduler/src/main.rs @@ -38,7 +38,7 @@ fn main() -> AnyResut<()> { .thread_name_fn(|| { static ATOMIC_ID: AtomicUsize = AtomicUsize::new(0); let id = ATOMIC_ID.fetch_add(1, Ordering::SeqCst); - format!("executor-{}", id) + format!("scheduler-{}", id) }) .thread_stack_size(4 * 1024 * 1024) .enable_all() @@ -107,19 +107,16 @@ fn init_logger() -> FileLogWriterHandle { async fn init_scheduler(app: Route, arc_runtime_cloned: Arc) -> impl Endpoint { let scheduler_front_end_domain: String = env::var("SCHEDULER_FRONT_END_DOMAIN") .expect("Without `SCHEDULER_FRONT_END_DOMAIN` set in .env"); + let request_client = RequestClient::new(); let cors = Cors::new() .allow_origin(&scheduler_front_end_domain) - .allow_method(Method::GET) - .allow_method(Method::POST) - .allow_header("*") + .allow_method("*") + .allow_header("content-type") .allow_credentials(true) .max_age(3600); - #[cfg(APP_DEBUG_MODE)] - let cors = cors.allow_origin("*"); - let delay_timer = DelayTimerBuilder::default() .tokio_runtime_shared_by_custom(arc_runtime_cloned) .enable_status_report() diff --git a/delicate-utils/src/uniform_data.rs b/delicate-utils/src/uniform_data.rs index 16f5abd..cfa29ce 100644 --- a/delicate-utils/src/uniform_data.rs +++ b/delicate-utils/src/uniform_data.rs @@ -187,3 +187,16 @@ impl IntoResponse for &UnifiedResponseMessages { ) } } + +impl IntoResponse for UnifiedResponseMessages { + #[inline(always)] + fn into_response(self) -> Response { + Response::builder().content_type("application/json").body( + to_json_string(&self) + .map_err(|e| { + error!("into_response happened error: {}", e); + }) + .unwrap_or_default(), + ) + } +} diff --git a/migrate_to_poem..md b/migrate_to_poem..md index a577204..374d32c 100644 --- a/migrate_to_poem..md +++ b/migrate_to_poem..md @@ -141,4 +141,5 @@ Box::pin(async move { +// FIXME: Keep writing about migrating `poem` articles. ##### I've been away from work for a while, and I'm ready to find a new job. If you are interested in my work or need a Rust engineer, please contact me `binchengZhao@outlook.com` . \ No newline at end of file From c359b82ad45906625b2f0db3b975eb60a7796487 Mon Sep 17 00:00:00 2001 From: BinChengZhao Date: Mon, 18 Oct 2021 22:58:19 +0800 Subject: [PATCH 11/13] feat: Ninth step of migrate to poem. --- delicate-scheduler/src/actions/components.rs | 90 ----- .../src/actions/components/binding.rs | 32 ++ .../src/actions/components/executor.rs | 32 ++ .../src/actions/components/mod.rs | 3 + .../src/actions/components/permission.rs | 40 ++ .../src/actions/data_reports.rs | 3 +- .../src/actions/executor_group.rs | 3 +- .../src/actions/executor_processor.rs | 3 +- .../src/actions/executor_processor_bind.rs | 3 +- delicate-scheduler/src/actions/mod.rs | 1 + .../src/actions/operation_log.rs | 3 +- delicate-scheduler/src/actions/role.rs | 3 +- delicate-scheduler/src/actions/task.rs | 3 +- .../src/actions/task_instance.rs | 357 ++++++++++++++++++ delicate-scheduler/src/actions/task_log.rs | 5 +- delicate-scheduler/src/actions/user.rs | 50 +-- .../src/actions/user_login_log.rs | 3 +- .../src/components/auth/casbin/middleware.rs | 8 +- .../src/components/logger_id.rs | 32 ++ delicate-scheduler/src/components/mod.rs | 1 + delicate-scheduler/src/components/session.rs | 36 +- delicate-scheduler/src/db/common/helper.rs | 36 +- delicate-scheduler/src/main.rs | 65 ++-- delicate-scheduler/src/prelude.rs | 6 +- delicate-utils/Cargo.toml | 3 +- 25 files changed, 608 insertions(+), 213 deletions(-) delete mode 100644 delicate-scheduler/src/actions/components.rs create mode 100644 delicate-scheduler/src/actions/components/binding.rs create mode 100644 delicate-scheduler/src/actions/components/executor.rs create mode 100644 delicate-scheduler/src/actions/components/mod.rs create mode 100644 delicate-scheduler/src/actions/components/permission.rs create mode 100644 delicate-scheduler/src/actions/task_instance.rs create mode 100644 delicate-scheduler/src/components/logger_id.rs diff --git a/delicate-scheduler/src/actions/components.rs b/delicate-scheduler/src/actions/components.rs deleted file mode 100644 index 5badaaf..0000000 --- a/delicate-scheduler/src/actions/components.rs +++ /dev/null @@ -1,90 +0,0 @@ -// Front-end components api. - -use super::prelude::*; - -pub(crate) fn config_route(route: Route) -> Route { - route - .at("/api/binding/list", get(binding_list)) - .at("/api/executor/list", get(executor_list)) - .at("/api/permission/list", get(permission_list)) -} - -#[handler] -async fn binding_list(pool: Data<&Arc>) -> impl IntoResponse { - use model::{BindingSelection, ExecutorProcessorBindQueryBuilder}; - - if let Ok(conn) = pool.get() { - return Json( - Into::>>::into( - spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { - ExecutorProcessorBindQueryBuilder::query_binding_columns() - .load::(&conn) - }) - .await - .map(|r| r.into()) - .unwrap_or_else(|e| { - UnifiedResponseMessages::>::error() - .customized_error_msg(e.to_string()) - }), - ), - ); - } - - Json(UnifiedResponseMessages::>::error()) -} - -#[handler] -async fn executor_list(pool: Data<&Arc>) -> impl IntoResponse { - use model::{ExecutorProcessorQueryBuilder, ExecutorSelection}; - - if let Ok(conn) = pool.get() { - return Json( - Into::>>::into( - spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { - ExecutorProcessorQueryBuilder::query_selection_columns() - .load::(&conn) - }) - .await - .map(|r| r.into()) - .unwrap_or_else(|e| { - UnifiedResponseMessages::>::error() - .customized_error_msg(e.to_string()) - }), - ), - ); - } - - Json(UnifiedResponseMessages::>::error()) -} - -#[handler] -async fn permission_list(pool: Data<&Arc>) -> impl IntoResponse { - use db::schema::casbin_rule; - - // TODO: Awaiting follow-up adjustment. - if let Ok(conn) = pool.get() { - let permissions = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { - casbin_rule::table - .select((casbin_rule::v1, casbin_rule::v2)) - .filter(casbin_rule::ptype.eq("p")) - .filter(casbin_rule::v0.eq_any(&[ - "task_admin", - "processor_admin", - "group_admin", - "user_admin", - "log_admin", - ])) - .load::<(String, String)>(&conn) - }) - .await; - - let response_permissions: UnifiedResponseMessages> = - permissions.map(|r| r.into()).unwrap_or_else(|e| { - UnifiedResponseMessages::>::error() - .customized_error_msg(e.to_string()) - }); - - return Json(response_permissions); - } - Json(UnifiedResponseMessages::>::error()) -} diff --git a/delicate-scheduler/src/actions/components/binding.rs b/delicate-scheduler/src/actions/components/binding.rs new file mode 100644 index 0000000..b9b8b57 --- /dev/null +++ b/delicate-scheduler/src/actions/components/binding.rs @@ -0,0 +1,32 @@ +// Front-end components api. + +use crate::prelude::*; + +pub(crate) fn route_config() -> Route { + let route: Route = Route::new(); + route.at("/api/binding/list", get(binding_list)) +} + +#[handler] +async fn binding_list(pool: Data<&Arc>) -> impl IntoResponse { + use model::{BindingSelection, ExecutorProcessorBindQueryBuilder}; + + if let Ok(conn) = pool.get() { + return Json( + Into::>>::into( + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + ExecutorProcessorBindQueryBuilder::query_binding_columns() + .load::(&conn) + }) + .await + .map(|r| r.into()) + .unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }), + ), + ); + } + + Json(UnifiedResponseMessages::>::error()) +} diff --git a/delicate-scheduler/src/actions/components/executor.rs b/delicate-scheduler/src/actions/components/executor.rs new file mode 100644 index 0000000..ae551a7 --- /dev/null +++ b/delicate-scheduler/src/actions/components/executor.rs @@ -0,0 +1,32 @@ +// Front-end components api. + +use crate::prelude::*; + +pub(crate) fn route_config() -> Route { + let route: Route = Route::new(); + route.at("/api/executor/list", get(executor_list)) +} + +#[handler] +async fn executor_list(pool: Data<&Arc>) -> impl IntoResponse { + use model::{ExecutorProcessorQueryBuilder, ExecutorSelection}; + + if let Ok(conn) = pool.get() { + return Json( + Into::>>::into( + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + ExecutorProcessorQueryBuilder::query_selection_columns() + .load::(&conn) + }) + .await + .map(|r| r.into()) + .unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }), + ), + ); + } + + Json(UnifiedResponseMessages::>::error()) +} diff --git a/delicate-scheduler/src/actions/components/mod.rs b/delicate-scheduler/src/actions/components/mod.rs new file mode 100644 index 0000000..6983fa0 --- /dev/null +++ b/delicate-scheduler/src/actions/components/mod.rs @@ -0,0 +1,3 @@ +pub(crate) mod binding; +pub(crate) mod executor; +pub(crate) mod permission; diff --git a/delicate-scheduler/src/actions/components/permission.rs b/delicate-scheduler/src/actions/components/permission.rs new file mode 100644 index 0000000..0133e33 --- /dev/null +++ b/delicate-scheduler/src/actions/components/permission.rs @@ -0,0 +1,40 @@ +// Front-end components api. + +use crate::prelude::*; + +pub(crate) fn route_config() -> Route { + let route: Route = Route::new(); + route.at("/api/permission/list", get(permission_list)) +} + +#[handler] +async fn permission_list(pool: Data<&Arc>) -> impl IntoResponse { + use db::schema::casbin_rule; + + // TODO: Awaiting follow-up adjustment. + if let Ok(conn) = pool.get() { + let permissions = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + casbin_rule::table + .select((casbin_rule::v1, casbin_rule::v2)) + .filter(casbin_rule::ptype.eq("p")) + .filter(casbin_rule::v0.eq_any(&[ + "task_admin", + "processor_admin", + "group_admin", + "user_admin", + "log_admin", + ])) + .load::<(String, String)>(&conn) + }) + .await; + + let response_permissions: UnifiedResponseMessages> = + permissions.map(|r| r.into()).unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }); + + return Json(response_permissions); + } + Json(UnifiedResponseMessages::>::error()) +} diff --git a/delicate-scheduler/src/actions/data_reports.rs b/delicate-scheduler/src/actions/data_reports.rs index 3691ab5..d24c5b0 100644 --- a/delicate-scheduler/src/actions/data_reports.rs +++ b/delicate-scheduler/src/actions/data_reports.rs @@ -1,6 +1,7 @@ use super::prelude::*; -pub(crate) fn config_route(route: Route) -> Route { +pub(crate) fn route_config() -> Route { + let route: Route = Route::new(); route.at("/api/tasks_state/one_day", get(show_one_day_tasks_state)) } diff --git a/delicate-scheduler/src/actions/executor_group.rs b/delicate-scheduler/src/actions/executor_group.rs index 7e4832e..5223a92 100644 --- a/delicate-scheduler/src/actions/executor_group.rs +++ b/delicate-scheduler/src/actions/executor_group.rs @@ -1,6 +1,7 @@ use super::prelude::*; -pub(crate) fn config_route(route: Route) -> Route { +pub(crate) fn route_config() -> Route { + let route: Route = Route::new(); route .at("/api/executor_group/list", post(show_executor_groups)) .at( diff --git a/delicate-scheduler/src/actions/executor_processor.rs b/delicate-scheduler/src/actions/executor_processor.rs index 9a99632..49ca53c 100644 --- a/delicate-scheduler/src/actions/executor_processor.rs +++ b/delicate-scheduler/src/actions/executor_processor.rs @@ -1,7 +1,8 @@ use super::prelude::*; use db::schema::executor_processor; -pub(crate) fn config_route(route: Route) -> Route { +pub(crate) fn route_config() -> Route { + let route: Route = Route::new(); route .at( "/api/executor_processor/list", diff --git a/delicate-scheduler/src/actions/executor_processor_bind.rs b/delicate-scheduler/src/actions/executor_processor_bind.rs index 5292178..b67ad93 100644 --- a/delicate-scheduler/src/actions/executor_processor_bind.rs +++ b/delicate-scheduler/src/actions/executor_processor_bind.rs @@ -1,6 +1,7 @@ use super::prelude::*; -pub(crate) fn config_route(route: Route) -> Route { +pub(crate) fn route_config() -> Route { + let route: Route = Route::new(); route .at( "/api/executor_processor_bind/list", diff --git a/delicate-scheduler/src/actions/mod.rs b/delicate-scheduler/src/actions/mod.rs index 3906243..39003ba 100644 --- a/delicate-scheduler/src/actions/mod.rs +++ b/delicate-scheduler/src/actions/mod.rs @@ -8,6 +8,7 @@ pub(crate) mod executor_processor_bind; pub(crate) mod operation_log; pub(crate) mod role; pub(crate) mod task; +pub(crate) mod task_instance; pub(crate) mod task_log; pub(crate) mod user; pub(crate) mod user_login_log; diff --git a/delicate-scheduler/src/actions/operation_log.rs b/delicate-scheduler/src/actions/operation_log.rs index fb3f5ea..f9781dd 100644 --- a/delicate-scheduler/src/actions/operation_log.rs +++ b/delicate-scheduler/src/actions/operation_log.rs @@ -1,6 +1,7 @@ use super::prelude::*; -pub(crate) fn config_route(route: Route) -> Route { +pub(crate) fn route_config() -> Route { + let route: Route = Route::new(); route .at("/api/operation_log/list", post(show_operation_log)) .at("/api/operation_log/detail", post(show_operation_log_detail)) diff --git a/delicate-scheduler/src/actions/role.rs b/delicate-scheduler/src/actions/role.rs index 98ef84a..bd63e75 100644 --- a/delicate-scheduler/src/actions/role.rs +++ b/delicate-scheduler/src/actions/role.rs @@ -1,7 +1,8 @@ use super::prelude::*; use db::model::casbin_rule::RoleId; -pub(crate) fn config_route(route: Route) -> Route { +pub(crate) fn route_config() -> Route { + let route: Route = Route::new(); route .at("/api/role/list", get(list)) .at("/api/role/permission_detail", post(permission_detail)) diff --git a/delicate-scheduler/src/actions/task.rs b/delicate-scheduler/src/actions/task.rs index e24af29..6eec78d 100644 --- a/delicate-scheduler/src/actions/task.rs +++ b/delicate-scheduler/src/actions/task.rs @@ -1,6 +1,7 @@ use super::prelude::*; -pub(crate) fn config_route(route: Route) -> Route { +pub(crate) fn route_config() -> Route { + let route: Route = Route::new(); route .at("/api/task/create", post(create_task)) .at("/api/task/list", post(show_tasks)) diff --git a/delicate-scheduler/src/actions/task_instance.rs b/delicate-scheduler/src/actions/task_instance.rs new file mode 100644 index 0000000..29eebc1 --- /dev/null +++ b/delicate-scheduler/src/actions/task_instance.rs @@ -0,0 +1,357 @@ +use super::prelude::*; + +pub(crate) fn route_config() -> Route { + let route: Route = Route::new(); + + route.at("/api/task_instance/kill", post(kill_task_instance)) +} + +// Depending on the event, scheduler records/updates different logs. +// Bulk operations are supported for log messages passed from delicate-executor. +#[handler] + +async fn create_task_logs( + Json(events_collection): Json, + pool: Data<&Arc>, +) -> impl IntoResponse { + let r = async { + debug!( + "Event collection - {:?}", + &events_collection.event_collection + ); + + pre_create_task_logs(events_collection, pool).await + } + .instrument(span!( + Level::INFO, + "status-reporter", + log_id = get_unique_id_string().deref() + )) + .await; + + let response = Into::>::into(r); + Json(response) +} + +async fn pre_create_task_logs( + events_collection: delicate_utils_task_log::SignedExecutorEventCollection, + pool: Data<&Arc>, +) -> Result { + use delicate_utils_task_log::EventType; + + let executor_processor_id = (events_collection) + .event_collection + .events + .get(0) + .map(|e| e.executor_processor_id) + .ok_or_else(|| CommonError::DisPass(" `event_collection` is empty . ".into()))?; + + let token = model::get_executor_token_by_id(executor_processor_id, pool.get()?).await; + + let delicate_utils_task_log::ExecutorEventCollection { events, .. } = + events_collection.get_executor_event_collection_after_verify(token.as_deref())?; + + let conn = pool.get()?; + + let mut effect_num = 0; + let mut new_task_logs: Vec = Vec::new(); + let mut supply_task_logs: Vec = Vec::new(); + + events + .into_iter() + .for_each(|e| match Into::::into(e.event_type) { + EventType::TaskPerform => new_task_logs.push(e.into()), + EventType::Unknown => {} + _ => supply_task_logs.push(e.into()), + }); + + debug!("{:?}, {:?}", &new_task_logs, &supply_task_logs); + + let num = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + conn.transaction(|| { + effect_num += batch_insert_task_logs(&conn, new_task_logs)?; + + effect_num += batch_update_task_logs(&conn, supply_task_logs)?; + + Ok(effect_num) + }) + }) + .await??; + + Ok(num) +} + +#[handler] + +async fn show_task_logs( + Json(query_params): Json, + pool: Data<&Arc>, +) -> impl IntoResponse { + if let Ok(conn) = pool.get() { + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let query_builder = model::TaskLogQueryBuilder::query_all_columns(); + + let task_logs = query_params + .clone() + .query_filter(query_builder) + .paginate(query_params.page) + .set_per_page(query_params.per_page) + .load::(&conn)?; + + let per_page = query_params.per_page; + let count_builder = model::TaskLogQueryBuilder::query_count(); + let count = query_params + .query_filter(count_builder) + .get_result::(&conn)?; + + let front_end_task_logs: Vec = + task_logs.into_iter().map(|t| t.into()).collect(); + Ok(PaginateData::::default() + .set_data_source(front_end_task_logs) + .set_page_size(per_page) + .set_total(count) + .set_state_desc::()) + }) + .await; + + let page = f_result + .map(|page_result| { + Into::>>::into( + page_result, + ) + }) + .unwrap_or_else(|e| { + UnifiedResponseMessages::>::error() + .customized_error_msg(e.to_string()) + }); + return Json(page); + } + + Json(UnifiedResponseMessages::< + PaginateData, + >::error()) +} + +#[handler] + +async fn show_task_log_detail( + Json(query_params): Json, + pool: Data<&Arc>, +) -> impl IntoResponse { + use db::schema::task_log_extend; + + if let Ok(conn) = pool.get() { + let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let task_log_extend = task_log_extend::table + .find(query_params.record_id.0) + .first::(&conn)?; + + Ok(task_log_extend) + }) + .await; + + let log_extend = f_result + .map(|log_extend_result| { + Into::>::into(log_extend_result) + }) + .unwrap_or_else(|e| { + UnifiedResponseMessages::::error() + .customized_error_msg(e.to_string()) + }); + return Json(log_extend); + } + + Json(UnifiedResponseMessages::::error()) +} + +#[handler] + +async fn kill_task_instance( + req: &Request, + Json(task_record): Json, + pool: Data<&Arc>, +) -> impl IntoResponse { + let response_result = kill_one_task_instance(req, pool, task_record).await; + + let response = Into::>::into(response_result); + Json(response) +} + +fn batch_insert_task_logs( + conn: &db::PoolConnection, + mut new_task_logs: Vec, +) -> QueryResult { + use db::schema::{task, task_log}; + + if !new_task_logs.is_empty() { + let task_ids: Vec = new_task_logs.iter().map(|e| e.task_id).collect(); + + let tasks: HashMap = + model::TaskQueryBuilder::query_supply_task_log() + .filter(task::id.eq_any(&task_ids[..])) + .load::(conn)? + .into_iter() + .map(|t| (t.id, t)) + .collect(); + + new_task_logs.iter_mut().for_each(|t| { + if let Some(task) = tasks.get(&t.task_id) { + t.name.clone_from(&task.name); + t.description.clone_from(&task.description); + t.command.clone_from(&task.command); + t.frequency.clone_from(&task.frequency); + t.cron_expression.clone_from(&task.cron_expression); + t.tag.clone_from(&task.tag); + t.maximum_parallel_runnable_num + .clone_from(&task.maximum_parallel_runnable_num); + } + }); + + return diesel::insert_into(task_log::table) + .values(&new_task_logs[..]) + .execute(conn); + } + + Ok(0) +} + +fn batch_update_task_logs( + conn: &db::PoolConnection, + supply_task_logs: Vec, +) -> QueryResult { + use db::schema::task_log_extend; + + let mut effect_num = 0; + + for supply_task_log in supply_task_logs.iter() { + effect_num += diesel::update(&supply_task_log.0) + .set(&supply_task_log.0) + .execute(conn)?; + } + + let supply_task_logs_extend: Vec = supply_task_logs + .into_iter() + .map(|model::SupplyTaskLogTuple(_, t)| t) + .collect(); + + diesel::insert_into(task_log_extend::table) + .values(&supply_task_logs_extend[..]) + .execute(conn)?; + + Ok(effect_num) +} + +async fn kill_one_task_instance( + req: &Request, + pool: Data<&Arc>, + model::TaskRecord { + task_id, + record_id, + executor_processor_id, + }: model::TaskRecord, +) -> Result<(), CommonError> { + use db::schema::task_log; + + let operation_log_pair_option = generate_operation_task_log_modify_log( + &req.get_session(), + &CommonTableRecord::default() + .set_id(record_id.0) + .set_description("kill task instance."), + ) + .ok(); + send_option_operation_log_pair(operation_log_pair_option).await; + + let request_client = req + .extensions() + .get::() + .expect("Missing Components `RequestClient`"); + + let token = model::get_executor_token_by_id(executor_processor_id, pool.get()?).await; + + let conn = pool.get()?; + let host = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let host = task_log::table + .find(&record_id.0) + .filter(task_log::status.eq(state::task_log::State::Running as i16)) + .select(task_log::executor_processor_host) + .first::(&conn)?; + + diesel::update(task_log::table.find(&record_id.0)) + .filter(task_log::status.eq(state::task_log::State::Running as i16)) + .set(task_log::status.eq(state::task_log::State::TmanualCancellation as i16)) + .execute(&conn)?; + + Ok(host) + }) + .await??; + + let url = "http://".to_string() + (host.deref()) + "/api/task_instance/kill"; + + let record = delicate_utils_task_log::CancelTaskRecord::default() + .set_task_id(task_id) + .set_record_id(record_id.0) + .set_time(get_timestamp()) + .sign(token.as_deref())?; + + request_client + .post(url) + .json(&record) + .send() + .await? + .json::>() + .await? + .into() +} + +#[handler] +async fn delete_task_log( + req: &Request, + Json(delete_params): Json, + pool: Data<&Arc>, +) -> impl IntoResponse { + let operation_log_pair_option = + generate_operation_task_delete_log(&req.get_session(), &delete_params).ok(); + send_option_operation_log_pair(operation_log_pair_option).await; + + if let Ok(conn) = pool.get() { + return Json(Into::>::into( + pre_delete_task_log(delete_params, conn).await, + )); + } + + Json(UnifiedResponseMessages::<()>::error()) +} + +async fn pre_delete_task_log( + delete_params: model::DeleteParamsTaskLog, + conn: db::PoolConnection, +) -> Result<(), CommonError> { + use db::schema::{task_log, task_log_extend}; + + // Because `diesel` does not support join table deletion, so here is divided into two steps to delete logs. + + // 1. query the primary key of task-log according to the given conditions, with a single maximum limit of 524288 items. + + // 2. the primary key in batches of 2048 items and then start executing the deletion, task-log and task-log-extend. + + spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { + let query_builder = model::TaskLogQueryBuilder::query_id_column(); + let task_log_ids = delete_params + .query_filter(query_builder) + .load::(&conn)?; + + let ids_chunk = task_log_ids.chunks(2048); + for ids in ids_chunk { + conn.transaction::<_, diesel::result::Error, _>(|| { + diesel::delete(task_log::table.filter(task_log::id.eq_any(ids))).execute(&conn)?; + diesel::delete(task_log_extend::table.filter(task_log_extend::id.eq_any(ids))) + .execute(&conn)?; + Ok(()) + })?; + } + + Ok(()) + }) + .await??; + Ok(()) +} diff --git a/delicate-scheduler/src/actions/task_log.rs b/delicate-scheduler/src/actions/task_log.rs index 1dd321d..377b7f4 100644 --- a/delicate-scheduler/src/actions/task_log.rs +++ b/delicate-scheduler/src/actions/task_log.rs @@ -1,11 +1,12 @@ use super::prelude::*; -pub(crate) fn config_route(route: Route) -> Route { +pub(crate) fn route_config() -> Route { + let route: Route = Route::new(); + route .at("/api/task_log/event_trigger", post(create_task_logs)) .at("/api/task_log/list", post(show_task_logs)) .at("/api/task_log/detail", post(show_task_log_detail)) - .at("/api/task_instance/kill", post(kill_task_instance)) .at("/api/task_log/delete", post(delete_task_log)) } diff --git a/delicate-scheduler/src/actions/user.rs b/delicate-scheduler/src/actions/user.rs index 2c7c83a..c6d24af 100644 --- a/delicate-scheduler/src/actions/user.rs +++ b/delicate-scheduler/src/actions/user.rs @@ -5,7 +5,8 @@ use model::user::{ }; use model::user_login_log::NewUserLoginLog; -pub(crate) fn config_route(route: Route) -> Route { +pub(crate) fn route_config() -> Route { + let route: Route = Route::new(); route .at("/api/user/create", post(create_user)) .at("/api/user/list", post(show_users)) @@ -153,11 +154,7 @@ async fn change_password( pool: Data<&Arc>, ) -> impl IntoResponse { let session = req.get_session(); - let user_id = session - .get("user_id") - .map(|c| c.value::()) - .map(|r| r.ok()) - .unwrap_or_default(); + let user_id = session.get::("user_id"); if user_id.is_none() { return Json(UnifiedResponseMessages::::error()); @@ -310,34 +307,11 @@ fn save_session( ) -> Result<(), CommonError> { let session = req.get_session(); - let meta_info = req - .extensions() - .get::>() - .ok_or(CommonError::DisPass("Cannot get SchedulerMetaInfo".into()))?; - let security_conf = meta_info.get_app_security_conf(); - - let mut cookie = Cookie::new("login_time", get_timestamp()); - cookie.set_domain(&security_conf.cookie_conf.domain); - cookie.set_http_only(security_conf.cookie_conf.http_only); - cookie.set_secure(security_conf.cookie_conf.secure); - - session.add(cookie.clone()); - - session.add({ - cookie.set_name("user_id"); - cookie.set_value(user.id); - cookie.clone() - }); - session.add({ - cookie.set_name("user_name"); - cookie.set_value(user.user_name); - cookie.clone() - }); - session.add({ - cookie.set_name("nick_name"); - cookie.set_value(user.nick_name); - cookie - }); + session.set("login_time", get_timestamp()); + session.set("user_id", user.id); + session.set("user_name", user.user_name); + session.set("nick_name", user.nick_name); + Ok(()) } @@ -366,9 +340,7 @@ async fn pre_check_user( let session = req.get_session(); let conn = pool.get()?; let user_id = session - .get("user_id") - .map(|c| c.value::()) - .transpose()? + .get::("user_id") .ok_or_else(|| CommonError::DisPass("Without set `user_id` .".into()))?; let user = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -387,8 +359,8 @@ async fn pre_check_user( #[handler] async fn logout_user(req: &Request) -> impl IntoResponse { - let session = req.cookie(); - session.reset_delta(); + let session = req.get_session(); + session.clear(); UnifiedResponseMessages::<()>::success() } diff --git a/delicate-scheduler/src/actions/user_login_log.rs b/delicate-scheduler/src/actions/user_login_log.rs index 4d4d7ab..2c239dd 100644 --- a/delicate-scheduler/src/actions/user_login_log.rs +++ b/delicate-scheduler/src/actions/user_login_log.rs @@ -1,6 +1,7 @@ use super::prelude::*; -pub(crate) fn config_route(route: Route) -> Route { +pub(crate) fn route_config() -> Route { + let route: Route = Route::new(); route.at("/api/user_login_log/list", post(show_user_login_log)) } diff --git a/delicate-scheduler/src/components/auth/casbin/middleware.rs b/delicate-scheduler/src/components/auth/casbin/middleware.rs index b5489b0..f55452b 100644 --- a/delicate-scheduler/src/components/auth/casbin/middleware.rs +++ b/delicate-scheduler/src/components/auth/casbin/middleware.rs @@ -100,18 +100,14 @@ impl Endpoint for CasbinAuthMiddleware { .extensions() .get::>>() .expect("Casbin's enforcer acquisition failed"); - let extensions = req.extensions(); - let session = req.cookie(); + let session = req.get_session(); let path = req.uri().path().to_string(); let auth_part = path.split('/').into_iter().collect::>(); let resource = auth_part.get(2).map(|s| s.to_string()).unwrap_or_default(); let action = auth_part.get(3).map(|s| s.to_string()).unwrap_or_default(); - let username = session - .get("user_name") - .map(|c| c.value::().unwrap_or_default()) - .unwrap_or_default(); + let username = session.get::("user_name").unwrap_or_default(); // Path in the whitelist do not need to be verified. if WHITE_LIST.contains(&path.deref()) { diff --git a/delicate-scheduler/src/components/logger_id.rs b/delicate-scheduler/src/components/logger_id.rs new file mode 100644 index 0000000..a440336 --- /dev/null +++ b/delicate-scheduler/src/components/logger_id.rs @@ -0,0 +1,32 @@ +use super::prelude::*; + +pub(crate) fn logger_id_middleware() -> LoggerId { + LoggerId +} + +pub struct LoggerId; + +impl Middleware for LoggerId { + type Output = LoggerIdMiddleware; + + fn transform(&self, ep: E) -> Self::Output { + LoggerIdMiddleware { ep } + } +} + +pub struct LoggerIdMiddleware { + ep: E, +} + +#[poem::async_trait] +impl Endpoint for LoggerIdMiddleware { + type Output = E::Output; + + async fn call(&self, req: Request) -> Self::Output { + let unique_id = get_unique_id_string(); + self.ep + .call(req) + .instrument(info_span!("logger-", id = unique_id.deref())) + .await + } +} diff --git a/delicate-scheduler/src/components/mod.rs b/delicate-scheduler/src/components/mod.rs index cd9faf8..a7ba37e 100644 --- a/delicate-scheduler/src/components/mod.rs +++ b/delicate-scheduler/src/components/mod.rs @@ -4,5 +4,6 @@ pub(crate) mod auth; pub(crate) mod base; pub(crate) mod health_checker; pub(crate) mod helper; +pub(crate) mod logger_id; pub(crate) mod operation_log_consumer; pub(crate) mod session; diff --git a/delicate-scheduler/src/components/session.rs b/delicate-scheduler/src/components/session.rs index 85b721f..1467d34 100644 --- a/delicate-scheduler/src/components/session.rs +++ b/delicate-scheduler/src/components/session.rs @@ -8,23 +8,25 @@ use super::prelude::*; // And when the request is processed `CookieSession` gets the latest state content // in the `Session` and sets it to the client // (all this is done in the middleware of `CookieSession`). -// pub(crate) fn session_middleware() -> CookieSession { -// CookieSession::signed( -// &env::var("SESSION_TOKEN") -// .expect("Without `SESSION_TOKEN` set in .env") -// .into_bytes(), -// ) -// .domain( -// env::var("SCHEDULER_COOKIE_DOMAIN").expect("Without `SCHEDULER_COOKIE_DOMAIN` set in .env"), -// ) -// .name(env::var("SCHEDULER_NAME").expect("Without `SCHEDULER_NAME` set in .env")) -// .http_only(true) -// .secure(false) -// } +pub(crate) fn session_middleware() -> CookieSession { + // Be sure to use a uniform `SESSION_TOKEN` here, + // If each server generates a random key, it will cause inconsistency and the login status will continue to fail. + let token_bytes = env::var("SESSION_TOKEN") + .expect("Without `SESSION_TOKEN` set in .env") + .into_bytes(); -// Register authentication middleware to check login status based on `CookieSession`. + let cookie_config = CookieConfig::signed(CookieKey::derive_from(&token_bytes)) + .domain( + env::var("SCHEDULER_COOKIE_DOMAIN") + .expect("Without `SCHEDULER_COOKIE_DOMAIN` set in .env"), + ) + .name(env::var("SCHEDULER_NAME").expect("Without `SCHEDULER_NAME` set in .env")) + .http_only(true) + .secure(false); + CookieSession::new(cookie_config) +} -pub(crate) fn session_middleware() -> CookieJarManager { +pub(crate) fn cookie_middleware() -> CookieJarManager { // Be sure to use a uniform `SESSION_TOKEN` here, // If each server generates a random key, it will cause inconsistency and the login status will continue to fail. let token_bytes = env::var("SESSION_TOKEN") @@ -75,8 +77,8 @@ impl Endpoint for SessionAuthMiddleware { self.ep.call(req).await.into_response() } _ => { - let user_id = session.get("user_id").map(|c| c.value::()); - if let Some(Ok(_)) = user_id { + let user_id = session.get::("user_id"); + if let Some(_) = user_id { self.ep.call(req).await.into_response() } else { UnifiedResponseMessages::<()>::error() diff --git a/delicate-scheduler/src/db/common/helper.rs b/delicate-scheduler/src/db/common/helper.rs index 4fd4e3b..068723d 100644 --- a/delicate-scheduler/src/db/common/helper.rs +++ b/delicate-scheduler/src/db/common/helper.rs @@ -18,13 +18,15 @@ pub trait SeekTableId { } } -pub trait CookieSession { - fn get_session(&self) -> SignedCookieJar<'_>; +pub trait GetSession { + fn get_session(&self) -> &Session; } -impl CookieSession for Request { - fn get_session(&self) -> SignedCookieJar<'_> { - self.cookie().signed() +impl GetSession for Request { + fn get_session(&self) -> &Session { + self.extensions() + .get::() + .expect("To use the `Session` extractor, the `CookieSession` middleware is required.") } } #[derive(Copy, Clone, Default, Debug, Serialize, Deserialize)] @@ -113,7 +115,7 @@ impl_seek_table_id_unify!(NewTaskLog=>0, NewTask=>0, NewUser=>0, NewTaskBind=>0, #[inline(always)] pub(crate) fn generate_operation_log( operation_name: impl ToString, - session: &SignedCookieJar<'_>, + session: &Session, operation_type: OperationType, value: impl Serialize + SeekTableId, column_comment: impl Serialize, @@ -121,14 +123,8 @@ pub(crate) fn generate_operation_log( let name = operation_name.to_string(); let table_id = value.seek_table_id(); let operation_type = operation_type as i8; - let user_id = session - .get("user_id") - .map(|c| c.value::().unwrap_or_default()) - .unwrap_or_default(); - let user_name = session - .get("user_name") - .map(|c| c.value::().unwrap_or_default()) - .unwrap_or_default(); + let user_id = session.get::("user_id").unwrap_or_default(); + let user_name = session.get::("user_name").unwrap_or_default(); let operation_log_id = 0; let column_comment = to_json_string(&column_comment)?; let values = to_json_string(&value)?; @@ -152,7 +148,7 @@ pub(crate) fn generate_operation_log( #[inline(always)] pub(crate) fn generate_operation_addtion_log( operation_name: impl ToString, - session: &SignedCookieJar<'_>, + session: &Session, values: impl Serialize + SeekTableId, column_comment: impl Serialize, ) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { @@ -168,7 +164,7 @@ pub(crate) fn generate_operation_addtion_log( #[inline(always)] pub(crate) fn generate_operation_modify_log( operation_name: impl ToString, - session: &SignedCookieJar<'_>, + session: &Session, values: impl Serialize + SeekTableId, column_comment: impl Serialize, ) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { @@ -184,7 +180,7 @@ pub(crate) fn generate_operation_modify_log( #[inline(always)] pub(crate) fn generate_operation_delete_log( operation_name: impl ToString, - session: &SignedCookieJar<'_>, + session: &Session, values: impl Serialize + SeekTableId, column_comment: impl Serialize, ) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { @@ -202,7 +198,7 @@ macro_rules! generate_operation_log_fn{ $( concat_idents!(fn_name = generate_operation_, $operation_name, _, "addtion", _log { #[allow(dead_code)] - pub(crate) fn fn_name(session: &SignedCookieJar<'_>, values: impl Serialize + SeekTableId) + pub(crate) fn fn_name(session: &Session, values: impl Serialize + SeekTableId) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { generate_operation_addtion_log($operation_name, session, values, $column_comment) } @@ -210,7 +206,7 @@ macro_rules! generate_operation_log_fn{ concat_idents!(fn_name = generate_operation_, $operation_name, _, "modify", _log { #[allow(dead_code)] - pub(crate) fn fn_name(session: &SignedCookieJar<'_>, values: impl Serialize + SeekTableId) + pub(crate) fn fn_name(session: &Session, values: impl Serialize + SeekTableId) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { generate_operation_modify_log($operation_name, session, values, $column_comment) } @@ -218,7 +214,7 @@ macro_rules! generate_operation_log_fn{ concat_idents!(fn_name = generate_operation_, $operation_name, _, "delete", _log { #[allow(dead_code)] - pub(crate) fn fn_name(session: &SignedCookieJar<'_>, values: impl Serialize + SeekTableId) + pub(crate) fn fn_name(session: &Session, values: impl Serialize + SeekTableId) -> Result<(NewOperationLog, NewOperationLogDetail), CommonError> { generate_operation_delete_log($operation_name, session, values, $column_comment) } diff --git a/delicate-scheduler/src/main.rs b/delicate-scheduler/src/main.rs index db3cd80..548fe3e 100644 --- a/delicate-scheduler/src/main.rs +++ b/delicate-scheduler/src/main.rs @@ -51,20 +51,42 @@ fn main() -> AnyResut<()> { .expect("Without `SCHEDULER_LISTENING_ADDRESS` set in .env"); arc_runtime.block_on(async { - // FIXME: Reference poem/routes.rs - let app = Some(Route::new()) - .map(actions::task::config_route) - .map(actions::user::config_route) - .map(actions::task_log::config_route) - .map(actions::executor_group::config_route) - .map(actions::executor_processor::config_route) - .map(actions::executor_processor_bind::config_route) - .map(actions::data_reports::config_route) - .map(actions::components::config_route) - .map(actions::operation_log::config_route) - .map(actions::user_login_log::config_route) - .map(actions::role::config_route) - .expect(""); + let app = Route::new().nest_no_strip( + "/api", + Route::new() + .nest_no_strip("/api/task", actions::task::route_config()) + .nest_no_strip("/api/user", actions::user::route_config()) + .nest_no_strip("/api/task_log", actions::task_log::route_config()) + .nest_no_strip("/api/task_instance", actions::task_instance::route_config()) + .nest_no_strip( + "/api/executor_group", + actions::executor_group::route_config(), + ) + .nest_no_strip( + "/api/executor_processor", + actions::executor_processor::route_config(), + ) + .nest_no_strip( + "/api/executor_processor_bind", + actions::executor_processor_bind::route_config(), + ) + .nest_no_strip("/api/tasks_state", actions::data_reports::route_config()) + .nest_no_strip("/api/binding", actions::components::binding::route_config()) + .nest_no_strip( + "/api/executor", + actions::components::executor::route_config(), + ) + .nest_no_strip( + "/api/permission", + actions::components::permission::route_config(), + ) + .nest_no_strip("/api/operation_log", actions::operation_log::route_config()) + .nest_no_strip( + "/api/user_login_log", + actions::user_login_log::route_config(), + ) + .nest_no_strip("/api/role", actions::role::route_config()), + ); let app = init_scheduler(app, arc_runtime_cloned).await; @@ -155,21 +177,10 @@ async fn init_scheduler(app: Route, arc_runtime_cloned: Arc) -> impl En .with(shared_scheduler_meta_info) .with(shared_request_client) .with(components::session::auth_middleware()) + .with(components::session::cookie_middleware()) .with(components::session::session_middleware()) .with(cors) - // .wrap(MiddlewareLogger::default()) - // .wrap_fn(|req, srv| { - // let unique_id = get_unique_id_string(); - // let unique_id_str = unique_id.deref(); - // let fut = srv - // .call(req) - // .instrument(info_span!("log-id: ", unique_id_str)); - // async { - // let res = fut.await?; - // Ok(res) - // } - // }) - // }) + .with(components::logger_id::logger_id_middleware()) } // All ready work when the delicate-application starts. diff --git a/delicate-scheduler/src/prelude.rs b/delicate-scheduler/src/prelude.rs index 6d22ed1..d00cedf 100644 --- a/delicate-scheduler/src/prelude.rs +++ b/delicate-scheduler/src/prelude.rs @@ -82,7 +82,7 @@ pub(crate) use tokio::spawn as tokio_spawn; pub(crate) use tokio::task::spawn_blocking; pub(crate) use tokio::time::{interval, sleep}; pub(crate) use tokio::time::{timeout as tokio_timeout, Timeout as TokioTimeout}; -pub(crate) use tracing::{debug, error, info, span, Instrument, Level}; +pub(crate) use tracing::{debug, error, info, info_span, span, Instrument, Level}; pub(crate) use tracing_subscriber::FmtSubscriber; pub(crate) use regex::Regex; @@ -98,12 +98,12 @@ pub(crate) use strum::IntoEnumIterator; pub(crate) use strum_macros::{AsRefStr, EnumIter, IntoStaticStr, ToString as StrumToString}; pub(crate) use validator::{Validate, ValidationErrors}; -pub(crate) use poem::http::Method; pub(crate) use poem::listener::TcpListener; pub(crate) use poem::middleware::{AddData, CookieJarManager}; pub(crate) use poem::middleware::Cors; -pub(crate) use poem::web::cookie::{Cookie, CookieJar, CookieKey, SignedCookieJar}; +pub(crate) use poem::session::{CookieConfig, CookieSession, Session}; +pub(crate) use poem::web::cookie::CookieKey; pub(crate) use poem::web::{Data, IntoResponse, Json}; pub(crate) use poem::{ get, handler, post, Endpoint, EndpointExt, Middleware, Request, Response, Route, Server, diff --git a/delicate-utils/Cargo.toml b/delicate-utils/Cargo.toml index 9a00dab..f15cca8 100644 --- a/delicate-utils/Cargo.toml +++ b/delicate-utils/Cargo.toml @@ -19,7 +19,8 @@ flexi_logger = {version = "0.19", features = ["trc"]} reqwest = { version = "0.11", features = ["json"] } hex = {version = "^0.4", features = ["serde"]} log = "^0.4" -poem = {version = "1.0.1", features = ["cookie", "tower-compat"]} +# FIXME: Waiting for poem to release the latest version. +poem = { path = "/home/open/project/rust/repo/myself/poem/poem", version = "1.0.1", features = ["session", "tower-compat"]} rand = "^0.8.3" ring = "^0.16.20" rsa = { version = "^0.4.0", features = ["std", "pem" ,"serde"] } From fbc8cb576dff66683313cb03804313ecc959154d Mon Sep 17 00:00:00 2001 From: BinChengZhao Date: Mon, 18 Oct 2021 23:05:19 +0800 Subject: [PATCH 12/13] feat: Tenth step of migrate to poem. --- delicate-scheduler/src/actions/executor_group.rs | 6 +++--- .../src/actions/executor_processor.rs | 6 +++--- .../src/actions/executor_processor_bind.rs | 6 +++--- delicate-scheduler/src/actions/task.rs | 10 +++++----- delicate-scheduler/src/actions/task_instance.rs | 4 ++-- delicate-scheduler/src/actions/task_log.rs | 4 ++-- delicate-scheduler/src/actions/user.rs | 14 +++++++------- delicate-scheduler/src/components/session.rs | 2 +- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/delicate-scheduler/src/actions/executor_group.rs b/delicate-scheduler/src/actions/executor_group.rs index 5223a92..4e2e59e 100644 --- a/delicate-scheduler/src/actions/executor_group.rs +++ b/delicate-scheduler/src/actions/executor_group.rs @@ -22,7 +22,7 @@ async fn create_executor_group( use db::schema::executor_group; let operation_log_pair_option = - generate_operation_executor_group_addtion_log(&req.get_session(), &executor_group).ok(); + generate_operation_executor_group_addtion_log(req.get_session(), &executor_group).ok(); send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { @@ -160,7 +160,7 @@ async fn update_executor_group( pool: Data<&Arc>, ) -> impl IntoResponse { let operation_log_pair_option = - generate_operation_executor_group_modify_log(&req.get_session(), &executor_group).ok(); + generate_operation_executor_group_modify_log(req.get_session(), &executor_group).ok(); send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { @@ -192,7 +192,7 @@ async fn delete_executor_group( use db::schema::executor_group::dsl::*; let operation_log_pair_option = generate_operation_executor_group_delete_log( - &req.get_session(), + req.get_session(), &CommonTableRecord::default().set_id(executor_group_id), ) .ok(); diff --git a/delicate-scheduler/src/actions/executor_processor.rs b/delicate-scheduler/src/actions/executor_processor.rs index 49ca53c..76ede0e 100644 --- a/delicate-scheduler/src/actions/executor_processor.rs +++ b/delicate-scheduler/src/actions/executor_processor.rs @@ -33,7 +33,7 @@ async fn create_executor_processor( pool: Data<&Arc>, ) -> impl IntoResponse { let operation_log_pair_option = - generate_operation_executor_processor_addtion_log(&req.get_session(), &executor_processor) + generate_operation_executor_processor_addtion_log(req.get_session(), &executor_processor) .ok(); send_option_operation_log_pair(operation_log_pair_option).await; @@ -110,7 +110,7 @@ async fn update_executor_processor( pool: Data<&Arc>, ) -> impl IntoResponse { let operation_log_pair_option = - generate_operation_executor_processor_modify_log(&req.get_session(), &executor_processor) + generate_operation_executor_processor_modify_log(req.get_session(), &executor_processor) .ok(); send_option_operation_log_pair(operation_log_pair_option).await; @@ -144,7 +144,7 @@ async fn delete_executor_processor( use db::schema::executor_processor::dsl::*; let operation_log_pair_option = generate_operation_executor_processor_delete_log( - &req.get_session(), + req.get_session(), &CommonTableRecord::default().set_id(executor_processor_id), ) .ok(); diff --git a/delicate-scheduler/src/actions/executor_processor_bind.rs b/delicate-scheduler/src/actions/executor_processor_bind.rs index b67ad93..c8a5983 100644 --- a/delicate-scheduler/src/actions/executor_processor_bind.rs +++ b/delicate-scheduler/src/actions/executor_processor_bind.rs @@ -31,7 +31,7 @@ async fn create_executor_processor_bind( use db::schema::executor_processor_bind; let operation_log_pair_option = generate_operation_executor_processor_bind_addtion_log( - &req.get_session(), + req.get_session(), &executor_processor_binds, ) .ok(); @@ -143,7 +143,7 @@ async fn pre_update_executor_processor_bind( .expect("Missing Components `RequestClient`"); let operation_log_pair_option = generate_operation_executor_processor_bind_modify_log( - &req.get_session(), + req.get_session(), &executor_processor_bind, ) .ok(); @@ -252,7 +252,7 @@ async fn delete_executor_processor_bind( use db::schema::executor_processor_bind::dsl::*; let operation_log_pair_option = generate_operation_executor_processor_bind_delete_log( - &req.get_session(), + req.get_session(), &CommonTableRecord::default().set_id(executor_processor_bind_id), ) .ok(); diff --git a/delicate-scheduler/src/actions/task.rs b/delicate-scheduler/src/actions/task.rs index 6eec78d..0ef02a9 100644 --- a/delicate-scheduler/src/actions/task.rs +++ b/delicate-scheduler/src/actions/task.rs @@ -23,7 +23,7 @@ async fn create_task( if let Ok(conn) = pool.get() { let operation_log_pair_option = - generate_operation_task_addtion_log(&req.get_session(), &task).ok(); + generate_operation_task_addtion_log(req.get_session(), &task).ok(); send_option_operation_log_pair(operation_log_pair_option).await; let f_result = spawn_blocking::<_, Result<_, diesel::result::Error>>(move || { @@ -148,7 +148,7 @@ pub async fn pre_update_task( let task_id = task.id; let conn = pool.get()?; let operation_log_pair_option = - generate_operation_task_modify_log(&req.get_session(), &task).ok(); + generate_operation_task_modify_log(req.get_session(), &task).ok(); send_option_operation_log_pair(operation_log_pair_option).await; let task_binds_pair = pre_update_task_row(conn, task, binding_ids).await?; @@ -401,7 +401,7 @@ async fn delete_task( use db::schema::{task, task_bind}; let operation_log_pair_option = generate_operation_task_delete_log( - &req.get_session(), + req.get_session(), &CommonTableRecord::default().set_id(task_id), ) .ok(); @@ -491,7 +491,7 @@ async fn pre_run_task( .expect("Missing Components `RequestClient`"); let operation_log_pair_option = generate_operation_task_modify_log( - &req.get_session(), + req.get_session(), &CommonTableRecord::default() .set_id(task_id) .set_description("Run task"), @@ -570,7 +570,7 @@ async fn pre_operate_task( let conn = pool.get()?; let operation_log_pair_option = generate_operation_task_modify_log( - &req.get_session(), + req.get_session(), &CommonTableRecord::default() .set_id(task_id) .set_description(action), diff --git a/delicate-scheduler/src/actions/task_instance.rs b/delicate-scheduler/src/actions/task_instance.rs index 29eebc1..7ea8d3b 100644 --- a/delicate-scheduler/src/actions/task_instance.rs +++ b/delicate-scheduler/src/actions/task_instance.rs @@ -253,7 +253,7 @@ async fn kill_one_task_instance( use db::schema::task_log; let operation_log_pair_option = generate_operation_task_log_modify_log( - &req.get_session(), + req.get_session(), &CommonTableRecord::default() .set_id(record_id.0) .set_description("kill task instance."), @@ -310,7 +310,7 @@ async fn delete_task_log( pool: Data<&Arc>, ) -> impl IntoResponse { let operation_log_pair_option = - generate_operation_task_delete_log(&req.get_session(), &delete_params).ok(); + generate_operation_task_delete_log(req.get_session(), &delete_params).ok(); send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { diff --git a/delicate-scheduler/src/actions/task_log.rs b/delicate-scheduler/src/actions/task_log.rs index 377b7f4..ca26c1e 100644 --- a/delicate-scheduler/src/actions/task_log.rs +++ b/delicate-scheduler/src/actions/task_log.rs @@ -257,7 +257,7 @@ async fn kill_one_task_instance( use db::schema::task_log; let operation_log_pair_option = generate_operation_task_log_modify_log( - &req.get_session(), + req.get_session(), &CommonTableRecord::default() .set_id(record_id.0) .set_description("kill task instance."), @@ -314,7 +314,7 @@ async fn delete_task_log( pool: Data<&Arc>, ) -> impl IntoResponse { let operation_log_pair_option = - generate_operation_task_delete_log(&req.get_session(), &delete_params).ok(); + generate_operation_task_delete_log(req.get_session(), &delete_params).ok(); send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { diff --git a/delicate-scheduler/src/actions/user.rs b/delicate-scheduler/src/actions/user.rs index c6d24af..5997a48 100644 --- a/delicate-scheduler/src/actions/user.rs +++ b/delicate-scheduler/src/actions/user.rs @@ -39,7 +39,7 @@ async fn create_user( let new_user = Into::::into(&user); let operation_log_pair_option = - generate_operation_user_addtion_log(&req.get_session(), &new_user).ok(); + generate_operation_user_addtion_log(req.get_session(), &new_user).ok(); send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { @@ -126,7 +126,7 @@ async fn update_user( pool: Data<&Arc>, ) -> impl IntoResponse { let operation_log_pair_option = - generate_operation_user_modify_log(&req.get_session(), &user_value).ok(); + generate_operation_user_modify_log(req.get_session(), &user_value).ok(); send_option_operation_log_pair(operation_log_pair_option).await; if let Ok(conn) = pool.get() { @@ -201,7 +201,7 @@ async fn delete_user( pool: Data<&Arc>, ) -> impl IntoResponse { let operation_log_pair_option = generate_operation_user_delete_log( - &req.get_session(), + req.get_session(), &CommonTableRecord::default().set_id(user_id as i64), ) .ok(); @@ -403,7 +403,7 @@ async fn append_role( Json(user_and_roles): Json, ) -> impl IntoResponse { let operation_log_pair_option = - generate_operation_user_role_addtion_log(&req.get_session(), &user_and_roles).ok(); + generate_operation_user_role_addtion_log(req.get_session(), &user_and_roles).ok(); send_option_operation_log_pair(operation_log_pair_option).await; let UserAndRoles { @@ -439,7 +439,7 @@ async fn delete_role( Json(user_and_roles): Json, ) -> impl IntoResponse { let operation_log_pair_option = - generate_operation_user_role_delete_log(&req.get_session(), &user_and_roles).ok(); + generate_operation_user_role_delete_log(req.get_session(), &user_and_roles).ok(); send_option_operation_log_pair(operation_log_pair_option).await; let UserAndRoles { @@ -480,7 +480,7 @@ async fn append_permission( Json(user_and_permissions): Json, ) -> impl IntoResponse { let operation_log_pair_option = - generate_operation_user_permission_addtion_log(&req.get_session(), &user_and_permissions) + generate_operation_user_permission_addtion_log(req.get_session(), &user_and_permissions) .ok(); send_option_operation_log_pair(operation_log_pair_option).await; @@ -504,7 +504,7 @@ async fn delete_permission( Json(user_and_permissions): Json, ) -> impl IntoResponse { let operation_log_pair_option = - generate_operation_user_permission_delete_log(&req.get_session(), &user_and_permissions) + generate_operation_user_permission_delete_log(req.get_session(), &user_and_permissions) .ok(); send_option_operation_log_pair(operation_log_pair_option).await; diff --git a/delicate-scheduler/src/components/session.rs b/delicate-scheduler/src/components/session.rs index 1467d34..dd15044 100644 --- a/delicate-scheduler/src/components/session.rs +++ b/delicate-scheduler/src/components/session.rs @@ -78,7 +78,7 @@ impl Endpoint for SessionAuthMiddleware { } _ => { let user_id = session.get::("user_id"); - if let Some(_) = user_id { + if user_id.is_some() { self.ep.call(req).await.into_response() } else { UnifiedResponseMessages::<()>::error() From ce0fbfc5dc49a46d2b74d4a344c4b12650ecc3e4 Mon Sep 17 00:00:00 2001 From: BinChengZhao Date: Tue, 19 Oct 2021 19:05:55 +0800 Subject: [PATCH 13/13] doc: Writing migrate to poem articles. --- .../src/components/logger_id.rs | 2 + delicate-scheduler/src/main.rs | 10 +- delicate-utils/Cargo.toml | 3 +- doc/src/_media/migrate_to_poem/actix_app.png | Bin 0 -> 199400 bytes .../_media/migrate_to_poem/actix_config.png | Bin 0 -> 117532 bytes .../migrate_to_poem/actix_middlware.png | Bin 0 -> 202372 bytes doc/src/_media/migrate_to_poem/poem_app.png | Bin 0 -> 210924 bytes .../_media/migrate_to_poem/poem_config.png | Bin 0 -> 146408 bytes .../_media/migrate_to_poem/poem_endpoint.png | Bin 0 -> 55469 bytes .../_media/migrate_to_poem/poem_handler.png | Bin 0 -> 129327 bytes .../migrate_to_poem/poem_into_response.png | Bin 0 -> 128825 bytes .../poem_middleware_logger.png | Bin 0 -> 102981 bytes .../migrate_to_poem/poem_route_config.png | Bin 0 -> 75652 bytes .../_media/migrate_to_poem/poem_routes.png | Bin 0 -> 164161 bytes .../_media/migrate_to_poem/tower_service.png | Bin 0 -> 59606 bytes doc/src/issue_zh_cn.md | 1 + migrate_to_poem..md | 145 ----------------- migrate_to_poem_en.md | 149 ++++++++++++++++++ migrate_to_poem_zh_cn.md | 148 +++++++++++++++++ 19 files changed, 306 insertions(+), 152 deletions(-) create mode 100644 doc/src/_media/migrate_to_poem/actix_app.png create mode 100644 doc/src/_media/migrate_to_poem/actix_config.png create mode 100644 doc/src/_media/migrate_to_poem/actix_middlware.png create mode 100644 doc/src/_media/migrate_to_poem/poem_app.png create mode 100644 doc/src/_media/migrate_to_poem/poem_config.png create mode 100644 doc/src/_media/migrate_to_poem/poem_endpoint.png create mode 100644 doc/src/_media/migrate_to_poem/poem_handler.png create mode 100644 doc/src/_media/migrate_to_poem/poem_into_response.png create mode 100644 doc/src/_media/migrate_to_poem/poem_middleware_logger.png create mode 100644 doc/src/_media/migrate_to_poem/poem_route_config.png create mode 100644 doc/src/_media/migrate_to_poem/poem_routes.png create mode 100644 doc/src/_media/migrate_to_poem/tower_service.png delete mode 100644 migrate_to_poem..md create mode 100644 migrate_to_poem_en.md create mode 100644 migrate_to_poem_zh_cn.md diff --git a/delicate-scheduler/src/components/logger_id.rs b/delicate-scheduler/src/components/logger_id.rs index a440336..5c8bd09 100644 --- a/delicate-scheduler/src/components/logger_id.rs +++ b/delicate-scheduler/src/components/logger_id.rs @@ -4,6 +4,7 @@ pub(crate) fn logger_id_middleware() -> LoggerId { LoggerId } +#[derive(Copy, Clone, Debug)] pub struct LoggerId; impl Middleware for LoggerId { @@ -14,6 +15,7 @@ impl Middleware for LoggerId { } } +#[derive(Copy, Clone, Debug)] pub struct LoggerIdMiddleware { ep: E, } diff --git a/delicate-scheduler/src/main.rs b/delicate-scheduler/src/main.rs index 548fe3e..eba3d08 100644 --- a/delicate-scheduler/src/main.rs +++ b/delicate-scheduler/src/main.rs @@ -56,8 +56,12 @@ fn main() -> AnyResut<()> { Route::new() .nest_no_strip("/api/task", actions::task::route_config()) .nest_no_strip("/api/user", actions::user::route_config()) + .nest_no_strip("/api/role", actions::role::route_config()) .nest_no_strip("/api/task_log", actions::task_log::route_config()) + .nest_no_strip("/api/tasks_state", actions::data_reports::route_config()) .nest_no_strip("/api/task_instance", actions::task_instance::route_config()) + .nest_no_strip("/api/binding", actions::components::binding::route_config()) + .nest_no_strip("/api/operation_log", actions::operation_log::route_config()) .nest_no_strip( "/api/executor_group", actions::executor_group::route_config(), @@ -70,8 +74,6 @@ fn main() -> AnyResut<()> { "/api/executor_processor_bind", actions::executor_processor_bind::route_config(), ) - .nest_no_strip("/api/tasks_state", actions::data_reports::route_config()) - .nest_no_strip("/api/binding", actions::components::binding::route_config()) .nest_no_strip( "/api/executor", actions::components::executor::route_config(), @@ -80,12 +82,10 @@ fn main() -> AnyResut<()> { "/api/permission", actions::components::permission::route_config(), ) - .nest_no_strip("/api/operation_log", actions::operation_log::route_config()) .nest_no_strip( "/api/user_login_log", actions::user_login_log::route_config(), - ) - .nest_no_strip("/api/role", actions::role::route_config()), + ), ); let app = init_scheduler(app, arc_runtime_cloned).await; diff --git a/delicate-utils/Cargo.toml b/delicate-utils/Cargo.toml index f15cca8..1236917 100644 --- a/delicate-utils/Cargo.toml +++ b/delicate-utils/Cargo.toml @@ -19,8 +19,7 @@ flexi_logger = {version = "0.19", features = ["trc"]} reqwest = { version = "0.11", features = ["json"] } hex = {version = "^0.4", features = ["serde"]} log = "^0.4" -# FIXME: Waiting for poem to release the latest version. -poem = { path = "/home/open/project/rust/repo/myself/poem/poem", version = "1.0.1", features = ["session", "tower-compat"]} +poem = { version = "1.0.5", features = ["session", "tower-compat"]} rand = "^0.8.3" ring = "^0.16.20" rsa = { version = "^0.4.0", features = ["std", "pem" ,"serde"] } diff --git a/doc/src/_media/migrate_to_poem/actix_app.png b/doc/src/_media/migrate_to_poem/actix_app.png new file mode 100644 index 0000000000000000000000000000000000000000..9ffc2575fa5bc1c6cd08c6ea33cb4c1e122fb23f GIT binary patch literal 199400 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⁣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 P+dZE=WGkZ&Cuan5~u6&5%i83-}8uE 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

ulbKl?oBPc*UJV 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 z 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

b`y~!84sD|)6E@ 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 z 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 literal 0 HcmV?d00001 diff --git a/doc/src/_media/migrate_to_poem/poem_config.png b/doc/src/_media/migrate_to_poem/poem_config.png new file mode 100644 index 0000000000000000000000000000000000000000..f2560f01e933d8406a451d19af2fb11f7b34b2f7 GIT binary patch literal 146408 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

K_RVNnz9sm)WZa6hT+vhzR&)aFN(D z8@|N`>c0F@1*qE9e40@%B*S4Y(lx#yObDj{q?lxk@M>H+sG1ohVY^I-)m}s z`<%&adU$Gi|92+IXh6^+Xu|XMeZdKo*v9lp0MDO`BE1uzoS3zs0_=CIjEVC}^p?s%3NzjQ9{ zB1dC(Vwa!Plnu%@6KozO+xAFs7|%?mA|;<|xeDJw!BwRGzy7q&b^TMfTVS3|sJ4B7!8wBrg|d4JuKDI2$wITdC{`xkROq=7u)n0dd9{Os z{A(R)WgIj20+|;fht4@mB7o%-&yWa0cZYc+Z%1nW9&%ku|qcC;$E7tOuC;%q1Guku8}ry=pb{&eI#sl_J# z?CaD->D+M~S8<+?oMaZL9%oRsuG{Y^LnI`@KZfHoZW%+im22ml`78B0$QO)k=xh|; zXf@P$tm#zb;`icXHK8<8`3-M>56{wX7d7G5n+o)7xv49jc};CITpu zokhL$5WRktcfP~X7r0gnJgfJ6md*zPU17DCfy|=76%*H~s-SCi_6F}bY3qO{Du#+x zDskh_X(MKp&&Cze-BdWp6A|yq{$sZ9@6ZKgQ%Aa>2Oh-p^=(~W@=3-69-#JDtf=7I z3%%uL)GGDCB%Ufap3*cs=q_E;Bn^>k2HDWlXp-8E1SASxg#xg}2o5xgs|?;5dP0!9 zCcPVc9Z8qvQbY#!eFT;?r4bigLQ_-&5L$L@>i(Gn)> z|E&dh9^^jwO&jG-BLW?E`yz=4gqemNBGj}GodB;tTK}(w4c@yt zJ+5Q`TmKwzBRqC8mY7{Z+B6gR9t!4OJ3G0|^_b932%ic;DC{~s68s05?or*bDE;gK zj{N-=D9{zGadD6Z%02*xUyEXua~Z{XmCjetuhCW7%1=Ut(H@uJ=n?>2h?>gb)17CZ z664Kcd`)b%o*hThv>GXP&vNWXrm3zc-o4tD19qbbXWYr3p4_3N#F&ERn?ciXy+4t8 z(<3p!8l!#r^!lNN<;dCN0@=5?%x~HIoTIvtqceHk)%w&?@SLuYNAT0Uw%d}`mAyr2%rX=C&{7t_kqgv6SpYL z%r_xpI<-vx#+0G9Lfs9C(}MwKyLHZVmSDy-Fi~>!?t1TX2+)&j821^^HB$NqGgsxh z&wmPOB=ZjU<-GCZko|U%NyGG3DO_!p+&huw^iS$2bTh#sI6A3lBBz13lI;|0>M3zq zAoEqnI+8ULfXwS{uD27h*liFBgzHI%iVqy%AiJ3Xp7!G_(ry$GyDs6}F@J=fz3P8i zycjA+n(PQh>h=p}3o<@GDG1abPP>uPW|X17T`Opc)!(A#;H8!nZ-0M|B8kruga+ZZ zISG8d9U1<8!v<4yPXrxk2C^>PX?Vb2uH9$`3qgPNS+6>BsS$KZRCU3@$tOoB0{SdF znI{9ilX@GVsyn3LRulZy=yJJnbZuEb%M$j`SG?(_1uA*Jw|@WAS3(Z4wI6zu6Ns1{ z5k7ZeS*DSK-R&2pl+tCvtZ6~i&I5kY8Dj04*QtBN2mEl}AZVm1lxjktYR|%2nh~aMIf5%xgU$m{ri33oHhXsRtHu=3<;-!9!Ba zn={1d#90vY`tfR#n!1plRGMG>uYq956r%}iAsV4dVjHeS@mgIWigP}IA2_PMc}m^JDE~eI)2cR zW%uRFwzJiA&Q{SzV%CzEE}gp5bKd9LK&kr_qqFa%)zqbrfDV2rtu+07w;D=+!y6F< z_sd#os;N^d$N9ka!@rgRd=Us`^cOcibOnj2d4PS8AdCzze5SUwG?x6JIACi%$x zf6nbG5wBq7p8`l>F~}^(2yyEBDll}Qe4 zu2Zs?#K4V&ASb~yK)d{?SEpHqH`wR<)U_fWIg=QqKt@6Ljd;)W86tIcA(WpN#k-&Y z`e$gV@y(yr?=_!fJvUU_97ToN%}rOLD(TlUE4xbMe!SN7xMT10Qio9_G$^^W5slHR zF3SV$$yg+T!KJ!ZDxe*Q*sf3_<0EnnQ&sJV=v(h9oqa;&=O&x2+jJC5{s^BMgc@JW znPz0QnXyw{myNdohQcmdaccRHD|$pPD6ex=mMIM z3aqf?*574~z@}c_FVS!bOa+_3FFRDiLi{Xlc~-U%0gG2SWD_xh0rlgIgwlt+xU7`j zj1@gBNJL8DFURFVOd2%&s(E(tIh*YF*r^;82RQ)B(kzI+p>FuS15E2u7Gj;u_^i5J zr6sSgwfpdN-~kGYoBV2dHXxdsK#+?Vvbvs=9zs5*hw;Gqy22QqBV?e1;n2tWROY5R zK12NG#&6?JkIM!vjT>MJpIZTGMrhYG6vvH|hmRjj$pIrz$R&%vhol@EZEEOuxWd_M0_Wv*?F1|nS zO3N4-5c`oI5P@+zQ4O7bqrhYskZj(=C72JoT_xg8=`*DqWLL%WgnwHq`L`qpAVCs< zSaL!HzbOxa9IkrdTBTu}F63?W9^?w6)E$Zs)LVm|_7tJK6dIIbGJc+&qN|H9I#S*7 z*=eQd2|uNr9bC2w#6q4K9#Za6;dtTlD8S>p@FATOTi}?t%lR!Scxj3Kl2lj88RDE9 zKYVJ+ofkC)`W_ao@~8csIe)Kd`*eim@z}}7W$k)!cg)FFDS6k__M$O>w<|kZiHoqG z47Wh-llbe$>(kex;O}00PAF)+Q7MkXtV?KKsjmBKZ(n3Z*Avc^-hysRDqeb%S2u~K z&y-t18VP*2mV)TGJ=fBM=pNxw!}qF%Q~wMYDM>&TmJv9qe1!(uI%6JR+zsXaDez2a z_SmQp@>*n`s5da_(o7I?Nyvs(SDMAoK|T@$=WL2Q4L*tL(UEsGSC6CKG@JE!wnW3_ zNCe`&jWoaLo^rRHl?4c{MOEvomKtH}J-}Jv#Z)2GL63osg5+g?o0+3c>`bU zMT4E4&>uY6WzSw6pvv9~?!FoCCSb2?D>;UHTm!aM+|-Y(w1xeQ@6Wyg!$f2E3IU%} zEvgoAkB~iQvr$>j3P(@8v^_F^OGtuwlU>TI(?%_^_-F=UED8VtDZz%6l0f|-!zg(2 zj+a0)5!XWM>XIV>?^?PW=KsIT=l*3bmt71wfmW;R7Z+?Rsj&q5GS|LHmkuo>$o%@^ zjHxnguN40k7we$k^fWR76Y&8vYeE`HvNau;nf0nlO=iPS`~U>4RE}9G9qPjg% z8ecl_RQ^dUakiMp!R)g6cZHo{bcCalqyrra^rFIzW#~XOei5CpD}+YS2ES+A5M!pS zbhefKSpnJy49$V$6{?=Qc~ti0gYj|-eUj6%r=j7K5PfrDRP;I!Y9Wg!A^v%E%O=kO zqO7GuiGGHsKbGkxFpw6M)67p%Vh-F7%s+!yixu^^*?h~yD0dEeNy$8q{sBKzNFHG2hbVPBWe|oDLx+V>q!kDdUCU*)Zhid1(xdmc zN*XOd!>Vx`x{}0>J+&zI{*C6v2mIG6FsKN4fGa|`PGvcWQv;|%^ESZ>J1@$18O0Qf zGfiA+Po5GT+E!)b|8s57Uq^mO{0j#eWnVOVveq%k6KX%VkT*q#J}^&pK)s2-GDQ#J zGG8%*_>Xh0sw3YuoAKYt;Q;125y`>QsvXCg{oZkzRpc;aWzviSx^N1Lx_^x3#U^p0^FnEVwJeSZ;UuzQ(dS2*FwH5_UJ8dz!14jA4_Z* zSxDjpygTzyjvHxrvZMiGuAb|O_8Ym|ObNQ%R|{ZuP{marg;Ynr+d1q~D*_J7j%4w+ zVqOnZBVU-2SKx3vF{&ok-;zIt4%tub;qks zNAt&dR0`r1aTGs%=qt~6u|`C@G6H<@4X@`qxGiXuvOHU{GUV7)DckL}4J8ocC_NkV zFQYlgYpKGpe~5L-ms5%O_qK8hRDVA>as^|jX%o-YUXlh-n|Hh@lB0a^eW$c4Cs_T4 zC7)NDsc^!h*dBs^(!FGE2<%<#2LsPj1nk&*17IMOU5e>NgtK*-#3)=(ZzdQ;s)%nD zEzdH<1>KQc5K-05od?zOW>LdBr^AC;o57ohk;BL^>J9Ud6qGnxv!HX@LAS-Txd5C>h}$!}F(MF@M{nEB6?`q-sJLTg z{h;!r7v=_xQ%lp*^r-t3UrcAs++!8zDERljfoQ3fX|fG3r)w1Enn^~cmX`zvzW$bQ zl7cwXv6)aZ7IkhaM}oN$)bE8VR$^9+$fe~~7V5o1)t?f3g}YjGRmbv<2f8!+#FGL*MzwpC}!LaZ;&Fvf}aVGmH1_cET?+o&?TLNIzb* z_wr|jn<2d)ZjS$1JZdWAFNlKkulE@!8`}FI{V=@49@(O>_H%$IxG;~pV&g&ZyX@Fj z8^m}r`JIKHjdrm4iK;JtC?lU6n{n2zb79*jddBkvP~0|ReNwX~hBOW^M6wc?^ALVE zx4?ZIi*2mxag9&JProZ0ivnmRCL7V#?7@`P{Pm!^&Tnbq)jl424n=d5lR?x8E-*)L zcr!8sM};+}vdR62d*i$AT1O0@7+DEsx))wZ*rHx}cCu=yG=XbXjAO-pw%*3VQQ+aICA+b3B^$Nj z=m1cKrOyI@X$0N8-}TD<>`0=2m3{9uLtGD%{XA9BF+k`8Le#owv zjWD}K!kH$&@QxVmaNtMv(NTH>h1}$hltzZ26#jdHrV)B>cGL<{w>I}~;X`hsmLq1n z&8oMpEsiu+f7)tcH^cnEs#yK&7x6Slva#m3uZr#5jzhCq!4}n9c^Nq0gT7F}@MKy2 zU1+QAxzX+T0rYUzh+nXew!!fBk@&I-K7#|*y+u+)LsT7;>M{AwUUD1`fc^~ zuB^4BKuUxz@ z&K$?UQiJE0%Bqr-64I15rW1+fa_{^22$}gmw+)&>j4kk{yk?AYkz7MuS4klDn;D$G z{h?&k67y?qb26A2tr!xs!Jsvq*fI*6ezDU-rzOcx6eLx_XieM(38C@gj^SdLC9J=`5$oz4c2}n-Sr?uyK8=TT{zqtJ+`1l zRj(96L0~hKdA>qI}1fr$#(J*NqsJYRZ&~DAYgk)l3UD*dEgK)n*3>2Hqjd-rthgn~G*~=Sq`h|XI#L5k4>+JO*HENdT zX0PJb)?sS)&S#9b-LJOtk(c_+erG%75pJ`{nl{ROd&3S(Y4m#b?zie?H&Ojl{skMA zgWGPWkg4@P4cnO01wGD-DPWwnFbWbpZ&MQ1a&W2i^v^Ha)*nv>-W+j0C(;%6eH2$8 z2BQ{AjXH=%ti5C0*j>rnLWKWL+M2%o70wlgMRa<>5Q>&DMXMS#e-c8r^pQ9MoJ$$m zdDb8%sYep=)kZ1egEo7#)B~XW-Nn!pk!DuZ)HiTIfH!5pTtqLLivTQ^$AQO1DCZXT z{Re?e;z!@kT)w|1DAgM&W-*-&kzEcglJp`cNMlfZ25w4o>dpF{l91s|s&*s;|4s)+ zbq8iXdu8m9{lB7ZW|t zf-pu_>i}J(3+ls}KUUcg*Y@u)#S%R!Ie~h0o>P4jluyA4@JDYGs_>TfaP~8@7E_7y za-^iZ_mjSryZ(8N3~l^opI@GGGvQRe$+AKNjn6$JwnDBI0E{oZl{_xE21mgQh)Qx+ zNl;5U@dOSCe3IIkZg$93O6JmYmaBf{aqaT1gm!HoN+wYAJ(4=_!@fK z8E?L`3|q<`Wx)LMv$mfcoZ6-6{-|zT-rgFudp~90IF-=Q5boW;`eheQJCF!2?c@# zlTkRUUb*4^04Q*QI$yP(8E>XoiK)(3JU5*P{-vVXO!yh--dwCp@2tD(L*5hZbSEc) zf}ey6B}j|9%G?=Zm&OUWSQw2YLYA91dcn710nQPyB zjh)t}w{lnO7QQpk3%k0*@^W|lH_GEby$5CtEs3+U&yVchV3C8jRah^x9kcY$csP@Y zVf|@Sc*Ter$a_Muk9 z6T6C8L6pZ>rrjNJGF=|@mH8=;50xcbjLf6st}+XzXev2GkyXvx=xtpm_DN;4@ZRi# z(c1R8UJ9I6`0~`M>}@@07;h-Dza;W|7=vArs|0jn-!)-WS2*PaH8NsVpW=tRdaOU@ zNZ1eKC8URQW9VQ89;-dkwH(>FbNKZ2)4T6eF*L;2hYR7e!teKL+KnmJ<7=&kR zj2+yG__9*I{Oi=xW8o>wX7gYPBY-_Z7lM4K4 z&DvMX+h&*Qk>{Mh=-&GGrHg-yWnP|HL>&3drrHtsqa&`^!+OvMDC14##+OC$qKpG!X*l|TR->6>l7(JHEhW)=;4>HS zlCScKjWR=8QMp$7it9{`l>o}FG@6#lx|^Jb+UXpPFv3K>+vSe1o1wawdlfsc1Fs2L zSkjSE?W8H{Kq_fyc!VKWML-=P``Y21_D&{4fFQ1SG5F$n1^x<;zLK z%vsp&O>V}Fxw_cy>b_GeTVuTwuVeqzd3s!Jl4SY-8v7AC12QDh0o%AwH{2QD+dt>s`cIZGD2Hr`?%cvsj=d zRnBd8Yg8=|6a`4*4(XOsoUe`y)Uy> z$;~2G{3xlc@O;v@xbqPl>!yRKZkE|lfshR)Lu_T+gN_=mAEKzPK!)X|*IPTSpE^hUR zfX#A{yBpLcm_yluG_|l?1!npIlu=QHC*P3osMYfV=l^b2F(J!ufK5;%m zpVg$jTOaOg=lU={GRSlBL=gcLwoYaECq}YNtdw=)%^U+eL9EC8&Nd}K={FLr5u9;m zTSJ|Gubsj_zXi~VOFagfhAD*slGA|?UDG&G>N zDbp6(Rod_(PVv9B0D;yCo$OZI%YdB9k5gr@M_e=bFzltvwrA;6Tl}PyX>9Q%c67{s z%+AtmIrLpK;i&JUJba7*C)q7$U1eCN^i4CR$ix-njo^YTcaVu35S=eGo+WvU`26Rx zqE$y9kqo@!%iV4%RN7>u+R0SSU~PgpDJAV6?k)^cGCJZV`Sqsi7}m&Miv22fUHPhCpRG1_{=cb#!|HRvx0e=%dU_K?2Lr~}f!$Of z1AB4i3m! z@_mYiKj$9=B;GFxUf5O!=P_eOzd8Y zdvjdW6#s(Z!xs-cJ|)0S4v1~_yO28*cUoPXc?kL}=cyRBkY-F1pu6kCrwb8UQ%~RBE^0ZVZCgJ{ zO@yUIZ44gSiQi~n-n~$h_(m9b*KSui-^0FlubgR;xRI3;E+YSib3H%k`ThTx)*I***?z zs1P*Qtw_sz0%zC__Wt_^R|A^}@rJU&_?0blO^u$*X@$yA*3Nt2u8bKY}FSk@{x=x6q;#!gnWH3L?WrBA9u&ZWcYrISytp_ zQB(vQq~~N%lUdRiu8)|h9po?KGv`W&d&5*1^&vKEx@+?01UPUB*OS+tfNq}(vX+`! zta^HgIT98rsd1^`#JL`Ea>Nr8m?gG|9Rt)Bi;HwFcWd-jvANR+Nz~ z9|UEsSi@)|ox(o-7#jG&jXI;>L>YwVv)=BJxy<#9?cYBHBG`}8$Hy*r8r#Y53w$AA zimc|8!f@O_FZCfV@YZGXq}UDHxD#hwK2EksNx~aZjqa1)4VC4Z=p=lH9sHWUtihwx=yn8pL}g>X7*4*-@K)9 zSM=s`toF--Q*rk&{7_F|iuO+nsb-TUF53#p>8O03^VqwnYa3-LhEEw3xsN%{H=v`_ zZ-F>ecb#_JI6y@l!996$FNB>@XmR}F?PYel%yQ{I6!?{}tqa!M@#C9UT0%CfQSG1c zB0nr$(v#Y7kT^Xf`I3TUWA}##nNQpc87esUdJ*|$NwGeTY59FpXD=gYjb@Q%GC$aK zq_oobm(&iCK09T#ecp~ajczqkLyMAv`Z*VxOK<#aI3<2&@WlP$G^MG10ghmfKQ8}o zQ+SrmwQ}l`i6I1PWJ-OzAMJ&|Gp0Uw10k&O=Hbl)1_jMp7Uys^J1b3QlFnR*1PEH3 zA%=#PW-r}*b)@L7Q0F(jsT8`oS+Os*cG@}y1NQZf!6=6*u%&2nJkmm0nkX#mGK}2N zrjI9X8mlesqt95X>D3lqvh-||I*&Tm%z_YXU2 z#QvlS^cu}HxgxN!WOWMVI-e|s#fyj{^LIinawxI7dvr7?Bg!u4T6B8Ao)8#tO=q~0 zQq^1#_mG*R{*PN@Y#5%kX2T|+3()EcB)xwxWOiaQ%0__-#pKDHZE;xJmm&E=S#s-2 zQj1r6^pUR+Vo&OLy49^tG;_b_q52k(hQ^_JQm%qrkH+1_vs)XRe%Yh?6Ya^5G6tMm zer>L&V($F-wiGw+>5wM`fpg`nt${EMBgSo{-cv1dM_3*my0 zjcL`9CAR0E?NcWz9ne_30Xc{o8Bc?`2tRA$oZUedwD1Why??aCE-)R)Pvox13DWon z7cjVgUHXgn*m)}QgXrxXXUyTIcAdqjQNvPF;Km+iujx9H{Ulvx(F9f@`{0stA2y|u zaV9ssT=Z-!gUd5-B!nW0(%J{f^`Va*(qPtj-gV8nW_T)E?;uRlRFyAQv| z@Ai=Q(v>FAVu=QD(X^xlgMYf{XS-Z$hnTjOIK_AT=`9J%3hGx>D-28Rs~)btwLRYU znOYW5D^CtfX`--Q6!LMA`X)TY$?Oml$jU_7hj@+gxy@Y#bx79yAaXN}6Ys%YSZ{Nm z|3{GgSICUIw)X(@l3~x)lXd&e*A6gsrK1kCcFYt7a4Ez%a4>W^oO@53X`zWeq5M z6ysv*UdZvbf93M`$*O}x32`6Ya5rs&_Z+`s3%F?;sV z!%bf}Wqw*u-Tgk+0ji{0XW?eeu}nlz{qc7ggYZh37QsDT5=5(8DGZ9$>lBWpO1W65 z*eh4FZyqz3--aG^uaP#2rE2y@!SbxK-}mV@Y9Unzl*A;B9&g{pl!0}&N0+$iX>G3R zVpfKyck!j-u&WOa(9&zp;$PU#{;*Y$w1MT|u7aKKVQfydV}0kPunM$$qG|)4Vj|zt zpT7RW!HmkKY+EFGQpiW zXKlc_0U+dqHvgcs64@U;b5kf6tQ+|BeT>Shmm9Py!rNIe7lg$FV;+cFJ+~+5pY8Xa zx4`xL7_K~lsdPd~hLj5;sL?JpkLzF-FWvK5M?Btqg=A&qa{Lbe>+1(xRe>NlQ*>da z`RKPZt1&M>XWDOg&AVbVvmi|Q*8nP!yNi9GNJ!J>EFFlLY~t(`yY(HVqy6Sp>bJK& zk#i^MGjKGju)@P7X37D)i>B2bx+VV4-)fJ{7!P|W&oNn6Soy3BB6~oVO|IfubR8Qc z3~0eDMhP7fb3|vpnlbigwJRG)S0(NVrIK11~*PQfDfk!?Ggz6KfpjWpyq@ zoZY>T!A9BgFy97Pf2Uc7;HJ~CzFjZQtwmaDYw})p-5))24|8YDE_sZP82B;%na7oX zN(+~{Y7F;6To8xSzbpyczAciudo{H{wst6r-^?@&8rshJIzLCb^7daR=Nx7d2W<~{ zc!YUr(P}>DO{1uTEM)gbR+!LiFGB2+WNAR-CH5zrxW6C#quxDoRN*-y)1V5&Alk#LMVOb{}(~ zd_{9YxhcB6v&k&l)625RI>n1ACq?c)YfzvabBMY!)q5`uei||*St`p@E*(p~uL&HP z$+fnIN`JZxqKqTYB{90V#mu2_;<^Fx0&vyejJVGb%S|4uM4Nrm91}1ocw|nG(dM{3 z^>r>k{CvNLypc=gP210D*rfKd@5=*rJZt->%eSloR(OelZ)BlgKua0W7`MM>z26r#T-6dF|hBVOP#e$U{&Y?tg@=^(2{@b7r5t_nF}hRRPsGg&@TFCkXeC z?P{2?MzOhnD8nxs_>K$*MU(0@-;bY^B_e!cLl8eRJ-^U>Ys=m`8)d`Bh6_mRv4pL$ zxxXZrbA;LNzOg6&^YLZ{7p)hHh|GoJcu&u=;6RG(*$Bc}j-P9kLM$Tw<3K(mHpYfP z_mY&~$^;YJXX?Lqh_F4y(mBla9MMPPzpa#-W|O7_QT+^ZODyQArc0>; z#P{5ngMyk-MCgXiM^8OC{{x2j9s)-5t7_rB?Kt@<>_vyA19EYyd74JMTG+AkN=S$H z>Q~>Yt%(egsd3>RK=)FWu&A5G<=i*g*vkg$+idsyaVDwsXlnh%vAvqM_MqdhrO7;mVgUQB6$guzZ`vjO6|#uXK_n#JNZEwh$j>_JpY zNs-X`|A`t3v|G6y{_A-yTVY@>uOBFtRR3 zBp9hD2=R~(<1oP=0M3b}=Nt(8cbwyzhz$)vY_Jwo3NF=qfRHxMiZvh>t!4v41lt%b z1&lZ6@puuvShV>AEV#q>$ijeRH4behOaM0A{fj7ei=rIn`_b0b+Lus->)d7tg0Bbf zD;wO|k9oxG|87VBGagg7gM=2ubDDDdEbo_tMWI(cg6qrKEhuPKL1nfXOw)P?o8zH;dD5c519cms(v6}5k2NAW{^YLT z;ZK zZ;n6mP7=fOj_XOHI-!rOf#N{~3(nM-$dSVwf_PP^hfKnWMl7J9!UYC;{M!7Lml1|# z5wv(xDP6?Ig?D}#+$1zb8}{b$e^^OZG#h_{--*2L00ZkO{co`z3p@n{4YMQt%E;pEM^Pv@ z_zuF+B^exk@j4PTTpo?+xDfJ37fteXs{GM|ChhqVA;bogvvtaD z#@UEX0TxI7t*9IHDglj!0};L*zei+f7T$V)f(SYK)&}<#vD>ona+0#E1uOglSo~ea zf0_o-L$P1>@AGEO{u7y37Vo9F{yP@`Cx6BJ?U z_j0c{{+~J|%B>NL)cjk7GQVMLu&%5mHYBp5R~IV63|2%Y`ga%U=*Nd5%5@N0AqY^G z+n_zJ&#RscbgcS=)8w&jC`wI9O6s(Ev~_|dFnt@U`#8vqb{+(P{xP6&SLNTA`=T0v z!}Quy)-p$7DWsdFe$)JfT5f+#KoA=Tp}UuAmQ)-xeUI*y9XQscBA$^$%-LJ6vEhfl z5d={94dWUUkmLt@S>RbAh}fA;J)70_=U)Y&rJm9HSc%d}%g7IVxwjRBQSobeYT|YT z;==Y|2xHZOFGDB$kL3&y!Z}EjU6C=p=t=<}p01pp0o4jk?z3q~nINjHPXZzbYs#j%*IE`F8?CWgOp1!BNLJa=v>x9{8ZjKG?d}k|CV&G7wLcQ^ z6p#4xZ{mRDI1zmoyQXl`QxvHYo@E=l;i6=68Znu z?f(yR-Tnf_g`{p-{B8mF>&c)yr{IGX$WPXX5B#=Tr$HCB(`Jru=CWz?*Eq~Mw0og9 zK|QZluJ>GZjXF8Hf)?S42c zuy(Wl-vbYeUssiO;}5x>wVih+%yc8crt4#ck(TO-(vBho^Sw$xn!6H20Dr*|C6Y0Y zgS0UcO#azebl=b}E+FAD0j&!})KkN)DFE7r;bF#ZU1w!@PZmb~rWhZj8$~0qB40?9 z-6{fbJa9V_D_mic8Il$zTE+s$#Sm|l#O6QychFA5f~SUuVelEr>(wlm zo1rqpGpc+hjQZL*J#X~{6+0?C>biym&O{*|qat{&1wA2A6$$rxLABk~2~BEA_n)rh zmf^1IPB2zNR&SXUoJ=RqdAf@#++6&!GIF&DmD2n7q=X72ULixj0nT7m_6GK{mpV-- z5TxiXOE3h%C~)XFo^sUYhVWE>`MumI^^IW7Bjsb{kv^3pICof;!N%i7u-vV*cTUXn z;Sj{1=k^2`PokQ8KPOg@)!5-ODCqqz&6rAks_oX)djs$OeK-kguz6s-9o%VG&o-YI z2(n8@=<>|~n8)Tt31QVDg;x8EtXLOHc+Q@c5h?`Hu_KgYz8HeA%}LaHYS57%jF~0G z$k9_vQkToxXqE6PTzuA z;A|m?Nq1w#=Nqi>94xrP69ksC8i{C3rJAG-R%H3Lp&Vw6&6h@DXr+XQu<=|H%G?GuA~CyxcA3pf-yFnGa%zn(SHaXwQs7eSdhHychuc=|Lp}x zu6sMm+q)IQ8dqX4`?}e7;=e#F>ss&;ULJ|3lpeEIp^bNUx{|wY>Nyr@v3P<^BMvaGYkHLtcoBF`H1J#sB zn{Fi;HDjt00{EpWu^sE6*f0Ldi(Mp%1k#2hjs>2&myuGQ`R_Bn{{SQi>k-uBCM?i$ zs1Y#XhV}U0#%b9kk0Qq~2&WFMUmP=)atBick&60|$EV)%%%0XGGKm0Hc?)ojFC*T)~z z$dt5P^=mOUWX|p;D(}O82&`*e4&d=vQh|-7Sa7O$)L#b)F=MNm#^IV9K2xRCFy82A z`y(%jQZ+Kip@VqoIX8wXT0mR&ydaP#_rEY^e3_h+dlh>&(3@Q@_%`6z8kLa{F z)^KJ_t_J+Q_sHF9@h#DC%Ui0k(oDQZxgPrR&g^>RV79nZzM=T0p$>FV!IaFIiXL;& zj0wg)Wz=AjjWrqPi^;VlUGc$TpQvg9l+|jfW5{ay$7W7?l;dCqH7(wfiAnhv@@MzO zh$Ajr!3@LX-Lb4h!Pf`8q>P8IFp>AMFJ9C9iiwTd@9)PBRw8`Z=+#8q=(&k|vNaw$ zlBcDvuTS%l`HaD7>d+>%O}P>4j4z%Z*7G16`~2guj%JiW=l%VvM-{U2o@(a1T~@rw zbH$n38R3{8db!MIi%30@=g?#rdFbo~)C6WxPO0EaUCs@H+*&2{8305!m#!q9%7&&j z-f*JdLea2}DNkybAHakM`MPi5f*_-&V#X-v!A$S3zDJHrxpB&&bqhh0N-hflSsFDX zm119gS?gO3@$et2%Uk%`3Cy}{5g6Ax;b|i-HJ|3cxTioxNA5&k_`!_=NzyB9#T&R? znd_>xZQDmA2ZHDBeTueH8baQ%r@y2QI?wgl5Q!QjU0P}wK8do$x1ukL3(s5Vj?_+G z8^~zSl&|Ix7AA9UDkHeh%^m3^lB4M6>?3!-&XIt~dk)XdaY7Y1nms2I+M0bew%8s& zoEyE_Y&A8dd!HN68q6B@x9u9+Z6N?>>CKx9WtCu^jr^ntIwapBm1HBeBe0{tQZ z5oLaEI_^r>v!W{vl%^3}3k6g%VwWa3km}_D!hh7hiQL#_W!f%zT=?3&*NX*+pf@`( z7a3v_8Sj0oo zrO%oAgO@lUm)>nDA!n({;aw|)Cr-SB57kb&g%^4qn7FRGJJnm{kjyf9JlDtcpeBwv zktfk*FPH9>X4FK#g_DoET(9bFKjurvu|s2FX+2Ji5Qj=`mYTFH!a$A zlVZbVWaT9|LB%cS)}f*IoSQ0ct`-QEyFZ25^u(&iv7Mpvv~oO7>Aw$E3L~rQ-__SR z<{U!yRE=ZT9(o_uum!JB$}LoKE!vl~qe7jtiYFT$J$~HL{b~EFapgDH>vK1s(I@DRM8=+!pSU4OjWe zqiM5oTa<4_7KU_qr3A&k4KXtO;mvAscVQSKOwjvqE~Ga#GNoJKzys-4xq2Vfj61qc z!eI zP1>iJXLHsQ@m$BctW=l}EZ#})C z7bUW`_@EH!%6az%KlqFBH(ZYb?wYrKL9X4vIq$@U$G2DIU)l;{Xn0_gNUOl}<53;- zYU|||^ZrkIy7FJxZbq*Y@E(9nVbO_3oayub6ik~4-!%&2AYzpe1emxgm+x-#jufcK z6odyzQI=&6#kl^87)@)h?ZcNq{)cY88QH?L&X5phsj$I-|>gn-chaI90<-{NG=F*I{q zD`jpwoD5KsMfAT6?d{Z2-Gj!situAklQ}E5AWjhl$Jb&(rIq2cMXxv7-3o(};)?TrGac-{o>rrPvWKn-MAGTBYyJB4*A6^-J zOH{)Hl|m?#z0s4C@)B5i{7@C0r==UbzlaS=CZR?;&Nb5Zr~kbA3WOzHt@Dk18yls< zkX>O2CE7$?3LBnT?&i*OYorxaLx|9oNeVT~!G)*)fp&x`JYl-iFG9W#=KLn~V|7Gg zOmwPGVEkyx!(*>=H)AWR$mE>&Bn>_c_)Y{iXRmKn6qw+^EkF7g`c zj}O&o4wemn#dfDd>0D{wcq;s2|W`>zTShQH7AO<91cJeC@c z&xHYS6F2Py8#?C4%ghQ>P3tyxH^HP&pQ7m7ZkUztmMKVh>$iV1>E?P0eK&8$z01^& zhzp(~P+^yMylDI&$b@J57;d+1F?BB5fA_X+75-Pz^46b*r~J>|@+(~U>$bp+M*QL8 z$G)hL5Iz3Q{hfL0{q`Y$PWk0;J(JEpK5|azed#0t17bQ+3u4i>{=4TVUP&KgBK*sX z@ZLHaMNHehSMN>Zd)nJf*fey%Q`R4fO1)zX^~~rRFV1`4-e`qD^H;7=X^C#9iV}sJ zjz>F|B!{|Jio1#kQ=eu(3l+UpBxF8Aj64%n6e4}8FWN_?ona(MBK_Ao$4CD@^_0etA`}v$kquv)JnBs6L}WYoe=e>m!%>Y#?Ok z$zTU>+irA=eOWlRB7$9O45|Nieb9Wk?G6W8ur Q*nnpeM7Q0ehet*&29+YY%l8wjsWodsqxKixsh#0w7=vB4t zufrb2T<(^I{}%YRZof3@&kU>8M<<74wvwx0K0}hOH{(URjSpoqH9m&y1ql;X( ztcrI0ojmt1>wAaqs;E3NW3w{p2NIUOeS!VB?FG)admcGYq91PjIZzxc%p_`%w{jKW zqzby_rJFZ5V@nV*P9wer+a4;H(Fc>|nT-9mQqcwCAD0B9BH0OE# zHyKCS+`nguY|%5UC5zRRw{vGFVX^pfTJrtSSUS6AWtI~z))?6! zLhJZV(7HW`SE#;K~AfqLesmq1u0NHL^wsc(`^M4^30Y+PCa{g6DZ)b{=_?c`DJ*cjK{rq*+85!!VnG3K)ks|<(Dy})O! z2an}0R}wMjUQa%SrQxg%J$qH-fZS_2L(3Q}1W;?bpmjNROVaME9qzT=MJ4|fG2Z8I zzF5=djeGR8wmr+ATazZ5R?x7cH}P_>=g>n98p_%l3?*ak&Np=4d{J14^=jEn^k=tP z$DFsi=JrHL4*AA!bwbvwAr)Qts^+^Xmzx^}Hv5HAlX#PAo+NZFnS*wvv$;DahL@wr z9P;jCTr@uUMq3=@5K|pLQk7?O@pqykT3~c%w5hr;Db%BGt~-{$oSUj*wW7`VjqCAJ zXY5e&BpDHU)!@PO0zDosa(RmCy?4KUz5o`27CEYE9~rJqmNy(}fLnXt5G6KV!_zMQ z*{nn`=F#({1pPmfal#{^GQIq~Q|l|+&&jz0;D2WxV#D7%LMLaSm2HeDmiK%U^;GC0 zXO)4?o;9I{^N*bLFUcW$fN+4>XXv93+UQ%Cemz4RFXMe>QD|C=`=i3N_t0##4g({* z{KPek+Wk@!jM8JR2>bSVjr}pDF4^TZfm}kGLrKrLktLqT`k{+EuTBt~Va4f+gg!T?bQEtupD0?%EUOH>Gbv@I!YC*G zMM$*!en;`PUXsZ$!r0mP;!$9$t!hL?D8q-V(DmQF1Cd3{w^oaPQV-hhlyJ$FeN?WT zymkXjb^EMwh%gjT<+@wZw7G2sKDNBbd+!_^^7u7yA{v(1P8@<#^`TbcihHtDWa)74eQmzmAkNYik_=XHaKVG{Q%i+QO*9P?b zr=%O#+4$Vs_xmCh=Z%1$q`F{q(fuK)h5*bGG2gOxbg3QTfJ6FA^>y?(15j6ob8Dpl z*8S_Gy>UipDA4?lSUfkr{XmH8l1zgX+)jO70A|UOhzt$r`l*Ao!7 zWT%4lK!p`Ou$={l2JG-K+M(2ZVIHsoE5&s%WFVP`zzPl6htxUJxOB>L#*>Sf^sFB7 zm#?$I0phfS|CjZvf%O-f0dx2m5nDS+tWfZ`p&%73dp*gV2NwzZ`zK^M)0{f>oQnGug&NR;3zu3L38VaoMvU_D2Vc{lB0^th7F zSg2N%ry(PnQ>y5>Jc+V}3HWwakLGvE-yYR7b}()fA-IJsSj)Qez(36OR^;`B7}=WA z5GxdLjkBlqlLIV2NJ2T_+zYku&i00ibyD7Tw zG&?9=Xw1VrUH3F}W(HxupmlGSejsem`Ie>QuMeD>3aNSPN%r=weu#nryy!@NSaBI!`KuJi&qw&dBySaO1c=thdbcOEpiElgXNb;zAD2 z)nmr1j`5(sMCPhrlJ_@S1f}|r5nznH5*T`WeO~DbY>dc9tPptQ5m?n(Y_Dyua<6__#s^dR#CWTKp+KjndY$r4 zMOisG>`5ke)9Bd(xjk)A!gjvS+ zia6fr<|lp5N}Nji_ui7uK_69M4yWwxI&e>YKgt13=zLj_z89cW0(9^3AA)U8j!)KRW~3I#9tGWNmBf~&gf9KD;srrk z+olGhe;=-9`K?u!0oC<@FdxB7A2^!-$$02PH((*MW`CXTgkHSx=OEoCcF_<5LGrRK zmT=(bQe3W#m7dHV&tgJVUrl|@U@TSh{xiq^cBF*}hYYjdPabf~b?v8bnIM_})`np^ z>a5o9)c`y4+VZwD!R_7S9!5q+*X2*F$4WFU&7FV7>w=7V-wD!@5sFnFQzAUODOsOK zJb>UD8>-{O=_N#~M*c2+s7psNskNt!_oe^-WU4Ppz?(R_=tC7P(fwRfgf4|_3+oT% z67uf?*Zy(3ilW6A6%=?bvJfu?|IT|$(L;twE98&YS#OK1TH^aW#$W33Tb}yG`joAg z@6Qr1H*$3rck03|!Q5*p^swk2Ik+6vf;cPPgx1}?-!9ac=L5S9F4Li^Sk2~*5(Pj~_CTLJ$nM!rqcX{63ZUBE z{ypcNxKP%iNxsU71Bo!Z$to@rY$GEdiX`V{k4iE6Uez#nuBu*9Q~~%&eJu#ZReVDs zN(k&GUUtRauPm`ZUI_P6NggrZ4w<1^jCt@fMn4D(BEU12r;WOzZ)NYQ2Jo{JZZN*)6h#ILbEjBQDQ_8SmHZ2*fyz=nT zgRvq#UHg89M7`}5b@KLx85jE|{V(F-$w^zW89fQc%Xn8Ln88_p(JsN3+2WQ%;-qOO zcq-SAE-HDJaZ8_2kdn^w$)sgehKuu%Oz+@elycx@`%>q`UHMhOvJ>1D8#DaC_p+T} zic&N1j8)%%NBTyI2o>l>f+Xn<1ccX}+VcHbk3{shyBilFr-qj9GB;=kxo5_-Z{I<~whkpg3J^wqq-z{e7m0J(>(D&_u8O^HY2^qb*S6h=w;YlvRZJ z`e$6N5>{aP*B=MRO)nqxTqZM)ZA+{($3-6ypyw98i73K7^x(73>`q8w^=|n^GuPSM zr8?LB%<5KK^untdnOpS**@XZSY97U%3L53TR3lh)2+e~cH^ty>>EY$y>HQbzzh&dK zBD&eUrI-*7r_oF$-C9o>4`wTQhgXL6I?J4T@2VR)JNjrxdjIua8db3%u4FtbqkSdb7Zd4}+e}Y6{qjOB%j-s1# z^bfT5&*s0mE+l$sPlnC}T+Opha8Wz~B0-US>jbqj-JPA|wCDA8&#^FsHSG7Ny}hV< zs#Ms?+K8A{)WsClJ)yur6{*tX_7Ju(rR8|@=0xDKukn($)6MEI=Is!3P2w?j8PfOn zA=^_ic1Yg4GZpw?u}d>3Pd44W>%8;KIl@m|T-T`wTzG@FX_Rklw~F3X$mAN#JI;Tm zd*XG~io99~VwP~2e5Fd>o>dU4)QL~VL3Sk zi__5A_I`MY*W(*`XWI4n|KkU7o0B+MVI0o2^A`WQ|A(ZIL!CO zSRk>gmj9-e&@Y%6-oB+S(0zvVm}m+%ZrPI_-^ED%H1?Wl2#gnZ7#M=Vt1t4!((0n1X{!5vtj=LWVBid>a7heb0`YV^tF*@M;4Q+_7uq1>ay{+N*@)F=1 z^Vn+uy&UK3Srk%x*%TT|16*KYRU+<2n`nfH6*iTrqM{MvMOB4eGXWq%cHm{7X7?u? zt%#llPdwAvQ-pMU8XbB+CjVq)=_u9LC8kT;x*yu{)zwG&8J1RbT3!X zsZLYTBVxy`g(^!MLlJ=}QVg4aHB)J&t7rK?Pym&BUG!Wj< zLW)sD6rcwYx^`>YeUDE=>nohG;1_O|%(Bk7By<5?--GUM8pQl-8Ab4pg4R#aX|}=3 zpC)k>ijgjiL7$cZU2T8PJA*NV^#1D3(*Z1{$Jv#%&(zt#av=5q@8-)nw zI-8?aZ188wJHqgEEr{wU*S&C%kmC`pQu}<_b(WOdzoN9Ri=s69^dzBdXzLuahN|JR znX(Y2v;)Tge73-(J7)F&%Dj~E)4lVogXnKzueP_C9i1$4v~g!{c14*$K@CBY0UXq@`NN|W;1p!mJ_{RkyYQkIt! zo#J%LgQs;T$j*6Bbnc)7?8`!2t`8L^YyphwW4?PXOCp72KAs}q-xl9qFjJnsCHDDB zyO-n9hdB{anvj!mna8TEtlaMtZR=1c|8%%{({QjPqMPGGdL1ML!Vg-zBKQ7l3v9n* zX4*q1UNj#*hOilp!$PR8ekO}B;XOiHrT(lxtPz#ob*`Leht+v`${OPD^!a#=w$<8o z81}R$7z=$Gi2H7QaqSC&o20rgPQRH5`7tD21A9?WGF3zo#Dz<~vN0u2ndP5$7v=lQ zqXsskQmM>-Tb)XdN zpN*~~DK!wLaV`zFB6c-oikgFYdYSZNLtN_XHF~6aT6%&5nO>PE>2V+#EpmH73B;qg zXsWp!dF=XH@@u6=O3=+^2Upz3rR-Er@=o^P^LhKH`0%u(cQG;0o>18Z+gJue_x$6^ z>S-epOUcHkz#?6Fs97*M=+}0#yW@EjFf&Mm>;Bgh(Wo7;ZoW3-TD`iDQ4?IacB;W+{i|NV zZtUQuEf+5eyuiDG{`uXg#4YC$iQM(9hZAjnx%Fl7IIM*!dEVPFZvj~NO?1N6c1^9M zo-FqYNykvb_ee#7^T7NRN=>T4`Oh*y=iW@;RmEtLfC~9gTrThU!zf5ZJx<=PN%t73 z{`R3j>4r!_n1uOsnHM?4E7+@M!c=Dh5yGn1S$^N}q15YL2rsxP3{dlsIxee@X+20>V4VDYh>%3FKAX8bvn7nAE zlaDsb-8H(!`uykH6~T+`1iqM-(Sw=#857I;lO`P$mte44W5yc@Bf6z_)AAghKZ%$l zVlv?SnP5T5rod>_(mFEomhbe07QJ+H>v+woISS>KT%2jH@g)e@uRcOXk}*%Hnwh;h zU(XJ<8vdFysFTzqe1wfb@^Usp%7E2^)SfCQ$Y~pW5)#Eh)?>cB)!v#r5%VT1w#~2G zqR@c*L!`m6&yVt*eD?}P(yVirwuz6X`0!9Hh+K>=R+E2Yrp=oMIkB##I>dxsQ(#kO zctP?G&}eMc=WiY&3qLM?Md)eK&Z_z64Gt|g{KRG|sb$>|d>^Q84Jvd32UEG@V z`uYf-t>OoimJmNF7;*7vrS~Aq#N=QG1lRu==a0_Nc4~Bq2B|CnrrRN-brqw1uVy06 zn+c!oHue<+9@^M2q7AOkZQd#SB_U**^!e+DOBu;QL?kvXgeGmJ+SQ2)6lddPC=r!i zM}$I+)xlq#FWpCLf!LDv_!UMw%r4E?#`t@-=Q!lK-|poEUcpJx=D~r?@N^h9B)~=A z_?N%y+QWychBXfH=sXe@avhLssKipdm`I!0akVTNC=D@x`BEX^=7h=TXy8l8P1T!t>~?)s z0t{LO$ue?)A-Dsyz%>2|nIJjv9X6vvdqHWW?!F5Z4Ld7fQrO^2dlr!6pEc%Xp=CXw z8_Sw8*)Fh7gpW)dHO$+#S}Ji!DUra_8B};gq@rg{ga&D8dod$BBPIgv2LicTuic6C zOAM25PJbAQ&S!US65=EMZ!_9pf3gRI6F&?#j;kw37)NtAc+~BMyPRf*aINccE`Kxp zCK&B%cGImHcQXR?h;FQ0Z9fOUPQ4Cf$TDAVlKdI7HdA+p($o&Re8c>aNqVqX1T>Wo zuv_wYQYxXW_<9&Q-TKfuRDoj#wnA4YPk0N!7ZR;=eZ7f~QdZi&4MD>eCY!OF02NK` zx`8m;GhViPB#&Q@r}`0^i`w7rQo$Cs?&xyA4K{3gP2vjq6BFfYpt=_Y*T^APpMFOv4{&A!b};tX8IsB)`L{L*am$#O)F ztwvc5&g~1IKi_^L;brS=9j#_1b;CrS8LXKyWD+F?;rqv)g=fR+6uyS+!$88EX=Qcb zD_0a>h{tKV_ec(j1LLnV{>Jt@lpDF)mm0l0=MqWD6(xyP`DXM?Ea*By7y4l^kdY7g zmYg*8lk-SEMA@C*pll_m#`Nn zrRE!95xwUe3s1Ll?Dvq%Jyn2BTpn{SPwb$9=~y5~X)QPy1_+H`Tiq8;{W+o|1gc@0 z>Gq8N`<#*|n$6kYG|^$-{cO!iwt%~mb>5udfWE(NDqYE+=ZDi&N5w+G`vkN~Y<4&( z+xg%s8#HCLE{N=J)y;t=5Fy7QIa9}H))6GoX3(7H6_DHWY*LLS; zy$SA0yeTW--B`aoe5a~S#?%F%4+X19b#@Z^HeqStVAjpn+md;5Fyv>&f%o<3o_-{4 z21W}3ph9;67obq@h{YK+>o(jYV5Dn49w|ZE_PS?VasfMNC?BF({~Io*L)jqhRL&lp zbaSZH=ZJ3b5r^qrjw}R`7!*9KZh;2BuwEU}ur!ZSCShA)Z3aOUZ`)MS!!csWFJa=rSx$*P7!+@0+09=f%{s_^(&XgLk*{x?BFP-A(g$?+1KceNcyZu z08%5n7Gqgm@`husDQ+Z`2?*dF&(`OxcxT;SUX)m|GwK(${E@$Z1pEi}WkN7ETuO;_ zv;j0#L#PW_ca^3umXM>QepJW=Wn+hn65>uN<8I!f2NHqg5J)tF9R&@M-3-9RoIg91 z_O#xLYFm=z_rxAG4QBLbhD;m_LzZsd`fFE=Cy0OEA1!otYN-59m)eWky*LSOzekWm zT~-imH&wS&*~1pv8t5;{;XnEe0cvY^SD4=!$Df`kCk!P;?9-x^0{aYx>rCE09jqsu z9QvUn-9|d;ZxR(EDc}1fSi*8w`=wI|%|3JLIYptTj+szU_GtJ{m zhVWVMR2(YQ{uj^*D=A8gmZIiHsj3x;FppRh(l4#hn?*kNbx zSi6o*Yy4u{8d*WJ!PaljJ?a`B*4u2`rrk0``^|@#Cm+&V-85Y-sJJnKV;Q!sDl@T&CcbuGi2trFFrA^;GtQWRoD_TBcR$@ zr2J(sDo4YUN;`P7RWC$a#mqbN{{FN|t(p}?mgs^`1G?0)iu=<* zZrjaw{_%dR$*vo#sZ+|y_Crw;C5q83^0W=lbE87ueE2^?B3_Nzi~e3Bq*jF`JGl90 z;ds!R7rAcJHbFd6j7x~Bqm^T&+69P7A(G44|zbD0EswxZ+__$nVYs`g!$}b_2X9ZjC3GPA4$!e43isw2<>grf z*wmCD_%-G5Z$pT#3vLS~%nXR=J~nf!?*2t^2Tol-h4Uu!jMYB{{mtuA{1?JVXw& z4@RHFG0)YClR9=XkDc9~L(q)b-~C13vX8R9fAk1dd>7l1Xz6&f)Ae|c$tc{&Wf`mh z1Tw4LhL9u}H+oR z?lmCY2HE)Z1el?jF%dI8W8wX!uGyZ6SCvZA)dHp0^O$%63k;Q$Uobh%r$MV>{H0Hd zv(ugBkMo4iFW=7JZC}VITmA7HLK2+JDtgN%eQd!E-V-K1Q!?rKZU^WgNUKveKK33J zOK0I2vaZ0lFL+t$T7HMF16M4e4nMs@@g$hIF#{u%JvzX?`>MzPB3Bc+SW;z?J-+eF z41El0K#OQ%`%vV*IyuJy8d%okfi~Lbkioqn8TBzM|za`|Hw>G1?4!oeXW4Dnizj z+-jV~;(sWQlvm;ryT|ZR**!wOL+p=Ch0Xtw0IfQ23EFO6-QIFmtbac92GsSdPSIwR z-!vx&>Pn;ugY9N%XKYPR%0cBlb+r7`YCZo-VEg8`px#o7sRGvNwZpj|rw}Pz)EMhrd(p!* z7%irkAT;=V*Xo@rxII%5m*xk_K!b5P3+9V#TylXt2!1ZoH3ZJLlieEa`K;|8JmgT( zg3l1U6!oVy&@@eE$3P}IN1Z)tA($LG!ys!WIKX*K3}~86QtCcy@}Bo}lrY$&82u+4 zn!+ceHouvFTdp1(x4tB?NmAz>Q=iK35-_DHPcjC~d>6!+q!GOuR)qfV;^gmtpNS=P zttEDrf5mBHC-3g;)T-N@)lb%>iL?uM#`o;C8j{1X+OuTO`g56?mI=YsZ+F>)NQjDF z=DrdtxwcmIFJ$cL13E4t0a^IL2V71n-}d@A)zu@y2novYd3?((+tLHyE%@5Y^dqh+ zm+OQ(P+pzDMNJbVCR1W7AJ~@`^wytU+32)EG7O_v?_6cyy8-F3x1EVA#W{R{z~@&8 z1EGk@hKG`w`J-@3cua$JHYX4m#(1q>S1=qF4egU+qWQfO;E`46qfHYrpFcXt87zmN z55#_+?g~0$<##Et4k^jTaF^$OHwyu?`n-7%^eK!Oqnn+hG}w`LbuL-yr^TGR_-6SB%c-e-L?oIH<*>` z-2li$v6`(sk4MN7d|fR^8l00q`NZLGe4=ZGds!T`1b;h7AaAAsQ0w+r!WGl7qfJB2 zId&bjJ;6>lKJ*VCuXM0Cy>GusblA))dt4)t)=53NypNCB4|1|ZQt#KFmqODl2DWcd zWVhZrii)!t1Uf=f6g^q(EGNulI~319H@JF7Ka`_n$1}aVD->$tB2Wq)i(tHe);;N^AcO z*p3W?hdC1cpAj5q`QpF76KOw2iqScJ9*d0*06f?B{%296nlEd`$!4H7*WB&%4IU;h zoIWSf6rQXk3U&23*iMx8&MT!+F=PJJ?vU+Im{wGeuJnj9g#{{k26zkV0-Z-p#+>b9 z9tvfK|CsdgxGSM7@aeN9pf?AE1;2b@9G)Q>r-Z>pjwXZXDWX{w8Y%E|{K>9{5zhu9 zqE@v!-Z3*hSWUQ&zKu?G3Ku3g!6HiS8xol|3^_!Z@)ECem(#k~_I?OKXD79r+>i=Me%z`Sd5H8oVM5>LimXl(XS#W$vN(|}=W$Uy<%VqDk+qf8npP1J0O#QtDZ~NjuUSJ+-RrI_^ye1?( zL}kCMX%WW8N}bc^r5NbD_n86zxJq<0^s8wo>!3;0r|b&hPSxiQew1(}`jL*M6_c`l zqSPD`r<0F?{eL1?+X{bnTWTULx4fJaNg0km$Lr$?B)Qdff-ATy&S>KfCTyN8rA%Dk zx?J(nDc>{-eYcP5G$0#U424iFF2?YoMx63%QrY131EmFE^(IGAv3=R2qr?53(*#!; zaWyZn*m2!R^4V}buPePLZolncG|HiarJ_QcidRL|O7e?bx5+egi_f{^ zj$Y3d8C4#}qT*2gVl{M^ofegq!=(?h&?xcz>QR)1q_yF;n(SYJDjfg5yIHI@R9n zps;sc4{1@f8d{R=a*70}18VjRVC||;SC@|OkP_<-uKRiEweEKq9Jpx`1a z`p%!6T{$B8m8fYg%k9;WSr$u|-ZprL1ZY?uw+dDdc-(~=T5O%Fo`Qf>vj1`M0dBsI z7jXw)y2tEm!C3!W_-vl?jA5+#U+lg0Usdh8JuKbbUD7Gt(%s$NUD7QfC?Sn>H!Qll zLsDT;(hbrf`A&VFz0cX-^X&iN{ZT)Yx$b%Ab&qR|aoP6=BKyK4nLn5=I!ts0Fsc6X z2h7tiNdxxLO==_o=rPAKYn zLJiY^K?|Ava3OM=+Y!vll{rC$ewz?%NUl+6&a2r2ATnDYx?I`uku1;zPKec}_%af} zfX3ZZI8coyQFA}6!{FA7FE

L&`CseM|;rd|hiadI!krus|Hw4O`@KIT4WpfZ|V2 ztTHWH7+MT5jxAh~7Z8G3=mjuT1sc`0E3+JF`d-s7>@@+HMkR$xd!8rExYr19nOlEy zoVSF4|BicQ52wg*xJvI$9;SrGx`>FyZ!r2Qjwh0&Z44cgLXa~yarA&~|B~!gUT%r& zQB{`d;kUgs`wIPLfsF}*PW`E6`8xBbF}B9#MyA*OPLJ;F7(We7o@wBkr;tGXPqnXa z7Fo18Tx_|NN(%e$G`ssAAC~IAr)@^tR%Z_#c{K#<6KOTBSS-GcG@aG6mw%~>Det>9 ztTv^d${xz*7@ao%LE}7Icg?KF8F~A|FXL%-q0Um8_N-1-6xP$*cJSkFPlb6L#0~K! zr&Nay7Wa#jCu!cL?d%!W^ihh$@+w-+r%;Ni@9YpPE4^QPP_wLZy8U03YjOr{#gRK* zF>)y^dAUMDZEX?WBm=}6Rbslvowx6iy0J=UKUd1?Q z8{Z(PagVg{uCs^AStHW9DZRI$MH(Ijoix{ecMvZCsd*HLBAmJ3yyHBd*LNf%VA8L+ z{-z#WWUU2dx){Rq!{jYKk+ioS;cxoLZ=&YCA`mUYucCI|5N=D@in3q060HPv)B9j9 z6fEz6v6Mj~uyIs8c;($!m`RW4(s3EdbgIOEr#Ma6tRFn5Vmn0qcl`lS1+BH^`UpZ^ z`#VPP!xzm)1}OY}Quf$=^Wof~LfHw!uzm!P`*;A(!o{?>xas~hobFWfWR~;$ZyKkQ z&mt>Zq5jCm!6Zf{`xL{u7a&vgcXCMd{kJf%rQ{~{fwkLW;lD1KAIzdpEa5;u@mpIb zT2l?X1Rsh*)KwzZnOm7(y1w%&h&%;Y0pF$j^~FrltPXY zYP*S@!tgvc2+FgAT@zN%jiBkIfQX2s?55`u`uHr(bufSZhrJy~+Q({HkDHB7 z{* zHuH2SW66^dAdmrXGCD%{BOa1G&j4V*7vsAMK8C#NqW;`kGHsZef`JNei5}?R#68*c zHajDP#K;^F@l1$sbh`

`rEkA-dsO|glDO`j^5LA$><1xYU)B@(O; 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

xzFVA{HRp4L{=6))^YZ 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 NO%1)fI5nHF{|_Q`qWb^< literal 0 HcmV?d00001 diff --git a/doc/src/_media/migrate_to_poem/poem_into_response.png b/doc/src/_media/migrate_to_poem/poem_into_response.png new file mode 100644 index 0000000000000000000000000000000000000000..9a87bc07cfb80743f421ddc5a344aaf42139c319 GIT binary patch literal 128825 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 F{{SN=u`~bx literal 0 HcmV?d00001 diff --git a/doc/src/_media/migrate_to_poem/poem_routes.png b/doc/src/_media/migrate_to_poem/poem_routes.png new file mode 100644 index 0000000000000000000000000000000000000000..9c2f9b23d49bc9e2257f4d5ab1602459ad9273ed GIT binary patch literal 164161 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 cOkv`EA$1`^4< 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 SUub{+Ll0uCRjGOZ>Hh=8nX(c9 literal 0 HcmV?d00001 diff --git a/doc/src/_media/migrate_to_poem/tower_service.png b/doc/src/_media/migrate_to_poem/tower_service.png new file mode 100644 index 0000000000000000000000000000000000000000..3e5f533836809f89b9ed073c48cd840eb9e273de GIT binary patch literal 59606 zcmZsCby!sG_BNe@bVy1_3}w(YG=kDF0z-ocNDbXBB`~x|BZ$<{ogy)SbO{VSba%tY zd(QFbxqjbY`ZG9{jRG5>-9SNMM0qJIrR8q8osR8J-Z|Mde+(p1LJL+|&mlv-AtRTPB9bL4 zSCfrk+)*VZFMF(E>(A88i9;dlsX(NrE=8uE8<`zUL82%vt#~N@Tz_|WuB0}YCC!JP zpx({Zb#-<&bw1-N<2kC4{jZcD?}`;9GBtaZRL<&CE(!+_4~q7$3)w47G&Hos{tmQ5 zPAIAOTB=PLmeTJZ@9zP&s4SX5faX0!05HMrjU!XN=a@~}Z{RrNl z8WJt{dr<@@9uib`g1x@FDtspI784*Q2{bXJH8Z5uv@5Jbs+BJ+FY ze+*{Fu|THSO!v=kyY4&DeH73&ew_ZO17z3J?TlA9uEKLWDqivbw*Ei&qiQiSst)$> zWO+UhM+kk0KbWG9;ef8OvY(v2xt?vk3TMu8g*?^N|4V8DObF%rPFta1<*D19O4nNf z3K_;hA0U4i`r0`?_(oE2K4z*1H^1g@M>|(Vy_0T~WSnO3@ysb57IF?i+_hOtVEWO{ zpZTo5UO)YD6v;M8v-8(pe6<+cT3>B+UV)IwaM)%qN4)^=3 zw}t})xYbX7d!1rHV77nl!Un^;Gy0L{^kipOpYa$rP^9yFLZl%6xwi{=@A81aUo^mO zuWPGk9YCiUwT=dUr|IZy89XxVuVuQ=HpJd=-M{Z zSS~Ccg|)NuU`!!2$L`Mq7?a8N=}^7Ij71kVXZh@T(q>XJyO%b$;Q`l0C!%8cnh)id zxr;q(S}irJO!Wr4Odo$9ml7XJbA9|@=}|R+dH!x4#elEma8F;wHGeyPilUJCs6<#%K)!*(zriF>NK>NbU0Dq9<^TY9~ z(;9_Qx0?7`Gn5H} zEeFx%_a82!RjcwHb~b!fu+~A0XE@f2FE3=Sh<2Z&oRPE~(U^M)8?a5XRI~ox2Hr5Y@>UZJF?1X-d%PO7Lgqc_`WYOSaqyKQyiL}!oM#k16n&}*?}%A9Ts2>t{K znK35qVR;@2J!)gWl>5WA)9(n)x>ILKfXNLSGNY}o(nk#2ai-f5*p|^=8zl24U14u- z@HzT{-J>eO-%o+^l9%BY-)5xd|8T(A5O|o=_&LvZu4Z;IL;6>MBtF1ph$kUO*f%Sq^r;nUTl zULP!EO%}-M>(1UXZHMiNExPj#T3r+jQR)=q3UMu(p=+%)Ea3kw6A%yi6|Dw!GF58I z-^}*R)vcW0mnPjx>Q@&}4JlAO;JxbUu&A5_Dnx&Oi}>ReY6mytFTysFrFRNZ<4jZ3 zk*B$y5T2%bH!GvRB=f-(LzU83d;fym3)y#8Gdc$0qDVi-|0zB)J`l{!LtGkw;6RzS z*)tjfF`2_l&+@}U<(}(3h_jKFJ*s)SyvJ`ozivJn)&qm$9`ul8E zncOwB*ov0fQBMhE#&M*j9`DfpERloYO{vUWVZhS^^IW{{g6cp-yL`QN;zs?L8)k4< zZ|^}nkLk!i`2nJiYM-U*_GtoKINeX+UBWm^mLnc~1jca6_Y}3|pYzpb}5(}6k7HK)c1Qkw`fqFUU=q@xPd`6QoDh%Aim`tuFBP^RCW zewczbCx-DW@Fl*l_UU3cW@lJsGp3W1V1IuIM1dH>Mr1WB;3kEDRujyrNta&y@V_vy zE(t1YRb`y{P%573^L5DKFT_(sEqecwrgtjDO<7HFQCHvJj*qfA+5X8V{mrZ)g!)YB z#9kTkAm(-;YpAj^-!Vy-EwCy#l$59zbMc9_ZvTvcv;L;#G9hW|c^TjeJ1^-EaxZ9N zdbiEN4t{O_#G7~>Fp4t7y@-f0hKbZz0TE()yEs)l*0$L25}>9>r*7>yn;xssqtiw1 zu&wPqf?%4cQ3`iaMvJ1aHPLIMF_@bl|Cr}60&QYp+c;MMWn|s`L)NB@(3xBZg8tJQ zPlCRlPBH3?OI*p!B}LasAKoU|`3a-lgS*`ucZ>y{ab0JYgGXg0ICI~9UcUaL1jZN+ zWAxAc^2OL=Nd});)gEc-4P!dv3r&Xjq?^rPIsFK0v|;Sh>=S1f#Dv(i4Pa8$hFL2! z4_TlQnWmHF{sgtha)OnbxfptFL-&P0`)D0TNO zMx%(o9pyltYdz|!2ZzQkDPt{`#6#v~0pnkUVX4y^O#u$f_)$5kn)|LOGZT+yu9_eY zie7XYfIm^VUymkmF?CoMZ9Mmu3{jS1$TA}%BzW?9ChXG;_9Y@RAvGOehOrjke_{s_ zJ~_g>YeqCl_eH?ecKMShvBNmn7#Fp^3N^la36eGt;bt!DKDk6D#1riK)Jz$6FWbdmoKx5(f1z> zxh(7V<7;S5m-x{PJJg2N(0_}(S(k4m__8{n!^GdR=>2ebVr{r*N7eR^5!%Ahl7QQ} z&+ALX>uLjCmt|j{-Lfv6VhrrO(c2EJKRs9ZvT}Qxu+=|K0N-g(aS`2PUe;Tvwoxrd zbKJQyl&V8VsjZ3p6=eH-r(`fv!Hs|CuUgJS5moalh}>c(*mbt!<(C$MoJENMCtD(M z|Hm~mk#?5dBtKo4w{<8e?qqv!Fp%{q%dR;~6g6Z3qGUpo*#YmCO+ZI6R->WhDdVim zgZ!PNp?rLTkUuW@p3|5YjmPCHO(Or`uQ9q%ZpB*sHHsvP+NXf8+m-L?W3myuwRF?2 zoQ$EX6T%a*uJ!@1uQFokI!n?$GcJeinfs!*Tx|N&QEObt z=2m@F`hOz{ss`gAr?DuGo#-Rj#|JduTcTgfv3Zt|^rH*8l^*A?IG%8nqpv2#LMHND z(<0_iss(%*4>5Y_&^_$h>rz07XjR16=N$AU73Rg=eH+?Efr)<597HtZR_v-?8vVb8 zv?6LK-Y-l^y16moI0@t4wxT`pr)Ktb3U%Y%3tgl;CW(y2<$2#OpSu&OeQ%;MZ~S1> z4YD(!7#3v*o$!{7S}a4I@kOytK*^5$!qwEa zd_>=gSN$Dgv73tjzePTtKbnBdiq5{BAYSnYEy2&Ooy&Bx11|AW;wVnD@9J?Aj}Q`;xakJI1#mJ8uTd&wtX(eY(-o>Ilgd87XWL z%4;jUX+!@C%0`i!pIN7Wz}Gn2AGB?!BPEAFxg=D~naCb$qg~x0bXiQvUyJ2r0EonD zSurYUTIqEOc`x6)lO!{iJS&{wg@Wu_xrWenMR9S8s2{|$MK6Vx&_EO1aW^(5*JT2J zJK(?09*hq;iRcY+I&;h%{3;dH3n2Uw(&99c>Q&&$_Be$s#E?jC^4JE8i0>%VGNe6^ zDkYh-<{in?%8H7EzJZc+tL_Og_nu+sA7uLHbpMg8uG9)2;p3-?fr(l89bD)KD=~n1 z7+@aNuu6{1g;;EE#(sRfnSHsAkjPTF%?u#9+ zoNKMgId-Fhi0#RwFFz?LD2mKg8^bd)*gU3<_}~O^dy$Wo_;TGbJVCYeA8m4$n()hG z5{-N#mO~$|R`$hwQ2uSqe=!$rWZyKtP)v)@y#5Gnd@&qY-`l=4s90Zup<|VHnuRc9 ztR(4{mJzl+kwaq~a^*q5d82)3Wf5?yvwScg1Ozw_wMMoss zg3_z^*u5TJQ`1an6$DoioaJK`n;$*F5#3k@owL?;0C8kJ9i63G3CI%c*{@G!dGm_; zN>8Hc_#OOzpBjfIGe=dbxPAOQfo6>TEZ;?r{BbQl(luvUr^RuyT{uos4vHwL%9dj# zr=D8@Hj!~q8sB|!EFB&Huj~G6x6l}Js_RQ3LL>}cfzD1Tv-x%$gwQ!Y=19<=(J{ZT z50=qh%#;e+6;0GV2_H>`*Lfzs#zNX7m+$qa@;`dxJ3lE$xHFYiW2_QpA-GYsHgt)P ztK*SY`4aW<)5yahe{wCG{fmX?-dTpI^Us|Y7g*Yw3hG)P1E--d)C9oe?$mh@8(60v?())N7wI(7nYn zn2;A&6uHBHXo$8FSXc!*mTv#bWV%DuE3SB`B~`DIfGB>D z^E6?L#jOFo{&izS|9agx8t~dDh()DY&JR4U#WEA&;Bio6D%p#3RdqIZI(0%xN)@&w z70}e$r#n@bkiMfm|1?&Zo&NF9Wr#HjPu@CZbgdV3n@JcRO{9nY6(s=FyfwJ%SU~qD z1wqknwT#<}?D1K(sFvB85W7QwF?LGB$pTF~l$E#Y5Z6~FE}fI=5W2pINAMDzmE#Uk zSTfuSNdrm}97_@yJNgJPNsF?*^!n1=B4HYYHVkOMu~wjvpW5e}n@>4@aGe4na3YO& zl<1@W)J@SZKNwo6o^OiM+l52fH`PJAeJ6;0)PmoB0T=*^6ulvQMo)mo8OoR?TgEpZ zDdd$=B~T*-<07vk~qGj8kl|5D2qmy-_pLT3{5V ze(%e2VIdb@W5nW;B%}&VjY@f&&aIG(DT+6f5bN0UwS6w(@{9sr6oO&)s$Sz8sphK| z9OM>&4I7)spld6icj3({fqt?<^~e;}(R+bSErP^MM8eID$F<1ZITKO$0B)>%(T@BS zEqIS28oC(^%NKNH`}%ryxCqDKQ@}zc#)^*K$kiWkf(nuw0|x|fdv|_;(9l_vMvR2Q z^4}}D=LR~5cNplc>w>(gS?`ZYMe9P?rVQ@g)x(ZX^L0M=NcYp-=x6WA!lh~KK@4X{ zj%)b4(dLKXrjJqwxcBuc1@+xG1p#Xian82i7;o&7`4h~C0e=f043pWDjK1c^7xx{?5 z;q6VM<+|8=&}F3ftQo8z5gX3)@Htg2irK{c=@!*p$verX>nGEds5o}iI~3Gz42Fcy z1P$aDdDC@m><*h1LjML9f56b*O0AGYPlh9RLf=Ubxw<_)s@qvSpadYV4vF5c02v73 zw#3BEpxo=OZt`AErhL|q&p9ym1p*z*L*AJYPxoJ|v9s(so8hL7awf{}d|Ik;wU|h} zWg~^YgRb|G2uW@vMu}*D((d#$n@B`;LXZ9T*Q40M%vGKVE|w^762!c%MOZzjH6kCy z{vmP=HL~`~1TldW*Vz52p!N6$WCL(F$Xw-NFKuBQA31d3 z$ILyNS(t+#c1>MXO3-c%pL8@W9~Ef>on=k*uZ)yl|G-zc`!W2JYxZ>9wDPGv3XvvP zhoRrg6nB$H4r6V~zF%GuJ~IlJRV5YZ`DNzpN(0o2Lf2Tur z%>tLw=45Ar*Lvcyi|w@Pb%USgHF#tl#xhEq{RL#@qq57se8 zRsM=8d$RSTku8XOib5|s`3k}7-p370BdBE&aWgOXtMr;jJs|m<(!09O;D>NbnsAKi zb`KrYdJAVTnnMA@Ss|zV%QWFBynV`SzfO`ZyO2w$ynI{g>&2Lo3;8 zeJtt|^KrJ+pUT=1b8!<-i5|z0xv|nwA#{pcX;Mkm*YVFPk}g(Nas%T2>ltm_MQxEX zMwHw1TrV{%;xUwPQ$<#YR?Jm!8xwFd#J+MDUl)MQ6*aMjUnU?LNy1Qxn2{N%^>mF9 zv+H&0+T^y)j-oA&hPHB5u%9W<=9VLCwbU3TYP3)Jh|!k^7Xv%dr1Bz=3tuvHznQ6@ z?zbI0c#uXJj86fueM{LV<$322tS8%3%1|G;zd?3@%-*b46ve&?dLj z9)1$T>9dSSWtki$2pl*qeMIu{U`1((P{&qoxx;e#a%;q*$@LN~dIn7O&AQBL#)mEu-(HrVnBYk-jN+-f_}0^-oDKqXx$UoY327ZT7;Va~`NU=5vbiXj$x_D5Rx zFDU2``pMN;dmHwLWbN~tJ{|Ce6c;&ttYLN~daA627p3u{E=>Q#n#r?#^;yTtUQV&c zn(Ul*dP{0nQ6@U%w^>;jzH_PqtG+LWQ;!DEEMgB0hvn1+EBJap;74Ajy&P=2EwcLL zbP;hMo1*?2auvfxx)hsQc(POP7EOiYKLy>~ts3v@Y{BblT8ndp;qSbPFjBBI?@c6Is z@tzL)u>)Y|tV#m`-l@H%OH^=v+|&;}X#&m5(#{B$SWR8^km|96s78N@ZZ;r~f&Xwo zKo}v(fUK!bv`N2XBjtN%bHW_v;QA+Dv8X0!YiEpHwFoPiLnZ<^vOX`nhJ11TD_ru) ziTu+-yJmBcw4YtFz_=3-a|1@(S`5{EL&!LqoRWL8zd=1tZsFVdB8mnL2Lr}rZl>bA zUiRI>k2xhU(}bS|#kuVbqw?MTP0MeK9F-P$lZCW&wS(D3x4h=M=M>;a$K*;ue~}>? zS^j|ic1A3u2FX{^gsnvBDjL>gcfEBPl()_7_3??K+7b}VGWL}l4MK#|D|;oDnw!@pP8=>M!@e7{Q8Vni={px?}h zDoVGyQab+V^*9st_wvOfHeOegdk`??S#**z4i1>$U%=~A zmN-*ko1CX{!g+_Gru7|BXN{u2X93b^vkmKUR-3#|?K>mVz78L3zt7<8J-u+g48^>- z%&q^E?eA^2K)ycV_vsyhNhAs`xek~dbWHicG!nCbVjmX=3V^{&@e@j0)u1YneCu%) z6Hp6ggs*E!DEJ+d00{$oZhT&`0<5C=4Qjo?U0tm!xu{EbWgfYR3yH7=%>(p9>Ug|s zIVDn--|dR~GgTHNV5nqXne$=2VM1EaQ~h#HuAudTWJEPeEHrmRbtZyS+HRGh_8zZg z;mw8OJaXM3WkRK9c5EU%EG|mwE}-0W|0c$J-3$JY?$uE1sjMin(&YMVJ$n+19C~qc zOdsgSb8*s26N_~La9BL{LZ|~59v^65BdS%bPm?l~?Te|z@jpHT+I0Db8Im``XSXq_w^M9oTR2r>Gu zc^KE|Z+PsYFWX}fiBez-ke7hiCV;gq5$y^*3h)wtM6V<)B04g+7z46n3Y?lUea4RM zb!M(IfvHMGK0nHXkqdGI)6iMokU-~2&NyDj{VBKb%Fv!c_2qk9{L}PR$HJ2}62N{d zD%oB2DCdu6BAA9pPg;sfXmQ=@fKU$T%wddZO_3tN`p}{AoiHjy7C1Sr{l*!*;PqBL z_We^~C^wJs-P;A8k2?O4Z0@W199>Pk|6ib24-yT-a>4>5)eqZ%HKzH%p+HQzLT=cb ze$7hHd~+!ia{UfFva5Q-c>lDsogC+SNCY5aw>~EAc`NeqWF#~dwSET@N=ShYF$I+$ zMmxC=4sz;`W&_9yMym3Tr z5wo)Xla+vY_ZZvIB&7K5q~B+Llf7Qu08&X3h5*6Pk zFLHnqALAnNFY7@1#P|H%OS$|LxVE~(BI1*d-T@}mOK(>#<>v;VF#;)-Od>6rDMNf1 z=o2}z{fDm0$^s1KoiTz;zrO8!U2vW4d7?5{RDwecAj;~yG>4vmseW|3bOeX{ z5c#+of@#MT3@)~?TVbX&Td#Ns90L@anlOo;vpP2V` zHrxcix+L4mRKDr;=RV~~C#W}#9EeEYC5Aj_Ouk+)os#lJ3BsvIVpDEE8CjCVo3EvZ z0($8_^J3+GfIQaNJB+mn$nbA6p8NFTucl(13mG&3T)+8M4w9cP7x=N4Ve=B67@qFx z4<>$e#sJkX8QOS}9ba0-(O!eICV%TF>Pp_@*Wx@^rN3sKm+~i<-6t6o^7Z3(6#B#@ zpM{p1l6_g#g44PSG^x4bUshU|YLgYFHH=WONhb;%)25!NdV&Wh_f-uN)wTcG+5KvT z?Mx>th5EaNFeYA}g!CZZRZ=Kr+g04xzj}JLP&7I(LMW-Q#Z|b~Ye>0aJ@P4~?UTSe zFoxY!;ga4vMI7r!^!j5Fqfd$^`osE+VSBu~nz@P%Z$d)OmQOPT3N%fWV+YE&O^NTm zGY_VH?PM@D*LQz?`~l#PV9(a9_*^&6kX)FnSmb(0h_K~UVw{|yU)u}6S|ew?voZ!W zRUf#$m++n_nqg~jVBbvQh~DWQ@EDI7AFwfc_hHT}KbH*iqIu>j;nf~2Mp^DF4;SZE0>G(5 zJt7AW;8CO^Cz~ff9Udwgd-mpKn zp$LqR7vCIAO&@UC`p}O3kZCj7sA;3?i_f6TPDCV~D4yWEw@;*b3}s{KMAfW&NH7p} zi|UzzUioI4`G?qPBz?(Ow(P{j#J_56nV-CJX8?d;6rj74nZ<8r|Bk(TcBidU{4&U^ z-S(GG@VJl&!`(#Hrac`}iX@ zyYn%-9T{(Qk=uOKI=>B(>*_~8tTY8L3t-0e{*Q0RtEq5Y-0#(&`5kLi84}JfZ3tH` z9Qz0uOW%~EwcMNns%*|)sHBS|GFaq1{SQMdq~?!W|E$9HK9~zj+_i3pqGP~Ty2Kp% zWo3#0blmt6d3e8nTB{{KoID$15sYvMQ6XN~(R!mER80@H>`T;paI^fm)1Rdg&*p9= zkeX1X)_2rObuQ?6j}^NS7n)lKg`9@xlP2;pNBP zm3J%@JK_UIX2ge`t#sWoux0cJzw%BD$K(X4}kGA6|Ziz8c1#kzJuNM20`8WG9NZ^u_ zN3)0c+hF+aV+>$WDekxG2w5dHa zr?2%a10k_bGwL9BH*j3SRe`9H=ax*{#V!0CLPAupKfjOFVBN*deCvh=8kmGmA;15i8NX3h4<(=t8jhUM3MOH2e`f_|qCdjGn>mkdtr6skEl3Mpvza$>H6zb<{&fSE!UWYel%RjTEzMX7WLKrv*9xWh_ z2ARKTu+kUA7&cN219ae+pY3Gj56yA~-nFgKd2W*R{!9xGLvKHEGv5V+c{RIU|G+cr z%7X9CeiFOz*`7XOo+zCUt9s!z**uI%P6@)D_ddd$uJRzUB&e!!d8)zupFr}?{wI(Q z#`zOh@GVMf7n!8uV!&@wG&w=v)|hLXP4g>8@HABxDM3jR2?5~uU(OdP9($e`*&6fr4CAtQ|SeQ9mBL>lS7=S)J^h4zFtDolwL^ZU+k?ZXy_XzO8C!h3t zOM%B$tmhlIeKJ2HcB3l3Ij?ITuJaXkiPqC64$OG!vyfW@1CTOV;Cf8Q}UD! zzBxb%KUstZFRT~qh9Md$p8`OTb2Ihjvb$TE`T|%Yh#HEWmz#x*V`V=aRfTivC7|0Z zw%&CmdhLGS02xa4tE3ZsO6dvpsd2L>EO0Dsg^gTy1mk)$a6>B{X;Yt~Keimm8e7Xe zD*rlG6uM8!MszS~)D&|LGU|*XVI>lE;|bKzbS&`k${mMA6{2G?G6Iw(RHiB{hFg5} z@4-OG4pA4tZ!=+Xy6qt}TM+*MDU6D$SPG_QyAOqf{#0S-$|#>N4%wP)2{%Ymn3U4Z z<@Mw2X@684aj&E;C-?7YWK;E|Pm6ROpA3jzfSK>ke+WSHL50D~nqRYy5%u7+kB}9I zx9e&WrKU5rM~-P5^9&o~h1uKP3{JDUFC^D{$z`uE@|9G-;9QKVy0twYbOvsWl>e%8 zeBN^L7L$hQw!FW4>3x24&!~OQi&#jtd$@Suq3_7_wDXkC92+i3FA`KMcwLu1 z!1+{t{jA?k+shA4IMTN}=26JcI9B!Z(pI8!dxlU6it1IA>8}JaSRk(hIbo4hy+(mI z$U2=+!b6(}@W|cikP1A-#y5fp4qU7|3J> zkKiEtD0*?B_cnq_P44e6oyXSa(iIXev>(xa4C+gIY--7R2 zrthWhsaPL91Z(f-QBq2{MkK`nHZj)mgOP{4dbwz3u4#U3uYgGVR!19Ujmoz|Gqt?d zuDe{4-f8Z8;uv4^XRr>>W0{FR#pQS|2+tRg!o~|(&m0fa-H0HIfv`Cx+hQ(&%O>JG z!z;b2chP=#;^8ZOAk!ZoUMs4q*1Gh6`0ydesFiZ~>uVcAq;3Q@gFcbbGcl_#r&r6TKE4xo3Ze-*Ncl3Srp7eP`JPD?yksZ zUnzLY)ZlX<149+Yo@@i=ju(cEHMlrdt25I-wWJ`R@R1NV$BCo&kafG}Z*Z1U)FAPT zLG{@1I8yT-eKK2p+l^4}pHIU1bw!-rWo% z!##)lF3F@LOt8$S(fE6I)W1&+S@*QztFxAz9a(j5xvD~({hh*u_MAyiAkR4UWMmoO z3^c(kSXhw6;l(f~=<;9attLNR1LCQ^QdJZ0yt#!TbE;ifp^ zF2k1@UxuML1Z%}?$R&JQWO)#${**aLu2i=}5P9v9kSUg;&rC(DbZhw~h6)S$Q$qb1 z`{YOPSjI)KY82IX=I*sd7a94^hz6fWa&TSeYrSggZ(`ncyF_s`f>=Sfda4oyU>uMg z4H;RmPKjQY&lQ{67kU2oQ-^f-AA@|Z!1IQDj37_=bLE7#SYao3^URB8don;5^G%|W zCvM0?x)D0;Aoo>ALCix|<+^$OQ>f%QBUP0${o$AAmN~yBO2n4zYAoaxocdl_|M;Nj zyMVg8#anI~VoeEPEY+*Vo3619x?gFjHxY1tI+OUO+>~F#r6pvD20s#dwl|MmqA%IY zjD*?GP+SS$g@n)F z^u#kU6loK3L2ed~qpp44+D{2DsCzeUW#PeFFODR=%MAAEy{vUjP<-?Ya@H$f**=Z6 z)2KX*Kxe3nn&jKNIZ-_n7r&djs!P5RCV={l+}`aQX*^QJ8K3zjh@l^o)``fBIY%BX zjw$mVOplXyN6VRRO$gl~oW2cLveg>6;~}|3eBT|ICZs>Z#N}-Xi@OKSCH>k47q`Rv zvWMh}GLE)ga;hLD7eL%=Q%~m^rxptORIf~E&c4Zw=Z=Qo18H3*wjg+JE=#dtGhwE0 z!<&`I$ z&OEHsXPcV{NqGEA8PBH#Xb)rf~$UVb;v20_T%^SnQZx9 zAMas0H#TzW&Fau=@&jS7Hfg7dd8Ec! zXl?TsG(#I5>>$u};AoH4J5VE<=e#C58*hHrELycemg<*B?n}{lRQo%;iY-asN#*R> zqmOpY2-G>BJ>V^!iY(elf&V12{xLH}1uyqpE;fBRG+tzU>tKlGIKd@bY810Qq(+DC_qSNzDVxkSd^}g$h#O)i2VC~>EeshOD@1e=Qq?NY9HO$tba%L)T&?E6j0iaSQ zA=VJk`^A^(qxsCpZQTUDCaUi*Uy7ML+aBYvn=+E}A3}89u47R87bbPX)a&2`?&EQX0z; zZyHh3$(9ykVs(MNdCca+884#Re98F>9fO845|X(y`A|1D_8Bz4yL0hef#LDn3kccG zuBhF~%Mzo^LG?nm0TSgO4;fZ#m;|uiPKKY~xJkIJba5ie%(RRpT-E#h(`bKwKEd@p zUu3)GmePoGJ6SF0jYt=bn*LV;aC{md++ z>5gaj6LrBYg-r!1TS?1~?ov?DhT)dbWU1%Hh2cF6F`SZNX0)8oX}VOi74uc_AOnzn zXeEtv=ja;d-jn?jGwFyQSw)VAyVPw3W~DIsF16m|j(wWxQqtQ)FWn{K$rdy5oVOvq zBJ}5G?D_e!VyRxDSC7m+Jv4JQf%#Ax$F31oT=+zuc?N?thnbzvSonp@+`d*qjE3<+23%!aeU zw#DtZ`ft{imb>cIb8)0eNQvt$AM*N8y)!dmD6x=xv=Ht#zk>hdrP*72j&gI5&IB~k z*Zkr0@}t$B6>{Av84A`xcB2d#ZwFJR(p#n}-(S8D5~#N;h55Lrf?^A|7t`IAyeDBz z1QnI)>%X2RTpubMx`f#NEXqJsaln!}I~j7{RB)B@e7T?qiV9dkE%W_VAKyzq-Q2ZP z1u$x%JzLYHgNRzI)BNjzb=Zpb0IoejdOtkIV^O*vt9+k+Gq&bi&TR#{Y|?V{n!lG zzt}%2!ZI;2`BiR)FL7>+ca~MjqB{K_Di;ri#=|&y4i|s9t>rmH&i^w{_BF@Lu_Oz* z-1oR;{Y=O?)cUWNc=zKh%*Y&r5IRL(X&9Hsx2lwV*i?%MksT(IcC|hf9B2;;m(6Ql z*;2Li@Nuc&1YjTy`xNPrIcS)4@RS6D24~qxm;n(fY1HXX=Jx{4d?$4i5wd?Xy+Aw8 zedk&UQ;qyS&z!?Z?1%|6IbCVdM4hoY$8x<0DqBiCgCb=HC5wj!D6m!`Xm3RhqvL%? z=8;VVHMEFSEabieH0zk%j(7KZ@roj%1P911)nd*+j3&JGqbCrkp^tWmXfjxT;~^KI zj|xAEn0P_>A6oVfkaa(Bi;uyv71oGiSS$xS_KE~};OS5}YO6|c+g4L#6V~rXzloBw ztX3i1^_(D!;RfI_CVMZ-6GJ#ec>HTcq4+2~oC|dU%q~wpOxGg0Y@r z%@~?6_FJn?6-?;!g^40Lp5qe3?D)GvbYzo#=hm~1s|WBE?LG3B=^w~-gg(}yLv;xtxNw*6U^IxWHihuhF>R9& ze}w%Rrpx~f1Hw46uviD(eW?IK1Fs;~cZE6&T1mVK zInzpvYxIsL3>?H-w;N`Rl*?;1pe<*^P;ly4!9KJoUg)NYUCmX%$ho`uRSxp$;0J*m zL!tohbD3)Oa(4_Yt~+7XIlr@sm){ZUY!|=YIHpIw{Qj$15=}FyW69f8F@yFwLBt`rXa`p*eN?S3l1uR;?`N|#f}3Rd-te91oeqInI#PoO2X_r3Uu;%L;;0`h(l!Y%B8*oRRIqI)Cv*cr#EEZCE zH;Bkfbipw1jHi?HhQ2zI6l(u$D?jIZa91a`L@K=^p*NTO5p@s@y!f@HsQj?wR9xNN zOi%dYMtX6I>J*Ho_o5*Xxc)m@m<=ygYAzAt(}X#xW8uR z{ImS&?~hS-wt3{N&_D$g~S|qB8RnH;wNO5+*&A8T$99Fyb{shgovb zM1Z3ndVK}bL<$YE@!>@zbkMVqcqv|k&$TbJ$-~`&$n}9c8S}($r<($)5Y%s~8rPLx zGW0RPPihfr%(d+SC`}Q?^ytuABRuh zwK~vL$i5T2au`DMc>n6j9Gx>>_G97oYd!K7n`*p`^TXL?_q)-NUngEHOTBN65&qBJ z_eS3o&+2}x)#YDd_r1#JTjk@J`N8{v?Hix)@@yyu?h%GlboVF6tUq95wiCjOx5-^%GZ zCJ*v(m+2reFe&` z-_u-kwCuN87lo17SGx7gyE}R67SFJvG`N}p>FGZQQOe`bKf=I38egT!e5$H@p<~DU zLEzyNld(w41LM-qbxAy2`JxqTx(MCp1cQX7y?&O!7GsMCt0n9`ett{Yed||am|`MX zSa;1TCoj0t9nc=0z#dEDuy?ChdyDA2lK8OdV=#|}fxWgcDTjSAUn%5}s46b& zP_jFwxYBB`F_v^JsoFq;xNJzfa6?WrzD`G|o8M5N9}Z;!-|x+n*cZ=tGcS#1Heuhf z=9wIT8?@>h#KMIe zQ5oQZGy?avj`|P-2OUF&bqQRuwSuoif0jI%-s#v-6O*VD@w>=dBiZ*(mA&3qz_=CD zz@hQwitrn(d(Zd)t{b<$u4}Pkm!u*T&2SgiHpXi@e3x?c?$i%7yl8>iGBuGsWzlr) zjrPc;sPkUA62693)RzqPg4AEGGQRuFhMZA@dEKv!v^bK#GhbZAkhOoNlUu=#ta%;B z=bP2?r1TX}%!wpf^;qPizlKb!(cS`K`jKh8$6tzNcu?!BO!JM&%dsE=0#==>E_9I7 z=zMxeHmI{OQ>iZ^)gYw$bmX7g$Sx=v$g-yIC)Yt6T5Lhqz}x$whp#*OF=KKE(%Dqa z9+EX@HsLCfZVL++=DvB#z&Y>LCoJIRE+ZQ~ehST*`Jl^qoiDm4&!{E~C3Zho$e-%! z&ogaO?9w07dW&vQo!)3t?fs-!NSRW9L*_MymwY0#Co~TDx;!UR@Q+5+O1t=-y#Rz) zo!_3LA1c56?r!q|(0hC0)m^q+t4N4M&k&CZ-P1uA_7XDA;zhj=C`YG0_`*;B>vUgB zbK^BZJ!8V!EQE^}=kyB|`8V$brU^}CPADk-MtRmg3$al-lF9QRs#pUc#JYS~A@T;_cy0xsU4q~|ay1P52Q(C&kpu0mtkZ$Sjl#-P0kY033gMf6yqPrXJ6u0hu#`)cG&ludSqrVtzcLyNs55EW)-P_7=$7LUACbkZ2S4t@>vFK=D>vo{+H?2QEyv zb!Kj%Qn6erxhaZ-TrINH42*JDafJRUJhZdiOY-aMYvc!;QCkUPV&0v~{H>v&g`c*z z@kfWPw4mo<-2ZMyML7T;Mg1WK_Pv_5ym&tFx;wy|+x7=lF}lowv(&)4HNFfRlE6~Es8KHE37@8xyAsY46R zx}qa_3huyy;YOYt{QSOzL4fOfIm_8K=0VH0ORJ_x3-tixY?t2~BCcjpwMSmx+<3fd z_Ut?v9)&tt{`&D_nj^HHCChMeaz*du)FDZauL`?*b2eSM>{vmWyzBdwB1{29!Gdwu zk9XhThqd8FOZ&HzIQOsvy|hu6?iD3qPi}W}k8UlB6QjhljyG@7q}345!F<;rKVH6RFNaA z+HJh*`-0b%JC3$MXkzb$ZiZ^4^k{CW_0r4CX^yWN3+IOIJ6Thuk|T#O+h@-y$$nn%5!Q(!>c*~}JVC?2T&v#|3)SXVtL*OuzdD;i_1+lzfR!>)m=(~;I6 z#cFyt;eYu!UO~Vi;zNQu(mPy|T|0Eb9?U$z06JyH>i~`%Z&?faUJIr-SLJ1V7$i;? zJSfc~QAIT*EYhZ`=9S3e)|z8ej)CVQe)OX=H})Y5(`W0v(IOQjPRm(nAQzu*{rxS} z-+@kiAu*%1m{A?xK!CtLHC2lFK!Xne@PjmWy4jcRJqPgc_O1}8(J2eq7@6$_3YG9C z!V~c2rAt9WK_dmpSif-EalygxgK7LwO8K%qQNla7kJgJ@TYo$9L>5(-WmGTZFC5`I z%xYvg$ekxJ@GcV*8ciSU$s~Jof!q@c80t*s+C8378?ag=|IctjDs4bi1OJ8A?}n)N zISBWg%I7)% z2IWsm%e~MWw^t?X5xPNj{){I&jCfdZvq{xeHzK;xdp9OmQ#wrH;Roxe2{@QrGu0-h3wUHkpmG z!o%7La}m}mWEckR_)V*76)(XV&Q{^JT9<3rfhr1=l*mMAX)9a<*6)$N)c?N+YF_vi z@Yk{DqeBJkN!R1u!Ck2uR?**BBdd;QJ0qH`^ywjTX779+u2)9kt{0jaB^l zYXL)}7Z@4np-$q($CrM-c2}|ImMPQ}43tE-5A@-6rt#~RIYUKgg*sIxXcTe!!*3I9I0XqRrLcOAx*$!6YU2 zCxIgE4z6)KUKoW2y5XHHebahI40`+ZHeYb-OU}qrx3|mUTXm31ha@O1M!(w{e#1<5ed7Mk!MW5sx>&g>L7iTlRbM!+S6c z>i*hheEW5mKBrZ*?>k|f^+RWCH;m?4y)Fx-ft8=v=y!)RNcGt}Tmsw$FRkX6qpFB^ zhHmsN8Pp;>D~;d8eEAXrNA^*+rlVArrTH%@(mXUw6O0{18&}^~fw6ZYEH2~kD8XVi zIEi>VEEX8;LnFg410r1oqlI$d0@xO9o~q9J#Yc>ch~;?c?NNN z(P5b3_o>_~x9+g{whO)>wyow+h60{lzkNI$oPh4I&9&8TiKZhlGOg2WseiGq(T#|_ zK(#|d0(A`!Gae^TZ1<| zEE<|e_83~3uZhHkOS}&~=_y-V9VaQ6v{fL(Cchs|4c=66VVM61H|Qz`;X#f^p>^i< zCKn-KEI4$F2Lhy=)}4b28u8KA4u4gm^RT~pdeRjDM6Bx19b3*{>0q;BhmNLP8o9M5 zY*o9!p{C2JLb#rONr|>OC-f@)Frog|(hF@zPBX$}VnAQJ_@>^XpKzg|W`S?IrX=+Z za(g|<7}=*uylTK@^?5r-*?hS7UE@p;o0l;Hlj<{&0-4jM*nhaNmNyuGv+@DoBlZg%_8-p&j zW^>^G4;)-Ux6noMI~4F<5>Xz>_x}Cvc_v1vrP5%MR*?IaleYj3O|snD*z@-9;zWN! zY=BOR8Blxn#e11ed(Cb@x);C+Ecflx1t!G%l2CXRSv^O#(neZHIOr$@bG}~(*FV>K zQBbDN1WC3p5De2w>Iik>w;9W3zIGUljMVOCNocs;f|YdsnX&LQ#ABBwoXrb%7~9bp z{T_FZd!Za%=W=E%Xz(XvG!2+Iz#VKsI*oQCq%ghxm04mHu*IP2&KdS08Cknv*tU`Z zFo2{41R*FysucYEMEkRX0RxGGUg&*VWICLLfBfjL%XA_lvLfmEWg8XCB5%zWo<%Uk zODMb00o`T&qAf>W6KwUz`vQEY?xE4Cecbe7LU#MQ$QGaA$}1}mmg(y%gTx7!A`|N3 z*C!K^=n1A>SBbyVzoybeFsx>i&-jLO+<7Q=HmgOBhCC?xXv*?+-%o}P^Gkp*5FAc} zjBQRzELJEsDC!_jDk|9AAFjo8Epx4xe6G%?1XahgFaK>aAWy_0C#NMJS${Kp+xe}Z z!FCkGsumZam&l_jGLbW9D7P&XM{gxJF>vkb7>gR|KL^AP91ue9>Gbmt0;$12^ncQ6 zKv!j$`%g_Cc5ZZ}9 zXC3cn(1K7TwU$!6=kJw;Zp@Gb?j7Ke$sPzD30rQ5Ri6|CwERmV=n)$)Ek>l9uXbzWAF-)l4<@!;+G@hspRbq zq^(7ZX>%M8dRAsG&y(3 z<>-&R9-Vni2Cvjfl{y0>kbBe$6(yTahqdbWYm?zoQKhO(qA2O<`Q(OzV2w(iLGVGi zrZ)%&{)@Uj{aGL9=j!!JKvU4B+tQs%h$V=NKXiul^60=+;oG1ia*}-Cg^+8hfnl*K z?``WN2&H)Xdj#F(x811ViTWx^%A*lAz0Ce-3OWaHu*zx5iKnbS`LOV#01Jyv&{4GCW1}mY3C@+8$^C#mER1Cvgs)qA#oh%E$ zh<0<6rKF_%QN9#rHhU%-$D{#?fPer%b>Z^fe%VnUZg%tXC5U$3`a!zTC>+${0k;BR zBkG;@39aTU>iR1t^oM_gfKN;yzI?e`sqc*>p{se10O{_4T+EJLeaWay7bWTkyFARl zOY!0bWKSeXPokb@#62I+qHT%Vo#L=P-%*k7VYB#n zrlAMEJycj}zI1m=)dErdx?Tc~_nUa+tZEEc*`|pKADk}?>B@4TXC|xKp1HPq7QAq& zFkft^r-ujGwAbP;LdNVvxsD!*<;&I|osHA+J2C*c(C+Ip9oy!&1j@VPa6Vry@Ur?# zK^rjSQE9?t3c`=!MBSk)9ULRennTIIP!It2ubCGseSb%e+>~4yfYG_1jneYEaYG6aWBW-A~&pJsw*7ZQcUcD?tj|Lp(89m>nZiGeREntGnfV zapN0rAucSx1Ac|g*_N&Q%{FCDzUk4fzhL!HO5G0yQzvit(X8v~3Ii;m$2%lxkGT(n zKH8gA=?epyn?reYruYJH-8ZKH8%J{U$OAC|+CcsD+-R1RhCejS z>Lo`ayXUSa;Hu3``bhSM;q{4?JJ0tFyxcz9dhTEqAKU|{mUyepzD?IMqe%>yVSR_C z@vR>MeI8{NS;q%r5GS;)#8CrkzDL7*m3Nnh3Op4S?Gz3!AVk!At>D(l^KWm=K252( zH-mU#orR*NliqgG`e!ZtFz?XrtYY5-L06kOz)-aFUERwYglFgx9wQhO8P%CjK$bUi z6K6|DbtW(`0W;%@6UsR>n^SdeJ$oH*^MuhGgQ1Y=NSz7#Wbzi7A(A9)5c9ds)wrDF zW%K?QQ{H-w^LD2eRnUt_uQQAyR03a)$6K;7Ml~q_3PH@&A(sxm&*wDrwjU9W3V$8% z0%rZRuPITk?(@u#Adyv%bbqc+^3$i68-rh>#KUkix15(U&wOFr(YS*;Gduzjje4?r z<%BgN$A`7cRmvmR$lSeOaG0(tHagWSH1US+%?7;SFd>%@mw%{opnq)MiX?F-?z>!y z;_!pboU9r-S&AA=8z953)(T)Zl7D|`CA~Q{{vD{d%)^m=o#t+rjZw{pm3^BYUJszk zY?r-D?d_;uU;@Tc+T0Je7eG936)I^HeRzChIZOWS9g*_koEquQ==Qh*Pz>!V(Jmxx zA&s8nqy0oU?`o=3ZT$$%ZN2DA=6Qu6d{=>D-FzOoeQ$r*e5v2&EmWXd$}pV9A5`9| zTZSYnCGxP5LUr7Qb#VD*vJw-3AKPyXF6&>c1SvVltpsDRuB`--0b<3v`m=D{jtCa4 zmdq)7u3IMAB^yZ^k@`cvD}tE5&S+{Qx7PCdoB)?BYB~T317w|X=V=Gj{eJ*}x}NWp zY=R^Tt#`fvB6Hx7>~4c7PP-Di?_Kf{cR(bG_)Ontj3Sp{IrBwgyq8WACVjE+d~UeL zCL>Z{Yu|_D1m51`HHvtFt@A2#sV^DZX6 z$RsWcubutg2dPDHYn)5C;lkaIJTk>oo7g?5a%aXDcWkH*(KX z`RH1V!|wQEe&nN#6)TI%zYet-Zn;-I=d+yb0rwpmO_h;-^SqbJ$pt;?knvUsv%)ml zt(#L*CutcO8NFF)ha)mtXh3;26hICM*cOnSkc<07h=#xWq*4TWMx5_AEod~e|GN^? zf67XA$zgROEa%p^zc`7SGn%~pXgk8H<>6b#D5S22j}p$5Hpc<>=jO$z>Dzj;M=^bg|s7s{Jpy?e2%13A}+F?>0p z8C2(m33OpVIc|(RVz)jxBL?9yuRfD^NF3N5Aa9=D7z)1M<9I`!h-%2Kh6+~7v#Bp& zvm&lU!s%$mqRra6*r&T*Pi#VBBu|W7`{17{O6Dir9O1F>Fvy|9RF1(MZHmJZeyYek-ZS3BJI<>5X?x0JBo^N#&-ZIH5d@PYEWtr^CSe^bI73kanE)L@o)5UqUe zM*`HPJx>F#pFEbDVa!^!tM`|*RJ77AS87%&#i|fty0Ym4IKmJ0MDYwNZFAPGA$^~P zJ8sTXlr2js!GJ+r=^^9(SbyMJf7s&2?zr=QZ=n&5wPjkbZYV!vSaN^X`Kw&Uqrpge zvmMd%=uK$oBe=QGK&t?6<99qn3>~MDD(kR*&l7}>hg&rI^IiLbQf~ccj~jFxFA0P2 zn3mBZ6j~obODHAV?yjFFFn^Bf^iECd=`U{yT^>lZ{nU$&I%I3z)IO(OtN_(R`%dfw z?26mvYXAMEeSO(vt8j;GTI^v>0hyNs2u&Ca!rb#|0^{i&!CBUR3xd3`8793Gm&^Em zUTGXdKon-ERd;e(B`#*;Fv+wi?B-&G=Ds)gj62^>DNQTl%)d;V4|O1cxjPucTL08! zr9NGk$cYmCCebqxa1IRnFjuO?8Z~r?Vq#*ZD~(Cuj)TZN8H zIU5sapa_uOzsF(jC)-1OyyvOx?67fJ6p+}T=`6>?6)>2Bg}ZoHcH32gR*Sy)zro@i z)<@^QMu}@8$YA z*ip|!WO1j~&L!Jbhx1E|k93pP6hlx9+ElwZ2lvU+b8;`wK3SlPAtowU>7EyLf!Wkr zbRy|h$<{Gj^2n^ey;=ZT@^ag=yO%jA>3R)VUg=zs`gF8;n-p>lg#K`!=4pt>DaBaM z*OAD*a7tG+CphHc~g?5vTg;;gNKmT6eFEPz9`CtgNim zZ>BeXbGu~i?d`R3K#gz@P`SO_jQJ&Ys9TKWte1;!bQkxRR`$VUe3(A;^hLteoBWO) zHJUZQdRXN1-hQaIUP1)|tH`r63-uav=EqK_hbH|-1Dla&bz>Ig6em%_;0F!P+M{;A z`R}V?pw}X#mpjG5SG%m9#IR|J>F%*wg3}w;2Fx;9-l4`LK++`jF#IH zm6c9$do@g%RzKZc*OAK3;?cb zrT2#x+>I70VO-xH(g|9p&$pbsVa+_s6mN=B5)Yyzr-fV3gI_|_cE9;?&>#a*s#mh1hyuiw5Ardkz-Li0K=r z0$IK1hilp~#RyVKg-V>YuYLYt0fyJvZ%U%lc;tqaV!Y?K?2||`+BuQTw-&}_&;+~e zW6hnmJ6bgih}>SiE>;Qix}~=?@pxsq^AqIfm0o8yO8ofX1_TJ@;3YyCGy>y+1j)JD zsFmX$vbDw%^>3k%&MUsf1tN(oB%}FqtWC$?=cd1P;so1%LYcOd1Hx>pOU=G`Cle7; zLhRuEd#%-o^II1Q_nXg`%dI)eZ|`KUZUAIg-Z;;)VbQaM|Ec0DpsUdgxBF=8;b_6F z0Sned;|t>@i$L3KT&Ib4cDtiYzAWA5p8s8NeQ?+PqD{K%g`TywXeHGmhTCn}Vy-7r zlqQrT49#@YpXD$cA*u7ik(`55D1DAZeFE{KeMq3~)97<0^2b|iQs!z7S#B17j1$5U z!Jy~?U#>8Z(%Ypu>ulBAi}~7BYjV?`_bS3?+_?7>VbmYyUW@3Ow?j(oFN9UkS#K)* z3^n?G6ihu=GK^qhzrN^ZYkpuoLVoLq=&P(aZasiM{gUf4n#UqA zG+XMpYu$dK@f421gu`&DP={3mQ@ZOF=mNics#JXD!+10nF*58H0S?2Fz0TGTigaz_ zl2>f+MTT3>=@^6rOoIYfm+O|Y#&*l?w}jXYAcZ%LH|n!u^L0JHNPpAl(rTH){!w1t z@$H)qs}3RUq8FJD0YUI|U6e5T3-q{HB@J-=jK&#vZuhVfbNp?0mxP~WK7n$Tg`cEV z?j0m>70bQn$FK1{CaZ#2E+X*eN`!(mh+xO}GG7xMCwzBku{YJW{0XlDhZ+~;3Nn5} zeYQuhby9NkV>rsAip%`xuFF;?O#@B{@M(!FD6CuSnaXvS%LO#S_}<<7UwMt@mSFc8 z9~H&T|Ecipy3#2Ed9uO5L$OkX-faFq)xA3e{H2Bsc4ySJR53?E6VHK$hI47@qlrAT z1ByiMD){RhgJXRK=RR>#B~GlR5&pdmio+j!FVbCPj=~x15-y(`&3lj67r$XH-!RV& zoR~@~Ia~Zjz@bcf!T|+)R8BWTruu;+B6@C1{6<{9N{JR)&$is#-eKeIg9=yJ^0sA( zHvVmLmE*3ot0HNb?+Y|TyUHJUkA&$Os!1O2H)TOcRvI(a2;ahR+wttENwC@advZFD*$#X6Na6Z6TYWb$4;H$pRS`_@@iFz z^xV~vLx!9z(TGG7O6q9+U{D+It8s0mLsGR4+lo6HAg~-X@_Ii^d@y7(MN}0}d~;_{ zM>YNl%Md4I?4Ta1&~b+x^g)Sj*~IBH`RF(RoA%IB+~cP(4bVt_xW2K#iO|*P7kR?_Z&8(YWPwjsUqPfKps_s1S%jLQ z&^#(|tr%6XJrcHQGyaGCDmD4xQ)8tyf<|!b@QsX8YwBGlpfwT}Y&$zR}}jhXy_}~2^%}zJk=SuYDA$GxypOY|Q{7G1ri6&ww&-k`~t zAw)-u6^P2mQ9>%hY?D*I3-vzJm5_kmCV|<`yv%aQL6U%xNdCIYDoE~+t@(;d@X`KY zZ*SPjsj8|k@0qE)d+gpK$bK`8f1u8^#lGxg6q_R{w&Zh*jIq4;7h=g~B66?k7=S07 z4UiQ0c^H&kP*S){yBiO=**-9HZc^~@@WjcaEi_(E4g|5`xo3`ZUGlxPe1Qp$i69K2 zK5$5gpVAfo5<^uZ!Lj3aFnX~+7i!L}oRLw&(4YJ;QKTYTXQk7H6*iFgh$)tKA{ri# zn!77IxFwVDZ9aN%7$8XhMs6x(-T+Bp2|D`BY-Id=;*b&Di1VrVcV`)K{i3I_(Rz>~z})urD|2 z#S_s}3d$17`9yWc_#tlb7P|(yba_t`89!Bj3g4*7t}xSL7ZhE5xX;I5d`>J#6W4Wb zBb}2oYxbFWuJsW*+s)soOIuhV>|1AnT!%uoVu`t^th`w&Fia_PWMgLJSKAuvGwij5 zEAk7_a4b2kqX~^|_k2+GQEHhM+|)o~09$yWwuZ7K`J9hp^tem8HY+lz+EpoPZW zctK?jS=Y+smuec(N)FMKB4^K6AMo_rJRUvU1GsNe_MTza%O- z4$Rp;rAEEs%B;uo5g}@>R#Lh7ljc&Dor|-{AbN=ZS$*n8VsqY36v)ERCG;$c)3ur& z^f}8Mn^~{H!RH88ulbXT`Uc=8`a}ucpzAbVbO8xO3FG*olqrMGz@aQdsEN?LCX`uj ztDmg2`1tj&m^Q??1`7$hKGQZ7DgIncB~Qe%? z%X{ZW0XZ>@QYk?q)Pz>7T8eZ3oSHhXn8QjoIwgh3JoY8ZoB7!1y)sxT+?RYGWureo zmr3~v@@TwTmF&BuEIjSSQ1MMo7m|;q5nSi2r5oGKh{CRIOyhS>844m``&wR6S)$Vj z5r)UA~r-QYd&Z7+(js zo~gHov_4n?MHf#+6`%qT)|u(VaAeHdwpi@AIboxLp!Mry*HIuGop=3$1+ErW5#C@Lf4X_W%lQ2q-IWzi7tpzFZACLM(ViD~li!61=9Mx; z;;bEJt>NES2IVm^a>6pW@n*f@O`Z%DTY>Czx%vq~%L+2MVPK`spEj4{7?4Q=bZK@^ z(x^%?rNfba4mJa{ri8D*yjTe4HZ-3GM~B-bZVdbMoH&cyD=4n1pky!ju0$U>Aq<3M z2ZMs2geojCfM-=T^re7o`}g0b6*Kh~+Chhq-oS+> z(GQTu@+5R|r@=+|G$mp4afe5LR?mG!RrAK)PRuG%FvmX1_4M6*8lTe7(h=v=yfYYP zKMOI+aA+OFZ-!an&m|}6Gk?e`-23dL2tOQ&+rA5XID*PDpTOKlrUD;(dct3?A{|S5 zzg|;VO}85`d-#$Auxhq-QU(Wx#m*BU^bSiHtXRFE=8RX;!wDSFyv(++YlO+g1wi!r${7?yF=V3*}rt`+23iK}X_+}^>0CRBI zTCP8ul?#vBVst$Jl}~CaBi2qXT_6I3N@$A6mru0J#7aH+r%Z-uuC$Dt=TCQ3Q|txY zsaj?Fm|gr!;Dpnf(mU7j(vFG~bKrTC9jFj79U%9A#ld!+=f(dc&Mh1$1fjBcCDIWq|DM zOITV!#|5q#E!1he$5j=gM;ANjPL-!A!kXZjl-L7PpC-QS{VyjSY)f2JN?MLyDhx8m{T z8J0feTWyar?2rk*nqL+*UCBNosuMct-v{*lpCQ@dg58aPhui-C1561l zhN;)y_U1VAKW}S;{x!yC4VdGI~Lx11!>vg`VFnmiezbEp~)1X)0 zzciF~s;9fzf5u~b8t$6q&$OSO?v;f6wMCn&XKUgd|DD~h;f9?d{w@-DT7(5t|JTXm z<&%*m|62H;+5H;Mt_A5oD{h0fi+Nfzi1+^L$Nw_BU&Ed1{Qc>#_e6(1t$Cz-yC=xx zpH2P!05DwYA>_XUA+Y&qQ~z4CD~qhK5a)kq_j`-+{yQy%|KGOQHN6oDwnd9HjWN-` zv6!P)7xDX9bxgCl-fjkeY!*KydIF?2c= z0oVJ_1tTxVcsg&n!9Gnmk z)0Btqv3<$WtP74S>^EJl?bmEpAv_(VeCD@itf09qHtKva6f%-t2;%@@o;iT>^EIKd$etO#En9 zSNFSa7qkRBf(|7+MmR8J`f9Jv(Rc>6*8)u0FJ|q3S z%kPn~ZiPjf7uREw-WSi%qDUt$wgp0wPCK-TH>uWHSq`T1;hgXCNWFd?x?|Cf@~=pS zJY6l<9bGf^Nu===!Vf#Le$cM( zt4V~e8?Z?wXN_jRqPt+fm0Bu%E(vEH=Mh=TVQn<2$(q^#4y38cV#`s2o(*RT<3~$9 zLyg7qz0(LMNw8!MH8MqNYt}~$#eV%gx0uDo;Z=7OlGW;&G0#VVWgmChLi{;K?79Pf z1I4dV__P`(WlN6V&l_cXH&a8)KLt>{9L5zlxemJ|nhNh2%)Df`3PH1a*z`9@qx!MD zZ}wJwgINIV5T2o?+X=>5U-$ELO89vN&#q-V2!|JFB?U#7kEJ&%l|ER;XK{PD)V_*# zYjTxc6O|FEO^PuAs%Js++zO|)vPX|!OWAEMkHUQKR#XC=SlvU>& zxsPZ3%~D=rOS!GxjLEIJOS$)3iONHAqi>4lSybj|nBP65dG6edwxk!i=*$Hj)cpLZ zyl?Adt$VLH^ugZu?t?aD-W_$k=ugBGN74EV`DXHr$}C>byPD{&PA)yfVXLMh9Plm; z+?pPgsF2&02QPn~;njR99{4@k^|tf&fS(=F(k6tv;Ab}dhWEnk^N4t_zQ;W0sc<({ z`1n|eo@KbNkpG$!vgbai?xl*v>rj-7&*Z|o_!bw*xZt0MEr(Y6a~RJ4f=+F5K4?F_ z$~}u!dN0R!bUtOYa&QnCLnYm+Y#$>R_>V;r0f^M#`J{X8&C3d3%F4o@SV|+V%|*oC zgG;@6Kc-`Z=lS(hPfjBj_|OUq?He-$+QbrXVA>ow}s)CfpWi&`Sj$_LJ@IF+%Z6=-cE670eg< zqW>IdX$YfLAkb1RXk8=|>bT{~@+bGY`bo;6x|>e=lnWq8h(wsQna-hMX@EN9mW%xm@;H6dxyrYoBzbe$Cx#yR1naU2t7&~g?&mH^M7&LhidLYY@Qr^@Z=i02B2sKmO z-rVSqr0<(e6ft*nbe#TlUv2+moLw;BpWK=JjSs*9buZz;#B(#Prv(d_H3TzI8AK6R z6DR-t6zD@j+EIreFX+(aoD#N@6GP|nVaa8XfYkTdqYE|lta&W`xh?7;W~A)9ba*tL zcxvrBIa4%tI3X%g*;~bv?ad7TOsQOT;5M!dLrJe7ELG?+NWa?Ttv7-W#e0Vtvro_1 zbi8kR$!2DPkb1Ahu=Xk!{PS}TRKWI+vjXwie_f=9dXGp2|PxQceT0wa zkLUx@^oDHMlIdSx1^H<`53d)n<9_m)WTMH^#bWBwKl>t}QMoTqxmUEH=t$UEs#(L3 z#JO!zZ8?Y0*Vp$&0P*nqpR=EM@@lRbxlT`g$!QO{nP0yDn4P?&Y${OxF^+h)S~X7H zyWqIZ&IP;BEmoiRJ1WWS%HWr(dap;I3@;Sr_s`{TLlS-R{qPL4G%ccCMWeNLwe7Mp zgj*lsMs1xstfB@xLd|Fyt(x_OA*-0Q3EJ3qdk{P=R<^f8fMyP4k{g19#e3E_9)xpz)z*5{pWHgVPTm(^TFM0ZEiy;#c#;wzp6J1H zbq0pjRotJDQ0M1Sve0+OirZ-YT{bz?(`-*svdEWrc0#{?rMlWkIkdUELika6L_vXe zv^8o}Z2w6C+EoaSKb340aeoSK#atq8g3l)Ck2TSC{Jr9xOYg;Net!Nn0No~*$RcR7 zJGt-hkrE)PdRt@u%F$M|D4PnAOfWS6T}sEpw$hbc(zC{CbpfjhL^;hGF%Se)_3e^& z19m_Zu}{xpGduw|a?HDwyxlpE5mIbDkmC6{z?Ju`#atNyrx`KCqs(8ZyMT;!Sw=hS zD#ib-;09-ux{V0cskZ)Zncjr>5$Te0?JUv&pd9+LM9>45L$*02t?*Gp!6Uw&;?HrN zKDmiJ!f$lH;Q}F$Us@UokQla5j+UM(3K$a)S{*LYcvV#;UO1X<>(&nGvNz)gfF?~~ zK=U6|slb4n+C_FrX0$#-R8jLyG)+;`cJC7%>35o7@j*)!l=SOU1KA%q613ErrstIf z8@oQWyS~w}$$5f2_6hNKvZ%ZqB`~w4NF6mn#1vlLR&YW(zmKIC;`c>t<8-q{9c{Un z2Gj{mx^PtIOw}gPs4c~Q_33M{!{S_%)7f~9ye}MWD>-joHn;@#rfNlH@r(N z5m~}_(MG;^tG%jMH$R>eHxb67+7O`e>|Iw=Eb4h;uZ$kAdbnv383=B-oKrubM!Xk& zSbh73l>YbLG=ZPC#;Y&C{$||XnKj(w)+x*5cKFrn*Bu)}yX+n}OsN8{gyZ>g-^skR zzrVu(~o1;Cr&E(Otr6NRj zC&@yNrwWcyO@@*~b(?RDfGj~0k2M5pe7U}6bWl*I{hHJY87&!TOx%--4gDYp6#)&@ zWIRzRb|1$WOU88{mZbn%bs3l=5v)z`(94t?t#0DU<0<#8Yn?-Dqv_mj_q_{9Efe@B zkaP+8tuHX&ZI-0<^B*erWJ#X>$dV*7kju0L0FPJ8eyYJCA)<{=WK>P|rd7TIm7-Ao z=lfw(4Nf>7IWPHEb`qG6<|{>R%^ir%1;H#VEWu&pa`-jZuTSyF1q2`?h9U1qHi7eBQu-b{Z}mZu*@aH~yJ9L-jO7Ub}q= zQi<+Nv2VUfQ+Y4H@3jVF@pN{{C@F4QbR!z7{=k{{!1Rkfurhnh6aG%p;6L503xYr` zc7{EvOl5^mRyu>SR7(kMZ2N*vH(3ow(mj$mOko4j9*Iee$Xowl0d8L>vNQG;&IOV1 zuL5ux$ihO(QH~;2W^91$NKjPP7)x9#LhS8&|0_p(pw|_RUi34xGmah_ww;rNnKJRO z7&kDiK`}!4!bV~t)a)ji2XWKBt1}5Y6&bY$h<+(F6pRDD^EX++I237P!laTM4~?i* z9NaN8lW_Sq=`_|}t%i*p0iA+|gGsgm`Tu4Ike=?4RlCDV-rF|Lr)2ede|-Di%+d>* zzsk4`^64RY zy|Q;VyYy0jJS%Sm^{14G9a26r&%Z_+m{A4I)2~bUGU{3X4*e_hg7mcERx5EU8-K3X z(*h=+Y!HZR6YH}3AG`FFsL`kRJ&n{C^LNHn=z3YuiaOfMcIW2lLN#Eq0Ccq$0mM|n z6w9@@jy597X)o!pvEwXzmLvZNH~v#D9FDO%Vr3DW`0#k**m_sZ+n|!9lg2%Th3*%?D8m-4hIcypbLOgiz5?Z zKq|I&roXoU&-(I)27r2S)8>C^oU`rEqd78fa&mKX z=XhK;-cHjz_t~S7&CIkxM8#D_szbtCuCmEA^8&yZ*m||dFkbg6clRYumICp ziXtb=ABoVFOD-_5h}_iy04YS7P9eLI{^w-G%Dj2qdi3j&^nlF<$6)tEL4WrL*9N0s zw(5m=5TPKeo15Fuay`8LS&!gvMy=ngOciFGzC=WiWC-Ks%iafy2St*zu*m)!#~!U> z{mRwcb!T*|3P53+*CjCfb^5{4)w*)*t*)Y9ZlDvNje>LO)zVr|0u>ICKY_a*t;%Ug-Ox+*p2t<=veg2N@qkm*)gc)Qw{o* zq|=^=Z)+?1kuIZJ*3oFTAsHrk6kz=8>I$*B-(?lpn|lq1vKsl zccfcQr=w(QYWlN4fu!}(6BX!|z_rcWa#2(SC~1mA5wK|1#&U(bAArGn05`>E<#d$J z<%D`3jkGHQhmm^ZqVIEkgDc1Dw<)lRUXMcxO!wwwzLN_&}kcC=!Hh%ic2OD}3=VNo0rIL<|3 zeYMyuyb6RCuT0$$z?I&Z`>iD}Hs2dG^wGr*>B!}cv0S=Z1HXzd+FGroK*FPae?-_`B6=yE zAMb(y{v?=1N1`%+?BclkgOUMjOex3N`gfL>nzy+$AQ1@dxdxRz@dON44jc;F0r_6j z3c{$p}!Ge$1!!_CWaDpiL2ppQme9MQs zYj)dJ-lj`k5BKA4HD1ru;@0;(_6HeHIcuWdY1IhVMAIml(c?|y0mO1!DWdqLMh<(L z=!C#AD(Q~v*2fYjS-?+whVV`1b6%(r9P$=pRuz?$dt@4a9ni*-ym}Kyp9gb&cWu+? zt}(3^3J1F*06yPYXF*9h5~#Tn(Y*g*nFY0)pX^KX3bW;k4c zB?M9K^ZfHRP-QHp|p4-J;@HBGzthyWW zJlSuP3nqS&3VW;C=4aBMZXRx9jdRslKLgV&j1FdYzp5yp!Bna#LSK)2UpW6FW7r*)9UwgybcqSee)_kCGl! z{Ec}D^T{+23UrN!DgtM)e&hIA+;hHxi_~!s{xJlrJCVNJcmP^_9apE6@F0RL3Xq26 zy`Zia&+Tf>Mv(!0@zrsUpL(n3=k%a?VjiW#&+yhuEu{rT;-fZ|McPeQL8BX}sHl`H zYTG&^d$z8^{{$*JzXO#6r@~Tj*r&bTiCfE>wzzrOIwyuZmDjHa*&4@UQkWYtg%wi9Lua5+f5kf@CPsnO#8Oe&H%G!%!CoPq*_ zRu($s6S&#!QX&XdM?x_l1n-)ai1+H_XZc+FuSGPOP_Q{zU}e;3h79>ePFh-Z#fxZJ zRS=uJ-NPMaUwlz(Z!VS$vJ$1K`9>dY;+~i3&n+b zef0~rCTTQ@iBd);R#dt4V9aRc8}!=REalwY+&6SBh5;8h=tPFfJ7KKV9qEhVUl~}L zwR}}!b9Y|m^^gL4<`&v@JDgVBz-m5S zv)kjcTgoGOj*xTalMF8oIX`-P-ovg8r!~5of1D&lo)~T6_h_hXoYJa&JLPyZ4+<_; zS7_38I5okZtL)Yc8X5KcnOZFHHOYKp+2N7}a7+5n@BuXj4MZ5fN@Ech3ZRn|;42Ci z0Ja@Q29~kde!cMB9cSJu|3cA^1OH4#d+QucfH zBh_3$nt|f&>;p4t07^(K7ZNfCr zj%GT^gpUP2f$%jQ_TOFd(qig8_qQ=;*vk+K*j*nu`hU24%dn{4E_xUcln`l95Ex3j zRHRdeRJs{jq-*F7K@bFnM!Gws8B(MM5RgvEp}QO2<1e1a=YRb_ydU4|{l;7uaORwI z-}~Ns?X}j1v{F5aq+X+c?!e}_mbA1PS}c0)H%uo5nh&S=LT=!Xc2QwBuW-CQ#oNy5 z=v$`7;y=#wV@UMr0byn1Oq`cLNHF#c& z`y8*MT2EEJEtyS9NeQU0=d1aZY$MH@E;Ux3UZ!^d%%AaDhfUqU|7rPZN&VH;?R)>` zQT6FD+ed2OS%!G@Rse5&^i=tV2I%*DO+BZvkNNeh6S^y#mc}&G+NzbOxAR^hM@3Yd z1jztso?N1$WDZYBSw9O%N@k2sR#*m`*SM?>jFAU4>DCRHPwopJZ;o-cJMdbKqknjC z*8PCGnk;KdhXTCHYYX}CHo0~QK-_>LmvJ+2zLh#)x%&f~z-NB(G)@DN6ai;6y@um& zKrzU^sr%N15cx7+){m9f!^4Q0vNR9J_MfFmivK$;o(LVnpWszDqaTB7nz%nD$jSQyt{hX5pUc@J7 ziMLLekHNE6$kAaz^h6BR?gXE2c`FeaG$2uQawjNu>IiHn;7q5;8q-KR%dg0OF)w8-rH0w zl_=W!7N6!Js{@_xh_7McJeO&Q5XIEXx7C^aM8wB9<0ag4>9Yh=Sw6QHOaNIc1fcl! zjtX(rs+Q{u|7>zst%&uO(oNt<-9PB2Tv%N6Usw>-sy2TzkS3g87sf2EV4z{)tkAwQ zUOKbE25`}N+cXWr+mJmY4%?HToUSHkW=z^Yj>*W%ibqm;0}x7)&FcW6Tto5Lr@RBm zLLu9c`$IgI8T*UvAsL*xR8;m4ab8dP->bR0zPdTv|H6wmNX{eSRAUJw4a*Y*TmM(8Bf%tnenTCi2#eWozPnhHakLlPP|ohy7$W;LGw=PN zT)nu1kI2hw-w-L|R;CjqA$rF)E%f*$=7DM7ch5zM$Q)cZy3r83|6hHg`BR*kx7p~931&b@)2M44$hX4}v{bHP*7;rK^jijbq-KkUFA7uuxprgF?cy=cH z)zA1BJwZ6_E53KC&gq!qEpFV0dd=8_&Rej(OXuIk@D-z?5*LfyJ5{B4eYc-^@eZI}Y#xiP@Y>h>a=)q52WxHpRIf&515^rdctF=)(vnhUQ0*>3}v>S>bTP&aKX*Y zc<|w6MS{bxBHlnDosdY^^(qt=BgXs6cXXDq5_I- z0nLb{KEVR`+S)+sC%L#eF#rR6euLgW+q8W4*D;;xZ<`O^>I6I-4Ur05{Ai%Oi9ro-_ct3-m`6sLnV5|hP?S=b^|8}YQl5& zi4C#QS7u^fFr`X+N?)>JmMztf|K#G0UHXsNqxX2dxPKk?8lc~~3!Ee`>ZI}U%K}l$ zu_Ay4xslu8sH>|R%e0tK=Kbzn&Yb8E`q>R`UhpV32}>ZguaMu)jB6nw6nJ?$Ef9L= z=t%}~4$rb6P&$vi$LDflWVSTjSWk~-!1YdDapvpbNXd6Fs`9-VSCrOksETf{A}O*m zI7Nlbj$NBpvgRzBAz-Ngn;5Zx&r@)%-5|^%x>3-$NKM?j#?nnAKO&@(Y>Ey`J`}L& z1@FEnRHA{*H$BM>emGPtV6tl=CI!&=fF%uU9{WuQ2Beff2EL3HCoBV0!G*>>C&dRp zc4I%?zjyx_4AAB}$mA{16Yw`B~E*_sBMC!`EIoOu3W&&hGp={|*9f z!^nf;BO_z6$VYBG_~HN!kOB>j zsLoebx>d+*9_v&|&0M=rRni)jO3c(w7i1e5041*9i0@sSRq6p!gOL2VGs|WMPb_Vr zJvb73tKG&f9bl+O0YkUi_7^eFk5wn7rIzLrxq%*>|DEJAPh+?^7A2RM+u({EI}M=H z1Cmaks+=u)9J|-Q7v@G^Z)>AVCV=kP!#&2`R2neF}0y=hG=h@ZbV#$b|&>dI3 zip?ma@HQ6~K!GU?N8d-$v#ee~kxBq^pgI&NM`AnIM6xwu*K0qZ-1)eYE{gisWM0>6 zTUiyev)$$smVtt|n?FK9nvUu3=n*~9BiYitM#9-o(LAul70F|7z2$e^H$M>C9O;-c zj!`Sj!T=H+S<>H#tu5Nj)D%|v&W|sSY#d|>Lp^}UjLc#}u5a}o&<#~xE0uzE$8kn3 z0Q~DQ`q_bWX@F54vOcY@mag>7Igd|p`SK$!Q-ci!_I(U2Wm_$Eq|w>{h(^zNQ*H4q zFWT`H5{Gw^NlvTkJ#N&jEWzEq!K@LiLp4v&S*^N9z<3pjivDB*gUXz9iG>O)GVC-y z|CgSg9U6tS9vqcc3Forit}Q;418r@zPdJfPgB>xb{Fiq*+Ajjnc5z#uypTKz+t+W# zzZ%!wpha2^oJ<4X1#lJ&2!5+VX#JLL*2Jys_?=%Zv+6Tiets;~ydQ}D>HFxhL?qh4 zyrU1@k?HF-49c~xdyhK0MafKg*$Gwvj;vG=_6j)MQSK#!!4=T%0n?|IfUA{N*7g@a z9Q5r@)F2H|Y-e%yIm#N4V8e z9TXzSa6g^@$TLrb+Kut|@)vvmchN8fkFmK@R+;Viv>aquDT!}7<3~(cOn@9sDWRl) z-;=#_zJMB9Y7lu%#*srod(ptm{1PrhP@gLJ;I1d;WI6}g7YtOJV#Qi{`~pS#eBD1Q zX~ zy{#g3*5w&Hvuuau_$LF&M(y|8Cng>kcpa!W*rueU?BASGEUv9F_L2=_CtC6nUcOUy zKkAo5q|f6Z zKz@4H2mIY{!s|c(vJl?YZG`5YCI(Q|Gl3^c`$em4BW>+L|Ggj2Q4h0y&wfDwUOG+! z$ITaDj?BHk0%`8wfz)Zh-t+h8Z}QT9MO!~Z)0_Sxd_q6`6&T>$d*_LN;{ksYY0=34 zLIsZc|M~b2R`CCM;_d%GxXrEh0Z(P*<-t0ZEW;?<)730w`2bk|dnNq)IzYwfBAeq6 zUZGf9+ZdU=zPkrxlf!$puki0awc5P2S@*WgchhT3zi!A1&%@iC)YybnafU-Cf{z=W ztcRqI>fDqq3*8k3OdPzpp$EZ-!E;-$bbW-PKE8}D6H9`9r8no9BrebI;mjMl8dVty z@yVZ9w>xN@O}!SZ8L1|~9f1{HFnh?x&E(46gxsvmZ{(Lz?`%m}hkc+`53y?((Sn&d zFCE?fv7!*H=$~<*;a_VR2yEmnwFo;Ts;fW~m>yeL(A*G4ZccD3z$%YR4(x9GZ=2MA zo8GVxl#o4pIb{1fa{!pgk!1T!LV;!<;2Sm<2;e{s7aCWF;85B6MgfzpT*Eh_rrn!gJs=|4r%@CsCQ@t?D80CgXV(p(la2taG`u+( zgaPVKilD2Ur|r!pZWoZ`KNi*ml9D&60t7XdV}4;_I4$Q(tWQO$V%O>m;AQT%KZQWQ zY3x9eXJcc-GfrfR1UTv*;$;<0IoMa9-f0_&r}?ZVKwaBg^l^tAXDlGTkApg5iRtO{ zSC`n0FMn#fT;DSZfXtaFbz`de3XkW2%Jpw--Xy)G0?ssPC=}Xo50~QAV}L^Dmz>NB zBoslwU7Fzp>jJ(*hD!K=nNS@2P4SMCO}?wc?VL$Wz%@8&v8PY}UoHTJ<>1t?3wIpr z^6v4*ux(-CSKmwGvINd{#~TkmAs=fCSNE*uqzld5Ufo1t&-*|hfO2Vh`KY5l?t{Iv zbLThzo1Yot!o=)4=)hPSOzcaNdG9*JQiXn#+x;h4hrj`tWj1L0n9J~SR#w*j^@U@0 zIyEV^R#kh=+hiD|-oD}2J&$9*b~@&t8Shmc^~R3dZ2&Tv#JA~y*>Q~xRL116uC1G1 z4@3|Kcv+Uw7f>%e+$+5_72<9*qcu4ihtJb|j40Pr;)96xxMcl6{%UWlhtTRM8btxIO%n_9YMd2tfA1I4p_7JP(;xPmc6 zq2--;ne6#Haogh-OZ6eLDjf~^v$WyL=dEv@1Hr<Yx#lLfR}R1|n_hV4E*&lgqM2uwVK7Q>$pDt}|gxC;_6o{GolVJeFiMU^_h8#5CdbZSFq9lC zy!UUn+~@y&w><962v^RjmAP&YH5G?KNXVydKpy(_WSDa2)+Y$Uwc5<9)ZWTuOc+hz z^n!T)`WkO3S_L4V$-#=hP_R5mHmX|7m0LUwz+ie|j866NNx->Et|1vE?p=B7$D?13 z#`E1a(+dX=s6#NbMw&hMA$5;z6F4lc!b{b#egkJifKR6H4Mu*WYm`zY{Was8pMs|V zloIg~cm6f7W$f>KLN*us0w7OHy+&Jvzc;!{cfPVQ%>Kg44Rm8C2(NFzY9lw_Q0w=m z=+@fWXZiNLPe^|2o`5pT*t!P;dtrLKlnIzDd5G~KY=SV9Oj>KcCB$=!eX^^Q=5DXG z-Lap1QrMScE?=8ssFZ@1f>#QlHPQy`0r{`cseHin@P)L*OHc+IAZ0E~N`QZSoBT@Z zWOMAR)r9`_p6^|fmF=PJzr*8fUrJ~ePBs%;Gn9AM2eluBe0yo~R z`V?_Ae|})!;!R<3dg?Y^@@wSVCWO2^`?ZKmU-!{Z(=W1%A z*eig1lJ?6Kk6*%e=-B2Dk;9I3K$E_O;=@^o`)j+x-~Dt}h6RvneJ$?%Zq$v__@P$(O2G(`VmNDH7Lhehpe zs?$^->9s}x#5AKjB-YdR_JbUEM}VE6jfs{IOc#C=$07lXrxbb&^q?fTAO?-37z$~` z6Lht}4DZt&oI26FH;jmha)Th=IX6l`G}ab`L#B>5uLNTxVGg(gW+lFS@F13oNA8$t zZ!hv63~|BbfR^xoP{b0;lvQ;1q7V0MISe>1&n6o+kDpApwk|AH$y8bh73*qxRWNhg zkUxDb0bAb*r&m-2umQ-P*VsVov$u2IfmjBa`psv#vlOh>#67zc<-Fv;NLl~_o`gF_ z;#a=ASMg5J;}|7^QZND#r&HXZ=>bkZ*0c5Z0V>&dyVjdWzP_Swl8$-)0kSqJdm({d zqXh)}ryLQ=*{EHLxrtj5Gxf;>o zd61<(jo{f7kgLO2={w43=MRDNQ9j`ZJ_`ha;Nqh=Dx9VWJw|M!4ZKdZc~Q|H@Syg5 z9OM2uT8}HBDvQCZ_PrCKMYFZe{$BF?xKQ;O%?)mRn zW?iC%##&k?pdnZTX3Ykk5?`*6H6O`TRkWRiQ`BT>_#6%V_+o#xj7L1xLJ8>gX`H^H z#O@7)g_<+i-3Fdcc6H|yA=A=2l`7xKrU-i~oCxK7)WLI?3su`2`wO=uiL$s_Hy@h# z8@S9S={nYtTpN)1p_HTF|NDSrEY z*Jmv19`}SjPsO#g>Wj8|!V|@8@$my7x)ie+I-yaO!5`H%9>xd&?$#`9tcSNwyPT4g zQ1XIGQaEv8PsSrS2|Ao9j7j2~9A1N(%Yix(axjh2lCC)Dkbh|uwrXA{f;mB(^(dVq8{zfdMV;iIAhzKz9ngWHWR7c2-$%)0aCBg=QH4Q zn5kY|yV0fG>ZA9NQUH@u&;<;*DTv*UQVDzD*lkA9T@AI~8KR$1gR)Wqf_7VfuDr5! z`+cJq@LC^Xuho7cWo@hLc8fIVACFYo z=yhKxe_7rfz_%0CmNPc)$i6O^u2Fvf6T~Me75b~JTtA$iv)oCK?{C<(fIOdHoa(u8 z;Mc6jGiU$}*Mw$90cf0leJkS!G^On?)~JbvoLN%wv`az0J2i)sP41LBb+*9|@TdwT z))yBeUI!0rzSnN{pp56_Z7CrCwycdvCGe=tqBJwN@F zNVWh-r~D!#6&uQSXW?NkJ0jzrzkmvUCo#O{1z?6879M00_zt(aYb`WMgh|5o>Y5+m zro8&aHTI*mglob33$PTph>;RX?e{CczAAa0rWXKV?ZT2s(|a6p-|Q=&k_#rZkb^(& z^(Z@iN5E51U++jg`kM<`mJbDh3@N~VC(}cG&MI1TK#!XPA?KUiC1Kv8j&dbgOg9y^dd0bu(`czS0A0Y2mZ{jf&Gl0oF=3a8# zo`vJ?HBS&v)2Z0lcKVkKUIC zU$C!C>TwGkF+CQHB9u;oHfQ@~L0d$&PCe3HAesj9poo~gN_d25V zxjsMvVrVFEs)gpLIqK@;BcFI6O84Pet5u)S`Bx~Fs6H>|x!is+>ECnqp*mOgXNDU!SvrkZd_(VXvD z?GyNZPb%|ha(H8oQ?G%z)^0u^o?Z0K+2gq0{IP%NM^{mRAFpvCJ}E#xB8;OzytaKV zQAU8|)hG+>P7|ihjI905C{xMG1hop=Q5~l9f5>`$bcrW^2?9LHYD)M+}{bDSdxx@HP$aGla!_aq_E7 z1i%fI@X?@~8F}_LFuw_yLHczJi4lT%aI`j+H2P#J1C{C_b%dXyXb?ac+6{j~x7mB8 zn3A~R@bMvKsG6qcd4Dt;DUiDZECOJg4rc|)Oy+oDR3Zzen4*36`Z#luszDDRJJ;Fy za+CsIfq0_Z1*`T&({7%g*_!3M=Ck!tU)#2)YosyP%?5w?w(+{6^rB8xTj12%-k`oP zQwS<9#`%aF<8}MQhEb8KJCS=iaAJ1y{lM$AU$Uv==Md!)X{mtO=nH8@4j~~S`@36j z$Mp;EXRu;)HUcCR>ve@OV|Ws}2kk)T=;H&Z}7@i^IJ3VM~;9YANFA+xd@56T277vFR_z+ zSEF60CC2%vI8A{P3zY%KF~Nw55#x^SN!pP3PkC#$N#@YgUE?WOm z#dO7?Ebt2eanlXC&l7MBSiJZNCH|LdMcdiWo(gIe^{956kGvk>=Kih%(%j-Y+Zb)g zDmOorMiBiRsWEb9$*7k0sn)%#a{C3?gLsPCFa@4g&X>_V<9-s?guQ4ZiuXn+D}7W} zwxN{e(h#xh7!si<`Ob?_g?OrA6`lX4z432IyIY#t+q!~@ml45S_@YUZ)2&pChPGMF zB8X)I*=jGYrX$;vfX9o>84&iYmQA1fGRiEHyuA~Yng=)z{^tEI$;T6q85d;9wh=K( z#$ku5j7Zh2j(t9ot$L5S_e=NuW8v__RM%}?I|~eVK#gR}q5CYFFU;l_OHqju8Ws5a z3X5nIE=8zGv^qooI4OWD2S|#FHZx)#w@hE0_48KY6A<|GJFb37jxU-AeA}K_PWWi5 zX;;w0$M;c);rSRXW%|u5BD}y^@~3deKdt048BH(bb3+C_R8@9cyC13#g?cJ>D|KPNr~VydHPm=LoHzay@;R?Ecvq`g zIy9t_>`hm!KTW}b6x-A75&Lax)N8WU5I{4Tc{Op#Y8!tV-kq{YgSj6mEs@1um&?an6+EG9UiXcW-m=pBo&El@JE6}bOQqzW6X3eKYv?vWiTa^`&?eTse98~0L@YZD+%y)Ugh$u|&F4YYSd~Phiasw%Y z_^)k_WgXMo5X)&Q{ghgC z>y(bK_Q2}Iz|qA*`rm#-)K}cuQ~{FQV7v*yVGo~LCqVbm7s1@caXP-$*m`g~Y1$@{u9xLME zbKd0LQ7VjO76yjS*P!I&?WzLBC)2!%8){yB)n6ecE}8&b_wtj$FL-07jvs zaZHQE7Pn0#E;{kkRfgekE9fdnA~yKk-@+)c-52$Iu`n)*o$N@Nlu)WCvA`7tNOHSz z8vFePeW$;edz&3i&K|W*WP~MZII}4e(}!uLjnewmjNSyfoP}zR$-K`Dnf(uzTRVUR z{h%GMYv+CZY4^?-F&BIo2EVrA8+F|%VI*fMhzt!>JbiA&pq! zL_cInU&^Pg1Z+D5ZG%(xVlal6BT=U(U}a)Him=NhjTpzt|H^`I)8Edvk`DHBY5QJtiXKWj+%1j z&c>&D3AEd^F!pFsW-PVJFPMFwKE(-~2(POMPCsO4?Zt%GDqj5Hxmpic7r1lp0%jg| zIQuv(Qq~245;~ek>rzrIqCojZOxMUPQBtIK(t6WTpQ0bzz3Oi`V;;3mMhV+lF%v<% zVYG;PF_?40|T$WJ0$Xr@$G%yU0yDn&r!z$Ad)|Mdg45Wjz43-A*tXwO|wWE z%a5{|U+|HY*b}4N2_F4##W|e#z~5fbAi(H))4V3)W&Bc>oAPTkzEO71s04qvll-ud z>}auKteih%>!iA}jnFR9Wnf`N%t`CD+YA%n_FT-mQ7O6EQElB=<5{;rfF-0l3W-T! z-dKkaB16B`kI^Eb=_-|ZI^wo$Z7=A=%ka0I9s(vXqJP+|ECeya^kG)$b(w$~4U`bn zARx~1$^A+42|Aos$yPvuL$V4!989XCfwW}q9TVusf!;GJ)pP*zpT1kip33ilHm`O0 z{J#J@>N7(zAn&rRm&-rEgc~6t^RI0m(@bDN^_=uHUvVGB$2r|PFcX&>1Pk$E!1bf^ zGQVnILVH{l(hk(#PJx+eMhigsEUXmp&qVWMe}MgNQCQViIpwv;%(R7Cb^7;~Kuxxp zav4u@Pn<(~oG0wO=`a9NHkW0<&fpygAzcDC6?jRN1S@SE9|?HIqy9#%+Jo^bTy~_k zr>geAX(K`||7m^rVKphC#|A*yJj=BSVuX;uOlxh}7LFrPz--2SxQ~-wV0n%H@pdFE z>}S34N&jb!t?EkCPQa|JghNFVQgYvtUV=kcT_(gV7{n+9WU}i+*~#avJ~v&Qqx7q7 ze^ODw&j8Pq7%oi?Yt{C5c$Uf)oyK0Xi9y&2gK+ z`uch@cm1QuzhxwUTLgW_2LS{_VwobZEFz?iXQ-5U-$_SYz${lK2bSAgbfFLANa#Fp z=M}9f=Y<3(&$eJ@N*^E{i&bn0o*`!|Ag>xHiL%WFkwJB}eIZ}AEwV`AJQ)1!BP|Zg zsA)rMIaFEo(6D#fSaWk#4D*f1eXY0?y6@(e_-)>=k27n(rWw4SLYVArV@ zcXJCIyIhI*gVOsA{SA@%d~^B*Ir2%#FthY%jc6$wVg>92WsoS7f~ited~Sa4tYA^2 zSf~>Ewa#34X?RagoFn1Q=oK>#G$!oc24kR(Dy*@-eqnv+hR|v;S{U4<9^Q{0RhB_ zi3pfg>v_HG+_6IPDz~5(5(O^Hp*5bX42A@OCZxJMBWQC~f%vYj(@{<=oDdRXvU&Tn zDbIay-&sCdz%(;86O=&yganyX=k)1IC?Pm0# zjIsCOkl-c&YIeK5hW}sh*2M2srb;<7)5V`UTt;)0h_{gmmcnt$^hl3`nD>T@luQ}_X71Zuy1HiGP@IzM~CdkK^0qE&| z!X2ewT2Fr7d-6xfn?Zz(*VIyu7y4lyr{LWfCMRB2AfCn^0Lg6cmqq|vhoLVl zc7fUbJIR<<^{vy}!~9QjtWe{89w54QX_o6p1mjWDaM?2emATlXx1u5s|5&z(fa#hl zR;pa`r?hbJGA^Tsz#u#dn^jvocLYtmOm9qeS(HpueQsVY5Wrd!<|blUe&m42Jgs^u z<)Z9VbMeA)0HYDLA`4rAilboX@v4&joqt=^e+4wy5xT%BeP3ujjRMp-P+=b2k(A9WeA(x+LhLy!E&LPQRYO`6gyg`Rlp&JWGNlIq( zF2F~Q=F^w0V8UA>XTJ`IYW%dyUhPF!X0C|Aa37d|=_UEcW7CQO9NkW?mvs)_d`e6r z{17_vMqMlFda2e!-%b_ah-8UXeygoV8o2-gvuQ>0tqmnqw%JTA459;9742nrj*06~ zurMG+jyF;MkKh+6genV5K8x(@`SOfNfP_Q?QJAIKIvW7?51fZE7w`-@g;~PZVnGw& zDIkD`ITkjAssLUaWfd7P80p@pUe+YA-%AEE@R!%{+03SCv-={4dlMXe7uxO8@BV9_ z0qBj%{T0$5jcUtSlMvW~zetoOKy;bGmGuY)LI%8suJNo3y>cJ86sS+%`BL?XX~JAQ z0GgzOCJM~}g_W$Byz!J4J2dxOd_znLV=oIcv@&<}0l14K7Z2A9`7!KzU1KwLD|73V zcZCjccCGRB7yQG#L#zzQ8R63y{`A!KEe{}=Hts=h-GdZ91S-e|_DSeZ8!&DD47U?GaCR73Q|5Hh%q7s6m+ zz~2rIo!=M#J! z!|qwoEd(WWsvy^s0>WD=ov`XJ!JAv1a<+!vCH#&@{1p#Rswkb~_ScDunq> zA(8lcxFE+nNtUlGx0(jmgxvFX9Xoiv?!;V@Q9%FU$ptHDlN-LnU|pT>Ae zvIO7~h|UB* zpmvoAW{n0+fT0`SJT(Zgd{vyraqnYG8^&l5?{Q?GFKhOShX}O)c4nNdV%2M*<$n%W zXyUi-=KEV&%SkI6Cxp*&g_b|wIyA30&<=BqQIb_S^%wx*12}Vn2F5YnN>{*IeLS*R z(4e@7=P%|K$RpnM%Rr<;Uft%(Y?iP~GJXQoEj3)~zpFVV0$d3B?8Gfz7!% z=%12S?vH6yhvDYt`2!A#^W0v1e{RGterceIX^odu4#M2*VU|;(9Gt}OJc1P9*kRU! zvYe~AF;T1~=IpHGS7E2Z;UKar3VPf3axg0l7pbs&Kqg*YzKt{S$@XnzQjR?H5<7Te zjKL+(03<`WbXn6IKBZAxwu%Xl+r!$8_=6_HFPGuC*G3*$|6ZJ$$c1E)Zjj@yKBws| zqf-$+QYW))L!R_Vik(#o1D;dHGi0tEZY5b`?5tS&Eq*4M$-96UsZ$(UJ6=Dm$wA%z zP1;t;27F6sXs$ceVCfK{@L1&Wp8?d*8Ov$+g{0h)nuR6}QK-*_MB!~c{x={|%+pwp z%|?1K;PDvQPT6s6*uiVz`^_>peFTS}2?ZP_V7f_@%(@EI0S2lxVA9R#+6hi~bD@T` zmT7Dp=++$mEX5z!fhPHBz>>cfuQQsmSix8&>!p5fh3$X7UMBCc=@R7#vj+$@Z`E|K zeV|Vn-Z5Mt1*Ci2z2^yL>n%)qT=S$x>AOZn`Y1@JAMo&XzUjp;Z@fVK~QtO2n*{ z_d2;j<7W_X{%=GJgkwTG<)`IXy9fne5F#5ykR3qOFhkO5#&f>Zh@71)O7&3Jc^OX% z_;fZ=)c@Bj4ydBgP=UOXh=V5zs%J`kqs|}qDQVa^8F@2)K1dQDeZ2CB!72#EW zJ}NSp@jWybD-}9_Nd=Y1fScPb&`kukzlfW(P>O^Q{z}61C^|R}h_^+Z#EK zF9gVsJUzVS3z+V^vjSdff9|MYu?e5{&r;pt;Lh+V^&G_Sx(dj9Tq(6iZxkCP+=P0bHm36(_*qu|>;>}y2i?PTAc*V>uBhSAC*4bA7GXBcek4&kZ$yUkv4+EBl|REUft+=yJ~A_RmK%Ipb)! zF0`;?x~y7@%|`RpEXg%L!GC5p2WrK;cXOR6)s0chczXcQ{V0&x^0_m?i2mmZx1c7I?4_7Z;wQ8Z&n(8udnt_$d{V_ zbKk$e${EZ4#z>#t-L9*?&t|@_)HfbLL6G|>_?Ixr(%8pge=T7~Mi-JmtD5hKuf|rW z-+4jh+brX2*f8GRUD*WeP5m$6)kn$bxwrwxO&YrHA8o)BIgM@uSxDcriFx0PMtp|st1{XCJP7vB3#-;?{yhR)3?nCYKVs8%!5d;OoA4cS< z$zf*(P4rpQDx@cfn!%jw#hq#m-6vb2bvB}%hlFyVIX1Rz&R=5ly)Qy3S6Auox?AsN z5`3>Fe0?tV?k?K|n{xOV{^w0A_*36~O82^$O1}z9Ft}VX@P=P>4>m8Oti`-js48~S zp(-wZ`KG0K)@aXNIFpDDiHh)V(fpJ;Rhwm!5!rOnf}2xO2EXjBfyzC&)S$#@TGLU_ zEs%{M(JW$uOaAZ_cD&~ie5IjL;WyY9i{A->A4}BrnZX&0r$U{&6`%tyt=1b-B zx!M9$yLqAGi}ribagF}L42bSAGX4mE&TF@(^?J{QeWCw+?R`1yW3FOPrrBm(9 z;g4REME)#mE4-WJFGfdOYv(TH7#6GY%vo_g(c0p#h?wjW)`-iQ;j`^Y6z~o+7v%GF zj@6Iuq+ZyrJK^9uFmy?)nzP9wP+q2t*|hbdu2`nZ+_d6A zeI_}$$uZCFQO<(~xAyzul-LPkbKPQ~gx6>4x`px}i5nbSFii25U#-fSS11BrTElP!BIVGtQaTta$-Xzdw7aUL9L&n1=S{$ zI8J)aNE5Y|g`{U^4()DGd!<3$A&s*cPyP2EtoYUv6}@&tarBOPiqaDWjl1R{5-g#G8EN)9#duqCKp$F!p?+MHI#nC+1?;?^PsE=v9U%_*Z(5oRq zH%x5>=Tm=#)XiUMj96K{=s{jLS8J1 zWZ4iVvpd&FA5lVvZc3q{2IFt((L&%zg5H^fmMCR~)6ZW^N#jL6$bwE2NfMKNZo(() zRBP%Oq}uxm&PM2v<@;^zG==|!b+2|3KKtBQ>=a2v4P7nnk+zzS&bV&fnIl#QC8_Gt zvq_=*t>-%_w$(9)vy|*8Ka)x$qxMwp7K`em!Q0nrFyU<_ z>QaS$)cR$$!(>h>4&b)ajs_KR_=#c^l$uup4yn=%V)kD7RlIAGDA?3|*bMuDHc(+C zH~qt}%&K>9vlJYpd}wzriqRzW_m(?nBWB84uHVJ}`Cw8MWgo>~6_d=1ck*S@?l;JJ zrzu&#R;g)80PS+^^5Z9aBfoH#UEY!p?any>EF~=yj3?Z+XQ7;r&OQ3m9#8K{oJMMn zsf$4p9`34KlHRj}gAs8z_x)IVx7A;Tnas$gV-}arKI(VbZCYZ8bRjzPTbo9@l){h} z3r{m3Tx9aJmW|uWb(SnBLui}Pl9tPjZa0bPugTmB$_U#RPj7#;*tR}6+Wz5r^s3JA zPTOnRA?iQ-P{ZGJCAL!~KI-J1=#bIsn2=XiecCPto_qQlh-!gHT_wt~(kOCTy!z%* zmmteozu(g&XR7qR~?-)?9>4x`J6qCDLK+`%yg2S1*rUbINsA<@1Y5nL_#{DC-8Lc{M``*p_>U2~$v%a}Wx<%CQf_e{7Y7Tvw7b~g@ zK6BZkOcxb{{Ok-NMtuH`CBC~WnC#q6y4qk3WvOn|Z#AQtW!efo_hl}x*!W4Wj=Nl9 zYQ;GA6Ie>u+eCiQjcM4v4m7W`A*7eFQrobL%n-rm@we;GnxsQS5_npUI;KLK2P&LQ>e`&Vhq{I@3wHB5 z*_QOE72~=N`oa#<)Eiw^uRIoGRxsB&KX>Q-yP8|jF&-s0#v1JkQ)lWtc)V6L^RbAH zdFX3+(6{EV`FxP~hEnTq39R`|$JCq}qz#+GGlyJJ4jX=CvMn$P%#mqMsk8M8vr-p! ziz|+?QWEyuEhygpsCu-A3e8kSm0*86xlvVFI;*h41jlobj&0JFzrT*>bJ!vft^^oI z5HTe_4kqi-il%w>(BsH7)aj4>pSBUu zmcyreOQ-N!Nhuy^kVc7aF~P+>O~j9*&-8m5vXr5es#!l#27cXNUM@<9bZ^zP;V@0~ zy}Xh$AQaJ3Yk?+oZ$+4N#?Wy|hnsy$%A_?7T;n(AWGRESUf^N;n~URRe-lX3Z}+@^ zwqG|b&81`I5-k%nP`}FmC7}L8Zu`L}aPG+mf#pkArY{96M2#z8nzKpXIl=Wu=?xk+ zMK2e2YleBmM~xcq`JnlrTf`j}D^?CEUsVJX^TpDx&5cqUN^Cu)dB7o5R|!3sh6Vu(1-cC~yc{cI%pl%*zinM`-W#K}ut8?3Ff>2$m1x`b7*K1$s#3{Gp|j{UbVZ7Mnf*~m(&oAIp3>%L1`@{a z1@lQs*}|9@fhlGleV&6Tt11T=JP5;x36kj(-tP~87S}eocv9Ow_OLOS@{-$s`QHRr z4MPKk!+vctuT>m=^|eB$&nQReGjoDx)z=V-iun3z`z-y2 zxg0z%M?V+Rk)}J9G>WWc7m7H-FKpTsB-S+t3sJ};H{X%_v%!ja_mz(s+LH6Z!i5k4(Pk)^O3tBSHR6Utgi^*MTLU)`B_ zibvIkshH^$t#_z*m=TA83NL%bt#qg%YxBLK=EZ>#V~c?z$h+yohVY%?7hvrk$8_6bNiEh(qgJEwrLBAyc2HTkDhQ00U8~V3MV9P z5F5)};aE3e`X+RA&)qeH94@*ofkH3XRl)AZa)2RBUQ@J}*mM ze}z>>Ue+*8O>G@bVlQs2s_y7wXovtqyyUT|8!<)ZQ<~}7RvcxMY$7AsglrA#&Y2-(bM`tj>&^-%{k&ekuloE2 zpU?App7-;9zdz6G*}}hjtoAfA>-XUKw8M4nv4g^7H*{42A~uW})3p9a1%L8?_hDX@ zwGO!6)8%XX1Ed$>=!6Qyzva+;U z;wyeR9*J2zduS*9q;p;Ho!ob-IgOE^tf@*3%gJZ>m&h|!^;`w{zgWNz6i4GoqBJXk z=+a!lDhPmKYX{&SW>5Ag%o603mZZfT!#?|*iddc3O^u<(`I{a|XmId7jf7t=6)8IL z8V3|MC|ZI=JiF8PA3rhIi={8$Qpf^JO#>Z7Bgs8&-veQ2|~#Mu4H+ ztV+#e7!Tz+3GrFA{=wy5vy|sQ{Fl$h*57li2U8CdyG7;Tt4q^+M@MWc#{&P#T}3|_ z^k%nui$lKul68E%(Jsr4*Cd6!Psz=`e9~BN0d!vJ$VZ}UiaBbng9)~NR5Kr45yXN! z2J1BT{F;lK=CxlBVYiDDLY1z?E=E5FE@>q6rES&1_7ag?{YD;{!@10*70&i^Y;2X-Sk)F{90|3hijB9yaaPpD(zFY1_ju zxSdJP{du8S+RUY*BI(SizzslY+;;S`wbniQ>l)? zC6x?g4plBh6u z@EAZuMTy;XJ&eVrXD?iV@)x(#T!e&Z zGsienld7-1;DBMXR}Z^>Tgr73(Rg+9RiSsod^#mCbCRXNqZ#!-C%r}DWNO2@aX7lE z8HOB{YrYNsS~k9^YZLHeFPpEdX_X~>+k@_$!ey!>AmqZ}VjhGkucup9c@5lrBE*FW z`_;d|9O+c>pOD8>h$RT1+EKtEk@@o9GkMaaN0(#=wUf$4frHX#JneLjpt+i@fp=FI zV1l^OQ+7YxkY&Z9DHjwSJ*<5Tr6*pnrT z!d@)s+o*0C02AU$_K+LQjD~#nD!dYgOPdhkUFkvjkpgHdLa^tnFOQ}`U)m#3kPfd3 zzZoQ!=k>QvKdfQ6@N@!RLPJGnx(*ej(){6+i4uIZnPw7N4yvSCc3IbAWmBoZ*2Jgj zR+jx>>ytnESY_|qMp1^N^L_g0lytMHM}$-4!$pwZu+%+c%B~1t7tPj0Qo6q0;A;M$ zdgljOjGe4Mxy=r@ZGhRJR-*X1o6sx&K=;-y`-(!r>yWBi@)zY^eMD9)Hl`kV<6S92w4~@4dY+;E4}}hg5M$EJeB< zaB@v2&MEB~7x`YV$_(qp=D*$_z5lkaa$GZzp#Y^Gp@a$yp%mA7GI?n zm)TEzWtZpxxVI_&F(YJ)HNpj{M{)3oDbfa2QyfMpwZL7e=$W}I&j5_c*@DljkjaHl5nK}=D)w? zPClU<-NPM_=O%Um`6f0WHDX;FdxBrvQ|=rP6#XDUysAsKqBO1LJC~jZyM0#u5I#v| zt0GifSgbZ_Sn*b&_bq0ce2t#py2ZMtA|@H~v=wdQrA4g(z+XLNZOqyPN#-8YOFJX;WLaA6d>`UVOgH=Y!n1IOFjdl~38;#cugk_>wnRoke7jfXT3f~=9nzjSC%PHkG6bH7;SQfT?!uryDERuP@ zNJp-J6x2R@$k{1i%gp?cSs&)+zqqXaYE{`oS^Z>{9SgYt!f509=IWsd`LqVz%rMK{7{R!1)XW(7{Oq!jF9;SO61d_nN47@Ub-_d0=H~Y@~0^-jU?PKP^i* zR7xNdX4gAeF{Fo*=bHH{sQpR-$?}CN#+343NmGR14|ip`tR=~BxokN`71*4#s{sqp zyZ>KP&mo1H&5xwqH$bhalp=Wr=LqF4Iw2(dYh5t6JxePEE>R9Qv8EHi1R& z*0M9O?NH!Ksmg{v+40v2)l4?z1#v&ykPbl@{%*yD;3~!5XK3}{+P?KZjJt%HZKk@( z<-wHCvaGF}WcZ7u3^!ldP|dLZ`#T?sC+`0b$52!7=52nxCBjWxo&$$SO0d*>d)IuO zk4t}3GgSqGM`cwCE-H*97uVf70W>1VP29=?ZY*eroh*cgIwm`#6y&25c5?kzj8d|c z-RSruZ(kXQ?H<8tX)nu_Nl35Eb|;2&R(|%ub0~O|*2tvITIf57pJS?^+N$q=ZZF>c0W0YhL11H*s5vHx*5XH7CibE5YJ1nk09&`Swsf;eW}IYB{j*oc*>g>#7Tp~$~c%Ar6V##A$0Q5 z1ATd{bV={F9ru6)$cwYXn2})sy%!~N?F?aqmLSGsez9A-x-hYqR`4UN?(OpAJZBYc zqF%PuX9%iS%jvzjKM1q?*8ic8T@d$L53E}^awMlNt#I>SlaQqV`wV#wZ@k&Pv8Zg2 zT`pEv>Ok=m&&c?3+IH6a5BaE?Y)p|zaMk8-n7|JMPv8yC-qbanRL}{8_TA*hT7nm=cKKBJHt2)o(lWb<5h`(j!gCPac2O4}iCC5PUWmgxf zXYe-oDE?W8K9p;>Ce_*VkMR>GyrJ&!9l9=T)fH=#Un3%topUKvdXg*3`O9Q@oPvWc zgH@6gp=x8LeJHWAdTjmDP<*iJO}{f#_SJu-#0L*!UHDUJP;{T?xzC!X5dd6vI-f;QKprMv>MsQfbFuPv?x%hm zmDqfJ*E7J8Z(4(JeDqk{Sv&IIqY!*=bNbChl8rIun;w~zC0 zj(lUu54<^VNan&Temz}6a{#TVP!T>`M(Te!>L~H6xKICn)bZ{t<07<_)RuPwH=NS7 zdOOE%@1rBaL{?HXuWgChBp<3F%{4!8?d4e`!t44A6Nwd8pf-bI4gvNA6|#o&3D!5e zzzC!vW^GSTs`H7rTg4*mWb=bRg81A2Sbvwa$&(NVB3aqp@1 zvyHtOq#n;%n52gn^ifB|L!9i<(ZWn3hNxG&AR8<3(iq3puP|<+O>oLYTsrrp8pWcg zqq=`v)(mcVaQt67_}mGW$x+U4qT@kUQSMNg)TB;%pz`QE+)_QGkpZ+jOH zDsBdex&en#>$O#}Wa8ImT9I09qh|Z8VYL{7PDuRA&zZkvH2glDVv4b^2t_2vEXAQU z8+VVd8fFQM7g{=-TB`$MBscQA>b>Dx4eyxs9uMxL!$cVOKidTSDqQuwATB2J$3R5L z&x!rlVd`cI=7@gHCB(~Atf3jN_|r%tf16#2Fd{api6W+l$Fu5BAZxYKQ#aV literal 0 HcmV?d00001 diff --git a/doc/src/issue_zh_cn.md b/doc/src/issue_zh_cn.md index 17653e3..6e20782 100644 --- a/doc/src/issue_zh_cn.md +++ b/doc/src/issue_zh_cn.md @@ -62,6 +62,7 @@ - [x] (优先级-高) 二级菜单-登陆日志页面异常,丢失左侧菜单栏(原因: ant-admin的 `layouts` 配置 exclude: [/(\/(en|zh))*\/login/], 会匹配到 `/loginLogs` 导致菜单隐藏)。 - [x] (优先级-高) `update_executor_processor_bind`更新时存在bug,只有当绑定的`executor_id`变更时,才应该执行任务迁移。 - [x] (优先级-中) 增加用户修改密码的功能(后端已支持)。 +- [ ] (优先级-中) 页面上的时间插件,传递的时间字符串有误,会少12个小时。 - [ ] (优先级-高) 组内绑定修改时,没有把默认值带出来。执行节点激活后页面没有自动刷新,状态图标没有更新。 - [ ] (优先级-中) 做一个日志清除功能(后端已支持)。 - [ ] (优先级-中) 搜索的优化。 diff --git a/migrate_to_poem..md b/migrate_to_poem..md deleted file mode 100644 index 374d32c..0000000 --- a/migrate_to_poem..md +++ /dev/null @@ -1,145 +0,0 @@ -`delicate` Project Background. - - Distributed scheduling system. [Repo](https://github.com/BinChengZhao/delicate) - -1. 5w lines of code + documentation, etc. -2. main language is Rust + js. - -The migration involved 50 file changes and 3500 lines of code changes, which were completed in 2 days. - -For more details please check: xxx - -Why migrate to `poem`? - -The iterative progress of actix-web is not keeping up with the current needs. - -Brief background on `poem`. - -1. the highly skilled and passionate author, `sunli`. -2. based on `hyper`, combined with `tokio` users have more control. - - -The focus of the migration. - -1. recombination of web components. - -2. api level modifications to avoid business logic adjustments. - -etc..... - - -*. handle in poem, is an asynchronous state machine, using tokio it can be computed efficiently in a multi-threaded runtime. - This is not the case with actix-web, which is single-threaded. Because of this subtle difference, the handle previously used for actix-web - The difference here is that the handle previously used for actix-web cannot be used for `poem`, because the values across .await need to be kept in Send, which is a lot of work. - -*. poem's route, a root route, and then multiple mods constantly at inside, different from the original actix-web config. - -*. poem's error supports Send, actix-web's error does not support Send, which makes cross-threading difficult. - -Need to modify all middleware implementations, need to revamp all handlers, need to adjust all global state. - -I am also grateful to the actix-web community for such a great piece of work, and I decided to migrate to `poem` because of technical selection issues. - -Translated with www.DeepL.com/Translator (free version) - - -// actix-web -pub(crate) fn config(cfg: &mut web::ServiceConfig) { - cfg.service(binding_list) - .service(executor_list) - .service(permission_list); -} - -// poem -pub(crate) fn config_route(route: Route) -> Route { - route - .at("/api/binding/list", get(binding_list)) - .at("/api/executor/list", get(executor_list)) - .at("/api/permission/list", get(permission_list)) -} - - let app = App::new() - .configure(actions::task::config) - .configure(actions::user::config) - .configure(actions::task_log::config) - .configure(actions::executor_group::config) - .configure(actions::executor_processor::config) - .configure(actions::executor_processor_bind::config) - .configure(actions::data_reports::config) - .configure(actions::components::config) - .configure(actions::operation_log::config) - .configure(actions::user_login_log::config); - - let app = Some(Route::new()) - .map(actions::task::config_route) - .map(actions::user::config_route) - .map(actions::task_log::config_route) - .map(actions::executor_group::config_route) - .map(actions::executor_processor::config_route) - .map(actions::executor_processor_bind::config_route) - .map(actions::data_reports::config_route) - .map(actions::components::config_route) - .map(actions::operation_log::config_route) - .map(actions::user_login_log::config_route) - .expect(""); - -// remove patch and older packages. - -// actix-web RequestClient -> reqwest Client - -# TODO: This(casbin-patch) must be remove when upgrading to actix-web4. -[patch.crates-io] -casbin = { git = 'https://github.com/BinChengZhao/casbin-rs', branch = 'fix-casbin-v2.0.5-compile-bug' } - - # TODO: This(casbin-version) must be changed when upgrading to poem. -casbin = {version = '2.0.5', default-features = false, features = ["incremental", "logging", "tokio", "runtime-tokio", "watcher"]} - - -# TODO: This(redis-version) must be changed when upgrading to poem. -redis = { version = "= 0.17.0", features = ["connection-manager", "tokio-comp"] } - - Cookie 中间件,是否能支持用户自定义配置属性? - 目前使用CookieJar,每存一个新Cookie都需要手动配置安全相关的属性,这虽然很灵活,但是有很多重复的工作在做。 - - 对一个站点,通常cookie的安全策略是保持一致的,对每个key都单独配置的场景比较少。 - - 并且目前`poem`中,Cookie中间件是开启feature后自动注册的,这样用户缺少一些初始化属性的控制力。 - - 我建议:Cookie 中间件,用户在框架启动时支持自定义配置并且可以覆盖默认装载的Cookie中间件, - 后续 Cookie 默认走配置的安全属性,使用起来会很轻便优雅。 - - -如何在中间件中提前响应? - -我最近在迁移项目从 `actix-web` 到 `poem` 遇到了一些棘手的问题. - -问题描述: - -在 `actix-web` 中,我可以将任务分成两步: - -1.状态判断成功 -> service.call() (相似于`poem`中的 ep.call()) -2. 状态判断失败,提前响应 -> 通过 req.error_response() (ServiceRequest::error_response) - -步骤1可以在poem中实现,但是步骤2目前没找到好的办法。 - -参考example中的中间件实现,可以用 extensions 加一个 `状态X` -handler 中使用提取器提取 `Result<状态X>` 自己处理, -但是我有50/60个 handler,不方便给每个handler都加一个状态。 -并且每次加中间件,都需要给handler配套加 `状态*`, 会让handler 很冗长。 - -特定向您请教。 - -Box::pin(async move { - Ok(req.error_response( - HttpResponseBuilder::new(StatusCode::default()).json( - UnifiedResponseMessages::<()>::error().customized_error_msg( - String::from("Please log in and operate."), - ), - ), - )) - }) - - - -// FIXME: Keep writing about migrating `poem` articles. -##### I've been away from work for a while, and I'm ready to find a new job. If you are interested in my work or need a Rust engineer, please contact me `binchengZhao@outlook.com` . \ No newline at end of file diff --git a/migrate_to_poem_en.md b/migrate_to_poem_en.md new file mode 100644 index 0000000..c96d9b2 --- /dev/null +++ b/migrate_to_poem_en.md @@ -0,0 +1,149 @@ +`delicate` Project Background. + + Distributed scheduling system. [delicate](https://github.com/BinChengZhao/delicate) + + + + delicate logo + + + + +1. 5w lines of code + documentation, etc. +2. main language is Rust + js. + +The migration involved 45 file changes and 4000 lines of code changes (2500 additions and 1579 deletions), which were completed in 20 hours. + +For more details please check: + +Why migrate to `poem`? + +The iterative progress of actix-web is not keeping up with the current needs. + +Brief background on `poem`. + +1. The framework has an extremely fast performance, consistent philosophy, and clean implementation. +2. based on `hyper`, combined with `tokio` users have more control. + + +The focus of the migration. + +1. recombination of web components. + +2. api level modifications to avoid business logic adjustments. + +etc... + + +*. handle in poem, is an asynchronous state machine, using tokio it can be computed efficiently in a multi-threaded runtime. + This is not the case with actix-web, which is single-threaded. Because of this subtle difference, the handle previously used for actix-web + The difference here is that the handle previously used for actix-web cannot be used for `poem`, because the values across .await need to be kept in Send, which is a lot of work. + +*. poem's route, a root route, and then multiple mods constantly at inside, different from the original actix-web config. + +*. poem's error supports Send, actix-web's error does not support Send, which makes cross-threading difficult. + +Need to modify all middleware implementations, need to revamp all handlers, need to adjust all global state. + +I am also grateful to the actix-web community for such a great piece of work, and I decided to migrate to `poem` because of technical selection issues. + + +在使用 actix-web时,因为actix-web 4 稳定版,一直没有出来,我想使用兼容tokio 1.0 的库一直是一个很难的问题。 + +当使用 poem 且 透明的依赖tokio时,我感到了前所未有的灵活性。 +直接使用tokio生态的组件,去代替原来 actix-web 的一些组件,并且把大量的依赖进行了升级, +再也不用自己人工制作补丁,或者使用陈旧的依赖。 + +When using actix-web, it has been a difficult problem to use the tokio 1.0 compatible library because actix-web 4 stable version has not been officially released. + +When using poem and transparently relying on tokio, I felt more flexibility than ever before. +I was able to replace some of the original actix-web components directly with tokio eco-components, and upgrade a lot of dependencies. +No more manual patching, or using old dependencies. + + + +1. `actix-web` 相关依赖的移除,替换为 `poem` & `tokio`. +2. 在直接依赖 `tokio` 1.0 的情况下升级多处依赖。 +3. 全局所有中间件的改造。 +4. 应用风格从 `actix-web` 转变到 `poem` & `tokio` 的组合风格。 +5. 全链路的测试,并编写迁移纪要。 + +1. `actix-web` related dependencies are removed and replaced with `poem` & `tokio`. +2. upgrade multiple dependencies with direct dependencies on `tokio` 1.0. +3. global modification of all middleware. 4. +4. application style change from `actix-web` to `poem` & `tokio` combined style. +5. full link testing and writing migration logs. + +poem 中有一些相通 tower-Service的概念, Endpoint + +代码对比。 + + +poem的中间件很轻量。 + +下面是一些 `poem` & `actix-web` 的对比: + +actix-web 之前的大量路由组通过config,去注册: +![actix-app](./doc/src/_media/migrate_to_poem/actix_app.png) +![actix-config](./doc/src/_media/migrate_to_poem/actix_config.png) + +在 poem 中大量路由组通过Route去组织,可以多重嵌套: +![poem-routes](./doc/src/_media/migrate_to_poem/poem_routes.png) +![poem-route-config](./doc/src/_media/migrate_to_poem/poem_route_config.png) + +也可以制作一个跟Route去不断地at: +![poem-app](./doc/src/_media/migrate_to_poem/poem_app.png) +![poem-config](./doc/src/_media/migrate_to_poem/poem_config.png) + +poem 中的handler +![poem-handler](./doc/src/_media/migrate_to_poem/poem_handler.png) + + +Endpoint +The endpoint can handle HTTP requests. You can implement the Endpoint trait to create your own endpoint. Poem also provides some convenient functions to easily create a custom endpoint type. + +In the previous chapter, we learned how to use the handler macro to convert a function to an endpoint. + +Now let's see how to create your own endpoint by implementing the Endpoint trait. + +This is the definition of the Endpoint trait, you need to specify the type of Output and implement the call method. + +![poem-endpoint](./doc/src/_media/migrate_to_poem/poem_endpoint.png) + +poem 的Endpoint 哲学,跟tower中的Service 非常相似,但是poem更简洁一些 +![tower-service](./doc/src/_media/migrate_to_poem/tower_service.png) + +All types that can be converted to HTTP response Response should implement IntoResponse, and they can be used as the return value of the handler function. +![poem-into-response](./doc/src/_media/migrate_to_poem/poem_into_response.png) + +使用poem制作中间件非常的轻松,如下是一个给请求增加 logger-id 的middlware的实例 +![poem-middleware-logger](./doc/src/_media/migrate_to_poem/poem_middleware_logger.png) + +如下是actix-web 实现middlware的模板示例,模板代码确实稍有冗长 +![actix-middlware](./doc/src/_media/migrate_to_poem/actix_middlware.png) + + + +## 感谢 + +谢谢你 + +我们要感谢整个社区和代码贡献者。特别是`poem`的作者: +[油条哥](https://github.com/sunli829) + + +感谢用户报告文档中的拼写错误, 这非常感谢大家。 +感谢用户加入我们,提供反馈,讨论功能,并获得帮助! + + +在迁移过程中,我也有一些需求使用poem是无法处理的,比如 `CookieSession` + +随后,我在 poem 上打开了一个issues,不到一天内就与作者沟通完成,并在poem支持了该功能。 + + + +// 写完投稿给张老师,油条哥预览下 +// poem 中加一个宣传栏。 + +##### I've been away from work for a while, and I'm ready to find a new job. If you are interested in my work or need a Rust engineer, please contact me `binchengZhao@outlook.com` . \ No newline at end of file diff --git a/migrate_to_poem_zh_cn.md b/migrate_to_poem_zh_cn.md new file mode 100644 index 0000000..0d1c920 --- /dev/null +++ b/migrate_to_poem_zh_cn.md @@ -0,0 +1,148 @@ +## 标题: Rust生产项目从 `actix-web` 迁移到 `poem`. + +### `delicate` 的一些项目背景. + +[delicate](https://github.com/BinChengZhao/delicate) 一个轻量的分布式的任务调度平台. + + + + delicate logo + + + +1. 项目体积: 5w行代码+文档。 +2. 主要语言是Rust + js。 +3. 迁移涉及到45个文件的修改和4000行代码的修改(增加了2500行,删除了1579行)。 + +### 技术栈 + +* 后端( scheduler & executor ): Rust + +* 原主要的依赖: (actix-web & diesel & delay-timer & serde & tracing) + +* 现主要的依赖: (poem & tokio & diesel & delay-timer & serde & tracing) + +* 前端: antd-admin (React) + +* Ui: Ant Design + +* 数据库: mysql , postgres (计划支持) + + +### 为什么要迁移到`poem`'? + +* 在使用 actix-web时,因为actix-web 4 稳定版,一直没有正式发布,我想使用兼容 `tokio`1.0 的库一直是一个需要迫切解决的的问题,当`poem`发布时我知道机会来了。 + +* 在使用 `poem` 且 透明的依赖tokio时,我感到了前所未有的灵活性。 +直接使用tokio生态的组件,去代替原来 actix-web 的一些组件,并且把大量的依赖进行了升级, +再也不用自己人工制作补丁,或者使用陈旧的依赖。 + +#### 关于 `poem`的简要背景。 + +1. 该框架具有极快的性能,一致的理念,以及清晰的实现。 +2. 基于`hyper`,与`tokio`结合,用户有更多的控制。 + + +#### 迁移的重点: + +1. 网络组件的重新组合,不同风格的维护应用状态。 + +2. api级别的修改,避免业务逻辑调整。 + + +迁移前的基本梳理: + +* poem中的`handler`会生成一个`Future`,框架与`tokio`的协作可以让请求在多线程运行时中进行效计算。 + 而actix-web则不是这样,它是内部由多个单线程的`Runtime`组成。 + + 由于这种微妙的差别,以前用于actix-web的`handler`不能直接用于`poem`, + 因为需要确保每一个`handler`的输入状态,并且保证跨越.await的值需要都Send。 + +* poem的路由是一个可嵌套的`Endpoint`数据结构,与原来actix-web的配置不同。 + +* poem公开的数据结构大多支持Send,可以高效利用线程资源, 而`actix-web`与之相反。 + +* 需要修改所有的中间件实现,改造所有的后台Task,调整所有的全局状态。 + +* 在直接依赖 `tokio` 1.0 的情况下升级多处依赖。 + +* 全链路的测试,并编写迁移纪要。 + + +### 下面是一些 `poem` & `actix-web` 的对比: + +#### 路由侧 +之前基于`actix-web`的实现,大量路由组通过configure去注册: +![actix-app](./doc/src/_media/migrate_to_poem/actix_app.png) +![actix-config](./doc/src/_media/migrate_to_poem/actix_config.png) + +现基于 `poem`的实现, 大量路由组通过Route去组织,可以多重嵌套: +![poem-routes](./doc/src/_media/migrate_to_poem/poem_routes.png) +![poem-route-config](./doc/src/_media/migrate_to_poem/poem_route_config.png) + +也可以制作一个根Route去不断地at: +![poem-app](./doc/src/_media/migrate_to_poem/poem_app.png) +![poem-config](./doc/src/_media/migrate_to_poem/poem_config.png) + +#### handler +`poem` 中的 handler, 与原来差异并不大只需要调整一些 `extractor`, 对于一些阻塞性的task,切换到tokio的api去计算 +![poem-handler](./doc/src/_media/migrate_to_poem/poem_handler.png) + + +#### Endpoint +`Endpoint` 使用抽象HTTP请求的Trait。 + +你可以实现`Endpoint`来创建你自己的`Endpoint`处理器。 + +如下是`Endpoint`的定义: + +![poem-endpoint](./doc/src/_media/migrate_to_poem/poem_endpoint.png) + +`poem` 的 `Endpoint` 哲学,跟tower中的`Service`非常相似,但是poem更简洁一些, 并且`poem`也兼容`tower`可以复用其生态与组件。 +![tower-service](./doc/src/_media/migrate_to_poem/tower_service.png) + +#### IntoResponse +`IntoResponse` 是响应数据的抽象。 + +所有可以转换为HTTP响应的Response类型都应该实现IntoResponse,并且它们可以作为`handler`的返回值。 +![poem-into-response](./doc/src/_media/migrate_to_poem/poem_into_response.png) + +#### middleware + +使用`poem`制作中间件非常的轻松,如下是一个给请求增加 logger-id 的middlware的示例 +![poem-middleware-logger](./doc/src/_media/migrate_to_poem/poem_middleware_logger.png) + +如下是actix-web 实现middlware的模板示例,模板代码确实稍有冗长 +![actix-middlware](./doc/src/_media/migrate_to_poem/actix_middlware.png) + + +## 感谢 + +在迁移过程中,我有一些需求使用`poem` 是无法直接处理 +随后在 `poem` 上打开了几个issues,不到一天内就与作者沟通完成,并在`poem`支持了该功能,太强大了! + +我们要感谢整个社区和代码贡献者。特别是`poem`的作者: +[油条哥](https://github.com/sunli829) + +谢谢你 + + +感谢用户报告文档中的拼写错误, 这非常感谢大家。 +感谢用户加入我们,提供反馈,讨论功能,并获得帮助! +我也很感谢`actix-web`社区这么好的作品,因为技术选择问题,我决定迁移到`poem`。 + + +// 写完投稿给张老师,油条哥预览下 + +// `poem` 中加一个宣传栏。 + +### Repos: + +[poem](https://github.com/poem-web/poem) + +[delicate](https://github.com/BinChengZhao/delicate) + +### 留言: + +##### 最近我离开了原来的工作岗位,准备找一份新的工作。如果你对我的工作感兴趣并需要一名Rust工程师,请与我联系 `binchengZhao@outlook.com` . \ No newline at end of file

#yjVqyVv*JN0xwk53g`Q#aT@z{6n~arIiC|=9;Z3)&Y9~eh6Dj0pPbhyzohLty zwg9%qx`ys6n)MoobEItkr?`oVa!rQVJeeKgYHo-c;*o-Sg>DJEOzKcjtR58^kQPU& z{h;0QRXzz#mC{Wa>I}$$oLlNNUh{xL#>eDpJ^Tbsd5)*67y+~Q0BikQ<$REEiiy=^ zXZ>BH8x6)7k$OuiLkxd?_H}1iOV4e!RbzAriHkX0uTqGDb_bzL({UbtYaz^ zm-*6#a57`kbtM_9-alP1?dIL+p`al9v}+~iZ}@$0XeH>&5kO-1GvZGy4nsa3>mE3# ztq6E)Xp0?$-OIzT`P_0;3hJb`vT+2AU{5x@%lkUWYa)To07X6BJ#yp$ZKYz%2r%>e z1<)qU2ECtTaUHnF*-jBtO6)$^D#Sj|g=hNL=>K;zVAlT|!2@l)=!Pan;@PbE@SJu6 zflu!z5Ag%E5Uih6MEV^@epj6{6wB_4O1M)2rSUf}9X@aVvu6Hua0SD1qkAe*)7;$O z4y_9~0ED^$LA`&1E|=Fz(z%|$z$BQzqv*-v)=LX0I=?S+p%@w(uDF@W9|jmxF&cmW zN(O_72)O8%_V}_}DG~0DVks?$02{NCwUVkNEgI|En%cU$z6NPMhw~YEn-wpFUm#WC zSR9=?A1@0PeijY# z|C;}pY5$q88i~=pnJN4p^CG)2()3Urr=ubwU@2n`gV!G>KJ9~Ni8w&0RuJ5y1PTHm zU$*r$fDJ691~VJqH=Ig+mzQj+S*@?A2Ns1sG=fK z3795abxz0YK?EM0Tx&$RjJ$UWl*WWuH@ynQJk6awmXB)UMZZYi8XhttVN zKI*F=Sx_7LM*FpDpzGy=@yh8o9cWhsbz7YlTb-qg$)Ho+Hsac2hbUJjTeg=P>p#O7 zae#f;-x;U5J`?>D<+en#<_AAA_==%%ESlsuRk|ALy&6drT(7^GqW|}83>-WDjlSJC z7rCFaM``Vc=#U)S%?(nI9$@}X-=#hB~=IT!hvc}?FA~t$R@EN#5=1ZE z-fBwUIPOotxVeRTcljCY-uYhc^>?6>H5gB77t2I@u6^J_dggH|om8#T3YY_=G?>na zPENh!zb_Mt#o@IC{0Xc74|i`F73KDZjmr@UK}wJg=|-g+ML=3|=nm;}=mC{RO1e>y z92iPq=mu$}C8c5L7&_hu{GD?=z8~MU{vZBp@nIGZJhS88d*A!IuKT_puk@$g2Wo^! z_9Y|n$jHcwZSEDN@^4=~dc7(!oIiy3@ZrNigAUJs#%7lE7l>rrs@r6WVeaUUK@cpP!TiRZTc;$4l1AXTpAz=K`^<3qaHt(sDB>{GW5dyZ+aF z&5YPA(v30c$y>BFYhyr?WjEblv0RjATYUl`lpd;z)Hhgt=ETWn)-0) z=3{+l@&k@Etbl3NW`1TubO*8KW67%~aeDUdJd^t{4Hvk{>$vmB7I=oBIerGYpHf-U z7)mi{Ie=c(a~WHYQE{-6+}8cDwE>7rT4^$K{pEv_t8Sqx}Mml@FEUdm_fk)7ps!6wr2>4{Tx};!`t@CN$(V< zYv!DCl`wjvP%Om69LWXnMvu1gOHVI%Zm09wh0^fzYn>latJ=>-#HR2yFN*qK`JCLD zS?Yc`-i4X-=~IcY*8?jcjY@T-GODt?yvW)&lrpj2*@l4DV`)`$yf0N=l1_4xi4F9LfX|9x zd|GWd{R4|t5F@{R{Xuh-XhP<O^M5S3jR1o!`E2G$m|*^ox~a(vv$~ zN~zyGgvW|>1MDVUjdthFPwn{||6T7mzt($DkJuqg6>I99#zlo71QxDDLaT|NH|e+I zps>6$BkG+QwD{Q(lyV#5r_C&rUovEIGt}U$yN{h{MUr{mwnIUW83_}`>dX8+c^qJc zuBvSaPw=!5{Ad#^WgQp6UaS~#aL^1D2|S`b#O^{EivrIe;BV$W_6rVa(!NaZdk zkNZQl?l|;j;2zETs5yQ5{{GX#aMcTdUwEZlVI5acP>O0pK+r|9flKkNBU?^n3u)dH zbr~rho2{eP5bFpg6@Ji#OC9mJ2>s%;d3cPN^TSq9aQB;yA9D}7o{^nA%V-JM{peu0 zn5TiYt)MV08h`IzX|nt-r-q!J#B-(o*QSTIpU3OTBgpv+g!Z;$Yh9a-hk~?5MZGFb zx2EoBRdHHO?XB-E#UY2Yq_8Sj2y{JwT zD&@B&74&PHZZ)Sqi`Cz>D=9R_L=6m_Tby1IIND)wHS`Vpwu3<`T&HTVBwYxNO)b68 zb>UZG2myp8vUQNUC*Q6uV|I$-~acO5p1If0Fa=cmQlC#0Re)e(fd$PfM$`k0{WHtC+I+@x*NPyJW54r>U4+)hJ8Ot-RG76Gdk#2cl^ZXM@LAF(ypVRdy)}|5&UF!(zCsk6gRl7LDNt#+d8r5V$irD-y|LkJU|aTYoT>qG<2TPtJa+`k; z{Jp}!z%8yWzh$Z(BRD>c#gl)?=7DNyaZH5Xh~Qt6CVDQ*y%BHTNK7?AnEJK-85Kj< zfu*eP+)lto%Ut&6gk+9&bacHZq19v0OaytLzLJnL-Y71ub~REM!k;Zqr@1)i;s_w`Q=aaQ~@W}j-*UlJvH0eh%Z>g1(z4)=B;U%_oK4S<%xt@;}!7z zlgmLBFrYv*l*CvO|1nS!Gd4ir*bgbP_j&6c*=GWUZ2dZc88&%3TGRWm`8{%b)7w?e ze&9-umA)BjA;KRv!{6**e9d`FzowcI5HL3Z6qzIcp#gtwC4v}X>kxz;1>RHJk5a^S z;!t{Ew{Oy$h|ij`Q({bK8ny(kcE*RbaOid*SlLt13C37UdkKcvWpkg`Sf*c%~opTi<{#v7Wh@Vje!fy6Yjf`mI;tJmE?BH6~g)+!LIS)-KDJzL*4Oj^$V{tOsotajPrjnhf z&h^-*ji#-J=lKf~l(UY#_-^SGCluM1#^dFRDlANAlO-(_5Na4f(Ot&)PCgnf=?+?f zLZ>R#;Rfc_#t#i=MtnJwihJ_u6kW5OMr2Qvta2S@)AMwzaB>uqBC_Q{&#Omh^%URv z%{}pW!k#XwrVUnn_Uw!7=S!#>`d$V-d-S5hKnl-OqvhVm(cA&rx~(>AszjY^urXSL ztWL)Q?5=FNhZj3@tW+9hC)UyWYr4LtfZE|I)X{ak^UkuDArZ+EGvDa);U8s5JjfB zY>`*B@#xay^kLx349AMf%8tFI_dho;(28_r+W4*IjA~xXrG`9$SXyC1y^f+h*Hq~t zzHMQ{F{T!a7>QL3a?Hf4vh!v~V}^(q6pD5E4*@L1`$#(M&Gg#PL~lh+l$gyFNikGI zjg}ReDfI#=)>>*78@Hf8b9r#TZP4oExU@SND#+L#P(abx#4^$YY8A;Wi7)n8X&^DxIZdNJm zf@UunB%Oaho<4-Y8$m)MFK@OndQaAV>d~vXwfnHa;2q5tAya7@5k1OHI#_d=>_e%D z7JN3F7l>h2^3wez7vHlS z)5SzPj$`O$-%Zz6WkSw4k5@7<9+OoE2ghrH8bv$^(Ys>Vwf%tb2-2)ay~FwU*)zmJ z2`nmNRs@4x_<|n@OuF2F3^D#tDAwu0$uv#GwWjqK2)uJ~!&qHhYKmH(19cJfa~Ys@vShA$oc=wpo*kCrLoO)0Z;#$+Q!;v-iaI zHqFCRbMk+#l7_@Les{4=yYmH*#G`Y#$fQ`cXr>T5@|MC|U*);a-=8=syl!EDx zNB=MXHS#L{^0Vwh6mZoZPWo^g4O?X;q3mBo|9?0r0J}p~MDOIQ3Yv69-vMsJM4E+K zcIu`JM!!SYz-NLRz{F<0uui};O$364<(Aav7e_??K|$oxB!d4}J7j*fqloXems~VG<^#^u z+qjYJ7+6@6BL%#>=O%vw43}N{ok>bn7@Io z6jS4Jv&O837-fqidcTW%2aH*-Ovq;I&f5(`CMH%IO)1&(i$WqJyjtUCFqc_*z z4Mpkk*Z8A@FKBjePGrUzgz3N^Ev7fRb=`Z=?RZS+pJpgAf3yA->qa`$|8b)J_wJ@! zH)DdveqR$1N&XJY(!6cEq3x30p^>8hT(oDyF$UgUO=>U3 zKVFG)`=$eAB??-<@s7WmLJ)b~Z=3ldu|tKwcdoxlEVP>e<~2$xx%=OtzlBLpbu;U2 zx{!^e|Jv~zRBW0X-m&S4G0}g!hC=W{SE-Lc?;{Gqx}D)i8HK} zJ2TP#PE#zbI-z4a5+F=cy1mUM{6@f&Eqao8AANRc^s5GwW!OZ|CEU;Z$N9(#_mx6G zl5fuFkIbSX4nA8gKOmdZTz^_^2%pUC`H3-jn~MGNZ2Ns=bMG)}f~V%#;iL)jaVlg- zbw!}CSMhPp9xikG!+W;uecvJbq#H=jz4p#t9C5rIPHlon&jX2wWL{$eDkUCI4AdOu zNJnz=alP6H>kcg);l3?H<+p)!UpvD49B(<)^Jpykk_*yQFVCe+)6!FPJ+aC8Fn*Mo z2LP$2yW@*c9k%(UgXkXnN-o@%B*CFL77iumx+^YjIGnd@b-(EbSq6;{JSuHid$^$oHhriB=lM;?5W(ou%?n0jixrGG~uE8`_uBA>wDK6Ga^oxdxBQ(k<&6uq5+&T{qEi~ zM7F%K%f%^iMh1{h+5l9Dv0^o36x~!WZZn8_1(d1Q;l;#MA!qA~pm>UiV>2coOKz%% zBrV%3rl6hqq0hmMB?~Dlt%e8$oy~w^w)Ks@ALoC(Keqr9`r&)*FTYJo;{cADaKKM8 zSs$g`wPx|Xq<#dHqyhx-G7%JLSXfv<1x1|Z=7&I$=@1aLlLn46xV=x%#YDZ-dkWF!GIAn%y{bqkZ#JbYomd9$?B+z)6BRS-bAxvc z2lQeZ@a~@R{xsc3MooCBLSUheou&4YSKnJ!#~f$?((&iUhQG@SC;c%`_*%AnhU2CN zE7O$fc;Y1eXkOec7%I{-3#+@M{v3T{%Dnh z4cB9!&e@0`dLYjy1j&#?Uc=L|LT!NSsFH|dZCr(R-`rlCm~Wsfvi6q3uBpAnNv~>Izw#j85S(M&~%~nJVcIMt4BVY(M9nPC$)-DriX=yPDYlL_y zn|=KmAqMdo6Rh&BbdV{_l9@{o=8vWnkBCyw$4g|uQsvSOB&>CV+Q5o*?&NBh8~H8< zpB|;mx9`H`iOq^ZxDO*Dc67>~TTcE!j0PlSd{UVGq_%6Dmo#|~hfmXei#%A$(!ppX z02ej@U>TomLN>n6Ct@o@{wg`0*JrCeIfabp)c?5URc=v)PlZc7Neo_}S6mxZ>G-_Ph@iBjaDm)ljIVA* zTJ(K!V+L^cF%ZnZXR*t=-f9%2Rc3~`TFEn@WE2`LbxV2@^*BgCu=#w1O~7`h@Of3v z@xKVUxr$;nL|D~+;`1rd+-ap*7xQSbmt@d#KkapGxJHt%u!2BW>X)`}iA+gbSM4xq7n1%kO#MjBMR(ex&)MhS&tZPbRR4_B*^ zTz)GrbEj+$>@EpSALKT#u~oiU#|v$#_I?aeBpV3~)?w>$)Y~h2YE*)mtO*GSm74wN z?S+eaC&l{gL>&m3_%LrhR-mDqW;&4g__k(|PUv#qBv6(pao3SnZz!Auh1<|@ijr4O zJNvnwh|Q4nStj+Ed_vBUa>WDnUPM?k(cZ`P9B%koH}RUHkY>ng38?0vVvTcP?LQNO#)7 zf&`SpuLeKE8@vUd9IT_K9B~~uyeDkVGN_NLFqTY2L$~Q<%iIB2JfQ$6hS6M%#f%8U zj3g!HTnZEJAiE(9mXL5d8N)=kd45tN?1uA{lhb{wUU;xKBXThaM+zSX;L$Xr%U-QP zbnP?s)~!uZUbM7>Hs5J0x)w^zvCj9F+hh3bjNI0un_Dzy1J`*@MaiE}818KtR*`4k$m++TKo@CIsepw_Am3!5trddG#F?s9Mn;azD4kxRsFt z09*~onaYxY4Vx9nv3F}@y4KJ#fi|M8fZutM1iQzfy8n%ZLH3K;zWBEhd?#OTfp>;r<(7ls;;gODU;23~YqZjrdFg`rAc2P(d zKhY;nu<(#JTaX$3;!gF|AqvPQd1~(!yKOExH)d!9WEZa4t%-=ccBGrMez~(fI_eAG znDmI#szdHr(weyVbj9IZLtoh*__c$9v5@lmk~xVztp%m5Dq~a1K<=L6PnQm)j!QY= zhwDJ7A3?3TiAkp3+pL7ovN0xeErJ5B8>rp!9NBFEJX!pKUHgeTR8zaUFT}BL3P!1L zasIQymb8q|8Wo?SDo0tSpNv;M#_$=u@;5F7^kuCLac76`5vt^&-k?&sz6$OlST@9U zJyRz+>?vH#ZkmjWL$?J;a>`sKpae%yD%ZSac3H@w2lV+7cQc!-eLu`UW=>eMA08n<7 z4~V;}&dFiz*ATh8xTIfL8`!JChm-!rhWH^|^4akCb{HkrP?LmT0JOo$+Py3JgVroO z^izw5zhSl<(aT(=+mb$`^BSE$evpnpK~F2JHHN`J&1jXYdUsC59+;qceH}X=8es7oKLe~&SxEJmTR#xJYvd?R2U|umE7$mVEn4R zjyb1Q2x_BBhCkt%N3Nt_IV9+?qTakZazMIgc_bru_R<3c%3i|bPp#gYO9t#Gnr2~B zml~V&iAaZl=fP?yy=>uQlQt4}&&qdZbFsaxCU5bp;CG1%o@0!S7RAYLBQ>BjTlJs1 zqUV;+Prj-YC3o+fG629){k?cz_P0&n9;McuQLIokv~8_NR>;PhRr}ZsLm`LSa{Cw)M2{S#*UJ+wJMYwU52{qPHiB zCE-2@N#aCK%JaP?KlnuG5{Mnba=0Dza3Quq3f{p7I=KY@DC^eOnF?TNI5-U@a!h)J z(xoI5-Wj0?4`h&iXR|)q3~)W;`gM6OH3nD@Xy}1*U$Y@b{ebqF05&g_IE14Br^OO`)RZ=QtpQakdO+s zHp^;f^AfKk18i!syH-Ov&4-)Rdd+nFaGwk5FbYAgX(6 z1Yh4mcd~z>@%a@NFU3#&*MlJmrQFeul$wu=m8wki)2#e$UgMKhZxyIi?XFhe>EM$0 zv*hA1vf9O2(KL{HU3!+^0{+?L^CIaZpS@5850nsWZ1*@R~D_39OpHfzX z@>?ZgNe3ZFS@ncpzk)`W^I8oKewQ zzq-kkLtioxFj78#?e_#c!=SceYjP!w_N!&hSs`7Qc`2w8rcQvuN3pQ_zF4K5fy_0^ zVHo-gY0|MlL+%R(K(URs*|}^*@+LLLr_L!k3r~p^(Jh(+Z1C-y?>HYD@0Qf=P;3R> zPY~16b1}ni$}n}H^KIQwF)^f5c0P4Da$J8)#8?z;rBMKI8)Uo%x%(9Lcd(X!0vV=B z`0b;uIl%~Zt!n3dXAU6!HmmE#xLuTET!Oc(KOLsS=dbvzv|6-SV~%WWdebE+q@IUi zNLyJy`>8XzCDGK!pL9?b)8KcURr`*u?-dHuS2v*P;|B;IIZta>R?t&--#yqLDSOzdI==Dsc+wuQX#+@n`*ryb=5x6>^Er^xX_DeKr#3~aN$Kw3_I}Y7ZpxRGPHxe?CzIl!E#3u`qF zsC!!uGcU22<~hc}U4NuTb-MlKqMhE@kRgOg( z%eVz7AiS(KSH3Fi{VOHL#>?ygfk7x7+CLjL|wt)<{U+v zI5wjL?2K%=3;)Na(nf&3L%@9p1K1}&Drcle5!V~~+U1qK?pR|zpP4@`QKm-Cmd`~E z((HHxqz zfkHLI(n%q-LQ&rM`;V0I(}CMsiAkAxUa0HsmJU*DCQqkLc5pB{;F4E)`(B18zAyfw zCqiP5O;x*?T%P}6wF;x)CY;Sw?v)+PvgFXE-JGgs)h*Ogq*rqpY`j!W3b-h@1ntHs zaa-hVUjYnXv$*s?V!=zvQOwknjai3tJ}~LY@*iG zvVC7KF}@85L7IeJT#)sIf-C9?j`w;KRkS(U3D{w9Af-SGIzLZW5}(~5<8Wwds_d*w zrbFrz1KA1l&80i*!fwMg?!#H=wp<2bCXfVAT(2X|fy^nkknOmQQpWFmoV~rh>Zz-F zDyF5rSIx(q3tH<(h!K4|pOBuddaon#0)1IBrjRAqt*P)@x9z9%yP~4H1=vlz*25~a zTG8C#%?W&* zlU;Tf-Q8VcUQa(qDSQlKra9+6XL9Wi(cNevtkrw=T(Ce%wiltr-{9Ty@En}Lsz{2U z7y>Llso;FQq>IO2_c28V(P`<2)iKosX;;oi=qGwx$&8lX*R?xvq|<~;GUH^FOLnT* zt7wJV?5%P}4kI<=w_g@JNT0i~g;Yks$7D4J0JgUcj=t2BAk`D!H`B>b{}Se{UGCY` z)g{}`OiHV_bd2kv5}yFU=OYkji2u0Sg0!1!aUU%pdN=eLrMFL`uJBXmTyVfh`HKe( zntqb4j&tAH!UWy#92xiuDCGvH&s)go*k33Fg*0iX@x!n#u`>6=~k0 zis-^4d=U69hK{{GIa3*aH^XD!f>uD_IprAstVwX9mv#{uy>@6xToyCEmt*oBEF$PSfbr>pCQcn_=af4HxaPkh3t zI7}wxE)YFclkH#hB}*PIcjeX*rXt%l6?pHx5o{&>t0*26sx|)n(brOu=s7KJCCT&{ zcn6DVl-2}4K!6K?trJg<^XTm9KO|`LU?qh;HF;p(uw7XAaa|x4xN4Z}{6qox=ME-a z$%QlQRVWwcd<}U0^ZZu({l&hNs%y$5M=>RzZxsM7>=7QuVzKR-In2kFs^+0f}ky&-1&I=ADW7%O%z7fXPW;p6!FG8CKE}c(9B{ z%R@YJ6#QGx_8Yk!*gl*s+?GnspCn}fu?uzo<%J%kbb9;!8;TGfFakAr@(Ud7Yn|9~ zBo$c>#8Ev$ySWf_l;AW@KK`2I>8#M!8id=Zi-yVTQVf&Ics*e`BnkoePq-e5q~p*VK;Onbhl7C!v9ZF<@GO( zw%^k~NgC;!Af}N#VrKLk*XDQb*gO90d~U$a=cEQaa6uOqeKJ4--# zx{T1E7j;?A(qYyrxfO^_`i6`bLBqpykTvmB3R4+KXM6|lvO*;tMiTz>=THCbHyqLb z#3=nIk{5r@+H3AF3O)yEc)*>Rc;>fPh~cL>{b|OKZG(B-NBBU>MgK zwC$G{2yS0oToJp;2X9HaTYATcame|aj2EO6>xzB7_RPl9MBjgTPYgYM3WLFU&F>D@ zo8nLWtpy0D2>HCyZxyt#wG{}Q9mZoYQJ?^pbC_{*N{VEmH4xYGYP68IrM0yJduTuN&_^~ZED|5R(6j0!9bQ@pLMv)(w zZrO9G`c9J}%xdY@zAMc2lB-y_S5dKK{+zN`%tN%>yk5K~x=*lHkr;ZK*){Z~#=UiBpTe|VimVCiIZngWb**;K?xa3HxvSI1D zAKV3Cu$J2n;z+i#V!J!NVrv0l08aQBwfmLAhEptW;stQ6O=ob)tK{faaN6Cq37fj& z2PhbFp8l_KhZ{d4^3^QANeRp>y8p8wHI2RaB`nda%CPJG5U?)H&F!AR6?u&_06M{v z1{d@>pg5yWiA0ESCwLuiaXC;1P)*;21z1Lsfj-s>+bbvDs(L7Cw7=a57xk%g9swr{ z^LNAF6S2JmR0MNV)mS?R8+fKlv}8w{lb=v+lAgo?q*PuJT?3On7}*7SGmOw0F)Tu-sQSgOtQAB>TT~shD5- z_y;yhW(-zGwLfN=D7^To*#OgK0a)fRL8f~3v4w(VndHy1j}Ctl9is+(^l0w2ZlJYo zZJBMi(We&rf}SN42_mPyPP6jApPiy#DwxqR_qyd=6Fs%uKv}KCGLvL9^j5109(wWD zFDe%FYk1OMBm4`)$?{3GSd=F!1AGrRz5?)RWpTnt!JK)K&I`|Z)bqW?ryYPQmW+VF zlpVmSJAhQj*P58Lh2D4$C;`mCfIrils|D$iCH+;iv7u7G^kXs_YLofkXJ+sM0c>t` z^qNE(!3E+`_#bdSk6-RHKA|-csjwM)K3Q3$^643opTLAx;+#TNL0;p=BbW$M+CFzt zYXnX&H!u}I?DJG;l0^N|_l2EhxDq*?iDUa;>#uAA`nRt*S}M+z1yx>8;1t0pCo4sA zC~E^bu0&pr1y{JVE_o$-v^@Gm2BD$VbJO07yi22@8Xs~u>2>!)LZq3l8orWw$>_W zOUoN7&$L3dA_rWdp*hfq`MvuNek3W$$(heX=7HS|n~cx)fvFwIFb3Pd!QV|F>6<0T zrdyWb23IlBD=Pe%z+YVUyau_Ao3cK(TW2hJOvq7SV!*ouZVz>zC}SuagA$uNx&_@+ z8}p4g*20GkI>cAnRY1h-W++euU1%k@XV9=f+|<+p$|*UBAV&GXb*QFP*wLXKQaei; z`TgTlQS~AnH755JGudxYb)`i&@N+qG`NYKFR-SLpfV#nBM-{VN3i+PSwEOcl8w6~I zcP9ZlhyN}0^Yg1zRU<1u>bL-n!YCOb&6Xy8;?k>*`y=rfV;$mV&*JXj!zNVuDwvA^ z6=<9mUA*p<2Sx7I#gPiubN}^9Xk^LdwpYPszD)6aQ(x}*EbK3zStlxAQSXrbX=vuz zayi09@xwN8Mt%NNboRy}dyq%2eO_q=YbRZKs0+&4){r19+9Fuefne^1_@UN?f7Q_(^fzZDYE4h_ya{@2U^;SgoNp=G`l zJ3h$VQlZKqV)vaENDWqA-deOagm3LoJTJ{_--d?!Tp6H-irb2+z&3V$xposYO|5i3 zEyzA{fq`H=ak9DOQZ**}Y8M%ZX0@}_`Jt}E`GJ~X8lBF_F_VbrLga1`jF~MnyPBmR zTpak7c5s-!<)TVLNJhPn6V{%SSGr1b{!ZMCd1kPTN7E4gK35EdM3aR}u5YSn${{=0 z(JqmT4nU_rQu+nU<0sLQ@V02s#ft|z0fLLG{(XTni7H3YZ?JdHh7V9Uvd@%%d=LdY zyTgP-#8YD1?29|K9EDnRI7=JoeENg_im5_jr9E8;)zb4lU6To;7ALz$#?u~7j&DEq z`xe3RYm0~bsp5 zPDFF8@l*PC-NxlOAY&)1_+xz*;4UlK=DiRnGjgSwT&0ZZ#R7=GP2_u?=%e zNqtNqr*hk-`jBdMWY60VieqI_Ny?W**Q)a=iWX*(e>IT)DEu`}0i)m$08eO)&a6r~ zIOkaO8ToFIr~+DrD+<9KxEd4u>X6(vi^0-UrBTcvfi2g+DnAmp7XkqkF?WGXI$>6m zmEnoJHaL|IvqYw0w9EbC-XT_<#m$0A_s~Gc)Pqb_k{Ncs#*t(9iH=VE-rtUx_CTBc z`BJ@WtKbPXD6t%!>q0zLlvOtMumXDP`!ek*y_lvNHa@JvIaj8!ta_Ho@)Vag>V0)? z$CMhr?1uv)$O8~Qj04MD8v0E8n?t8ZTx$M)p`kuOJI?+esSZcyfi3{~k=gu5+5B&hL6987!Th zRqc{c(F*9Lx{kI2T2GNWEB#H_r0UOdniP^^+n+3LO*?AUYC@=EIVtTG)3L{P7d~v5 zJ$Kc{udT{ak{VRYjdGo9VO}_oT~u(8OOPInVbUOAmL+8P5g?@}!(}`=3TV)oys-$I zgaPR@5F*pQPR6P?`Nb+kui81&W-R^jM1LHgAX?nO?MU^mSgn`^qtM#ij+3CP{ICX6 zfE<@Nxnhz3oLx<7e|er7=G$%=?qAFstCt69 z9?q;BtTjxpoTm-A)egY)YY%-71-H+%p`#Pei|P?_*6Z1i8MF*bBH;)pVbL>8L^!#q zY*9I)8xe6v^>W2~g|T8-gKNuE;4~PjZoD70h0h1fom%Khg6Li}o9m@YS)F0#h)ySRO2gXalLhQ^hyRSNeW z7S|qT#@ST(@TVZE!clEYyYew)S&vx#*X`gX$^SL^)>|QzHX^5`{Zb6f-YR%ML*_O$ zJlx99Wii42Wx~a`L-Qr{U!D8akmy_Uq42$s>)!saWj7uFc+>HBJ`&m#|9Noh=H+U? z{ps~bqo>!s8M|}wrcB_bcmKXFm~Fm0*9Zk~+--Yvq}Pwzx{D=&LI*lxb7+#!Z8B4qlpS)`lKJF1n<8?7a@t3BYI zIbk|hG=hK@o6v@-si`3v&Zsc*TcEI0jEYHJgKWMjNBx**=Y0;-ANz$?xDl6US5s#e zng%Dv)>T!uz~i4?(ha^YJy!+X0}VPCN0Ih?E`=p6Uj|kBi5p)@R_wJ>=lGn*7#64{ z7<{s?N8&CYd(GCrKi$u`${f{RDP68e@%4auUUsbKZ$qwf5wSyDxa;mC@dF@T`_fV! zyAhd0n^d>vl@X-)d6Hnm*w$oTpFyRHX&*@c;vV>r3HG?yVRvsOUw^hN?&Ko6r=gJZ ze6ga-9daJPrDX`YLg&vGfIYGSRJ|N9;laiFD8_HYn*TA3mIH(1IXs#?YNa7eA(jW29Fe z+(m+XE8cmYr59`RU!2Fk9sE#nEVd>asg|31XobubpUxfCccTQ4=^y2hU!4(K6zMu3 z|Ek#JODVXo+@L<~I!QfZoxX%GTi8BP{ zroE2x?7ZwOn7x`)LLQ}vgEmVx-;Y>X>V5LLNSPc#TNl@^Ke<=@5}n%98P5n(B$nR- zRKQ4=pRegjsZ=M{KWDgpkD9UIOBgHVdQo$3FufKmQj%dypt#}$FRBpxuNpVRrWsaMd!7za70(>K zwEa@;q4{P&?c5RS?)7kF1xxIA&^mGGEg{1}$Ldr2IH@3k>YkOKhaVG1vMBTD-p}?ZH-rW;IYW6IJ zFd61Fcuhy5>&&Ou+L;c%#}z)Ga-4aJzVUghdPR&5wl2DWiGXZ-$kXcEz)qOKQ!3l) zK@^_RvOhNW_v^ybVKXNYlp_PaySjAkSIGK|0&@HFYC(8h>??mO|6|6BIU@;~+Vh|LjyTufQ`5YgKFqRe_oQhEK_K1{9=UEQs105EIY$@{4~JAVfE=1-0Wxj zX6fXpb@&KKgIX|?9X6o19U@I;{>8C~7X<30s>l#p%uv?kpFOXg85_3hA}_q6ub4wy zFIc&n_C!qWi|4}XPE$0TMAwep@|6uwcU>F*usrKHF9ZU;9(V z^<)cjr|Eeja;O`nw+SswC$GY2y?dZWViX0Pve^ElsOUTle(3Z3w|(Kkots%C#6@^> z0!QnmQvDwA?-#g2PXRG^p_5hp%7MS>A!tSa*dwMuXf-l^26PV5E!bgYjMkPTnz1Wx z9jQM$lqc#RLyqbj8(br#@yuiCn-!n2OJ*9X)BA_WkC-A~&j0O`M3i)BF1XDdDp zJUt*Xv}ymS2Fchtt{4syKMg^^C2^*-FSbU-^CD|A6@5N(_75|{+STX!_*A_%Di!JG zPZMQ|bEwY7M~3h5Pe2;ZuaEry9g6HYH*+D7KJ1~Bt@KIs(DW={UK~k;46rF?GXU== z*nO^?J(RL;bfY9b)Wa#O(*WuJ2riBn)sK<|^^WX!%`05J-XV{ra+?_J8M(_=XcUUO z7CU=CUT^SBRoM2306a9{lV#sCzqLCu(L zPWo|Mqf#jMh-v`1P2)XuM*g%T&Cs5eYTdfM=Hu`_zfWMzmY2BVA)1YaaJ?%xvY1*# zZQAvW(%Qlzr&)X%6ICktl_nJiEBMjA4zeb-tmtg2rPPu8$-KA-Lq6qKb?SF z0*)bl4f^HZZjuLLzOGQ4xp@_nv436v4>$^cZD)W zCTa3tpYVDmbi`esQ4#CqeUQJs?O#r%>9bo-QhJ?>D$9Jo4GGPyw@wUi;Iy!XQ(G6q zzn9X@s%lEayLLVwd&J7PkPmn-a}QhPrhT?=yl@3CC#~f5aGt$(ng?b|Ti=Mw+IjEz@8#oq zD!#qH{@O#&myCAbfbGE%`D4J~6RhEs41B&TKb+_V*#`}aNq z_OKjvYrbZ+O(WmD$6~lFiL^q21>D7?l+oJhm;c{pVX*uDHQDIo#+x0RoSd$yrgrKp zr>Lm-V>UN8_C$RDD3&}ca@}bj>6q@TALit;8j`!YxTOc#cEUNUt*<0qxa8xS_^_2| zZUJ-9w7-nHqW?c_y?H#;UmrH!SCojzmL+93)=FayEymiAZH6&O_8ChEA&KluvS(~% zXUtfKv6t*ZVaymLW8aI0B0O`ye!u7b>V7@**Zebc&iTBr^S-Y4az3ZhD98UdPez#| z>_;lh$;>D&@3g#)?V>HbIB_k>h=dC7Jjb1MNkDd8fUskFH#XoIon=>nEPj8ocU1IpZ}d7|fU0f+VX>Ld+Iz zx&7F58-6edzO;7lz3<=tCIbBMffvC^p-ML7;$>if$g zW3_p$p-r=q{Dh#dJC&=i)Q&vuLIN!={}nP{lc#r*#*U7T$}K>(AF&gQ@l9rPyeYd# z(+GCrqQcReo?Eb-;9V16n$AS~47WbC(V&O_>p}lxHVYEHwk+*0yc5d}<^6(;CHxZ6 zdWXJ2PShi4CvJzstK*ywI?H3fQFVWLPPOO8zhdJ*zrGYg=OcxM!GhVvItg4Jcj0Q9 z<~;&Fh5Llc=d=@?)%O3dUqr9L8$JqARKJ%jM~kqU`hN{5+5dL-0{<_#;r}@D#8VX2 zI{a$X2QDZA8KnTFtdf`G?XM79cgfbRyEwJ-(-&@O9ez8jS;tWEEA+oX%75@Dp8kTJ z_}L1GW`(;%r9ioc;uOS!;6a5<2Rl^$D#?93pEXx29Ak$2>2*02kMdJdsJC^S5 zh%dln>qhif;}r~zje=KA$6j90D6Rh*sOCHA-e9yImC7G=Vx;$l9KBtH=n|BP&Fvix ztdAJ>4lL&bD%sEpuz&0o>@axs;8jFx?boMs4@P~)SxiiqtdBs*G`Si?*J$eo#aA}e z<29G5H3NxdJZhx4v*zUjZHv$^z z$(_CkeVvCG8CYnJiH{sMrc{p2i;x(#S;+_T`$<7i$`lmd?X8K@WY}Eb-n2h@ul@L5 z%0b`!&|jM`^!7tGFDk~pxVXgqzGc#kj1%q~;BqC_!l9cy=Vot+dAk6(>LNuoK% z8!tk${ML`6@Tk4)@{VWs{^r@__n#?zyIth5N7A{YLS3Zj#Zy7>$xcGa(NGqi&y~8; zA;Jw!@oRAt?_ZVaG&i8Ohfsc22j%--A?6+Z6!%@PmWZEj^}6?$A9??c-tXz$rnonP z`KHQ`CqeKXvsqD!R3}h=(_xXnn)bg0&7JBVU!ho}TuZU!*rnJt7!p%9bZh6P@3`d^ zD38t4AK#2_I{yc@|H8~(=Y1U7@HfVsXEzAm1A!-$qWa$#Go}3Ib?h`BcHOJkU;Q}E z4h=bURH%QD`Wvc+=rM*TY92{avzKmJS%(~6AP7aZSpA1k?e{|GBLCj!AI_O|nV0`NSOthItVBW!u zFTcZ+8`r1WdPiY!2bt{hZh-tazi{ z%N0fn^<~{{5eYm{+XPY`|7fy~C{`olX{n#Gj}W#S>Z|3;=mliA4Dx8kHz7ZLieC^U z>izoWm3ZReu)Vk)LI;C`(;iCXJg-E?WA}T}98jXLL^0QetJtQZS6d%c%cIw>QKX*v z((XgoEWxl%LE#1wC~~KHG^Xtgg?y~%EczE-t6a|A>>_OV4w^;;cjAPwHZDP0@Q;mx zL`IW{+M9MF-PK_!DAlcP`Tb(_VtH{F_!C<$4!;jkbaFDij!(op(Md@&JF`REHODvq zLx39+2@!u2(LD|q4q}xNVci!4g6|NmL!g(fb4G&9sqNL)ucl^J3+k(LhS-AO$OEf{ z4~DV=Uf@{S1v;rt!e$(y>x~oqilr5)OcL8v{#~Vn<#5qQ_^tjBo*i=8 zRW=4~#6I2;iyvC_T7sWcEw>+DzbF}l=C-h^=+g$fTV=aW<~!-@JPKZ|;;}yTw)0%y z=7i?mb=$?ix(#=agG#4ELrT9kj6C7;PSKwcdfR2bXOi~C2!MSTSY_~!TntjMjOEZ)Ef7C0jIH-XH!~|mCAl1? z?0LDb%pxL(Vep)vuk_&wW3jzuoX~>ynh>-Mxv>@BD@4?-rbK*3guRaRiwNUyW1KQC0J=@8hR)J z#?~DE*znfs91r(RkeXy45HZJF!8f9l@#I#Fq7))dJ`*}6XgRTEzG*)gh}(6Ed5M>! z7+o&j6Ovit)1a!c#LcK|_P@q@PZ7V`1uUfQ=T=~C(QO}X z)Zqz1#Rm@e>J--#aR|iXld=vW3QEgjfE~&)>$_w%kWkib6PQ9&6Tx<~+QS}$;fGZ= zt#EL)c+S_g-Man`{Rm+Lf(@2H2iCw?lo{m)Z&RMrS*rgJx>)HdCl=hh5AXI@dPZ;@ zf%i%gp=p@M$$OeRBK$-ts};Uxt#Efu2*)cH zb?Yb$&0yQSe`BIM=QbztgEZ3sL|OY;(a-(f|$ z70{c&NkQRNd2m~vv_Ptpf-p^Re^;Ez%d=PXO<0|H{1Aopfa}tk}cPtV+Dvs^2Jpo zKFlkgD{a#4GzNVe_;u--HApg-LVb^oPlMrL)A(f@T;?g zbY*M^dPWU7Ir%FZeMH2y0nE4!<5U~M5o!NF*SdJ zZ8#8QCmZ+f7`@d4V~5Td_7t;Z1mOeOsb3({pJ_HCg+lN;0Ic?d;15Ngdk8QOD|zTd zB0&c{YJ)W_p=K*6xEhxrLdB(9qox0MjZ^0=yf(hhAd2dWuBDVp%1kbkFlF_GgsHhz zX{Ml_I`7rpkNQ8J9N5j(k28p3wUxl%$K%k)(-4mIe55c&jtXTiQE`gB*+pA7thR)J z`*0o5{lh=__OM8tn)TB~y}6@!?~uO{AI|Y~+G<8HP7E9uUFKrTvD*~c|6UPCf^yae zIasS!AE>V!uWF5L6%j)EA{iPl)m=F0gc3kqy>FYvTz-=AK$sp-B~vTqyR6 z-L%0Iaz!B`6VCLQG|6|IzBI{c9|E==bIrU9m-xf+Y2zgGKBQxO>XiUWryPy5{loHQ z#Dc|Q(-?SH%Jd~OR|KXaa2B^C>e^xB5nNPMSc0}r$+Yk1j<}(DSsgz3`n8lBcvQtT zAQ8CKB!TT9ZgeL-az-fzPP1ef?`+An+egnWD0an8l-vO@?G_Qti2 zHpm;*dpS@qE)(f4LYsg{;qy0uO-}mJ7QXP&Bah)V3G5&pcyLE+wMu?>KJbIh)5YX- zA>oa|e}i-CT+1dVXtK4W<}5N@Tt=kwMwb$VPY%lIq3s476r|1eT62augtPw98f_y7 z;!&=&n*qp<+QJdpiseju>`P5ML#YnO>z#*II}TGY%>L>8=HP$) zNcMZf=FOD44@q31rYkaAp5T0(us0ITcmZNe(zfXON)Tj+vOmQU;u7Zf9~s}HLC}DQ zmr6n4#!AkXuoETQU6YEgwzeUvI38N5C>LK@a`!4ffJ?i3u@SEyhkFP81Y*qu^7Oic?b$Zq1DZX+6R_yDU(ub#~AWL)%G@HzjNW{6h`&GDb?p&I4Xdt2yn zC?1%X_@X@AUUKZ$_?dC0A6hvAAFZK{710ryfzim<5M=Wr7+uW7(?x)l##D5xS7UpV z6Y)*gpU)s>=)giC5|7sn_s4(Qpdkr?LD>i^0o?tZko|LWhvDA-e=YHSCkH8DFW8>F z5CHw7Yk;Ux0?L-A*5j&;%|&8`DXVen6RCC?bWc4+Jy7I++a*1#8I{UZ4rYf7sfRZbkyB7dTC-Y4IFy2=TC2k$Px*8>7#Nn3~ zjd=mHq^@)y;YMh~;uaHrP*zQ2)w+PLDJeY8QqkzAWxjdHEPS`hv(B-8gq0@oGj~s1 z6=^`~po6TA#a>G-)mpdJflC~m{xtoU_qa&&9@HSCEI?aP8@lPXX~ii4@^W;vOD)SQ znX!4(sDp-%b6>_?KHRX!8^7r@@FcT3Kkx$1)s~{;NUY{>0c%UE%;?q)N-wzM?t5Eg!BMpO_XU;?YyzKt2DzQHz;}+o4$Ux;DJb&JL+V&%%f;kaD%uzFdF6aF zl5b!=0mjgCLf^Uw+Th8!8xw(G*E$^ej6_{$Ohl#|s_MGYq(=|ei;+q*X{IF#s*o;f zg3>G|#grwT6Vio)0Gx%eM}O|@HLmWsi2@;P>1lDzyN&x#zG*jAEw2P_mTAEy=4<=i z|8j(n&b8PLAC7P<$2|5cIoCk-1m0EM_~i5c5K|3)l`<;Cq(J4S>HSS!Mt1XNBLait zs4zH!4(!Eh`?fDvX0LJ4-Rl`&4f`YOJIZ=IyG!y447uCF;Cj$dJk8VZ)(#~6WvfRt zjX?b}E}Fl}ByAbW$!;R@wq7jZw!5^UD4&i<^!kd_B248!%d&M$AnFAU!Rl*#_xFS%*e6Xtu zbCFlyI!`TW-a@@Oo6aBc7nO_0z3)$aT1eicHkX&V<{YijU;AmD1FFNl7N4qbCool| zjTDBgy``X_oa1{pEAadEK%f@^sQ^mJrgjHoHDpOVR^InuWC{u3^ytZW9pRkN!)E9D z&wM)Vy99YS=J}DPW^RQpu6*@43BQV*aB*NQPnxBkiu%Vr|s{AjDy z4x%GMQ5gcCRter~Q1!apl>ayb&u90E`DRQnVv1+7G7s%z@nx7`{Q)YjxYDX9ONy&Qw*Y4047mqgdkJvW}vgvyX?aQuqpMg|WMM={ixd(ZkKe#2eP6 z%0B&yt%X%BBFF_tZ+mPz1DQG4B}y!>EI|H_QuVG@{V0~FH4H395?s)UulLs{C(Jl< z-BFL_u)-pEd^=7OYjVp#)+-F(Wcx^TyySGlPao=%8JV*DQHToFvUXJUR#-(i0(oX( z5q7P^R0*Y{+lQ+>N@Z$Wzve`5eVh{cdx4Sk5X%kYRnOe-4%9KK;)B2tUS>3c{1hF3T%|4CE?8-r&uV3GA;N{e`Df%>r<^Ezy$B*wL^M!q85 z@Swe=>2ZzHIOpS$w3k^c9oNAY>seeu*7uN?gFSSWULkM#M6Mk$^;{2J^Bgdf_1i(I z>@+?rRQZEshV})w)(j@9xf}!PgqZ*&L8Ro044FITrpK_&bMXZMDiL%Cd;QOCAA=Kw zFsJ>#!NDudjk$q`T-j@{VQy}Q0e5F|j{oAY!goF)K8F9~0Xowvy+_=-o)B zwq2AsQ(2tU?}4a%ee7qG(lZr3j$AJeZOr$Yrsq~Si`)f`Zv$o~%QKAiIfe=_f$#!U zRq%BPKrv*JpWiP8oi)PkT$7xpZwy#PHFUaiL6yof{pnXa7RHtHkI_7E`E(&)63DS@ ztw_DLRa7~JC|Od?G1%YgFyu7nJqpz`0DgGUgbqpOtFqEEc(zf1hB z1pI66ZvmH@5gm3R6&!}Pg?h!J{vhjSCg8;L%I?BAhCK2-K}IvKg>04VjnaO7=%rHW zkWpxrK|da%Th0#UJ=5?Koiv_2wwUKmS2gz|VaWQwNxx7pp{pO?rUmscj9ozLdPJ2j zE-kP>5Hb4FksTkvoBn83`^*=g5pJbS@g#^E`P^GH2|2BZIhtH&J__E<9z|1*)WyE!OO1sYdnKFma zph?PMRi|3SdjIgRD&z4-H~rylY>gLA*keKat$40AbGf#y>2vqU z?u@)=EWyKZ7{_N%uWLzI8=2>stcekh-9^9jq2gT@Ws$KXtMm$bYqFox>UxrBl;>+% z_uh5)1vQ_q0P|ILawMEX!?43(*F!j_)`1g=?I z42xLJJ-w6bK8BM-!QL_-SZ}o6l;%EA`Q)WmDpZ-|$Z6i52l19GvX$7n#~tGyl*rf9 zdA9P>eN3-AF@wJ6q_3%hGxpx7^Y{n%)(t@6(<&21TZUJQ!@O(&6~^Dg>KsQ_iM-*J zuLZMp?dn5-oW{vP4%5JnuaL~UGR%^FoKEd$&3D~>c|2mDv{Wu6iLVE|30cyIW5)V& zE8Yc~!s=WE3$PloStaKWaEsfk*>ysdi@r$|nFV0l$Q$kTf=ci^S)GTcHTPClFDFp* zx|4L^83Rxbo)ZLc$%jt8CNz$IUkh#pB3K&pd2ylHK^bB3sB>AaAC8{N42cH4=@!24 zlx@%`TXeQ(O&PEY%D5{enuUemXXoBa(Jz+Uc0iv}5^kuCuU|C~uaORFfSIL}ULRUb z%TB1!deDsd@^7c84EL2}8h=XSc8nF~->Yq^H6TPxhwYnPs=tR5U0rrjbS~?!vMC^K z@eK_NS9*QDxxMP4u=|P&lr<06D_Xb&!@besa60v0BAM@JS4}KjL`PkPG%O6Cr zLxc(Bf*<-uT4WX>AS!LVYSW~SF#Xy{Wp~fr)`Q!T34WLQu;*THSt4sxBUARh^e2fo z?G%jAc-Xzzi#KDR*eN+Ni!(Y78H=l)IPKm5Sqg5jL1*&o++ zPv2cDS-D8K>PUO-*%LxPoUO*i7G%e=!$lq=*}D#8UGt2pBb$>Tx1M{tHLh0bI;XoM z=G#np62MDwdlL>GYDI3iV3 z&q}~GFSBqwR+6hL#RWM46^c5MQsfp09T6nzi`EO7hJ_%_jP6r?tG0-5(+mqPR z|JVeFH*+Pe+f$KWj=Ou2a+NmM7c|D?LUFqKk5C%{;BG40giBM-jDi`{rdH>v6Ap<% z>n)Ull0UV}VJ_|T+)b+b4!L5qD1T9;G!4;vnw9=1rh?5$IgCTXtR;Xk`1!j;6eq(iaGy=h|^|T$DYG)+*Fk`if^p7O%j)H z)fPDDM_S+5;M5=x2UlWc`vfZ?+U~en$;=vOG}rv&`*pqNc9yt8LBmkZ_NlY{m2;Xh zCT63a@wagJ01u6}9wkTIYf4E>1P7T&^TDQb6SGQQ^;v`9Q;54;cqw zZyFoqH;m1=;r*pMb!8vyDrA0+nMC)^I42KDFM2@!T)qV&RhHE?0O2#BVCqbbWQvO1 zrlTS#bHul^pbKXCJNFz~`sOh5Q3$FWD1p1pTqo&cZqeGKK1)i|~>R}Gh+o&w= zfU&)9#f4F$&n=JuHxpN7z3W4PO-(V5as1L=*PmE@4O%s;G}|D8zcF8Da7_(@O~(cA z;ZU<0C~2v48Iv<4hM%$Z`@Wpz=X3%pe}1@pm5h+{`H*HiGTZb0S|Pz>dVrR0IA4xy zs=Ab+V?FoI;sF3K!Wmx0=IaY+O=zvtOS4l5jr-2cB>mgPgF671fjdA9ZoMO-vxf^( zkn+qGdBeFmH7r~a_ZStQYxqp8UmR2HbK@b}87P6r{H2vnQ~+ppSQUFij#W)_#DiTN z`^#HZ^1Au<-1cwU_}_{&yhoiyRiS>v?-Ul|O>_C&y8nUu@y__jrRm_rmwP zG9!g0^~O-2FLj_q`LWb3v~LiiwPpV<*l(f@^eS(-=zyC%|7-F*A#wv?Cy#)xR%O_$ zB`#a>KkaI(H#Y0y7cOTXXaICRj)2w=xCPe#kyZ&S8UOrU^AB+ohrcVkB<+ zZK9GvsX4o!&lq`T`C~vGa0&`#7HEFBqp&eP$1QeT-LCTyoLgsNC$6AMJLXWksJe>i zyn%9GvVk@iyV)W<1HgOD`;D=(?hba662l38iiYot1WGy(ST;u}V}<&o5C@@>@BSt_ z7A@?SLK6NAypk6@{j9WnNjL2pDD$C|6Y}F9#`wtF>gBY19fQVj*F5Wu2#jVX|LAHR zO?BO*7kP{iB(`@8OMitw;m?=6?2rmD*+_1GUvMJugs4@_ht=b72Wgsn?&tXCQ% zlTx<)S>|4zFA=t^PSK6Hum{umH#!#DSB;#w_vlJnQ-QGDK@2{3_$sWiDT^Jnk7Oak`bNwRFzQU=bRz7 zTcgTSn=dWg=9TBhmvD25tfy5-7!)2!^l=4>z}NUgz-l^ITnCpj*x_ey_da&u+EPy} z6+aGsNQ=Yo!gJCZft(`PyG`rM748Q07sjDlbr^ zUM+!8wEIZ&v3}~+FwfL^?f$A}54;o7tPW%oEL7~^S^nCG*sr~*lopZo?5FuxB!G_p zV5~SSs|Kvu66{d_o7KtoRILp2lur0T$ilUY|FZchIzxv@S?TqE>a%V2?|P(+T`PL# z6I+8Y>yM8GqDB~z%ISrq@q!9J?WE*2;R-*&iSCkI!SyAVLdK{d-2x1|wLxrEGyCLb zcPQ^QGU_p(Fc~p)MHikU3e!VCgwq+a^W7%0q(RoyHFvJa!5 znKaE4GM4*hs7A9LdZjb-#Xi6LC(BDq%+e7)cY})`dM`e>c)g<6+5}@!yh%P+(^_K! zE07$xYt(q3wU*X)-h{cDq9VvL{T2C+;g$1eX|Qr)7;~fHmAn2k#_+7bRPL+ZB@O00 z^^1;YUTLhZI&qmlcOM=j3G)GL%1)i)64cYWVPDoVkzXxq-<@zU^ zRvS&Vv8NVF2=s)+0pb@~wD#zymBuQvh_JrYXqY>&=u+7r%@`fp)e?I(LDM?A)2nJy zj03@#=dIjXQ!k}Oy7OHKr_#dR5k6J>-?=&W8o0kUIDLn64y;~;$~(-KM?A4p6MvKb zyT}yYrT4D?ar7(2q7mj2O|Z5=$|HTDhzTY~^=*XJLZ_nx=v{V80LqxJAXrh7ssw@J)Ea=E8rv`Gz@ zsm(iU$e@gns%t1i%%G{?#y9ONBojo{WfZRE$5N0UYZuBv|1riEZDomnF8D>3$6=CGP#y_Py;sco~g(i}VR-$<1vO5Wz& z?)gee{?kp|&cD4%>bM+1HJ6EID3BzwTBiC>|Z$m>3=5;$}>@g4yD)bGpq?H;%=2eJ5? zFUUF$gvurb7_XU@0t%T2e3)+lL{h~9z_IFtk;rM_b`TPLd3Oo#Uu;A_KGUvJbjgtm zgwp_+UM~OJbYz7tEhdR^@gC!DDM8gYFBzb95!x@6; zd46B;&}CIe5*A#1elnnoJaxr-d(|lxFj(`=6d!r);uvH*4Vp{;TJ^%o(@L}c!Dp#0 zFaFB(OCGp;e)G^CCa}78glm$d zdkz^_wZF6d(@`x=CUtBivY5@4urppnz%*4=0^1Ys6q?sWw|dO&m>6&v7QFwxLjYhQ zYx73eSIMOwYYax&Dzxj&mjbE@h9kw=r8!SqjmTB4B1uPTqfSk$YC@JM1&mkIq$yHQJLryf_U;9eGuLD<)LVZ3XA`n{Oq^{-r6#*1G@l*bk+841(_h9SRUaB7NxV zxl3QylS>@o8wu0@!RM;#{hRD<-S)!t2o(~Y0#Tjqs(YV2?;Ob~P?Pc5X$N{Fu(hSM z$@(wtJbc7>^H!ahvvSNIu9254b&AIB(HULvSjlen5}=*0^S;?!x+JC~b8 zrY;?OnW$nm4Ef-c8f10&@|N$cxvkB(=anM$qU-f+ckYK(%Nj#f@?^%%CbtkhI%tFP zW7eycvrWPv<@V=+l{d&J8%M#bCyS<$CU$${QY>CnlGD zZvFKv>6jMx=^2_CPyMS zPGyL%r)NS1{2EYZr-zut2qINUrtwSz>Xk{kGK;C#xZV-8)4o-`x_hVCM7RD=y?J{{ zq=AIsQlH%rUGrLZ$%hnHmiru39rwc2(alxKQvT9 ze)xiHkls?+(wWWT%t}YT8lm9@_1uEt1 zt=V<#Vq8h5&gVrzV9Tc z^RD3v*(5!I=>sMxDr@Fm4*RIkd0gTz!zm?Ur4v)FnqquXbj-~&&Kn@BMV;3Q2***k zl%c{N5n%=$KOR|STQVXo>2}mHMZviI{%Y6eIS(7{OpuzOPn}sjpz$4Pq*%6#T-jJz zC%(7b1x%~_!@m552&}CeT5a?WDSNC6aByO6)Px-K`ov+xogz|OT$Vstf3{J8=FEq2 z6!5u}boHw3anpBhDI_xogFk3*)H?6xp85!&>9E+2^JKum%^BLpkaf|TmIT#+`fR3C zz;_`7CYen3ms09JR=ey_3}%5r$(QYSvHK1At&Az~#Q1ITOAbModCiB$q2(8E9k?I^ zYJDzF2x`OE^11g37G)LYpJZuCC_y60UP_KMEhS-SmO|9JXq8{NEvOIZ>{E9N%YlFV z;?kD>v@vK^pMBGE-P9c{OM5Moip;;q`DpqBLk~l$Pf!T$Ht{nY6AYO=Et`TnI_%B<|HGF#7``OzTi$nRd-DP z<0nIx^wP@uPZzTU8GnjXoFHyo&JeD$3z$$H{ju`9=%-Ua&ivH(Bc;9e#ihc$DNDwR ztmt0pOw5n0$i*OP6kcvu#79s4&bT87EF{ zBZk}y8HuBjqezg7jQM3&e<)fbTlSXgJCV;fO|s`Y`%Gu1`pKp8Zru&%oDOygvq9rm zadY3fhSdM7)k1#=U5n0E+-efcb7vk}WJvqdGI*1+9?M|KA}pDHqoRt*c3rGumQ3la z*TAg&dg=*u1rt-aI#y*dPU)1>lizaUkj*y-Q(9sNI3ub!1GvH_JZI1H+B@UGip;CP^Y%8JX4Y!JDm}>VBbWK|`#Gija1Ahr!=|nMOP;Wvs@?Ixj z;y$Bkq=L`d>JLODk8tGzk=Z-}bf?s2ix+HLoFH485R?^PGAftk*y4E8rn+=429XpxMEfahl+tuf$ zE8#av+?|4*29H0m&AX&T;j{~qAKWXE#BOY>!pDF~19g$6FcoE_1cy4%Mkxcjm9aqd z3FX>ZX6kTNCd4>B6WLa;I?~WLCjAlQ7m!Yx9|^EyaPLYx)629e(HysV5X*3)h<#r< z^v+0(RY46-|07UOHahp2G`Xmn0Xx)*7k9GH$D&8p3-iYkd zI3rBt&SYU^Zu!XNoWy)9&Q#*hTGHf+mK+N~`u*b5Jj8KtZ;Y)QAb5Oun)GtwV!%3w zHBc%8*HB%#Qm>@9AW=*I+eFY2*kct~r?_bss*7%)8KKpm@!Vq4neVc1z|(8*){PAk zxEt^9Wp~Fl;0Au!Ovvve2nvjk#OT(R)_pu#c-Pq`AVcbfkT$WHPl@|k^aGcH#)~If z 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�As9LutmF{m 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