add simple authentication by secret
Some checks are pending
continuous-integration/drone/push Build is running
Some checks are pending
continuous-integration/drone/push Build is running
This commit is contained in:
@@ -12,7 +12,7 @@ use zoidberg_lib::types::{FetchResponse, Job, RegisterResponse, Status, Update};
|
||||
const VERSION: &str = env!("CARGO_PKG_VERSION");
|
||||
|
||||
fn build_client(secret: &str) -> Client {
|
||||
let cookie = format!("secret={}", secret);
|
||||
let cookie = format!("{}", secret);
|
||||
|
||||
let mut headers = header::HeaderMap::new();
|
||||
headers.insert(
|
||||
@@ -31,11 +31,12 @@ fn build_client(secret: &str) -> Client {
|
||||
#[derive(Debug)]
|
||||
struct Worker {
|
||||
id: i32,
|
||||
secret: String,
|
||||
}
|
||||
|
||||
impl Worker {
|
||||
async fn new(server: &str) -> Result<Worker, Box<dyn Error>> {
|
||||
let res = build_client("some_secret")
|
||||
async fn new(server: &str, secret: &str) -> Result<Worker, Box<dyn Error>> {
|
||||
let res = build_client(secret)
|
||||
.get(format!("{}/register", server))
|
||||
.send()
|
||||
.await?;
|
||||
@@ -43,7 +44,10 @@ impl Worker {
|
||||
let body = res.text().await?;
|
||||
let r: RegisterResponse = serde_json::from_str(&body)?;
|
||||
log::info!("registered worker with id: {}", &r.id);
|
||||
Ok(Worker { id: r.id })
|
||||
Ok(Worker {
|
||||
id: r.id,
|
||||
secret: secret.to_string(),
|
||||
})
|
||||
}
|
||||
|
||||
async fn update(self: &Self, jobs: &[Job]) -> Result<(), Box<dyn Error>> {
|
||||
@@ -56,7 +60,7 @@ impl Worker {
|
||||
})
|
||||
.collect();
|
||||
|
||||
let body = build_client("some_secret")
|
||||
let body = build_client(&self.secret)
|
||||
.post("http://localhost:8080/update")
|
||||
.json(&updates)
|
||||
.send()
|
||||
@@ -69,7 +73,7 @@ impl Worker {
|
||||
}
|
||||
|
||||
async fn fetch(self: &Self) -> Result<FetchResponse, Box<dyn Error>> {
|
||||
let res = build_client("some_secret")
|
||||
let res = build_client(&self.secret)
|
||||
.get("http://localhost:8080/fetch")
|
||||
.send()
|
||||
.await?;
|
||||
@@ -125,8 +129,12 @@ async fn main() -> Result<(), Box<dyn Error>> {
|
||||
)
|
||||
.get_matches();
|
||||
let server = matches.value_of("server").unwrap();
|
||||
let secret = std::env::var("ZOIDBERG_SECRET")
|
||||
.expect("Please set the $ZOIDBERG_SECRET environment variable");
|
||||
|
||||
let client = Worker::new(server).await.expect("Could not create client");
|
||||
let client = Worker::new(server, &secret)
|
||||
.await
|
||||
.expect("Could not create client");
|
||||
|
||||
let pause = time::Duration::from_secs(1);
|
||||
let long_pause = time::Duration::from_secs(20);
|
||||
|
||||
Reference in New Issue
Block a user