From b6ab9c8888866b1fcaa93584c015a7e80b2558fe Mon Sep 17 00:00:00 2001 From: Pavel Kirilin <win10@list.ru> Date: Tue, 21 Feb 2023 19:56:36 +0000 Subject: [PATCH] Added docker building. --- .dockerignore | 2 +- .gitlab-ci.yml | 40 +- Cargo.lock | 665 +++++++++++++++++- Cargo.toml | 5 +- Dockerfile | 5 + README.md | 38 + helm/.helmignore | 23 + helm/Chart.yaml | 24 + helm/templates/NOTES.txt | 22 + helm/templates/_helpers.tpl | 62 ++ helm/templates/deployment.yaml | 68 ++ helm/templates/ingress.yaml | 61 ++ helm/templates/service.yaml | 15 + helm/templates/serviceaccount.yaml | 12 + helm/templates/tests/test-connection.yaml | 15 + helm/values.yaml | 89 +++ logo.png | Bin 0 -> 127872 bytes src/args.rs | 15 +- .../filters/{chain.rs => filtered_handler.rs} | 7 + src/bot/filters/groups.rs | 1 - src/bot/filters/message_fitlers.rs | 25 +- src/bot/filters/mod.rs | 4 +- src/bot/handlers/basic/currency_converter.rs | 176 +++++ src/bot/handlers/basic/help.rs | 2 +- src/bot/handlers/basic/mod.rs | 1 + src/bot/handlers/fun/blyaficator.rs | 1 + src/bot/handlers/fun/greeter.rs | 16 +- src/bot/main.rs | 95 ++- src/main.rs | 46 +- src/server/main.rs | 7 +- src/server/templates/mod.rs | 11 + 31 files changed, 1477 insertions(+), 76 deletions(-) create mode 100644 README.md create mode 100644 helm/.helmignore create mode 100644 helm/Chart.yaml create mode 100644 helm/templates/NOTES.txt create mode 100644 helm/templates/_helpers.tpl create mode 100644 helm/templates/deployment.yaml create mode 100644 helm/templates/ingress.yaml create mode 100644 helm/templates/service.yaml create mode 100644 helm/templates/serviceaccount.yaml create mode 100644 helm/templates/tests/test-connection.yaml create mode 100644 helm/values.yaml create mode 100644 logo.png rename src/bot/filters/{chain.rs => filtered_handler.rs} (76%) delete mode 100644 src/bot/filters/groups.rs create mode 100644 src/bot/handlers/basic/currency_converter.rs diff --git a/.dockerignore b/.dockerignore index 94a969d..4154867 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,3 @@ /target .env -Dockerfile \ No newline at end of file +Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index af96580..d9f3709 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,6 +7,8 @@ # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence stages: - test + - build + - deploy .test-template: tags: @@ -39,14 +41,50 @@ fmt: - pre-commit run fmt -av build_img: + stage: build tags: - kube only: - - master + refs: + - master + changes: + - "src/**/*" + - "Cargo.toml" + - "Cargo.lock" image: name: r.j3ss.co/img entrypoint: [""] + script: - img login --password "${DOCKER_PASSWORD}" --username "${DOCKER_USER}" "${DOCKER_REGISTRY}" - img build --no-console -t docker.le-memese.com/bots/s3bot:latest . - img push docker.le-memese.com/bots/s3bot:latest + +deploy: + stage: deploy + tags: + - kube + only: + refs: + - master + needs: + - build_img + image: + name: alpine/helm:3.7.1 + entrypoint: ["/bin/sh", "-c"] + environment: + name: prod + action: start + url: "https://s3bot.le-memese.com" + script: + - helm + upgrade + s3bot + ./deploy/helm + --install + --wait + --create-namespace + --atomic + --timeout 2m + --namespace "$NAMESPACE" + -f "$HELM_CONFIG" diff --git a/Cargo.lock b/Cargo.lock index 48e9db9..f7f525a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -72,7 +72,7 @@ dependencies = [ "mime", "percent-encoding", "pin-project-lite", - "rand", + "rand 0.8.5", "sha1 0.10.5", "smallvec", "tokio", @@ -230,7 +230,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom", + "getrandom 0.2.8", "once_cell", "version_check", ] @@ -333,6 +333,19 @@ dependencies = [ "toml", ] +[[package]] +name = "async-compression" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a" +dependencies = [ + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] + [[package]] name = "async-trait" version = "0.1.64" @@ -554,6 +567,16 @@ dependencies = [ "version_check", ] +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.3" @@ -774,6 +797,15 @@ dependencies = [ "libc", ] +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + [[package]] name = "fern" version = "0.6.1" @@ -801,6 +833,21 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "form_urlencoded" version = "1.1.0" @@ -810,6 +857,16 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + [[package]] name = "futures" version = "0.3.26" @@ -909,6 +966,17 @@ dependencies = [ "version_check", ] +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + [[package]] name = "getrandom" version = "0.2.8" @@ -931,7 +999,7 @@ dependencies = [ "num-bigint", "num-integer", "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -947,6 +1015,7 @@ dependencies = [ "grammers-mtsender", "grammers-session", "grammers-tl-types", + "html5ever", "locate-locale", "log", "md5", @@ -964,7 +1033,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "573508524fd529ced63fe827fb89629a186414541fd9e645fef9ba499fc69c63" dependencies = [ "aes", - "getrandom", + "getrandom 0.2.8", "glass_pumpkin", "hmac", "num-bigint", @@ -982,7 +1051,7 @@ dependencies = [ "bytes", "crc32fast", "flate2", - "getrandom", + "getrandom 0.2.8", "grammers-crypto", "grammers-tl-types", "log", @@ -1108,6 +1177,20 @@ dependencies = [ "digest 0.9.0", ] +[[package]] +name = "html5ever" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "http" version = "0.2.8" @@ -1119,6 +1202,17 @@ dependencies = [ "itoa", ] +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + [[package]] name = "http-range" version = "0.1.5" @@ -1143,6 +1237,43 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02296996cb8796d7c6e3bc2d9211b7802812d36999a51bb754123ead7d37d026" +[[package]] +name = "hyper" +version = "0.14.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e011372fa0b68db8350aa7a248930ecc7839bf46d8485577d69f117a75f164c" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + [[package]] name = "iana-time-zone" version = "0.1.53" @@ -1187,6 +1318,15 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + [[package]] name = "io-lifetimes" version = "1.0.5" @@ -1197,6 +1337,12 @@ dependencies = [ "windows-sys 0.45.0", ] +[[package]] +name = "ipnet" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" + [[package]] name = "is-terminal" version = "0.4.3" @@ -1322,6 +1468,26 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "markup5ever" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd" +dependencies = [ + "log", + "phf", + "phf_codegen", + "string_cache", + "string_cache_codegen", + "tendril", +] + [[package]] name = "md5" version = "0.7.0" @@ -1386,6 +1552,30 @@ dependencies = [ "windows-sys 0.42.0", ] +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + [[package]] name = "nom" version = "7.1.3" @@ -1405,7 +1595,7 @@ dependencies = [ "autocfg", "num-integer", "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -1449,6 +1639,51 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +[[package]] +name = "openssl" +version = "0.10.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "os_info" version = "3.6.0" @@ -1495,7 +1730,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77e0b28ace46c5a396546bcf443bf422b57049617433d8854227352a4a9b24e7" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1524,6 +1759,63 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + [[package]] name = "pin-project-lite" version = "0.2.9" @@ -1548,6 +1840,12 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -1601,6 +1899,20 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + [[package]] name = "rand" version = "0.8.5" @@ -1608,8 +1920,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", ] [[package]] @@ -1619,7 +1941,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", ] [[package]] @@ -1628,7 +1959,25 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.8", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", ] [[package]] @@ -1679,6 +2028,70 @@ version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "reqwest" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9" +dependencies = [ + "async-compression", + "base64", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi 0.3.9", +] + [[package]] name = "rustc_version" version = "0.4.0" @@ -1702,6 +2115,18 @@ dependencies = [ "windows-sys 0.45.0", ] +[[package]] +name = "rustls" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +dependencies = [ + "log", + "ring", + "sct", + "webpki", +] + [[package]] name = "ryu" version = "1.0.12" @@ -1726,14 +2151,26 @@ dependencies = [ "futures", "grammers-client", "grammers-session", + "lazy_static", "log", - "rand", + "rand 0.8.5", "rayon", + "regex", + "reqwest", "serde", "serde_json", "tokio", ] +[[package]] +name = "schannel" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +dependencies = [ + "windows-sys 0.42.0", +] + [[package]] name = "scopeguard" version = "1.1.0" @@ -1746,6 +2183,39 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "security-framework" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "semver" version = "1.0.16" @@ -1843,6 +2313,12 @@ dependencies = [ "libc", ] +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + [[package]] name = "slab" version = "0.4.7" @@ -1868,6 +2344,38 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "string_cache" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared 0.10.0", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro2", + "quote", +] + [[package]] name = "strsim" version = "0.10.0" @@ -1891,6 +2399,31 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "tempfile" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if", + "fastrand", + "libc", + "redox_syscall", + "remove_dir_all", + "winapi 0.3.9", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + [[package]] name = "termcolor" version = "1.2.0" @@ -1984,6 +2517,27 @@ dependencies = [ "syn", ] +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +dependencies = [ + "rustls", + "tokio", + "webpki", +] + [[package]] name = "tokio-util" version = "0.7.7" @@ -2007,6 +2561,12 @@ dependencies = [ "serde", ] +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + [[package]] name = "tracing" version = "0.1.37" @@ -2028,6 +2588,12 @@ dependencies = [ "once_cell", ] +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + [[package]] name = "typenum" version = "1.16.0" @@ -2070,6 +2636,12 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + [[package]] name = "url" version = "2.3.1" @@ -2081,12 +2653,40 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + [[package]] name = "wasi" version = "0.10.0+wasi-snapshot-preview1" @@ -2124,6 +2724,18 @@ dependencies = [ "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wasm-bindgen-macro" version = "0.2.84" @@ -2153,6 +2765,26 @@ version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +[[package]] +name = "web-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "winapi" version = "0.2.8" @@ -2277,6 +2909,15 @@ version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi 0.3.9", +] + [[package]] name = "zstd" version = "0.12.3+zstd.1.5.2" diff --git a/Cargo.toml b/Cargo.toml index bc66a3b..fbc8a78 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,11 +18,14 @@ dotenvy = "^0.15.6" dyn-clone = "1.0.10" fern = { version = "0.6.1", features = ["chrono", "colored"] } futures = "0.3.26" -grammers-client = { version = "0.4.0", features = ["markdown"] } +grammers-client = { version = "0.4.0", features = ["markdown", "html"] } grammers-session = "0.4.0" +lazy_static = "1.4.0" log = "0.4.17" rand = "0.8.5" rayon = "1.6.1" +regex = "1.7.1" +reqwest = { version = "0.11.14", features = ["gzip", "json", "tokio-rustls"] } serde = { version = "1.0.152", features = ["derive"] } serde_json = "1.0.93" tokio = { version = "1.25.0", features = [ diff --git a/Dockerfile b/Dockerfile index 5449539..9c43cb2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,7 @@ WORKDIR /app COPY Cargo.toml Cargo.lock askama.toml ./ COPY src ./src COPY static ./static +# Build binary in release mode. RUN cargo build --release --all-features FROM debian:bullseye-20230109-slim as base @@ -16,12 +17,16 @@ RUN apt-get update \ COPY static ./static +# Copy built binary to a new image. COPY --from=builder /app/target/release/s3bot /usr/local/bin/ ENTRYPOINT ["/usr/local/bin/s3bot"] FROM base as rootless +# Create a user and make the image rootless. So no one +# can escalate privileges even if they have access to +# container. RUN useradd --create-home -u 1000 --user-group s3bot WORKDIR /home/s3bot RUN mv /static ./static diff --git a/README.md b/README.md new file mode 100644 index 0000000..37a940e --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +<div align="center"> + <img src="./logo.png" width="300"> + <h1 align="center"> + Automated telegram account + </h1> +</div> + +This project is an attempt to add some utillities to your account. + +This app uses telegram API and connects to it as a user, not as a bot. To use it, you need to register a new application, and obtain `api hash token` and `application id` from official telegram website. You can do it [here](https://core.telegram.org/api/obtaining_api_id). + + +## How to + +First of all, you need to install [Rust](http://rust-lang.org/). Personally I recommend to use [rustup](https://rustup.rs/). + +Make sure everything is fine by running `cargo --version`. + +1. Compile the app. + ```bash + cargo build --release + ``` + After that command you'll find a compiled binary in `target/release/s3bot`. + +2. Run the compiled binary. + + +## Configuration + +You can configure this app by either command line arguments or with environment variables. + +If you place .env file in current working directory, contents will be loaded as environment variables. + +For additional help please use: + +```bash +s3bot --help +``` \ No newline at end of file diff --git a/helm/.helmignore b/helm/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/helm/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/helm/Chart.yaml b/helm/Chart.yaml new file mode 100644 index 0000000..0978bd7 --- /dev/null +++ b/helm/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: s3bot +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "latest" diff --git a/helm/templates/NOTES.txt b/helm/templates/NOTES.txt new file mode 100644 index 0000000..d39da69 --- /dev/null +++ b/helm/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "s3bot.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "s3bot.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "s3bot.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "s3bot.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/helm/templates/_helpers.tpl b/helm/templates/_helpers.tpl new file mode 100644 index 0000000..129e6f9 --- /dev/null +++ b/helm/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "s3bot.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "s3bot.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "s3bot.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "s3bot.labels" -}} +helm.sh/chart: {{ include "s3bot.chart" . }} +{{ include "s3bot.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "s3bot.selectorLabels" -}} +app.kubernetes.io/name: {{ include "s3bot.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "s3bot.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "s3bot.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/helm/templates/deployment.yaml b/helm/templates/deployment.yaml new file mode 100644 index 0000000..d6d2c0b --- /dev/null +++ b/helm/templates/deployment.yaml @@ -0,0 +1,68 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "s3bot.fullname" . }} + labels: + {{- include "s3bot.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: 1 + {{- end }} + selector: + matchLabels: + {{- include "s3bot.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "s3bot.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "s3bot.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: {{ default 8000 .Values.env.BOT_SERVER_PORT }} + protocol: TCP + livenessProbe: + httpGet: + path: /health + port: http + readinessProbe: + httpGet: + path: /health + port: http + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.env }} + env: + {{- range $key, $val := . }} + - name: {{ $key | quote }} + value: {{ $val | quote }} + {{- end }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml new file mode 100644 index 0000000..b37b206 --- /dev/null +++ b/helm/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "s3bot.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "s3bot.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/helm/templates/service.yaml b/helm/templates/service.yaml new file mode 100644 index 0000000..06b58d5 --- /dev/null +++ b/helm/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "s3bot.fullname" . }} + labels: + {{- include "s3bot.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "s3bot.selectorLabels" . | nindent 4 }} diff --git a/helm/templates/serviceaccount.yaml b/helm/templates/serviceaccount.yaml new file mode 100644 index 0000000..0b01689 --- /dev/null +++ b/helm/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "s3bot.serviceAccountName" . }} + labels: + {{- include "s3bot.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/helm/templates/tests/test-connection.yaml b/helm/templates/tests/test-connection.yaml new file mode 100644 index 0000000..092ba62 --- /dev/null +++ b/helm/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "s3bot.fullname" . }}-test-connection" + labels: + {{- include "s3bot.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "s3bot.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/helm/values.yaml b/helm/values.yaml new file mode 100644 index 0000000..b6e61d2 --- /dev/null +++ b/helm/values.yaml @@ -0,0 +1,89 @@ +# Default values for s3bot. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +image: + repository: docker.le-memese.com/bots/s3bot + pullPolicy: Always + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +env: + BOT_SERVER_HOST: "0.0.0.0" + BOT_SERVER_PORT: 8000 + BOT_SERVER_USERNAME: "s3rius_san" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: + {} + # fsGroup: 2000 + +securityContext: + {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: false + className: "" + annotations: + {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: + {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f0c18852f0ceba3af1f519e355cb9a9dfac8be13 GIT binary patch literal 127872 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≫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%0Ahx-Ke+a6ekqX7@4u9=<`}9=u1P4V= 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≧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 literal 0 HcmV?d00001 diff --git a/src/args.rs b/src/args.rs index ca9fc82..15ab61b 100644 --- a/src/args.rs +++ b/src/args.rs @@ -77,8 +77,21 @@ pub struct BotConfig { )] pub session_file: String, - #[arg(name = "bot-excluded-chats", long, env = "BOT_EXCLUDED_CHATS")] + #[arg( + name = "bot-excluded-chats", + long, + env = "BOT_EXCLUDED_CHATS", + value_delimiter = ',' + )] pub excluded_chats: Vec<i64>, + + #[arg( + name = "bot-currency-excluded-chats", + long, + env = "BOT_CURRENCY_EXCLUDED_CHATS", + value_delimiter = ',' + )] + pub currency_excluded_chats: Vec<i64>, } #[derive(Clone, Parser, Debug)] diff --git a/src/bot/filters/chain.rs b/src/bot/filters/filtered_handler.rs similarity index 76% rename from src/bot/filters/chain.rs rename to src/bot/filters/filtered_handler.rs index 14f57e7..44fd29f 100644 --- a/src/bot/filters/chain.rs +++ b/src/bot/filters/filtered_handler.rs @@ -4,6 +4,11 @@ use crate::bot::handlers::Handler; use super::base::Filter; +/// This is a structure to match +/// handlers with corresponding filters. +/// +/// It's handy, because for different messages +/// we have different set of rules. #[derive(Clone)] pub struct FilteredHandler { filters: Vec<Box<dyn Filter>>, @@ -23,6 +28,8 @@ impl FilteredHandler { self } + /// This method performs checks for all filters we have. + /// We run it not in parralel for fast fail strategy. pub fn check(&self, update: &Update) -> bool { for filter in &self.filters { match filter.filter(update) { diff --git a/src/bot/filters/groups.rs b/src/bot/filters/groups.rs deleted file mode 100644 index 8b13789..0000000 --- a/src/bot/filters/groups.rs +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/bot/filters/message_fitlers.rs b/src/bot/filters/message_fitlers.rs index 0c8ea45..f2d973d 100644 --- a/src/bot/filters/message_fitlers.rs +++ b/src/bot/filters/message_fitlers.rs @@ -1,5 +1,7 @@ use grammers_client::Update; +use crate::utils::messages::get_message; + use super::base::Filter; #[allow(dead_code)] @@ -15,9 +17,17 @@ pub enum TextMatchMethod { IMatches, } +/// This filter is used to filter out +/// that marked as silent. +#[derive(Clone)] +pub struct SilentFilter; + +/// This filter checks that current +/// chat is not one of excluded chats. #[derive(Clone)] pub struct ExcludedChatsFilter(pub Vec<i64>); +/// This filter checks for message directions. #[derive(Clone)] pub struct MessageDirectionFilter(pub MessageDirection); @@ -31,10 +41,8 @@ impl Filter for ExcludedChatsFilter { Update::CallbackQuery(query) => query.chat().clone(), _ => return Ok(false), }; - if self.0.contains(&a.id()) { - return Ok(false); - } - Ok(true) + // Check that list of excluded chats doesn't contain our chat. + Ok(!self.0.contains(&a.id())) } } @@ -44,6 +52,7 @@ impl Filter for MessageDirectionFilter { let res = matches!( (self.0, message.outgoing()), + // Here we check that message's direction matches the direction we want. (MessageDirection::Outgoing, true) | (MessageDirection::Incoming, false) ); Ok(res) @@ -72,3 +81,11 @@ impl<'a> Filter for TextFilter<'a> { Ok(false) } } + +impl Filter for SilentFilter { + fn filter(&self, update: &Update) -> anyhow::Result<bool> { + let Some(message) = get_message(update) else {return Ok(false)}; + // Check that message is not silent. + Ok(!message.silent()) + } +} diff --git a/src/bot/filters/mod.rs b/src/bot/filters/mod.rs index 51fe228..9b169f6 100644 --- a/src/bot/filters/mod.rs +++ b/src/bot/filters/mod.rs @@ -1,3 +1,3 @@ -mod base; -pub mod chain; +pub mod base; +pub mod filtered_handler; pub mod message_fitlers; diff --git a/src/bot/handlers/basic/currency_converter.rs b/src/bot/handlers/basic/currency_converter.rs new file mode 100644 index 0000000..57f854c --- /dev/null +++ b/src/bot/handlers/basic/currency_converter.rs @@ -0,0 +1,176 @@ +use std::{collections::HashMap, time::Duration}; + +use grammers_client::{Client, InputMessage, Update}; +use regex::Regex; + +use crate::{ + bot::{filters::base::Filter, handlers::Handler}, + utils::messages::get_message, +}; + +lazy_static::lazy_static! { + static ref SUPPORTED_CURS: Vec<&'static str> = vec![ + "GBP", + "HUF", + "USD", + "EUR", + "CNY", + "NOK", + "UAH", + "SEK", + "CHF", + "KRW", + "JPY", + "KZT", + "PLN", + "TRY", + "AMD", + "RSD", + ]; + + static ref CONVERTION_ALIASES: HashMap<&'static str, &'static str> = HashMap::from( + [ + // GBP + ("фунт", "GBP"), + // USD + ("бакÑ", "USD"), + ("доллар", "USD"), + // EUR + ("евро", "EUR"), + // JPY + ("иен", "JPY"), + ("йен", "JPY"), + // KRW + ("вон", "KRW"), + // CHF + ("франк", "CHF"), + // SEK + ("крон", "CHF"), + // CNY + ("юан", "CNY"), + // UAH + ("гривна", "UAH"), + ("гривны", "UAH"), + ("гривен", "UAH"), + ("грiвен", "UAH"), + // KZT + ("тенге", "KZT"), + ("Ñ‚Ñнге", "KZT"), + // PLN + ("злот", "PLN"), + // TRY + ("лир", "TRY"), + // AMD + ("драм", "AMD"), + // RSD + ("динар", "RSD"), + ] + ); + + static ref CUR_REGEX: Regex = { + #[allow(clippy::clone_double_ref)] + let a = CONVERTION_ALIASES.keys() + .copied() + .chain(SUPPORTED_CURS.iter().copied()) + .collect::<Vec<_>>() + .join("|"); + Regex::new(format!(r"\s*(?P<cur_value>\d+([\.,]\d+)?)\s+(?P<cur_name>{a})").as_str()).unwrap() + }; +} + +#[derive(Clone)] +pub struct CurrencyTextFilter; + +#[derive(Clone)] +pub struct CurrencyConverter { + client: reqwest::Client, +} + +impl CurrencyConverter { + pub fn new() -> anyhow::Result<Self> { + let client = reqwest::ClientBuilder::new() + .timeout(Duration::from_secs(2)) + .gzip(true) + .build()?; + Ok(Self { client }) + } +} + +/// This filter check if the message matches regex for currencies. +impl Filter for CurrencyTextFilter { + fn filter(&self, update: &Update) -> anyhow::Result<bool> { + let Some(message) = get_message(update) else { + return Ok(false); + }; + Ok(CUR_REGEX.is_match(message.text())) + } +} + +#[async_trait::async_trait] +impl Handler for CurrencyConverter { + async fn react(&self, _: &Client, update: &Update) -> anyhow::Result<()> { + let Some(message) = get_message(update) else{ return Ok(())}; + let response = self + .client + .get("https://www.cbr-xml-daily.ru/daily_json.js") + .send() + .await? + .error_for_status()? + .json::<serde_json::Value>() + .await?; + + let Some(valutes) = response + .get("Valute") + .and_then(serde_json::Value::as_object) else{ + log::warn!("Can't get valutes fom response."); + return Ok(()); + }; + + let mut calucates = Vec::new(); + + for capture in CUR_REGEX.captures_iter(message.text()) { + // We parse supplied value from message + let Some(num_value) = capture + .name("cur_value") + // Convert match to string. + .map(|mtch| mtch.as_str()) + // Parse it. + .and_then(|val| val.parse::<f64>().ok()) else{ + continue; + }; + let cur_name = capture.name("cur_name").map(|mtch| mtch.as_str()); + let Some(cur_name) = cur_name + // We check if the value is an alias. + .and_then(|val| CONVERTION_ALIASES.get(val).copied()) + // get previous value if not. + .or(cur_name) else{ + continue; + }; + let calculated = valutes + .get(cur_name) + .and_then(|info| info.get("Value")) + .map(ToString::to_string) + .and_then(|value| value.as_str().parse::<f64>().ok()) + .map(|multiplier| multiplier * num_value); + if let Some(value) = calculated { + calucates.push(format!( + "<pre>{num_value} {cur_name} = {value:.2} RUB</pre><br>" + )); + } + } + + if !calucates.is_empty() { + let mut bot_response = + String::from("<b>ПолагаÑÑÑŒ на текущий ÐºÑƒÑ€Ñ Ð²Ð°Ð»ÑŽÑ‚ могу Ñказать Ñледующее:</b>\n\n"); + for calc in calucates { + bot_response.push_str(calc.as_str()); + } + message + // We send it as silent, so we can filter this message later. + .reply(InputMessage::html(bot_response).silent(true)) + .await?; + } + + Ok(()) + } +} diff --git a/src/bot/handlers/basic/help.rs b/src/bot/handlers/basic/help.rs index 5f96340..00a96ca 100644 --- a/src/bot/handlers/basic/help.rs +++ b/src/bot/handlers/basic/help.rs @@ -10,7 +10,7 @@ impl Handler for Help { async fn react(&self, _: &Client, update: &Update) -> anyhow::Result<()> { let Update::NewMessage(message) = update else {return Ok(())}; - message.reply("Хелпа").await?; + message.reply("Я больше не раÑÑказываю что Ñ ÑƒÐ¼ÐµÑŽ.").await?; Ok(()) } diff --git a/src/bot/handlers/basic/mod.rs b/src/bot/handlers/basic/mod.rs index c1ee8d4..3f81a21 100644 --- a/src/bot/handlers/basic/mod.rs +++ b/src/bot/handlers/basic/mod.rs @@ -1,2 +1,3 @@ +pub mod currency_converter; pub mod get_chat_id; pub mod help; diff --git a/src/bot/handlers/fun/blyaficator.rs b/src/bot/handlers/fun/blyaficator.rs index 6a4ce83..c8660f8 100644 --- a/src/bot/handlers/fun/blyaficator.rs +++ b/src/bot/handlers/fun/blyaficator.rs @@ -6,6 +6,7 @@ use grammers_client::{Client, Update}; const BLYA_WORDS: &[&str] = &[", блÑ,", ", Ñука,", ", ёбаный рот,", ", охуеть конечно,"]; +/// It's time to add some блÑs. #[derive(Clone)] pub struct Blyaficator; diff --git a/src/bot/handlers/fun/greeter.rs b/src/bot/handlers/fun/greeter.rs index b66c685..fc83bd3 100644 --- a/src/bot/handlers/fun/greeter.rs +++ b/src/bot/handlers/fun/greeter.rs @@ -4,6 +4,17 @@ use rand::seq::IteratorRandom; use crate::bot::handlers::base::Handler; +lazy_static::lazy_static! { + static ref GREETINGS: &'static [&'static str] = &[ + "Привет!", + "Добрый день!", + "ЗдравÑтвуйте.", + "ПриетÑтвую.", + "Доброго времени Ñуток.", + ]; +} + +/// Greeter just replies to greeting messages. #[derive(Clone)] pub struct Greeter; @@ -18,9 +29,8 @@ impl Handler for Greeter { return Ok(()); } - let reply_text = ["Привет!", "Добрый день!", "ЗдравÑтвуйте.", "ПриетÑтвую"] - .into_iter() - .choose(&mut rand::thread_rng()); + // Choose random greeting from the list of greetings. + let reply_text = GREETINGS.iter().choose(&mut rand::thread_rng()).copied(); if let Some(text) = reply_text { message.reply(text).await?; diff --git a/src/bot/main.rs b/src/bot/main.rs index 284f666..c05bb8d 100644 --- a/src/bot/main.rs +++ b/src/bot/main.rs @@ -8,19 +8,30 @@ use tokio::sync::RwLock; use super::{ filters::{ - chain::FilteredHandler, + filtered_handler::FilteredHandler, message_fitlers::{ - ExcludedChatsFilter, MessageDirection, MessageDirectionFilter, TextFilter, - TextMatchMethod, + ExcludedChatsFilter, MessageDirection, MessageDirectionFilter, SilentFilter, + TextFilter, TextMatchMethod, }, }, handlers::{ - basic::{get_chat_id::GetChatId, help::Help}, + basic::{ + currency_converter::{CurrencyConverter, CurrencyTextFilter}, + get_chat_id::GetChatId, + help::Help, + }, fun::{blyaficator::Blyaficator, greeter::Greeter}, Handler, }, }; +/// Authorization function. +/// +/// This function asks for login code and +/// waits for it to become available. +/// +/// Also it validates two-factor authentication +/// password if it was supplied. async fn authorize( args: &BotConfig, client: &Client, @@ -32,18 +43,19 @@ async fn authorize( .await?; let mut code = None; + // Check for code to becom available every second. while code.is_none() { tokio::time::sleep(Duration::from_secs(1)).await; { code = web_code.read().await.clone(); } } - + // Acutal signing in. let signed_in = client.sign_in(&token, &code.unwrap()).await; match signed_in { + // If signing i Err(SignInError::PasswordRequired(password_token)) => { - // Note: this `prompt` method will echo the password in the console. - // Real code might want to use a better way to handle this. + // If the password was not supplied, we use the hint in panic. let hint = password_token.hint().unwrap_or("None"); let password = args .tfa_password @@ -60,48 +72,82 @@ async fn authorize( Ok(()) } +/// This little function is used to execute handlers on updates and print errors +/// if something bad happens. +/// +/// The reason, I created a separate function is simple. I spawn every handler as a +/// separate task and I don't care if fails. async fn handle_with_log(handler: Box<dyn Handler>, client: Client, update_data: Update) { if let Err(err) = handler.react(&client, &update_data).await { log::error!("{err}"); } } -async fn run(args: BotConfig, client: Client) { +/// Acutal logic on handling updates. +/// +/// This function handles every update we get from telegram +/// and spawns correcsponding handlers. +/// +/// Also, every available handler is defined here. +async fn run(args: BotConfig, client: Client) -> anyhow::Result<()> { let handlers: Vec<FilteredHandler> = vec![ + // Printing help. + FilteredHandler::new(Help).add_filter(TextFilter(&[".h"], TextMatchMethod::IMatches)), + // Greeting my fellow humans. FilteredHandler::new(Greeter) + .add_filter(SilentFilter) .add_filter(MessageDirectionFilter(MessageDirection::Incoming)) .add_filter(TextFilter(&["привет"], TextMatchMethod::IStartsWith)) .add_filter(ExcludedChatsFilter(args.excluded_chats)), - FilteredHandler::new(Help).add_filter(TextFilter(&[".h"], TextMatchMethod::IMatches)), + // Getting chat id. FilteredHandler::new(GetChatId) .add_filter(TextFilter(&[".cid"], TextMatchMethod::IMatches)), + // Make Ð±Ð»Ñ fun again. FilteredHandler::new(Blyaficator) .add_filter(TextFilter(&[".bl"], TextMatchMethod::IStartsWith)), + // Handler for converting currecies. + FilteredHandler::new(CurrencyConverter::new()?) + .add_filter(SilentFilter) + .add_filter(ExcludedChatsFilter(args.currency_excluded_chats)) + .add_filter(CurrencyTextFilter), ]; loop { + // Get new update let update = client.next_update().await; if update.is_err() { log::error!("{}", update.unwrap_err()); break; } - if let Some(update_data) = update.unwrap() { - let update_ref = &update_data; - let matched_handlers = handlers - .par_iter() - .filter(move |val| val.check(update_ref)) - .collect::<Vec<_>>(); - for handler in matched_handlers { - tokio::spawn(handle_with_log( - handler.handler.clone(), - client.clone(), - update_data.clone(), - )); - } + // We get update if there's no error + let Some(update_data) = update.ok().and_then(|inner|inner) else{ + log::warn!("Empty update is found."); + continue; + }; + // A reference to update, so we can easily move it. + let update_ref = &update_data; + let filtered = handlers + // A parralel iterator over matchers. + .par_iter() + // Here we get all handlers that match filters. + .filter(move |val| val.check(update_ref)) + // For each matched handler we spawn a new task. + .collect::<Vec<_>>(); + for handler in filtered { + tokio::spawn(handle_with_log( + handler.handler.clone(), + client.clone(), + update_data.clone(), + )); } } + Ok(()) } +/// The main entrypoint for bot. +/// +/// This function starts bot, performs login and +/// starts endless loop. pub async fn start(args: BotConfig, web_code: Arc<RwLock<Option<String>>>) -> anyhow::Result<()> { log::info!("Connecting to Telegram..."); let client = Client::connect(Config { @@ -115,17 +161,20 @@ pub async fn start(args: BotConfig, web_code: Arc<RwLock<Option<String>>>) -> an }, }) .await?; + log::info!("Connected!"); + if client.is_authorized().await? { // If we already authrized, we write random token, so web won't update it. let mut code_writer = web_code.write().await; *code_writer = Some(String::new()); } else { + // If we don't have token, wait for it. authorize(&args, &client, web_code).await?; client.session().save_to_file(args.session_file.as_str())?; } - run(args.clone(), client).await; + run(args.clone(), client).await?; Ok(()) } diff --git a/src/main.rs b/src/main.rs index 1d4ed0d..060f508 100644 --- a/src/main.rs +++ b/src/main.rs @@ -25,27 +25,27 @@ async fn main() -> anyhow::Result<()> { let token_lock = Arc::new(RwLock::new(None)); - let bot_token = token_lock.clone(); - let server_token = token_lock.clone(); - - let web_server = server::create(args.server.clone(), server_token)?; - let bot_future = bot::start(args.bot.clone(), bot_token); - - let tasks = [ - tokio::task::spawn(bot_future), - tokio::task::spawn(error_wrap(web_server)), - ]; - - let completed = tasks - .into_iter() - .collect::<FuturesUnordered<_>>() - .take(1) - .collect::<Vec<_>>() - .await; - - if let Some(fut) = completed.into_iter().next() { - fut? - } else { - Ok(()) - } + [ + // Spawining bot task + tokio::task::spawn(bot::start(args.bot.clone(), token_lock.clone())), + // Spawning server task. + tokio::task::spawn(error_wrap(server::create( + args.server.clone(), + token_lock.clone(), + )?)), + ] + .into_iter() + // Turning all tasks in unirdered futures set. + .collect::<FuturesUnordered<_>>() + // Grab first completed future + .take(1) + // Take the value + .next() + // Await for it to complete + .await + // Unwrap (since we can guarantee that it's not empty). + // Throw all errors by using ??. First for joining task, second from the task itself. + .unwrap()??; + + Ok(()) } diff --git a/src/server/main.rs b/src/server/main.rs index 8559ea0..e17691e 100644 --- a/src/server/main.rs +++ b/src/server/main.rs @@ -11,9 +11,10 @@ pub fn create(args: ServerConfig, token: Arc<RwLock<Option<String>>>) -> anyhow: let addr = (args.host.clone(), args.port); let server = HttpServer::new(move || { App::new() - .wrap(actix_web::middleware::Logger::new( - "\"%r\" \"-\" \"%s\" \"%a\" \"%D\"", - )) + .wrap( + actix_web::middleware::Logger::new("\"%r\" \"-\" \"%s\" \"%a\" \"%D\"") + .exclude("/health"), + ) .app_data(Data::new(token.clone())) .app_data(Data::new(args.clone())) .service(login) diff --git a/src/server/templates/mod.rs b/src/server/templates/mod.rs index d0d2b26..f6b9e03 100644 --- a/src/server/templates/mod.rs +++ b/src/server/templates/mod.rs @@ -1,5 +1,16 @@ use askama::Template; +/// Index pages. +/// +/// This page is used to authenticate users. +/// It has two states: activated or not. +/// +/// It the activated is false, we +/// render two input fields, with telegram code +/// and server's password. +/// +/// If the user is authenticated, we just render +/// some random information. #[derive(Template)] #[template(path = "index.html")] pub struct Index { -- GitLab