possible fixes
This commit is contained in:
parent
55a9993572
commit
8ef7757267
@ -25,16 +25,26 @@ do
|
|||||||
ip="172.17.0.${i}"
|
ip="172.17.0.${i}"
|
||||||
random_key=$(curl -s "${ip}:31372" | grep true | tail -1 | awk '{ print $4 }')
|
random_key=$(curl -s "${ip}:31372" | grep true | tail -1 | awk '{ print $4 }')
|
||||||
message="ValyDoesNotLikeMyCodeSoHeIsSilentAboutIt"
|
message="ValyDoesNotLikeMyCodeSoHeIsSilentAboutIt"
|
||||||
|
mkdir -p .tmp
|
||||||
status=$(curl -sG \
|
status=$(curl -sG \
|
||||||
-o /dev/null -w "%{http_code}\n" \
|
-o .tmp/output -w "%{http_code}\n" \
|
||||||
--data-urlencode "pubkey=${random_key}" \
|
--data-urlencode "pubkey=${random_key}" \
|
||||||
--data-urlencode "something=${message}" \
|
--data-urlencode "something=${message}" \
|
||||||
"172.17.0.${i}:31372/sign")
|
"172.17.0.${i}:31372/sign")
|
||||||
|
|
||||||
if (( "$status" != "200" )); then
|
if (( "$status" != "200" )); then
|
||||||
echo Container at ip ${ip} could not sign string with key ${random_key}
|
echo Container at ip ${ip} could not sign string with key ${random_key}
|
||||||
|
echo The status was $status
|
||||||
|
echo The error was $(cat .tmp/output)
|
||||||
|
echo Output of keys on 172.17.0.${i}:
|
||||||
|
curl 172.17.0.${i}:31372
|
||||||
|
father_of_key=$(curl 172.17.0.${i}:31372 | grep ${random_key} | awk '{ print $2 }')
|
||||||
|
echo Output of keys on ${father_of_key}:
|
||||||
|
curl ${father_of_key}:31372
|
||||||
|
rm -rf .tmp
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
echo OK!
|
echo OK!
|
||||||
|
rm -rf .tmp
|
||||||
|
@ -117,7 +117,8 @@ impl Store {
|
|||||||
None => return Err(SigningError::KeyNotFound),
|
None => return Err(SigningError::KeyNotFound),
|
||||||
};
|
};
|
||||||
|
|
||||||
let signature = format!("{:?}", signing_key.sign(message.as_bytes()));
|
// let signature = format!("{:?}", signing_key.sign(message.as_bytes()));
|
||||||
|
let signature = hex::encode(signing_key.sign(message.as_bytes()).to_bytes());
|
||||||
|
|
||||||
Ok(signature)
|
Ok(signature)
|
||||||
}
|
}
|
||||||
@ -189,6 +190,16 @@ impl Store {
|
|||||||
|
|
||||||
/// returns old pubkey if node got updated
|
/// returns old pubkey if node got updated
|
||||||
async fn update_node(&self, ip: String, info: NodeInfo) -> Option<NodeInfo> {
|
async fn update_node(&self, ip: String, info: NodeInfo) -> Option<NodeInfo> {
|
||||||
|
// if let Some(old_node) = self.nodes.get(&ip) {
|
||||||
|
// if SystemTime::now()
|
||||||
|
// .duration_since(old_node.updated_at)
|
||||||
|
// .unwrap_or(Duration::ZERO)
|
||||||
|
// .as_secs()
|
||||||
|
// < 50
|
||||||
|
// {
|
||||||
|
// return None;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
self.nodes.insert(ip, info.clone())
|
self.nodes.insert(ip, info.clone())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ use crate::datastore::Store;
|
|||||||
use crate::grpc::challenge::update_client::UpdateClient;
|
use crate::grpc::challenge::update_client::UpdateClient;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use tokio::sync::broadcast::Sender;
|
use tokio::sync::broadcast::Sender;
|
||||||
use tokio::time::Duration;
|
use tokio::time::{sleep, Duration};
|
||||||
use tokio_stream::wrappers::BroadcastStream;
|
use tokio_stream::wrappers::BroadcastStream;
|
||||||
use tokio_stream::StreamExt;
|
use tokio_stream::StreamExt;
|
||||||
|
|
||||||
@ -23,14 +23,13 @@ impl ConnManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn start(self) {
|
pub async fn start(self) {
|
||||||
let mut interval = tokio::time::interval(Duration::from_secs(3));
|
|
||||||
loop {
|
loop {
|
||||||
if let Some(node) = self.ds.get_random_node().await {
|
if let Some(node) = self.ds.get_random_node().await {
|
||||||
if node != "localhost" {
|
if node != "localhost" {
|
||||||
self.connect_wrapper(node.clone()).await;
|
self.connect_wrapper(node.clone()).await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
interval.tick().await;
|
sleep(Duration::from_secs(3)).await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,13 +9,12 @@ use std::fs::File;
|
|||||||
use std::io::{BufRead, BufReader};
|
use std::io::{BufRead, BufReader};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use tokio::sync::broadcast;
|
use tokio::sync::broadcast;
|
||||||
use tokio::time::Duration;
|
use tokio::time::{sleep, Duration};
|
||||||
|
|
||||||
async fn cycle_keys(ds: Arc<Store>, tx: Sender<NodeUpdate>) {
|
async fn cycle_keys(ds: Arc<Store>, tx: Sender<NodeUpdate>) {
|
||||||
let mut interval = tokio::time::interval(Duration::from_secs(60));
|
|
||||||
loop {
|
loop {
|
||||||
let _ = tx.send(ds.reset_localhost_keys().await);
|
let _ = tx.send(ds.reset_localhost_keys().await);
|
||||||
interval.tick().await;
|
sleep(Duration::from_secs(60)).await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user