Skip to content

Commit

Permalink
Merge branch 'develop' into issue-2526
Browse files Browse the repository at this point in the history
  • Loading branch information
PsychoPunkSage authored Jul 9, 2024
2 parents add3925 + bf4b56d commit c617bb8
Show file tree
Hide file tree
Showing 113 changed files with 1,906 additions and 954 deletions.
438 changes: 219 additions & 219 deletions .github/workflows/rust.yml

Large diffs are not rendered by default.

6 changes: 2 additions & 4 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// This node routes a message, to a worker on a different node, over the udp transport.

use ockam::udp::{UdpBindArguments, UdpBindOptions, UdpTransportExtension, UDP};
use ockam::{node, route, Context, Result};
use ockam_transport_udp::{UdpBindArguments, UdpBindOptions, UdpTransportExtension, UDP};

#[ockam::node]
async fn main(ctx: Context) -> Result<()> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
// It then runs forever waiting for messages.

use hello_ockam::Echoer;
use ockam::udp::{UdpBindArguments, UdpBindOptions, UdpTransportExtension};
use ockam::{node, Context, Result};
use ockam_transport_udp::{UdpBindArguments, UdpBindOptions, UdpTransportExtension};

#[ockam::node]
async fn main(ctx: Context) -> Result<()> {
Expand Down
24 changes: 1 addition & 23 deletions examples/rust/mitm_node/src/tcp_interceptor/transport/common.rs
Original file line number Diff line number Diff line change
@@ -1,29 +1,7 @@
use ockam_core::compat::net::{SocketAddr, ToSocketAddrs};
use ockam_core::compat::net::SocketAddr;
use ockam_core::Result;
use ockam_transport_core::TransportError;

/// Resolve the given peer to a [`SocketAddr`](std::net::SocketAddr)
pub(super) fn resolve_peer(peer: String) -> Result<SocketAddr> {
// Try to parse as SocketAddr
if let Ok(p) = parse_socket_addr(&peer) {
return Ok(p);
}

// Try to resolve hostname
if let Ok(mut iter) = peer.to_socket_addrs() {
// Prefer ip4
if let Some(p) = iter.find(|x| x.is_ipv4()) {
return Ok(p);
}
if let Some(p) = iter.find(|x| x.is_ipv6()) {
return Ok(p);
}
}

// Nothing worked, return an error
Err(TransportError::InvalidAddress(peer))?
}

pub(super) fn parse_socket_addr(s: &str) -> Result<SocketAddr> {
Ok(s.parse().map_err(|_| TransportError::InvalidAddress(s.to_string()))?)
}
4 changes: 0 additions & 4 deletions examples/rust/rendezvous/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,9 @@ ockam_core = { path = "../../../implementations/rust/ockam/ockam_core" }
ockam_macros = { path = "../../../implementations/rust/ockam/ockam_macros" }
ockam_node = { path = "../../../implementations/rust/ockam/ockam_node" }
ockam_transport_udp = { path = "../../../implementations/rust/ockam/ockam_transport_udp" }
tracing = { version = "0.1", default-features = false }

[[bin]]
name = "client"

[[bin]]
name = "echo_server"

[[bin]]
name = "rendezvous_server"
29 changes: 0 additions & 29 deletions examples/rust/rendezvous/src/bin/rendezvous_server.rs

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ if_rule <- open 'if' space* rule rule rule close
attribute <- type '.' name space*
`[Type, _, Name, _] = Node, {binary_to_atom(Type), iolist_to_binary(Name)}`;
type <- 'action' / 'subject' / 'resource';
name <- [a-z0-9_]+;
name <- [a-z0-9_-]+;

value <- (string / boolean / number) space*
`[Val, _Space] = Node, Val`;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ end end).

-spec 'name'(input(), index()) -> parse_result().
'name'(Input, Index) ->
p(Input, Index, 'name', fun(I,D) -> (p_one_or_more(p_charclass(<<"[a-z0-9_]">>)))(I,D) end, fun(Node, Idx) ->transform('name', Node, Idx) end).
p(Input, Index, 'name', fun(I,D) -> (p_one_or_more(p_charclass(<<"[a-z0-9_-]">>)))(I,D) end, fun(Node, Idx) ->transform('name', Node, Idx) end).

-spec 'value'(input(), index()) -> parse_result().
'value'(Input, Index) ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ defmodule Ockam.ABAC.AttributeRule.Tests do
alias Ockam.ABAC.Request

describe "single attribute rule" do
test "names can contain letters, numbers, underscores and dashes" do
{:ok, rule} = AttributeRule.parse("(= subject.foo-1_2-3 \"bar\")")
end

test "eq rule" do
request_matching = %Request{
action_id: ActionId.new("", ""),
Expand Down
12 changes: 8 additions & 4 deletions implementations/rust/ockam/ockam/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,15 +87,17 @@ pub mod tcp {
pub use ockam_transport_tcp::{
TcpConnection, TcpConnectionMode, TcpConnectionOptions, TcpInletOptions, TcpListener,
TcpListenerInfo, TcpListenerOptions, TcpOutletOptions, TcpSenderInfo, TcpTransport,
TcpTransportExtension, TCP,
TcpTransportExtension, MAX_MESSAGE_SIZE, TCP,
};
}
#[cfg(feature = "ockam_transport_udp")]
/// UDP transport
pub mod udp {
pub use ockam_transport_udp::{
UdpBindArguments, UdpBindOptions, UdpPunctureNegotiation, UdpPunctureNegotiationListener,
UdpPunctureNegotiationListenerOptions, UdpTransport, UdpTransportExtension, UDP,
RendezvousClient, RendezvousService, UdpBindArguments, UdpBindOptions,
UdpPunctureNegotiation, UdpPunctureNegotiationListener,
UdpPunctureNegotiationListenerOptions, UdpTransport, UdpTransportExtension,
MAX_MESSAGE_SIZE, UDP,
};
}
pub use relay_service::{RelayService, RelayServiceOptions};
Expand All @@ -105,7 +107,9 @@ pub mod transport {
#[cfg(feature = "std")]
pub use ockam_transport_core::resolve_peer;

pub use ockam_transport_core::{parse_socket_addr, HostnamePort, Transport};
pub use ockam_transport_core::{
parse_socket_addr, HostnamePort, StaticHostnamePort, Transport,
};
}

// ---
Expand Down
1 change: 1 addition & 0 deletions implementations/rust/ockam/ockam_api/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ tracing-subscriber = { version = "0.3.18", features = ["json"] }
url = "2.5.2"

ockam_multiaddr = { path = "../ockam_multiaddr", version = "0.56.0", features = ["cbor", "serde"] }
ockam_transport_core = { path = "../ockam_transport_core" }
ockam_transport_tcp = { path = "../ockam_transport_tcp", version = "^0.119.0", default-features = false, features = ["std"] }
tonic = "0.11"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@ use std::sync::Arc;
use sqlx::*;
use tracing::debug;

use crate::cli_state::storage::tcp_portals_repository::TcpPortalsRepository;
use crate::cli_state::TcpInlet;
use crate::nodes::models::portal::OutletStatus;
use ockam::{FromSqlxError, SqlxDatabase, ToVoid};
use ockam_core::errcode::{Kind, Origin};
use ockam_core::Error;
use ockam_core::Result;
use ockam_core::{async_trait, Address};
use ockam_multiaddr::MultiAddr;

use crate::cli_state::storage::tcp_portals_repository::TcpPortalsRepository;
use crate::cli_state::TcpInlet;
use ockam_transport_core::HostnamePort;

#[derive(Clone)]
pub struct TcpPortalsSqlxDatabase {
Expand Down Expand Up @@ -95,7 +95,7 @@ impl TcpPortalsRepository for TcpPortalsSqlxDatabase {
ON CONFLICT DO NOTHING"#,
)
.bind(node_name)
.bind(tcp_outlet_status.socket_addr.to_string())
.bind(tcp_outlet_status.to.to_string())
.bind(tcp_outlet_status.worker_addr.to_string())
.bind(tcp_outlet_status.payload.as_ref());
query.execute(&*self.database.pool).await.void()?;
Expand Down Expand Up @@ -171,11 +171,11 @@ struct TcpOutletStatusRow {

impl TcpOutletStatusRow {
fn tcp_outlet_status(&self) -> Result<OutletStatus> {
let socket_addr = SocketAddr::from_str(&self.socket_addr)
let to = HostnamePort::from_str(&self.socket_addr)
.map_err(|e| Error::new(Origin::Application, Kind::Serialization, e.to_string()))?;
let worker_addr = Address::from_string(&self.worker_addr);
Ok(OutletStatus {
socket_addr,
to,
worker_addr,
payload: self.payload.clone(),
})
Expand Down Expand Up @@ -208,7 +208,7 @@ mod tests {

let worker_addr = Address::from_str("worker_addr").unwrap();
let tcp_outlet_status = OutletStatus::new(
SocketAddr::from_str("127.0.0.1:80").unwrap(),
HostnamePort::from_str("127.0.0.1:80").unwrap(),
worker_addr.clone(),
Some("payload".to_string()),
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
use ockam_core::errcode::{Kind, Origin};
use ockam_core::Address;
use ockam_multiaddr::MultiAddr;
use std::net::SocketAddr;

use super::Result;
use crate::cli_state::TcpInlet;
use crate::nodes::models::portal::OutletStatus;
use crate::CliState;
use ockam_core::errcode::{Kind, Origin};
use ockam_core::Address;
use ockam_multiaddr::MultiAddr;
use ockam_transport_core::HostnamePort;
use std::net::SocketAddr;

impl CliState {
/// Create a TCP inlet
Expand Down Expand Up @@ -53,12 +53,11 @@ impl CliState {
pub async fn create_tcp_outlet(
&self,
node_name: &str,
socket_addr: &SocketAddr,
to: &HostnamePort,
worker_addr: &Address,
payload: &Option<String>,
) -> Result<OutletStatus> {
let tcp_outlet_status =
OutletStatus::new(*socket_addr, worker_addr.clone(), payload.clone());
let tcp_outlet_status = OutletStatus::new(to.clone(), worker_addr.clone(), payload.clone());

self.tcp_portals_repository()
.store_tcp_outlet(node_name, &tcp_outlet_status)
Expand Down
Loading

0 comments on commit c617bb8

Please sign in to comment.