diff --git a/Cargo.toml b/Cargo.toml index 71a2952..b994a6b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,19 +1,11 @@ -[package] -name = "radius-rs" -version = "0.1.0" -authors = ["moznion "] -edition = "2018" -license-file = "LICENSE" +[workspace] -[dependencies] -md5 = "0.7.0" -chrono = "0.4" -rand = "0.7.3" -num_enum = "0.5.1" -tokio = { version = "0.3.4", features = ["full"] } -log = "0.4.11" -thiserror = "1.0" -async-trait = "0.1.42" +members = [ + "radius", + "radius-server", + "radius-client", -[dev-dependencies] -env_logger = "0.8.2" + # Internal + "code-generator", + "examples", +] diff --git a/Makefile b/Makefile index f3cdd1b..fc7a7ad 100644 --- a/Makefile +++ b/Makefile @@ -8,4 +8,4 @@ lint: cargo clippy gen: - bash ./scripts/generate_code.sh + bash ./scripts/generate-code.sh diff --git a/code-generator/Cargo.toml b/code-generator/Cargo.toml new file mode 100644 index 0000000..a64bdbd --- /dev/null +++ b/code-generator/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "code-generator" +version = "0.1.0" +edition = "2018" +license-file = "../LICENSE" +publish = false + +[dependencies] +regex = "1" +getopts = "0.2" +Inflector = "0.11" diff --git a/code_generator/src/main.rs b/code-generator/src/main.rs similarity index 100% rename from code_generator/src/main.rs rename to code-generator/src/main.rs diff --git a/code_generator/.gitignore b/code_generator/.gitignore deleted file mode 100644 index 54466f5..0000000 --- a/code_generator/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/target - diff --git a/code_generator/Cargo.lock b/code_generator/Cargo.lock deleted file mode 100644 index a9345bb..0000000 --- a/code_generator/Cargo.lock +++ /dev/null @@ -1,83 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] - -[[package]] -name = "aho-corasick" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" -dependencies = [ - "memchr", -] - -[[package]] -name = "code_generator" -version = "0.1.0" -dependencies = [ - "Inflector", - "getopts", - "regex", -] - -[[package]] -name = "getopts" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "memchr" -version = "2.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" - -[[package]] -name = "regex" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", - "thread_local", -] - -[[package]] -name = "regex-syntax" -version = "0.6.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" - -[[package]] -name = "thread_local" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "unicode-width" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" diff --git a/code_generator/Cargo.toml b/code_generator/Cargo.toml deleted file mode 100644 index 5bc5b2c..0000000 --- a/code_generator/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "code_generator" -version = "0.1.0" -authors = ["moznion "] -edition = "2018" -license-file = "LICENSE" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -regex = "1" -getopts = "0.2" -Inflector = "0.11" diff --git a/code_generator/Makefile b/code_generator/Makefile deleted file mode 100644 index 075437e..0000000 --- a/code_generator/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -test: - cargo test - -build: - cargo build - -lint: - cargo clippy - diff --git a/examples/Cargo.toml b/examples/Cargo.toml new file mode 100644 index 0000000..e680b70 --- /dev/null +++ b/examples/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "examples" +version = "0.1.0" +publish = false +edition = "2018" +license-file = "../LICENSE" +repository = "https://github.com/moznion/radius-rs" + +[dev-dependencies] +radius = { version = "0.1.0", path = "../radius" } +radius-client = { version = "0.1.0", path = "../radius-client" } +radius-server = { version = "0.1.0", path = "../radius-server" } +log = "0.4.11" +env_logger = "0.8.2" +tokio = { version = "0.3.4", features = ["signal", "net"] } +async-trait = "0.1.42" + +[[example]] +name = "server" +path = "server.rs" + +[[example]] +name = "client" +path = "client.rs" + diff --git a/examples/client.rs b/examples/client.rs index 1a3cda7..87c1b46 100644 --- a/examples/client.rs +++ b/examples/client.rs @@ -1,9 +1,9 @@ #[macro_use] extern crate log; -use radius_rs::client::Client; -use radius_rs::code::Code; -use radius_rs::packet::Packet; -use radius_rs::rfc2865; +use radius::code::Code; +use radius::packet::Packet; +use radius::rfc2865; +use radius_client::client::Client; use std::net::SocketAddr; #[tokio::main] diff --git a/examples/server.rs b/examples/server.rs index a4aa428..f28aef4 100644 --- a/examples/server.rs +++ b/examples/server.rs @@ -8,12 +8,12 @@ use async_trait::async_trait; use tokio::net::UdpSocket; use tokio::signal; -use radius_rs::code::Code; -use radius_rs::request::Request; -use radius_rs::request_handler::RequestHandler; -use radius_rs::rfc2865; -use radius_rs::secret_provider::{SecretProvider, SecretProviderError}; -use radius_rs::server::Server; +use radius::code::Code; +use radius::request::Request; +use radius::rfc2865; +use radius_server::request_handler::RequestHandler; +use radius_server::secret_provider::{SecretProvider, SecretProviderError}; +use radius_server::server::Server; #[tokio::main] async fn main() { diff --git a/radius-client/Cargo.toml b/radius-client/Cargo.toml new file mode 100644 index 0000000..0e9d5fb --- /dev/null +++ b/radius-client/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "radius-client" +version = "0.1.0" +authors = ["moznion "] +edition = "2018" +license-file = "../LICENSE" +repository = "https://github.com/moznion/radius-rs" +keywords = ["radius", "client"] + +[dependencies] +radius = { path = "../radius" } +tokio = { version = "0.3.4", features = ["net"] } +thiserror = "1.0" diff --git a/src/client.rs b/radius-client/src/client.rs similarity index 98% rename from src/client.rs rename to radius-client/src/client.rs index ebf1d2e..71643ff 100644 --- a/src/client.rs +++ b/radius-client/src/client.rs @@ -7,7 +7,7 @@ use crate::client::ClientError::{ FailedConnection, FailedParsingUDPResponse, FailedRadiusPacketEncoding, FailedReceivingResponse, FailedSendingPacket, FailedUdpSocketBinding, }; -use crate::packet::Packet; +use radius::packet::Packet; #[derive(Error, Debug)] pub enum ClientError { diff --git a/radius-client/src/lib.rs b/radius-client/src/lib.rs new file mode 100644 index 0000000..b9babe5 --- /dev/null +++ b/radius-client/src/lib.rs @@ -0,0 +1 @@ +pub mod client; diff --git a/radius-server/Cargo.toml b/radius-server/Cargo.toml new file mode 100644 index 0000000..039fdc3 --- /dev/null +++ b/radius-server/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "radius-server" +version = "0.1.0" +authors = ["moznion "] +edition = "2018" +license-file = "../LICENSE" +repository = "https://github.com/moznion/radius-rs" +keywords = ["radius", "client"] + +[dependencies] +radius = { path = "../radius" } +tokio = { version = "0.3.4", features = ["full"] } +log = "0.4.11" +thiserror = "1.0" +async-trait = "0.1.42" diff --git a/radius-server/src/lib.rs b/radius-server/src/lib.rs new file mode 100644 index 0000000..22417a9 --- /dev/null +++ b/radius-server/src/lib.rs @@ -0,0 +1,6 @@ +#[macro_use] +extern crate log; + +pub mod request_handler; +pub mod secret_provider; +pub mod server; diff --git a/src/request_handler.rs b/radius-server/src/request_handler.rs similarity index 88% rename from src/request_handler.rs rename to radius-server/src/request_handler.rs index 2288791..86434a6 100644 --- a/src/request_handler.rs +++ b/radius-server/src/request_handler.rs @@ -1,7 +1,7 @@ use async_trait::async_trait; use tokio::net::UdpSocket; -use crate::request::Request; +use radius::request::Request; #[async_trait] pub trait RequestHandler: 'static + Sync + Send { diff --git a/src/secret_provider.rs b/radius-server/src/secret_provider.rs similarity index 100% rename from src/secret_provider.rs rename to radius-server/src/secret_provider.rs diff --git a/src/server.rs b/radius-server/src/server.rs similarity index 98% rename from src/server.rs rename to radius-server/src/server.rs index 6bcfe57..1743e5f 100644 --- a/src/server.rs +++ b/radius-server/src/server.rs @@ -7,10 +7,10 @@ use std::sync::{Arc, RwLock}; use tokio::net::UdpSocket; -use crate::packet::Packet; -use crate::request::Request; use crate::request_handler::RequestHandler; use crate::secret_provider::SecretProvider; +use radius::packet::Packet; +use radius::request::Request; use std::fmt::Debug; pub struct Server {} diff --git a/radius/Cargo.toml b/radius/Cargo.toml new file mode 100644 index 0000000..ec648ba --- /dev/null +++ b/radius/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "radius" +version = "0.1.0" +authors = ["moznion "] +edition = "2018" +license-file = "../LICENSE" +repository = "https://github.com/moznion/radius-rs" +keywords = ["radius"] + +[dependencies] +md5 = "0.7.0" +chrono = "0.4" +rand = "0.7.3" +num_enum = "0.5.1" +thiserror = "1.0" diff --git a/src/attributes.rs b/radius/src/attributes.rs similarity index 100% rename from src/attributes.rs rename to radius/src/attributes.rs diff --git a/src/avp.rs b/radius/src/avp.rs similarity index 100% rename from src/avp.rs rename to radius/src/avp.rs diff --git a/src/code.rs b/radius/src/code.rs similarity index 100% rename from src/code.rs rename to radius/src/code.rs diff --git a/src/lib.rs b/radius/src/lib.rs similarity index 54% rename from src/lib.rs rename to radius/src/lib.rs index 6acb87f..a70a618 100644 --- a/src/lib.rs +++ b/radius/src/lib.rs @@ -1,15 +1,8 @@ -#[macro_use] -extern crate log; - pub(crate) mod attributes; pub mod avp; -pub mod client; pub mod code; pub mod packet; pub mod request; -pub mod request_handler; pub mod rfc2865; pub mod rfc2866; pub mod rfc2867; -pub mod secret_provider; -pub mod server; diff --git a/src/packet.rs b/radius/src/packet.rs similarity index 100% rename from src/packet.rs rename to radius/src/packet.rs diff --git a/src/request.rs b/radius/src/request.rs similarity index 83% rename from src/request.rs rename to radius/src/request.rs index b36dbf6..0b68a18 100644 --- a/src/request.rs +++ b/radius/src/request.rs @@ -9,7 +9,7 @@ pub struct Request { } impl Request { - pub(crate) fn new(local_addr: SocketAddr, remote_addr: SocketAddr, packet: Packet) -> Self { + pub fn new(local_addr: SocketAddr, remote_addr: SocketAddr, packet: Packet) -> Self { Self { local_addr, remote_addr, diff --git a/src/rfc2865.rs b/radius/src/rfc2865.rs similarity index 100% rename from src/rfc2865.rs rename to radius/src/rfc2865.rs diff --git a/src/rfc2866.rs b/radius/src/rfc2866.rs similarity index 100% rename from src/rfc2866.rs rename to radius/src/rfc2866.rs diff --git a/src/rfc2867.rs b/radius/src/rfc2867.rs similarity index 100% rename from src/rfc2867.rs rename to radius/src/rfc2867.rs diff --git a/radius/src/rfc2868.rs b/radius/src/rfc2868.rs new file mode 100644 index 0000000..e69de29 diff --git a/scripts/generate_code.sh b/scripts/generate-code.sh similarity index 74% rename from scripts/generate_code.sh rename to scripts/generate-code.sh index 85ecb99..100b492 100755 --- a/scripts/generate_code.sh +++ b/scripts/generate-code.sh @@ -4,7 +4,7 @@ set -eu REPO_ROOT="$(cd ./"$(git rev-parse --show-cdup)" || exit; pwd)" DICTS_DIR="${REPO_ROOT}/dicts" -SRC_DIR="${REPO_ROOT}/src" +SRC_DIR="${REPO_ROOT}/radius/src" DICTS=$(ls "$DICTS_DIR") @@ -17,7 +17,7 @@ done # shellcheck disable=SC2068 for DICT in ${DICTS[@]}; do DICT_NAME="${DICT##*.}" - (cd "${REPO_ROOT}/code_generator"; cargo run "${DICTS_DIR}/dictionary.${DICT_NAME}" "${SRC_DIR}/${DICT_NAME}.rs") + cargo run --bin code-generator "${DICTS_DIR}/dictionary.${DICT_NAME}" "${SRC_DIR}/${DICT_NAME}.rs" done cargo fix --allow-dirty --allow-staged