feat(local-fake-dns): removed deps to prost, use bson

This commit is contained in:
zonyitoo
2024-05-25 00:00:43 +08:00
parent 6f186e30dd
commit c4b8fdd4f0
10 changed files with 285 additions and 223 deletions

View File

@@ -81,10 +81,6 @@ jobs:
brew install gnu-tar
# echo "::add-path::/usr/local/opt/gnu-tar/libexec/gnubin"
echo "/usr/local/opt/gnu-tar/libexec/gnubin" >> $GITHUB_PATH
- name: Install Protoc
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install Rust
run: |
@@ -113,10 +109,6 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: ilammy/setup-nasm@v1
- name: Install Protoc
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install Rust
run: |

View File

@@ -101,10 +101,6 @@ jobs:
brew install gnu-tar
# echo "::add-path::/usr/local/opt/gnu-tar/libexec/gnubin"
echo "/usr/local/opt/gnu-tar/libexec/gnubin" >> $GITHUB_PATH
- name: Install Protoc
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install Rust
run: |
@@ -136,10 +132,6 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: ilammy/setup-nasm@v1
- name: Install Protoc
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install Rust
run: |

361
Cargo.lock generated
View File

@@ -67,6 +67,19 @@ dependencies = [
"zeroize",
]
[[package]]
name = "ahash"
version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
dependencies = [
"cfg-if",
"getrandom",
"once_cell",
"version_check",
"zerocopy",
]
[[package]]
name = "aho-corasick"
version = "1.1.3"
@@ -142,9 +155,9 @@ dependencies = [
[[package]]
name = "anyhow"
version = "1.0.83"
version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3"
checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
[[package]]
name = "arc-swap"
@@ -172,9 +185,15 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
"syn 2.0.66",
]
[[package]]
name = "atomic-waker"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]]
name = "autocfg"
version = "1.3.0"
@@ -183,9 +202,9 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
[[package]]
name = "aws-lc-rs"
version = "1.7.1"
version = "1.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8487b59d62764df8231cb371c459314df895b41756df457a1fb1243d65c89195"
checksum = "474d7cec9d0a1126fad1b224b767fcbf351c23b0309bb21ec210bcfd379926a5"
dependencies = [
"aws-lc-sys",
"mirai-annotations",
@@ -195,9 +214,9 @@ dependencies = [
[[package]]
name = "aws-lc-sys"
version = "0.16.0"
version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c15eb61145320320eb919d9bab524617a7aa4216c78d342fae3a758bc33073e4"
checksum = "7505fc3cb7acbf42699a43a79dd9caa4ed9e99861dfbb837c5c0fb5a0a8d2980"
dependencies = [
"bindgen",
"cc",
@@ -229,6 +248,12 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
[[package]]
name = "base64"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
[[package]]
name = "base64"
version = "0.21.7"
@@ -266,7 +291,7 @@ dependencies = [
"regex",
"rustc-hash",
"shlex",
"syn 2.0.63",
"syn 2.0.66",
"which",
]
@@ -288,6 +313,18 @@ version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
[[package]]
name = "bitvec"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c"
dependencies = [
"funty",
"radium",
"tap",
"wyz",
]
[[package]]
name = "blake3"
version = "1.5.1"
@@ -321,6 +358,27 @@ dependencies = [
"siphasher",
]
[[package]]
name = "bson"
version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d43b38e074cc0de2957f10947e376a1d88b9c4dbab340b590800cc1b2e066b2"
dependencies = [
"ahash",
"base64 0.13.1",
"bitvec",
"hex",
"indexmap",
"js-sys",
"once_cell",
"rand",
"serde",
"serde_bytes",
"serde_json",
"time",
"uuid",
]
[[package]]
name = "build-time"
version = "0.1.3"
@@ -331,7 +389,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
"syn 2.0.63",
"syn 2.0.66",
]
[[package]]
@@ -390,9 +448,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.0.97"
version = "1.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4"
checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f"
dependencies = [
"jobserver",
"libc",
@@ -572,18 +630,18 @@ dependencies = [
[[package]]
name = "crc32fast"
version = "1.4.0"
version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa"
checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
dependencies = [
"cfg-if",
]
[[package]]
name = "crossbeam-channel"
version = "0.5.12"
version = "0.5.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95"
checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
dependencies = [
"crossbeam-utils",
]
@@ -599,9 +657,9 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
version = "0.8.19"
version = "0.8.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
[[package]]
name = "crypto-bigint"
@@ -652,9 +710,9 @@ checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2"
[[package]]
name = "defmt"
version = "0.3.6"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3939552907426de152b3c2c6f51ed53f98f448babd26f28694c95f5906194595"
checksum = "a99dd22262668b887121d4672af5a64b238f026099f1a2a1b322066c9ecfe9e0"
dependencies = [
"bitflags 1.3.2",
"defmt-macros",
@@ -662,15 +720,15 @@ dependencies = [
[[package]]
name = "defmt-macros"
version = "0.3.7"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18bdc7a7b92ac413e19e95240e75d3a73a8d8e78aa24a594c22cbb4d44b4bbda"
checksum = "e3a9f309eff1f79b3ebdf252954d90ae440599c26c2c553fe87a2d17195f2dcb"
dependencies = [
"defmt-parser",
"proc-macro-error",
"proc-macro2",
"quote",
"syn 2.0.63",
"syn 2.0.66",
]
[[package]]
@@ -779,9 +837,9 @@ dependencies = [
[[package]]
name = "either"
version = "1.11.0"
version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2"
checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b"
[[package]]
name = "elliptic-curve"
@@ -816,10 +874,10 @@ version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a"
dependencies = [
"heck 0.4.1",
"heck",
"proc-macro2",
"quote",
"syn 2.0.63",
"syn 2.0.66",
]
[[package]]
@@ -907,12 +965,6 @@ dependencies = [
"windows-sys 0.52.0",
]
[[package]]
name = "fixedbitset"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
[[package]]
name = "fnv"
version = "1.0.7"
@@ -968,6 +1020,12 @@ dependencies = [
"libc",
]
[[package]]
name = "funty"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
[[package]]
name = "futures"
version = "0.3.30"
@@ -1024,7 +1082,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
"syn 2.0.66",
]
[[package]]
@@ -1144,15 +1202,15 @@ dependencies = [
[[package]]
name = "h2"
version = "0.4.4"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069"
checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab"
dependencies = [
"atomic-waker",
"bytes",
"fnv",
"futures-core",
"futures-sink",
"futures-util",
"http 1.1.0",
"indexmap",
"slab",
@@ -1220,18 +1278,18 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
[[package]]
name = "heck"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "hermit-abi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
[[package]]
name = "hex"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
[[package]]
name = "hickory-proto"
version = "0.24.1"
@@ -1407,7 +1465,7 @@ dependencies = [
"bytes",
"futures-channel",
"futures-util",
"h2 0.4.4",
"h2 0.4.5",
"http 1.1.0",
"http-body",
"httparse",
@@ -1556,9 +1614,9 @@ dependencies = [
[[package]]
name = "instant"
version = "0.1.12"
version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
dependencies = [
"cfg-if",
]
@@ -1742,9 +1800,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
[[package]]
name = "linux-raw-sys"
version = "0.4.13"
version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
[[package]]
name = "lock_api"
@@ -1874,9 +1932,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "miniz_oxide"
version = "0.7.2"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae"
dependencies = [
"adler",
]
@@ -1899,12 +1957,6 @@ version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c9be0862c1b3f26a88803c4a49de6889c10e608b3ee9344e6ef5b45fb37ad3d1"
[[package]]
name = "multimap"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03"
[[package]]
name = "native-tls"
version = "0.2.11"
@@ -2052,7 +2104,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
"syn 2.0.66",
]
[[package]]
@@ -2063,9 +2115,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-src"
version = "300.2.3+3.2.1"
version = "300.3.0+3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5cff92b6f71555b61bb9315f7c64da3ca43d87531622120fea0195fc761b4843"
checksum = "eba8804a1c5765b18c4b3f907e6897ebabeedebc9830e1a0046c4a4cf44663e1"
dependencies = [
"cc",
]
@@ -2216,7 +2268,7 @@ dependencies = [
"pest_meta",
"proc-macro2",
"quote",
"syn 2.0.63",
"syn 2.0.66",
]
[[package]]
@@ -2230,16 +2282,6 @@ dependencies = [
"sha2",
]
[[package]]
name = "petgraph"
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
dependencies = [
"fixedbitset",
"indexmap",
]
[[package]]
name = "pin-project"
version = "1.1.5"
@@ -2257,7 +2299,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
"syn 2.0.66",
]
[[package]]
@@ -2330,7 +2372,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e"
dependencies = [
"proc-macro2",
"syn 2.0.63",
"syn 2.0.66",
]
[[package]]
@@ -2368,66 +2410,13 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.82"
version = "1.0.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b"
checksum = "0b33eb56c327dec362a9e55b3ad14f9d2f0904fb5a5b03b513ab5465399e9f43"
dependencies = [
"unicode-ident",
]
[[package]]
name = "prost"
version = "0.12.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
dependencies = [
"bytes",
"prost-derive",
]
[[package]]
name = "prost-build"
version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80b776a1b2dc779f5ee0641f8ade0125bc1298dd41a9a0c16d8bd57b42d222b1"
dependencies = [
"bytes",
"heck 0.5.0",
"itertools",
"log",
"multimap",
"once_cell",
"petgraph",
"prettyplease",
"prost",
"prost-types",
"regex",
"syn 2.0.63",
"tempfile",
]
[[package]]
name = "prost-derive"
version = "0.12.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
dependencies = [
"anyhow",
"itertools",
"proc-macro2",
"quote",
"syn 2.0.63",
]
[[package]]
name = "prost-types"
version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3235c33eb02c1f1e212abdbe34c78b264b038fb58ca612664343271e36e55ffe"
dependencies = [
"prost",
]
[[package]]
name = "qrcode"
version = "0.14.0"
@@ -2496,6 +2485,12 @@ dependencies = [
"proc-macro2",
]
[[package]]
name = "radium"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
[[package]]
name = "rand"
version = "0.8.5"
@@ -2620,7 +2615,7 @@ dependencies = [
"futures-channel",
"futures-core",
"futures-util",
"h2 0.4.4",
"h2 0.4.5",
"http 1.1.0",
"http-body",
"http-body-util",
@@ -2803,22 +2798,22 @@ dependencies = [
"log",
"ring 0.17.8",
"rustls-pki-types",
"rustls-webpki 0.102.3",
"rustls-webpki 0.102.4",
"subtle",
"zeroize",
]
[[package]]
name = "rustls"
version = "0.23.5"
version = "0.23.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "afabcee0551bd1aa3e18e5adbf2c0544722014b899adb31bd186ec638d3da97e"
checksum = "79adb16721f56eb2d843e67676896a61ce7a0fa622dc18d3e372477a029d2740"
dependencies = [
"aws-lc-rs",
"log",
"once_cell",
"rustls-pki-types",
"rustls-webpki 0.102.3",
"rustls-webpki 0.102.4",
"subtle",
"zeroize",
]
@@ -2885,9 +2880,9 @@ dependencies = [
[[package]]
name = "rustls-webpki"
version = "0.102.3"
version = "0.102.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf"
checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e"
dependencies = [
"aws-lc-rs",
"ring 0.17.8",
@@ -2983,9 +2978,9 @@ dependencies = [
[[package]]
name = "serde"
version = "1.0.201"
version = "1.0.202"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c"
checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395"
dependencies = [
"serde_derive",
]
@@ -3001,14 +2996,23 @@ dependencies = [
]
[[package]]
name = "serde_derive"
version = "1.0.201"
name = "serde_bytes"
version = "0.11.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865"
checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734"
dependencies = [
"serde",
]
[[package]]
name = "serde_derive"
version = "1.0.202"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
"syn 2.0.66",
]
[[package]]
@@ -3017,6 +3021,7 @@ version = "1.0.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3"
dependencies = [
"indexmap",
"itoa",
"ryu",
"serde",
@@ -3182,6 +3187,7 @@ version = "1.19.0"
dependencies = [
"arc-swap",
"async-trait",
"bson",
"byte_string",
"byteorder",
"bytes",
@@ -3203,8 +3209,6 @@ dependencies = [
"nix",
"once_cell",
"pin-project",
"prost",
"prost-build",
"rand",
"regex",
"rustls-native-certs 0.7.0",
@@ -3402,9 +3406,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.63"
version = "2.0.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf5be731623ca1a1fb7d8be6f261a3be6d3e2337b8a1f97be944d020c8fcb704"
checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5"
dependencies = [
"proc-macro2",
"quote",
@@ -3444,6 +3448,12 @@ dependencies = [
"libc",
]
[[package]]
name = "tap"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
[[package]]
name = "tcmalloc"
version = "0.3.0"
@@ -3498,7 +3508,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
"syn 2.0.66",
]
[[package]]
@@ -3596,7 +3606,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
"syn 2.0.66",
]
[[package]]
@@ -3636,7 +3646,7 @@ version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
dependencies = [
"rustls 0.23.5",
"rustls 0.23.8",
"rustls-pki-types",
"tokio",
]
@@ -3719,7 +3729,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
"syn 2.0.66",
]
[[package]]
@@ -3883,6 +3893,16 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
[[package]]
name = "uuid"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0"
dependencies = [
"getrandom",
"serde",
]
[[package]]
name = "valuable"
version = "0.1.0"
@@ -3947,7 +3967,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
"syn 2.0.63",
"syn 2.0.66",
"wasm-bindgen-shared",
]
@@ -3981,7 +4001,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
"syn 2.0.66",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -4277,17 +4297,60 @@ dependencies = [
"windows",
]
[[package]]
name = "wyz"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed"
dependencies = [
"tap",
]
[[package]]
name = "xdg"
version = "2.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546"
[[package]]
name = "zerocopy"
version = "0.7.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.7.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.66",
]
[[package]]
name = "zeroize"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
dependencies = [
"zeroize_derive",
]
[[package]]
name = "zeroize_derive"
version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.66",
]
[[package]]
name = "zstd"

View File

@@ -3,7 +3,7 @@ FROM --platform=$BUILDPLATFORM rust:1.67.1-alpine3.17 AS builder
ARG TARGETARCH
RUN set -x \
&& apk add --no-cache build-base protoc
&& apk add --no-cache build-base
WORKDIR /root/shadowsocks-rust

View File

@@ -95,7 +95,7 @@ local-socks4 = ["local"]
# Enable Tun interface protocol for sslocal
local-tun = ["local", "etherparse", "tun", "smoltcp"]
# Enable Fake DNS
local-fake-dns = ["local", "trust-dns", "sled", "prost", "prost-build"]
local-fake-dns = ["local", "trust-dns", "sled", "bson"]
# sslocal support online URL (SIP008 Online Configuration Delivery)
# https://shadowsocks.org/doc/sip008.html
local-online-config = ["local"]
@@ -134,7 +134,6 @@ byte_string = "1.0"
byteorder = "1.5"
rand = { version = "0.8", features = ["small_rng"] }
sled = { version = "0.34.7", features = ["compression"], optional = true }
prost = { version = "0.12.6", optional = true }
futures = "0.3"
tokio = { version = "1.5", features = [
@@ -183,6 +182,7 @@ smoltcp = { version = "0.11", optional = true, default-features = false, feature
serde = { version = "1.0", features = ["derive"] }
json5 = "0.4"
bson = { version = "2.10.0", optional = true }
shadowsocks = { version = "1.19.0", path = "../shadowsocks", default-features = false }
@@ -193,9 +193,6 @@ nix = { version = "0.29", features = ["ioctl"] }
[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.52", features = ["Win32_Networking_WinSock"] }
[build-dependencies]
prost-build = { version = "0.12.4", optional = true }
[dev-dependencies]
byteorder = "1.5"
env_logger = "0.11"

View File

@@ -1,11 +0,0 @@
use std::io;
fn main() -> io::Result<()> {
#[cfg(feature = "local-fake-dns")]
prost_build::compile_protos(
&["src/local/fake_dns/proto/fake_dns.proto"],
&["src/local/fake_dns/proto/"],
)?;
Ok(())
}

View File

@@ -1,7 +1,7 @@
//! Fake DNS manager
use std::{
io::{self, Cursor},
io,
iter::Cycle,
net::{IpAddr, Ipv4Addr, Ipv6Addr},
path::Path,
@@ -11,13 +11,12 @@ use std::{
use hickory_resolver::proto::rr::Name;
use ipnet::{Ipv4AddrRange, Ipv4Net, Ipv6AddrRange, Ipv6Net};
use log::{trace, warn};
use prost::Message;
use sled::{Config as SledConfig, Db as SledDatabase};
use tokio::sync::Mutex;
use super::proto;
const FAKE_DNS_MANAGER_STORAGE_VERSION: u32 = 1;
const FAKE_DNS_MANAGER_STORAGE_VERSION: u32 = 2;
/// Fake DNS manager
pub struct FakeDnsManager {
@@ -37,7 +36,7 @@ macro_rules! map_domain_ip {
let mut domain_name_mapping = proto::DomainNameMapping::default();
if let Some(ref v) = name2ip_value {
domain_name_mapping = proto::DomainNameMapping::decode(&mut Cursor::new(v))?;
domain_name_mapping = proto::DomainNameMapping::decode(v)?;
if !domain_name_mapping.$addr_field.is_empty() {
match domain_name_mapping.$addr_field.parse::<$addr_ty>() {
@@ -56,11 +55,11 @@ macro_rules! map_domain_ip {
let ip2name_key = FakeDnsManager::get_ip2name_key(i.into());
let ip2name_value = $self.db.get(&ip2name_key)?;
if let Some(ref v) = ip2name_value {
let mut ip_mapping = proto::IpAddrMapping::decode(&mut Cursor::new(v))?;
let mut ip_mapping = proto::IpAddrMapping::decode(v)?;
if ip_mapping.domain_name == $domain.to_string() {
// Try to extend its expire time
ip_mapping.expire_time = expire_secs;
let nv = ip_mapping.encode_to_vec();
let nv = ip_mapping.encode_to_vec()?;
if let Ok(..) =
$self
.db
@@ -77,7 +76,7 @@ macro_rules! map_domain_ip {
if !reallocate {
domain_name_mapping.expire_time = expire_secs;
let nv = domain_name_mapping.encode_to_vec();
let nv = domain_name_mapping.encode_to_vec()?;
// Ignore update error. It is ok if expire_time is updated by another thread.
let _ = $self
@@ -106,7 +105,7 @@ macro_rules! map_domain_ip {
loop {
let ip2name_value = $self.db.get(&ip2name_key)?;
if let Some(ref v) = ip2name_value {
let ip_mapping = proto::IpAddrMapping::decode(&mut Cursor::new(v))?;
let ip_mapping = proto::IpAddrMapping::decode(v)?;
let now = FakeDnsManager::get_current_timestamp();
if ip_mapping.expire_time > now {
@@ -120,14 +119,14 @@ macro_rules! map_domain_ip {
ip_mapping.expire_time = expire_secs;
ip_mapping.domain_name = $domain.to_string();
let nv = ip_mapping.encode_to_vec();
let nv = ip_mapping.encode_to_vec()?;
if let Ok(..) = $self.db.compare_and_swap(&ip2name_key, ip2name_value, Some(nv.clone())) {
// Replace name2ip
domain_name_mapping.$addr_field = ip.to_string();
domain_name_mapping.expire_time = ip_mapping.expire_time;
let nv = domain_name_mapping.encode_to_vec();
let nv = domain_name_mapping.encode_to_vec()?;
if let Ok(..) = $self
.db
@@ -175,7 +174,7 @@ impl FakeDnsManager {
let key = "shadowsocks_fakedns_meta";
if let Some(v) = db.get(key)? {
let c = proto::StorageMeta::decode(&mut Cursor::new(&v))?;
let c = proto::StorageMeta::decode(&v)?;
if c.version == FAKE_DNS_MANAGER_STORAGE_VERSION {
if ipv4_network_str != c.ipv4_network || ipv6_network_str != c.ipv6_network {
warn!(
@@ -199,7 +198,7 @@ impl FakeDnsManager {
version: FAKE_DNS_MANAGER_STORAGE_VERSION,
};
let v = c.encode_to_vec();
let v = c.encode_to_vec()?;
db.insert(key, v)?;
trace!("FakeDNS database created. {:?}", c);
@@ -249,13 +248,13 @@ impl FakeDnsManager {
match ip2name_value {
None => Ok(None),
Some(ref v) => {
let mut ip_mapping = proto::IpAddrMapping::decode(&mut Cursor::new(v))?;
let mut ip_mapping = proto::IpAddrMapping::decode(v)?;
let now = FakeDnsManager::get_current_timestamp();
if ip_mapping.expire_time >= now {
// Ok. It is not expired yet. Try to extend its expire time.
ip_mapping.expire_time = now + self.expire_duration.as_secs() as i64;
let nv = ip_mapping.encode_to_vec();
let nv = ip_mapping.encode_to_vec()?;
let _ = self
.db
.compare_and_swap(&ip2name_key, ip2name_value.as_ref(), Some(nv))?;
@@ -272,9 +271,9 @@ impl FakeDnsManager {
let name2ip_value = self.db.get(&name2ip_key)?;
match name2ip_value {
Some(ref v) => {
let mut domain_name_mapping = proto::DomainNameMapping::decode(&mut Cursor::new(v))?;
let mut domain_name_mapping = proto::DomainNameMapping::decode(v)?;
domain_name_mapping.expire_time = ip_mapping.expire_time;
let nv = domain_name_mapping.encode_to_vec();
let nv = domain_name_mapping.encode_to_vec()?;
let _ = self.db.compare_and_swap(&name2ip_key, name2ip_value.as_ref(), Some(nv));
}
None => {

View File

@@ -0,0 +1,55 @@
//! Data representation in Database
use std::io;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Default, Clone, Debug)]
pub struct StorageMeta {
pub ipv4_network: String,
pub ipv6_network: String,
pub version: u32,
}
impl StorageMeta {
pub fn decode(v: &[u8]) -> io::Result<StorageMeta> {
bson::from_slice(v).map_err(|e| io::Error::new(io::ErrorKind::Other, e))
}
pub fn encode_to_vec(&self) -> io::Result<Vec<u8>> {
bson::to_vec(self).map_err(|e| io::Error::new(io::ErrorKind::Other, e))
}
}
#[derive(Serialize, Deserialize, Default, Clone, Debug)]
pub struct IpAddrMapping {
pub domain_name: String,
pub expire_time: i64,
}
impl IpAddrMapping {
pub fn decode(v: &[u8]) -> io::Result<IpAddrMapping> {
bson::from_slice(v).map_err(|e| io::Error::new(io::ErrorKind::Other, e))
}
pub fn encode_to_vec(&self) -> io::Result<Vec<u8>> {
bson::to_vec(self).map_err(|e| io::Error::new(io::ErrorKind::Other, e))
}
}
#[derive(Serialize, Deserialize, Default, Clone, Debug)]
pub struct DomainNameMapping {
pub ipv4_addr: String,
pub ipv6_addr: String,
pub expire_time: i64,
}
impl DomainNameMapping {
pub fn decode(v: &[u8]) -> io::Result<DomainNameMapping> {
bson::from_slice(v).map_err(|e| io::Error::new(io::ErrorKind::Other, e))
}
pub fn encode_to_vec(&self) -> io::Result<Vec<u8>> {
bson::to_vec(self).map_err(|e| io::Error::new(io::ErrorKind::Other, e))
}
}

View File

@@ -1,22 +0,0 @@
syntax = "proto3";
package shadowsocks_service.local.fake_dns.proto;
message StorageMeta {
string ipv4_network = 1; // IPv4 allocation pool
string ipv6_network = 2; // IPv6 allocation pool
uint32 version = 3; // Storage Version
}
// ip2domain_{IP_ADDR}
message IpAddrMapping {
string domain_name = 1; // Original Domain
int64 expire_time = 2;
}
// domain2ip_{DOMAIN_NAME}
message DomainNameMapping {
string ipv4_addr = 1; // Mapped IPv4 Address
string ipv6_addr = 2; // Mapped IPv6 Address
int64 expire_time = 3;
}

View File

@@ -1,3 +0,0 @@
//! FakeDNS protobuf
include!(concat!(env!("OUT_DIR"), "/shadowsocks_service.local.fake_dns.proto.rs"));