From f75591df3b4cb768456f5bb91088b02a08d4dc08 Mon Sep 17 00:00:00 2001 From: lkhsss Date: Mon, 1 Sep 2025 20:04:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + Cargo.lock | 904 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 21 ++ icon.jpg | Bin 0 -> 61938 bytes index.html | 62 ++++ src/main.rs | 59 ++++ 6 files changed, 1048 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 icon.jpg create mode 100644 index.html create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e9ef761 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +/database \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..840a52f --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,904 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[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.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "axum" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" +dependencies = [ + "axum-core", + "bytes", + "form_urlencoded", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cfg-if" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "pin-utils", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "hby" +version = "0.1.0" +dependencies = [ + "axum", + "num-bigint", + "sled", + "tokio", + "tower", + "tower-http", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "http-range-header" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "hyper", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.3", + "cfg-if", + "libc", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "libc" +version = "0.2.175" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi", + "windows-sys", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.143" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "sled" +version = "0.34.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f96b4737c2ce5987354855aed3797279def4ebf734436c6aa4552cf8e169935" +dependencies = [ + "crc32fast", + "crossbeam-epoch", + "crossbeam-utils", + "fs2", + "fxhash", + "libc", + "log", + "parking_lot", +] + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "syn" +version = "2.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" + +[[package]] +name = "tokio" +version = "1.47.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +dependencies = [ + "backtrace", + "bytes", + "io-uring", + "libc", + "mio", + "pin-project-lite", + "slab", + "socket2", + "tokio-macros", + "windows-sys", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-util" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.3", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "http-range-header", + "httpdate", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..29b14f9 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "hby" +version = "0.1.0" +edition = "2024" + +[dependencies] +axum = "0.8.4" +num-bigint = "0.4.6" +sled = "0.34.7" +tokio = { version = "1.47.1", features = ["macros", "rt-multi-thread"] } +tower = "0.5.2" +tower-http = { version = "0.6.6", features = ["fs"] } + + +[profile.release] +#缩小编译后体积 +strip = true +# strip = "debuginfo" #仅移除debug信息 +lto = true #启用链接时间优化 +panic = "abort" #panic时直接abort +opt-level = "z" #优化级别 \ No newline at end of file diff --git a/icon.jpg b/icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..43a19e7c34979821da7c1e86da481dd4a6962346 GIT binary patch literal 61938 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 + + + + + + + 魔碑 + + + + +

当大家想魔子了,就回来肘一下

+ +

肘击次数:

+

+ + + + \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..89717d0 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,59 @@ +use std::sync::Arc; + +use axum::{Router, extract::State, response::Html, routing::get}; + +use num_bigint::{self, ToBigUint}; +use sled::Db; +use tower_http::services::fs::ServeFile; + +const INDEX: &str = include_str!("../index.html"); + +#[tokio::main] +async fn main() { + let db = sled::open("database").unwrap(); + match db.contains_key("c") { + Ok(r) => { + if r == false { + let _ = db.insert(b"c", 0.to_biguint().unwrap().to_bytes_be()); + println!("初始次数:0") + } else { + println!( + "初始次数:{}", + num_bigint::BigUint::from_bytes_be(&db.get(b"c").unwrap().unwrap().to_vec()) + .to_string() + ) + }; + } + Err(_) => eprintln!("无法检查键值对"), + }; + let arc_db = Arc::new(db); + let app = Router::new() + .route("/", get(index)) + .route("/c", get(count)) + .route("/a", get(add)) + .route_service("/img", ServeFile::new("./icon.jpg")) + .with_state(arc_db); + + let listener = tokio::net::TcpListener::bind(format!("0.0.0.0:{}", 1145)) + .await + .unwrap(); + + println!("127.0.0.1:1145"); + axum::serve(listener, app).await.unwrap(); +} + +async fn index() -> Html<&'static str> { + Html(INDEX) +} + +async fn count(State(db): State>) -> String { + num_bigint::BigUint::from_bytes_be(&db.get(b"c").unwrap().unwrap().to_vec()).to_string() +} + +async fn add(State(db): State>) -> String { + let o = num_bigint::BigUint::from_bytes_be(&db.get(b"c").unwrap().unwrap().to_vec()); + let n = &o + 1.to_biguint().unwrap(); + + let _ = db.insert(b"c", n.to_bytes_be()); + n.to_string() +}