Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apply rustfmt #474

Merged
merged 2 commits into from
May 19, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,26 @@ jobs:
command: clippy
args: -- -D warnings

rustfmt:
name: Rustfmt
runs-on: ubuntu-latest
strategy:
matrix:
rust:
- stable
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
override: true
- run: rustup component add rustfmt
- uses: actions-rs/cargo@v1
with:
command: fmt
args: --check

coverage:
name: Code coverage
runs-on: ubuntu-latest
Expand Down
53 changes: 39 additions & 14 deletions examples/common/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,37 +4,62 @@ use tokio::net::UdpSocket;

pub const BOOTSTRAP_NODES: [(&str, &str); 9] = [
// Impyy
("1D5A5F2F5D6233058BF0259B09622FB40B482E4FA0931EB8FD3AB8E7BF7DAF6F", "198.98.51.198:33445"),
(
"1D5A5F2F5D6233058BF0259B09622FB40B482E4FA0931EB8FD3AB8E7BF7DAF6F",
"198.98.51.198:33445",
),
// nurupo
("F404ABAA1C99A9D37D61AB54898F56793E1DEF8BD46B1038B9D822E8460FAB67", "67.215.253.85:33445"),
(
"F404ABAA1C99A9D37D61AB54898F56793E1DEF8BD46B1038B9D822E8460FAB67",
"67.215.253.85:33445",
),
// Manolis
("461FA3776EF0FA655F1A05477DF1B3B614F7D6B124F7DB1DD4FE3C08B03B640F", "130.133.110.14:33445"),
(
"461FA3776EF0FA655F1A05477DF1B3B614F7D6B124F7DB1DD4FE3C08B03B640F",
"130.133.110.14:33445",
),
// Busindre
("A179B09749AC826FF01F37A9613F6B57118AE014D4196A0E1105A98F93A54702", "205.185.116.116:33445"),
(
"A179B09749AC826FF01F37A9613F6B57118AE014D4196A0E1105A98F93A54702",
"205.185.116.116:33445",
),
// ray65536
("8E7D0B859922EF569298B4D261A8CCB5FEA14FB91ED412A7603A585A25698832", "85.172.30.117:33445"),
(
"8E7D0B859922EF569298B4D261A8CCB5FEA14FB91ED412A7603A585A25698832",
"85.172.30.117:33445",
),
// fluke571
("3CEE1F054081E7A011234883BC4FC39F661A55B73637A5AC293DDF1251D9432B", "194.249.212.109:33445"),
(
"3CEE1F054081E7A011234883BC4FC39F661A55B73637A5AC293DDF1251D9432B",
"194.249.212.109:33445",
),
// MAH69K
("DA4E4ED4B697F2E9B000EEFE3A34B554ACD3F45F5C96EAEA2516DD7FF9AF7B43", "185.25.116.107:33445"),
(
"DA4E4ED4B697F2E9B000EEFE3A34B554ACD3F45F5C96EAEA2516DD7FF9AF7B43",
"185.25.116.107:33445",
),
// clearmartin
("CD133B521159541FB1D326DE9850F5E56A6C724B5B8E5EB5CD8D950408E95707", "46.101.197.175:443"),
(
"CD133B521159541FB1D326DE9850F5E56A6C724B5B8E5EB5CD8D950408E95707",
"46.101.197.175:443",
),
// tastytea
("2B2137E094F743AC8BD44652C55F41DFACC502F125E99E4FE24D40537489E32F", "5.189.176.217:5190"),
(
"2B2137E094F743AC8BD44652C55F41DFACC502F125E99E4FE24D40537489E32F",
"5.189.176.217:5190",
),
];

/// Bind a UDP listener to the socket address.
pub async fn bind_socket(addr: SocketAddr) -> UdpSocket {
let socket = UdpSocket::bind(&addr)
.await
.expect("Failed to bind UDP socket");
let socket = UdpSocket::bind(&addr).await.expect("Failed to bind UDP socket");

socket.set_broadcast(true).expect("set_broadcast call failed");
if addr.is_ipv6() {
socket.set_multicast_loop_v6(true)
socket
.set_multicast_loop_v6(true)
.expect("set_multicast_loop_v6 call failed");
}

socket
}

18 changes: 9 additions & 9 deletions examples/dht_server.rs
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
// an example of DHT node with current code
//
#![type_length_limit="4194304"]
#![type_length_limit = "4194304"]

#[macro_use]
extern crate log;

use futures::future::FutureExt;
use futures::channel::mpsc;
use anyhow::Error;
use futures::channel::mpsc;
use futures::future::FutureExt;
use rand::thread_rng;

use std::net::SocketAddr;

use tox_crypto::*;
use tox_packet::dht::packed_node::PackedNode;
use tox_core::dht::lan_discovery::*;
use tox_core::dht::server::Server as DhtServer;
use tox_core::dht::server_ext::dht_run_socket;
use tox_core::dht::lan_discovery::*;
use tox_core::udp::Server as UdpServer;
use tox_core::stats::Stats;
use tox_core::udp::Server as UdpServer;
use tox_crypto::*;
use tox_packet::dht::packed_node::PackedNode;

mod common;

Expand All @@ -42,12 +42,12 @@ async fn main() -> Result<(), Error> {
let (tx, rx) = mpsc::channel(32);

let local_addr: SocketAddr = "0.0.0.0:33445".parse()?; // 0.0.0.0 for IPv4

// let local_addr: SocketAddr = "[::]:33445".parse()?; // [::] for IPv6

let stats = Stats::new();

let mut lan_discovery_sender =
LanDiscoverySender::new(tx.clone(), server_pk.clone(), local_addr.is_ipv6());
let mut lan_discovery_sender = LanDiscoverySender::new(tx.clone(), server_pk.clone(), local_addr.is_ipv6());

let mut dht_server = DhtServer::new(tx, server_pk, server_sk);
dht_server.set_bootstrap_info(3_000_000_000, Box::new(|_| b"This is tox-rs".to_vec()));
Expand Down
148 changes: 106 additions & 42 deletions examples/echo.rs
Original file line number Diff line number Diff line change
@@ -1,49 +1,64 @@
// an example of echo server with current code
//
#![recursion_limit="256"]
#![type_length_limit="4194304"]
#![recursion_limit = "256"]
#![type_length_limit = "4194304"]

#[macro_use]
extern crate log;

use futures::{*, future::TryFutureExt};
use anyhow::Error;
use futures::channel::mpsc;
use futures::{future::TryFutureExt, *};
use hex::FromHex;
use anyhow::Error;
use rand::thread_rng;

use std::net::SocketAddr;

use tox_binary_io::*;
use tox_crypto::*;
use tox_packet::dht::packed_node::PackedNode;
use tox_packet::friend_connection::*;
use tox_packet::onion::InnerOnionResponse;
use tox_packet::relay::DataPayload;
use tox_packet::toxid::ToxId;
use tox_core::dht::lan_discovery::LanDiscoverySender;
use tox_core::dht::server::Server as DhtServer;
use tox_core::dht::server_ext::dht_run_socket;
use tox_core::dht::lan_discovery::LanDiscoverySender;
use tox_core::udp::Server as UdpServer;
use tox_core::friend_connection::FriendConnections;
use tox_core::net_crypto::{NetCrypto, NetCryptoNewArgs};
use tox_core::onion::client::OnionClient;
use tox_core::relay::client::{Connections, IncomingPacket};
use tox_core::stats::Stats;
use tox_core::udp::Server as UdpServer;
use tox_crypto::*;
use tox_packet::dht::packed_node::PackedNode;
use tox_packet::friend_connection::*;
use tox_packet::onion::InnerOnionResponse;
use tox_packet::relay::DataPayload;
use tox_packet::toxid::ToxId;

mod common;

const TCP_RELAYS: [(&str, &str); 5] = [
// ray65536
("8E7D0B859922EF569298B4D261A8CCB5FEA14FB91ED412A7603A585A25698832", "85.172.30.117:33445"),
(
"8E7D0B859922EF569298B4D261A8CCB5FEA14FB91ED412A7603A585A25698832",
"85.172.30.117:33445",
),
// MAH69K
("DA4E4ED4B697F2E9B000EEFE3A34B554ACD3F45F5C96EAEA2516DD7FF9AF7B43", "185.25.116.107:33445"),
(
"DA4E4ED4B697F2E9B000EEFE3A34B554ACD3F45F5C96EAEA2516DD7FF9AF7B43",
"185.25.116.107:33445",
),
// Deliran
("1C5293AEF2114717547B39DA8EA6F1E331E5E358B35F9B6B5F19317911C5F976", "84.22.115.205:33445"),
(
"1C5293AEF2114717547B39DA8EA6F1E331E5E358B35F9B6B5F19317911C5F976",
"84.22.115.205:33445",
),
// kpp
("A04F5FE1D006871588C8EC163676458C1EC75B20B4A147433D271E1E85DAF839", "52.53.185.100:33445"),
(
"A04F5FE1D006871588C8EC163676458C1EC75B20B4A147433D271E1E85DAF839",
"52.53.185.100:33445",
),
// kurnevsky
("82EF82BA33445A1F91A7DB27189ECFC0C013E06E3DA71F588ED692BED625EC23", "37.139.29.40:33445"),
(
"82EF82BA33445A1F91A7DB27189ECFC0C013E06E3DA71F588ED692BED625EC23",
"37.139.29.40:33445",
),
];

#[tokio::main]
Expand All @@ -59,12 +74,13 @@ async fn main() -> Result<(), Error> {
let real_sk = SecretKey::generate(&mut rng);
let real_pk = real_sk.public_key();
let id = ToxId::new(&mut rng, real_pk.clone());
println!("your tox id is: {:X}",id);
println!("your tox id is: {:X}", id);

// Create a channel for server to communicate with network
let (tx, rx) = mpsc::channel(32);

let local_addr: SocketAddr = "0.0.0.0:33447".parse()?; // 0.0.0.0 for IPv4

// let local_addr: SocketAddr = "[::]:33445".parse()?; // [::] for IPv6

info!("Running echo server on {}", local_addr);
Expand All @@ -81,7 +97,12 @@ async fn main() -> Result<(), Error> {
dht_server.enable_ipv6_mode(local_addr.is_ipv6());

let tcp_connections = Connections::new(dht_pk.clone(), dht_sk.clone(), tcp_incoming_tx);
let onion_client = OnionClient::new(dht_server.clone(), tcp_connections.clone(), real_sk.clone(), real_pk.clone());
let onion_client = OnionClient::new(
dht_server.clone(),
tcp_connections.clone(),
real_sk.clone(),
real_pk.clone(),
);

let (lossless_tx, mut lossless_rx) = mpsc::unbounded();
let (lossy_tx, mut lossy_rx) = mpsc::unbounded();
Expand Down Expand Up @@ -137,18 +158,46 @@ async fn main() -> Result<(), Error> {
let onion_client_c = onion_client.clone();
let net_crypto_c = net_crypto.clone();
let tcp_incoming_future = async {
while let Some((_relay_pk, packet)) = tcp_incoming_rx.next().await { // TODO: do we need relay_pk at all?
while let Some((_relay_pk, packet)) = tcp_incoming_rx.next().await {
// TODO: do we need relay_pk at all?
match packet {
IncomingPacket::Data(sender_pk, packet) => match packet {
DataPayload::CookieRequest(packet) => net_crypto_c.handle_tcp_cookie_request(&packet, sender_pk).map_err(Error::from).await,
DataPayload::CookieResponse(packet) => net_crypto_c.handle_tcp_cookie_response(&packet, sender_pk).map_err(Error::from).await,
DataPayload::CryptoHandshake(packet) => net_crypto_c.handle_tcp_crypto_handshake(&packet, sender_pk).map_err(Error::from).await,
DataPayload::CryptoData(packet) => net_crypto_c.handle_tcp_crypto_data(&packet, sender_pk).map_err(Error::from).await,
DataPayload::CookieRequest(packet) => {
net_crypto_c
.handle_tcp_cookie_request(&packet, sender_pk)
.map_err(Error::from)
.await
}
DataPayload::CookieResponse(packet) => {
net_crypto_c
.handle_tcp_cookie_response(&packet, sender_pk)
.map_err(Error::from)
.await
}
DataPayload::CryptoHandshake(packet) => {
net_crypto_c
.handle_tcp_crypto_handshake(&packet, sender_pk)
.map_err(Error::from)
.await
}
DataPayload::CryptoData(packet) => {
net_crypto_c
.handle_tcp_crypto_data(&packet, sender_pk)
.map_err(Error::from)
.await
}
},
IncomingPacket::Oob(_sender_pk, _packet) => Ok(()),
IncomingPacket::Onion(packet) => match packet {
InnerOnionResponse::OnionAnnounceResponse(packet) => onion_client_c.handle_announce_response(&packet, true).map_err(Error::from).await,
InnerOnionResponse::OnionDataResponse(packet) => onion_client_c.handle_data_response(&packet).map_err(Error::from).await,
InnerOnionResponse::OnionAnnounceResponse(packet) => {
onion_client_c
.handle_announce_response(&packet, true)
.map_err(Error::from)
.await
}
InnerOnionResponse::OnionDataResponse(packet) => {
onion_client_c.handle_data_response(&packet).map_err(Error::from).await
}
},
}?;
}
Expand All @@ -166,24 +215,36 @@ async fn main() -> Result<(), Error> {
match packet[0] {
PACKET_ID_ALIVE => {
friend_connections_c.handle_ping(pk).await;
},
PACKET_ID_SHARE_RELAYS => {
match ShareRelays::from_bytes(&packet) {
Ok((_, share_relays)) =>
friend_connections_c.handle_share_relays(pk, share_relays)
.map_err(Error::from).await?,
_ => return Err(Error::msg("Failed to parse ShareRelays"))
}
PACKET_ID_SHARE_RELAYS => match ShareRelays::from_bytes(&packet) {
Ok((_, share_relays)) => {
friend_connections_c
.handle_share_relays(pk, share_relays)
.map_err(Error::from)
.await?
}
_ => return Err(Error::msg("Failed to parse ShareRelays")),
},
0x18 => { // PACKET_ID_ONLINE
net_crypto_c.send_lossless(pk.clone(), vec![0x18]).map_err(Error::from).await?;
net_crypto_c.send_lossless(pk.clone(), vec![0x32, 0x00]).map_err(Error::from).await?; // PACKET_ID_USERSTATUS
net_crypto_c.send_lossless(pk, b"\x30tox-rs".to_vec()).map_err(Error::from).await?;
},
0x40 => { // PACKET_ID_CHAT_MESSAGE
0x18 => {
// PACKET_ID_ONLINE
net_crypto_c
.send_lossless(pk.clone(), vec![0x18])
.map_err(Error::from)
.await?;
net_crypto_c
.send_lossless(pk.clone(), vec![0x32, 0x00])
.map_err(Error::from)
.await?; // PACKET_ID_USERSTATUS
net_crypto_c
.send_lossless(pk, b"\x30tox-rs".to_vec())
.map_err(Error::from)
.await?;
}
0x40 => {
// PACKET_ID_CHAT_MESSAGE
net_crypto_c.send_lossless(pk, packet).map_err(Error::from).await?;
},
_ => { },
}
_ => {}
}
}
Result::<(), Error>::Ok(())
Expand Down Expand Up @@ -212,7 +273,10 @@ async fn main() -> Result<(), Error> {
// create PK from bytes
let relay_pk = PublicKey::from(relay_pk_bytes);

tcp_connections.add_relay_global(saddr.parse().unwrap(), relay_pk).await.map_err(Error::from)?;
tcp_connections
.add_relay_global(saddr.parse().unwrap(), relay_pk)
.await
.map_err(Error::from)?;
}

futures::select!(
Expand Down
Loading
Loading