move routers into default json file

This commit is contained in:
bitful-pannul 2024-02-13 14:41:01 -03:00
parent 2780785e6c
commit d9a6fa8380
3 changed files with 26 additions and 72 deletions

View File

@ -9,24 +9,6 @@ use tokio::sync::mpsc;
use tokio::task::JoinHandle;
use wasmtime::{Config, Engine, WasmBacktraceDetails};
/// TEMP IMPORT, crate::net::?????
/// Must be parsed from message pack vector.
#[derive(Clone, Debug, Serialize, Deserialize)]
pub enum NetActions {
KnsUpdate(KnsUpdate),
KnsBatchUpdate(Vec<KnsUpdate>),
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct KnsUpdate {
pub name: String, // actual username / domain name
pub owner: String,
pub node: String, // hex namehash of node
pub public_key: String,
pub ip: String,
pub port: u16,
pub routers: Vec<String>,
}
use lib::types::core::{self as t, STATE_PROCESS_ID, VFS_PROCESS_ID};
/// Manipulate a single process.
@ -690,6 +672,7 @@ pub async fn kernel(
home_directory_path: String,
contract_address: String,
runtime_extensions: Vec<(t::ProcessId, t::MessageSender, bool)>,
routers: Vec<crate::net::KnsUpdate>,
) -> Result<()> {
let mut config = Config::new();
config.cache_config_load_default().unwrap();
@ -846,57 +829,6 @@ pub async fn kernel(
.await
.expect("fatal: kernel event loop died");
// sending hard coded routers into networking for bootstrapped rpc
let kns_updates = vec![
KnsUpdate {
name: "default-router-1.os".to_string(),
owner: "who?".to_string(),
node: "0x".to_string(),
public_key: "0xb1b1cf23c89f651aac3e5fd4decb04aa177ab0ec8ce5f1d3877b90bb6f5779db"
.to_string(),
ip: "147.135.114.167".to_string(),
port: 9002,
routers: vec![],
},
KnsUpdate {
name: "default-router-2.os".to_string(),
owner: "who?".to_string(),
node: "0x".to_string(),
public_key: "0xab9f1a996db3a4e1dbcd31d765daedeb3af9af4f570c0968463b5be3a7d1e992"
.to_string(),
ip: "147.135.114.167".to_string(),
port: 9003,
routers: vec![],
},
KnsUpdate {
name: "default-router-3.os".to_string(),
owner: "who?".to_string(),
node: "0x".to_string(),
public_key: "0x536e30785e64dd0349a697285af365b5ed7c4d300010139261cfc4dbdd5b254b"
.to_string(),
ip: "147.135.114.167".to_string(),
port: 9004,
routers: vec![],
},
// I want to use ben.eth
// --rpc-node ben.eth
// first index and then change
// no-rpc
// settings -> rpc from router-01 -> ben.eth
KnsUpdate {
name: "jugodenaranja.os".to_string(),
owner: "who?".to_string(),
node: "0x".to_string(),
public_key: "0xf8a3e9667756306a0a25894a8cfe053dc9e7f34e6a61b8d65e92b79f77e05dff"
.to_string(),
ip: "this should not be parsed.".to_string(),
port: 0,
routers: vec![
"0xb35eb347deb896bc3fb6132a07fca1601f83462385ed11e835c24c33ba4ef73d".to_string(),
"0xd827ae579fafa604af79fbed977e8abe048497f10885c6473dfd343a3b7b4458".to_string(),
"0x96e36331c8f0882f2c0c46c13b15d812def04fe8606d503bc0e2be39db26486a".to_string(),
],
},
];
send_to_loop
.send(t::KernelMessage {
id: rand::random(),
@ -912,7 +844,7 @@ pub async fn kernel(
message: t::Message::Request(t::Request {
inherit: false,
expects_response: None,
body: rmp_serde::to_vec(&NetActions::KnsBatchUpdate(kns_updates)).unwrap(),
body: rmp_serde::to_vec(&crate::net::NetActions::KnsBatchUpdate(routers)).unwrap(),
metadata: None,
capabilities: vec![],
}),

View File

@ -24,7 +24,7 @@ mod state;
mod terminal;
mod timer;
mod vfs;
//
const EVENT_LOOP_CHANNEL_CAPACITY: usize = 10_000;
const EVENT_LOOP_DEBUG_CHANNEL_CAPACITY: usize = 50;
const TERMINAL_CHANNEL_CAPACITY: usize = 32;
@ -45,6 +45,9 @@ const VERSION: &str = env!("CARGO_PKG_VERSION");
#[cfg(not(feature = "simulation-mode"))]
const REVEAL_IP: bool = true;
/// default routers as a fallbac
const DEFAULT_ROUTERS: &str = include_str!("../default_routers.json");
async fn serve_register_fe(
home_directory_path: &str,
our_ip: String,
@ -384,6 +387,24 @@ async fn main() {
}
};
// read in default routers .json file
type KnsUpdate = crate::net::KnsUpdate;
let routers: Vec<KnsUpdate> =
match fs::read_to_string(format!("{}/.routers", home_directory_path)).await {
Ok(contents) => serde_json::from_str(&contents).unwrap(),
Err(_) => {
let routers: Vec<KnsUpdate> = serde_json::from_str(DEFAULT_ROUTERS).unwrap();
// should we dump them into a .routers file?
// fs::write(
// format!("{}/.routers", home_directory_path),
// serde_json::to_string(&routers).unwrap(),
// )
// .await
// .unwrap();
routers
}
};
// the boolean flag determines whether the runtime module is *public* or not,
// where public means that any process can always message it.
#[allow(unused_mut)]
@ -464,6 +485,7 @@ async fn main() {
home_directory_path.clone(),
contract_address.to_string(),
runtime_extensions,
routers,
));
#[cfg(not(feature = "simulation-mode"))]
tasks.spawn(net::networking(

View File

@ -19,7 +19,7 @@ mod types;
#[cfg(not(feature = "simulation-mode"))]
mod utils;
#[cfg(not(feature = "simulation-mode"))]
use crate::net::{types::*, utils::*};
pub use crate::net::{types::*, utils::*};
#[cfg(not(feature = "simulation-mode"))]
use lib::types::core::*;