possible fixes

This commit is contained in:
ghe0 2024-08-22 01:58:36 +03:00
parent 55a9993572
commit 8ef7757267
Signed by: ghe0
GPG Key ID: 451028EE56A0FBB4
4 changed files with 27 additions and 8 deletions

@ -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;
} }
} }