feat: add register function
This commit is contained in:
parent
3981dd662d
commit
33b0391ef3
5 changed files with 67 additions and 5 deletions
11
src/main.rs
11
src/main.rs
|
|
@ -38,6 +38,7 @@ use std::str::FromStr;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use std::{env, fs};
|
use std::{env, fs};
|
||||||
use tokio::task::JoinHandle;
|
use tokio::task::JoinHandle;
|
||||||
|
use crate::nex::user::User;
|
||||||
|
|
||||||
mod endianness;
|
mod endianness;
|
||||||
mod prudp;
|
mod prudp;
|
||||||
|
|
@ -317,10 +318,12 @@ async fn start_secure() -> JoinHandle<()> {
|
||||||
|
|
||||||
info!("new connected user on secure :D!");
|
info!("new connected user on secure :D!");
|
||||||
|
|
||||||
let _ = new_rmc_gateway_connection(conn, |_| AuthHandler {
|
let ip = conn.socket_addr.regular_socket_addr;
|
||||||
destination_server_acct: &SECURE_SERVER_ACCOUNT,
|
let pid = conn.user_id;
|
||||||
build_name: "branch:origin/project/wup-agmj build:3_8_15_2004_0",
|
|
||||||
station_url: &SECURE_STATION_URL,
|
let _ = new_rmc_gateway_connection(conn, |_| User {
|
||||||
|
ip,
|
||||||
|
pid
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,3 @@
|
||||||
pub mod account;
|
pub mod account;
|
||||||
pub mod auth_handler;
|
pub mod auth_handler;
|
||||||
|
pub mod user;
|
||||||
45
src/nex/user.rs
Normal file
45
src/nex/user.rs
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
use std::net::{Ipv4Addr, SocketAddrV4};
|
||||||
|
use macros::rmc_struct;
|
||||||
|
use crate::define_rmc_proto;
|
||||||
|
use crate::prudp::station_url::{nat_types, StationUrl};
|
||||||
|
use crate::prudp::station_url::Type::PRUDPS;
|
||||||
|
use crate::prudp::station_url::UrlOptions::{Address, NatFiltering, NatMapping, NatType, Port, PrincipalID, RVConnectionID};
|
||||||
|
use crate::rmc::protocols::secure::{RemoteAuth, RawAuthInfo, RawAuth, Auth};
|
||||||
|
use crate::rmc::response::ErrorCode;
|
||||||
|
use crate::rmc::structures::qresult::QResult;
|
||||||
|
|
||||||
|
define_rmc_proto!(
|
||||||
|
proto UserProtocol{
|
||||||
|
Auth
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
#[rmc_struct(UserProtocol)]
|
||||||
|
pub struct User {
|
||||||
|
pub pid: u32,
|
||||||
|
pub ip: SocketAddrV4,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Auth for User{
|
||||||
|
async fn register(&self, station_urls: Vec<String>) -> Result<(QResult, u32, String), ErrorCode> {
|
||||||
|
let public_station = StationUrl{
|
||||||
|
url_type: PRUDPS,
|
||||||
|
options: vec![
|
||||||
|
RVConnectionID(0),
|
||||||
|
Address(*self.ip.ip()),
|
||||||
|
Port(self.ip.port()),
|
||||||
|
NatFiltering(0),
|
||||||
|
NatMapping(0),
|
||||||
|
NatType(nat_types::BEHIND_NAT),
|
||||||
|
PrincipalID(self.pid),
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
let result = QResult::success(ErrorCode::Core_Unknown);
|
||||||
|
|
||||||
|
Ok((result, 0, public_station.to_string()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#![allow(async_fn_in_trait)]
|
#![allow(async_fn_in_trait)]
|
||||||
|
|
||||||
pub mod auth;
|
pub mod auth;
|
||||||
|
pub mod secure;
|
||||||
|
|
||||||
use crate::prudp::socket::{ExternalConnection, SendingConnection};
|
use crate::prudp::socket::{ExternalConnection, SendingConnection};
|
||||||
use crate::rmc::message::RMCMessage;
|
use crate::rmc::message::RMCMessage;
|
||||||
|
|
|
||||||
12
src/rmc/protocols/secure.rs
Normal file
12
src/rmc/protocols/secure.rs
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
use macros::{method_id, rmc_proto};
|
||||||
|
use crate::prudp::station_url::StationUrl;
|
||||||
|
use crate::rmc::response::ErrorCode;
|
||||||
|
use crate::rmc::structures::any::Any;
|
||||||
|
use crate::rmc::structures::connection_data::ConnectionData;
|
||||||
|
use crate::rmc::structures::qresult::QResult;
|
||||||
|
|
||||||
|
#[rmc_proto(11)]
|
||||||
|
pub trait Auth {
|
||||||
|
#[method_id(1)]
|
||||||
|
async fn register(&self, station_urls: Vec<String>) -> Result<(QResult, u32, String), ErrorCode>;
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue