Skip to content

Commit c485379

Browse files
committed
Introduce more features to make the crate cleaner.
1 parent 3515a3f commit c485379

File tree

3 files changed

+22
-14
lines changed

3 files changed

+22
-14
lines changed

Cargo.toml

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ license = "GPL-3.0-or-later"
1111
repository = "https://github.com/ssrlive/socks5-impl"
1212

1313
[features]
14-
default = ["tokio"]
14+
# default = ["serde", "client", "server", "tokio"]
15+
client = ["tokio"]
16+
serde = ["dep:serde"]
17+
server = ["tokio"]
1518
tokio = ["dep:tokio"]
1619

1720
[dependencies]
@@ -20,25 +23,31 @@ async-trait = "0.1"
2023
byteorder = "1"
2124
bytes = "1"
2225
percent-encoding = "2"
23-
serde = { version = "1", features = ["derive"] }
26+
serde = { version = "1", features = ["derive"], optional = true }
2427
thiserror = "2"
25-
tokio = { version = "1", features = ["full"], optional = true }
28+
tokio = { version = "1", default-features = false, features = [
29+
"net",
30+
"io-util",
31+
"time",
32+
"macros",
33+
"rt",
34+
], optional = true }
2635

2736
[dev-dependencies]
2837
clap = { version = "4", features = ["derive"] }
2938
ctrlc2 = { version = "3", features = ["tokio", "termination"] }
3039
dotenvy = "0.15"
3140
env_logger = "0.11"
41+
hickory-proto = "0.24"
3242
log = "0.4"
3343
moka = { version = "0.12", features = ["future"] }
3444
rand = "0.8"
35-
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
36-
hickory-proto = "0.24"
45+
tokio = { version = "1", features = ["rt-multi-thread"] }
3746

3847
[[example]]
3948
name = "demo-client"
4049
path = "examples/demo-client.rs"
41-
required-features = ["tokio"]
50+
required-features = ["client"]
4251

4352
[[example]]
4453
name = "demo-server"
@@ -48,14 +57,14 @@ required-features = ["tokio"]
4857
[[example]]
4958
name = "dns-query"
5059
path = "examples/dns-query.rs"
51-
required-features = ["tokio"]
60+
required-features = ["client"]
5261

5362
[[example]]
5463
name = "s5-server"
5564
path = "examples/s5-server.rs"
56-
required-features = ["tokio"]
65+
required-features = ["server"]
5766

5867
[[example]]
5968
name = "udp-client"
6069
path = "examples/udp-client.rs"
61-
required-features = ["tokio"]
70+
required-features = ["client"]

src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#![doc = include_str!("../README.md")]
22

3-
#[cfg(feature = "tokio")]
3+
#[cfg(feature = "client")]
44
pub mod client;
55
pub(crate) mod error;
66
pub mod protocol;
7-
#[cfg(feature = "tokio")]
7+
#[cfg(feature = "server")]
88
pub mod server;
99

1010
pub use crate::error::{Error, Result};

src/protocol/handshake/password_method/mod.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
mod request;
22
mod response;
33

4-
use serde::{Deserialize, Serialize};
5-
64
pub use self::{
75
request::Request,
86
response::{Response, Status},
@@ -11,7 +9,8 @@ pub use self::{
119
pub const SUBNEGOTIATION_VERSION: u8 = 0x01;
1210

1311
/// Required for a username + password authentication.
14-
#[derive(Default, Debug, Eq, PartialEq, Clone, Hash, Deserialize, Serialize)]
12+
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
13+
#[derive(Default, Debug, Eq, PartialEq, Clone, Hash)]
1514
pub struct UserKey {
1615
pub username: String,
1716
pub password: String,

0 commit comments

Comments
 (0)