From 1f4f9a3da1be13e21e63a5982f535207e6c94406 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Mon, 13 Mar 2023 12:58:00 -0400 Subject: [PATCH 01/63] more status details --- bin/status.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/bin/status.sh b/bin/status.sh index 2ad2050..0a34adb 100755 --- a/bin/status.sh +++ b/bin/status.sh @@ -222,6 +222,15 @@ fi if [ ${TESTS['fw']} -eq 0 ] ; then echo "${RED}MISSING${NC}: firewall rules" fi +x=$(ps -ef | grep -c 'isc-agent\sstart') +if [ $x -eq 1 ]]; then + echo "${GREEN}OK${NC}: isc-agent running" + TESTS['iscagentrunnint']=1 +else + echo "${RED}ERROR${NC}: isc-agent not running" + TESTS['exposed']=0 +fi + port=$(curl -s 'https://isc.sans.edu/api/portcheck?json' | jq .port80 | tr -d '"') if [[ "$port" == "open" ]]; then echo "${GREEN}OK${NC}: webserver exposed" From 0b6539c80cfa13e4cedc0a99471bf473585a9740 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Mon, 13 Mar 2023 13:27:54 -0400 Subject: [PATCH 02/63] status fix --- bin/status.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/status.sh b/bin/status.sh index 0a34adb..954bcb2 100755 --- a/bin/status.sh +++ b/bin/status.sh @@ -223,7 +223,7 @@ if [ ${TESTS['fw']} -eq 0 ] ; then echo "${RED}MISSING${NC}: firewall rules" fi x=$(ps -ef | grep -c 'isc-agent\sstart') -if [ $x -eq 1 ]]; then +if [ $x -eq 1 ]; then echo "${GREEN}OK${NC}: isc-agent running" TESTS['iscagentrunnint']=1 else From c271b6e731b97f7a2a9c5847e1fd75574be5fabd Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Mon, 13 Mar 2023 13:39:43 -0400 Subject: [PATCH 03/63] experimenting with pyproject --- srv/isc-agent/pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srv/isc-agent/pyproject.toml b/srv/isc-agent/pyproject.toml index ff75108..777d319 100644 --- a/srv/isc-agent/pyproject.toml +++ b/srv/isc-agent/pyproject.toml @@ -7,7 +7,7 @@ readme = "README.md" packages = [{include = "sans_isc_agent"}] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.8" jinja2 = "~=3.0.3" pydantic = {extras = ["dotenv", "email"], version = "~=1.9.0"} requests = "~=2.27.1" @@ -27,4 +27,4 @@ markdown = "*" tox = "*" [build-system] requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" \ No newline at end of file +build-backend = "poetry.core.masonry.api" From 1940647b600ab8ac9380075a97bed35ab1813290 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Mon, 13 Mar 2023 17:40:16 +0000 Subject: [PATCH 04/63] Converted pyproject.toml to requirements.txt --- bin/requirements.txt | 88 ++++++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/bin/requirements.txt b/bin/requirements.txt index c3088da..5d33f27 100644 --- a/bin/requirements.txt +++ b/bin/requirements.txt @@ -1,13 +1,13 @@ -appdirs==1.4.4 ; python_version >= "3.9" and python_version < "4.0" \ +appdirs==1.4.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41 \ --hash=sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128 -attrs==22.2.0 ; python_version >= "3.9" and python_version < "4.0" \ +attrs==22.2.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836 \ --hash=sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99 -automat==22.10.0 ; python_version >= "3.9" and python_version < "4.0" \ +automat==22.10.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:c3164f8742b9dc440f3682482d32aaff7bb53f71740dd018533f9de286b64180 \ --hash=sha256:e56beb84edad19dcc11d30e8d9b895f75deeb5ef5e96b84a467066b3b84bb04e -bcrypt==4.0.1 ; python_version >= "3.9" and python_version < "4.0" \ +bcrypt==4.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535 \ --hash=sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0 \ --hash=sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410 \ @@ -29,10 +29,10 @@ bcrypt==4.0.1 ; python_version >= "3.9" and python_version < "4.0" \ --hash=sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d \ --hash=sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e \ --hash=sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3 -certifi==2022.12.7 ; python_version >= "3.9" and python_version < "4.0" \ +certifi==2022.12.7 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \ --hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18 -cffi==1.15.1 ; python_version >= "3.9" and python_version < "4.0" \ +cffi==1.15.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \ --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \ --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \ @@ -97,13 +97,13 @@ cffi==1.15.1 ; python_version >= "3.9" and python_version < "4.0" \ --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \ --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \ --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0 -charset-normalizer==2.0.12 ; python_version >= "3.9" and python_version < "4.0" \ +charset-normalizer==2.0.12 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597 \ --hash=sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df -constantly==15.1.0 ; python_version >= "3.9" and python_version < "4.0" \ +constantly==15.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35 \ --hash=sha256:dd2fa9d6b1a51a83f0d7dd76293d734046aa176e384bf6e33b7e44880eb37c5d -cryptography==39.0.2 ; python_version >= "3.9" and python_version < "4.0" \ +cryptography==39.0.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:103e8f7155f3ce2ffa0049fe60169878d47a4364b277906386f8de21c9234aa1 \ --hash=sha256:23df8ca3f24699167daf3e23e51f7ba7334d504af63a94af468f468b975b7dd7 \ --hash=sha256:2725672bb53bb92dc7b4150d233cd4b8c59615cd8288d495eaa86db00d4e5c06 \ @@ -127,7 +127,7 @@ cryptography==39.0.2 ; python_version >= "3.9" and python_version < "4.0" \ --hash=sha256:eb40fe69cfc6f5cdab9a5ebd022131ba21453cf7b8a7fd3631f45bbf52bed612 \ --hash=sha256:fa507318e427169ade4e9eccef39e9011cdc19534f55ca2f36ec3f388c1f70f3 \ --hash=sha256:ffd394c7896ed7821a6d13b24657c6a34b6e2650bd84ae063cf11ccffa4f1a97 -cython-test-exception-raiser==1.0.2 ; python_version >= "3.9" and python_version < "4.0" \ +cython-test-exception-raiser==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0396ae2ad249b7612d1a59737691095309f736654d29ddf8384f73309c57aba7 \ --hash=sha256:13efc23b95088183edab33cc564f47d4adf4ae0943e303c367fe20443987e6b0 \ --hash=sha256:18426985e4e328be9c89e8151397abc078b0482a86eb86a80763b1738c34c217 \ @@ -158,16 +158,16 @@ cython-test-exception-raiser==1.0.2 ; python_version >= "3.9" and python_version --hash=sha256:eec60f994acfea7a29017cdc8063c18181ec6e78317760f022d7c291cb67d6ff \ --hash=sha256:f823e4a9b0c8a99c133250fb059b8b05a18bac00783285ef48a4b3485646953f \ --hash=sha256:f93b0df46cb45fe0db736317a30fa60874cad531f0549be935546513bd76e68d -dnspython==2.3.0 ; python_version >= "3.9" and python_version < "4.0" \ +dnspython==2.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:224e32b03eb46be70e12ef6d64e0be123a64e621ab4c0822ff6d450d52a540b9 \ --hash=sha256:89141536394f909066cabd112e3e1a37e4e654db00a25308b0f130bc3152eb46 -email-validator==1.3.1 ; python_version >= "3.9" and python_version < "4.0" \ +email-validator==1.3.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:49a72f5fa6ed26be1c964f0567d931d10bf3fdeeacdf97bc26ef1cd2a44e0bda \ --hash=sha256:d178c5c6fa6c6824e9b04f199cf23e79ac15756786573c190d2ad13089411ad2 -exceptiongroup==1.1.0 ; python_version >= "3.9" and python_version < "3.11" \ +exceptiongroup==1.1.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e \ --hash=sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23 -greenlet==2.0.2 ; python_version >= "3.9" and platform_machine == "aarch64" and python_version < "4.0" or python_version >= "3.9" and platform_machine == "ppc64le" and python_version < "4.0" or python_version >= "3.9" and platform_machine == "x86_64" and python_version < "4.0" or python_version >= "3.9" and platform_machine == "amd64" and python_version < "4.0" or python_version >= "3.9" and platform_machine == "AMD64" and python_version < "4.0" or python_version >= "3.9" and platform_machine == "win32" and python_version < "4.0" or python_version >= "3.9" and platform_machine == "WIN32" and python_version < "4.0" \ +greenlet==2.0.2 ; python_version >= "3.8" and platform_machine == "aarch64" and python_version < "4.0" or python_version >= "3.8" and platform_machine == "ppc64le" and python_version < "4.0" or python_version >= "3.8" and platform_machine == "x86_64" and python_version < "4.0" or python_version >= "3.8" and platform_machine == "amd64" and python_version < "4.0" or python_version >= "3.8" and platform_machine == "AMD64" and python_version < "4.0" or python_version >= "3.8" and platform_machine == "win32" and python_version < "4.0" or python_version >= "3.8" and platform_machine == "WIN32" and python_version < "4.0" \ --hash=sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a \ --hash=sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a \ --hash=sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43 \ @@ -228,31 +228,31 @@ greenlet==2.0.2 ; python_version >= "3.9" and platform_machine == "aarch64" and --hash=sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19 \ --hash=sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1 \ --hash=sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526 -h2==4.1.0 ; python_version >= "3.9" and python_version < "4.0" \ +h2==4.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d \ --hash=sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb -hpack==4.0.0 ; python_version >= "3.9" and python_version < "4.0" \ +hpack==4.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c \ --hash=sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095 -hyperframe==6.0.1 ; python_version >= "3.9" and python_version < "4.0" \ +hyperframe==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15 \ --hash=sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914 -hyperlink==21.0.0 ; python_version >= "3.9" and python_version < "4.0" \ +hyperlink==21.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:427af957daa58bc909471c6c40f74c5450fa123dd093fc53efd2e91d2705a56b \ --hash=sha256:e6b14c37ecb73e89c77d78cdb4c2cc8f3fb59a885c5b3f819ff4ed80f25af1b4 -hypothesis==6.68.2 ; python_version >= "3.9" and python_version < "4.0" \ +hypothesis==6.68.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:2a41cc766cde52705895e54547374af89c617e8ec7bc4186cb7f03884a667d4e \ --hash=sha256:a7eb2b0c9a18560d8197fe35047ceb58e7e8ab7623a3e5a82613f6a2cd71cffa -idna==3.4 ; python_version >= "3.9" and python_version < "4.0" \ +idna==3.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 -incremental==22.10.0 ; python_version >= "3.9" and python_version < "4.0" \ +incremental==22.10.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:912feeb5e0f7e0188e6f42241d2f450002e11bbc0937c65865045854c24c0bd0 \ --hash=sha256:b864a1f30885ee72c5ac2835a761b8fe8aa9c28b9395cacf27286602688d3e51 -jinja2==3.0.3 ; python_version >= "3.9" and python_version < "4.0" \ +jinja2==3.0.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8 \ --hash=sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7 -markupsafe==2.1.2 ; python_version >= "3.9" and python_version < "4.0" \ +markupsafe==2.1.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed \ --hash=sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc \ --hash=sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2 \ @@ -303,19 +303,19 @@ markupsafe==2.1.2 ; python_version >= "3.9" and python_version < "4.0" \ --hash=sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2 \ --hash=sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6 \ --hash=sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58 -priority==1.3.0 ; python_version >= "3.9" and python_version < "4.0" \ +priority==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:6bc1961a6d7fcacbfc337769f1a382c8e746566aaa365e78047abe9f66b2ffbe \ --hash=sha256:be4fcb94b5e37cdeb40af5533afe6dd603bd665fe9c8b3052610fc1001d5d1eb -pyasn1-modules==0.2.8 ; python_version >= "3.9" and python_version < "4.0" \ +pyasn1-modules==0.2.8 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e \ --hash=sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74 -pyasn1==0.4.8 ; python_version >= "3.9" and python_version < "4.0" \ +pyasn1==0.4.8 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \ --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba -pycparser==2.21 ; python_version >= "3.9" and python_version < "4.0" \ +pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic[dotenv,email]==1.9.2 ; python_version >= "3.9" and python_version < "4.0" \ +pydantic[dotenv,email]==1.9.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1061c6ee6204f4f5a27133126854948e3b3d51fcc16ead2e5d04378c199b2f44 \ --hash=sha256:19b5686387ea0d1ea52ecc4cffb71abb21702c5e5b2ac626fd4dbaa0834aa49d \ --hash=sha256:2bd446bdb7755c3a94e56d7bdfd3ee92396070efa8ef3a34fab9579fe6aa1d84 \ @@ -351,19 +351,19 @@ pydantic[dotenv,email]==1.9.2 ; python_version >= "3.9" and python_version < "4. --hash=sha256:f1a68f4f65a9ee64b6ccccb5bf7e17db07caebd2730109cb8a95863cfa9c4e55 \ --hash=sha256:fafe841be1103f340a24977f61dee76172e4ae5f647ab9e7fd1e1fca51524f08 \ --hash=sha256:ff68fc85355532ea77559ede81f35fff79a6a5543477e168ab3a381887caea76 -pyhamcrest==2.0.4 ; python_version >= "3.9" and python_version < "4.0" \ +pyhamcrest==2.0.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:60a41d4783b9d56c9ec8586635d2301db5072b3ea8a51c32dd03c408ae2b0f79 \ --hash=sha256:b5d9ce6b977696286cf232ce2adf8969b4d0b045975b0936ac9005e84e67e9c1 -pyopenssl==23.0.0 ; python_version >= "3.9" and python_version < "4.0" \ +pyopenssl==23.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:c1cc5f86bcacefc84dada7d31175cae1b1518d5f60d3d0bb595a67822a868a6f \ --hash=sha256:df5fc28af899e74e19fccb5510df423581047e10ab6f1f4ba1763ff5fde844c0 -pyserial==3.5 ; python_version >= "3.9" and python_version < "4.0" \ +pyserial==3.5 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb \ --hash=sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0 -python-dotenv==1.0.0 ; python_version >= "3.9" and python_version < "4.0" \ +python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a -pywin32==305 ; platform_system == "Windows" and python_version >= "3.9" and python_version < "4.0" \ +pywin32==305 ; platform_system == "Windows" and python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:109f98980bfb27e78f4df8a51a8198e10b0f347257d1e265bb1a32993d0c973d \ --hash=sha256:13362cc5aa93c2beaf489c9c9017c793722aeb56d3e5166dadd5ef82da021fe1 \ --hash=sha256:19ca459cd2e66c0e2cc9a09d589f71d827f26d47fe4a9d09175f6aa0256b51c2 \ @@ -378,22 +378,22 @@ pywin32==305 ; platform_system == "Windows" and python_version >= "3.9" and pyth --hash=sha256:9d968c677ac4d5cbdaa62fd3014ab241718e619d8e36ef8e11fb930515a1e918 \ --hash=sha256:9dd98384da775afa009bc04863426cb30596fd78c6f8e4e2e5bbf4edf8029504 \ --hash=sha256:a55db448124d1c1484df22fa8bbcbc45c64da5e6eae74ab095b9ea62e6d00496 -requests==2.27.1 ; python_version >= "3.9" and python_version < "4.0" \ +requests==2.27.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61 \ --hash=sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d -service-identity==21.1.0 ; python_version >= "3.9" and python_version < "4.0" \ +service-identity==21.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:6e6c6086ca271dc11b033d17c3a8bea9f24ebff920c587da090afc9519419d34 \ --hash=sha256:f0b0caac3d40627c3c04d7a51b6e06721857a0e10a8775f2d1d7e72901b3a7db -setuptools==67.5.1 ; python_version >= "3.9" and python_version < "4.0" \ +setuptools==67.5.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:15136a251127da2d2e77ac7a1bc231eb504654f7e3346d93613a13f2e2787535 \ --hash=sha256:1c39d42bda4cb89f7fdcad52b6762e3c309ec8f8715b27c684176b7d71283242 -six==1.16.0 ; python_version >= "3.9" and python_version < "4.0" \ +six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 -sortedcontainers==2.4.0 ; python_version >= "3.9" and python_version < "4.0" \ +sortedcontainers==2.4.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88 \ --hash=sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0 -sqlalchemy==1.4.46 ; python_version >= "3.9" and python_version < "4.0" \ +sqlalchemy==1.4.46 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:07e48cbcdda6b8bc7a59d6728bd3f5f574ffe03f2c9fb384239f3789c2d95c2e \ --hash=sha256:18cafdb27834fa03569d29f571df7115812a0e59fd6a3a03ccb0d33678ec8420 \ --hash=sha256:1b1e5e96e2789d89f023d080bee432e2fef64d95857969e70d3cadec80bd26f0 \ @@ -435,7 +435,7 @@ sqlalchemy==1.4.46 ; python_version >= "3.9" and python_version < "4.0" \ --hash=sha256:d68e1762997bfebf9e5cf2a9fd0bcf9ca2fdd8136ce7b24bbd3bbfa4328f3e4a \ --hash=sha256:e3c1808008124850115a3f7e793a975cfa5c8a26ceeeb9ff9cbb4485cac556df \ --hash=sha256:f8cb80fe8d14307e4124f6fad64dfd87ab749c9d275f82b8b4ec84c84ecebdbe -twisted-iocpsupport==1.0.2 ; python_version >= "3.9" and python_version < "4.0" and platform_system == "Windows" \ +twisted-iocpsupport==1.0.2 ; python_version >= "3.8" and python_version < "4.0" and platform_system == "Windows" \ --hash=sha256:306becd6e22ab6e8e4f36b6bdafd9c92e867c98a5ce517b27fdd27760ee7ae41 \ --hash=sha256:3c61742cb0bc6c1ac117a7e5f422c129832f0c295af49e01d8a6066df8cfc04d \ --hash=sha256:72068b206ee809c9c596b57b5287259ea41ddb4774d86725b19f35bf56aa32a9 \ @@ -448,16 +448,16 @@ twisted-iocpsupport==1.0.2 ; python_version >= "3.9" and python_version < "4.0" --hash=sha256:b76b4eed9b27fd63ddb0877efdd2d15835fdcb6baa745cb85b66e5d016ac2878 \ --hash=sha256:b9fed67cf0f951573f06d560ac2f10f2a4bbdc6697770113a2fc396ea2cb2565 \ --hash=sha256:bf4133139d77fc706d8f572e6b7d82871d82ec7ef25d685c2351bdacfb701415 -twisted[all-non-platform,http2]==22.10.0 ; python_version >= "3.9" and python_version < "4.0" \ +twisted[all-non-platform,http2]==22.10.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:32acbd40a94f5f46e7b42c109bfae2b302250945561783a8b7a059048f2d4d31 \ --hash=sha256:86c55f712cc5ab6f6d64e02503352464f0400f66d4f079096d744080afcccbd0 -typing-extensions==4.5.0 ; python_version >= "3.9" and python_version < "4.0" \ +typing-extensions==4.5.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb \ --hash=sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4 -urllib3==1.26.14 ; python_version >= "3.9" and python_version < "4.0" \ +urllib3==1.26.14 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72 \ --hash=sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1 -zope-interface==5.5.2 ; python_version >= "3.9" and python_version < "4.0" \ +zope-interface==5.5.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:008b0b65c05993bb08912f644d140530e775cf1c62a072bf9340c2249e613c32 \ --hash=sha256:0217a9615531c83aeedb12e126611b1b1a3175013bbafe57c702ce40000eb9a0 \ --hash=sha256:0fb497c6b088818e3395e302e426850f8236d8d9f4ef5b2836feae812a8f699c \ From 62673e09ccd4ab0aca8f38c98a29bf6ae034d1bd Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Mon, 13 Mar 2023 14:59:32 -0400 Subject: [PATCH 05/63] fixing python version for raspberry pi --- srv/isc-agent/poetry.lock | 8 ++++---- srv/isc-agent/pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/srv/isc-agent/poetry.lock b/srv/isc-agent/poetry.lock index 0ba0b48..2cf0bee 100644 --- a/srv/isc-agent/poetry.lock +++ b/srv/isc-agent/poetry.lock @@ -18,7 +18,7 @@ version = "2.15.0" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.7" files = [ {file = "astroid-2.15.0-py3-none-any.whl", hash = "sha256:e3e4d0ffc2d15d954065579689c36aac57a339a4679a679579af6401db4d3fdb"}, {file = "astroid-2.15.0.tar.gz", hash = "sha256:525f126d5dc1b8b0b6ee398b33159105615d92dc4a17f2cd064125d57f6186fa"}, @@ -817,7 +817,7 @@ version = "5.12.0" description = "A Python utility / library to sort Python imports." category = "dev" optional = false -python-versions = ">=3.8.0" +python-versions = ">=3.7.0" files = [ {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, @@ -1291,7 +1291,7 @@ version = "1.0.0" description = "Read key-value pairs from a .env file and set them as environment variables" category = "main" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, @@ -1555,7 +1555,7 @@ version = "5.0.0" description = "Manage dynamic plugins for Python applications" category = "dev" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ {file = "stevedore-5.0.0-py3-none-any.whl", hash = "sha256:bd5a71ff5e5e5f5ea983880e4a1dd1bb47f8feebbb3d95b592398e2f02194771"}, {file = "stevedore-5.0.0.tar.gz", hash = "sha256:2c428d2338976279e8eb2196f7a94910960d9f7ba2f41f3988511e95ca447021"}, diff --git a/srv/isc-agent/pyproject.toml b/srv/isc-agent/pyproject.toml index 777d319..9d72adb 100644 --- a/srv/isc-agent/pyproject.toml +++ b/srv/isc-agent/pyproject.toml @@ -7,7 +7,7 @@ readme = "README.md" packages = [{include = "sans_isc_agent"}] [tool.poetry.dependencies] -python = "^3.8" +python = "^3.7" jinja2 = "~=3.0.3" pydantic = {extras = ["dotenv", "email"], version = "~=1.9.0"} requests = "~=2.27.1" From 09b2afd1ce452e9589fd6f2767040435bbff6850 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Mon, 13 Mar 2023 19:30:45 -0400 Subject: [PATCH 06/63] testing simpler requirements.txt file --- bin/requirements2.txt | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 bin/requirements2.txt diff --git a/bin/requirements2.txt b/bin/requirements2.txt new file mode 100644 index 0000000..3e7e280 --- /dev/null +++ b/bin/requirements2.txt @@ -0,0 +1,44 @@ +appdirs +attrs +automat +bcrypt +certifi +cffi +charset-normalizer +constantly +cryptography +cython-test-exception-raiser +dnspython +email-validator +exceptiongroup +greenlet +h2 +hpack +hyperframe +hyperlink +hypothesis +idna +incremental +jinja2 +markupsafe +priority +pyasn1-modules +pyasn1 +pycparser +pydantic[dotenv,email] +pyhamcrest +pyopenssl +pyserial +python-dotenv +pywin32 +requests +service-identity +setuptools +six +sortedcontainers +sqlalchemy +twisted-iocpsupport +twisted[all-non-platform,http2] +typing-extensions +urllib3 +zope-interface From b50f39d4e4c5e3aaa6ee137b11d971680cd43447 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Mon, 13 Mar 2023 19:34:21 -0400 Subject: [PATCH 07/63] removing pywin --- bin/requirements2.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/bin/requirements2.txt b/bin/requirements2.txt index 3e7e280..c72cef4 100644 --- a/bin/requirements2.txt +++ b/bin/requirements2.txt @@ -30,7 +30,6 @@ pyhamcrest pyopenssl pyserial python-dotenv -pywin32 requests service-identity setuptools From f1ef15d18e50fddf6c708b3d9176eed6ed231633 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Mon, 13 Mar 2023 19:38:36 -0400 Subject: [PATCH 08/63] fixing requirements --- bin/requirements2.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bin/requirements2.txt b/bin/requirements2.txt index c72cef4..6316ddf 100644 --- a/bin/requirements2.txt +++ b/bin/requirements2.txt @@ -36,8 +36,7 @@ setuptools six sortedcontainers sqlalchemy -twisted-iocpsupport -twisted[all-non-platform,http2] +twisted typing-extensions urllib3 zope-interface From 892c8ef5e38978ae7919f5d525469de109039250 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Mon, 13 Mar 2023 21:38:02 -0400 Subject: [PATCH 09/63] fixing install script --- bin/install.sh | 15 ++++++++++++++- srv/isc-agent/settings.py | 26 ++++++++++---------------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/bin/install.sh b/bin/install.sh index 3269575..0cb0d1a 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -1767,6 +1767,10 @@ if [ -f /etc/dshield.ini ]; then run 'mv /etc/dshield.ini /etc/dshield.ini.${INSTDATE}' fi +if [ ! -d /srv/db ]; then + run 'mkdir -m 1777 /srv/db' +fi + # new shiny config file run 'touch /etc/dshield.ini' run 'chmod 600 /etc/dshield.ini' @@ -1796,9 +1800,18 @@ nohoneyports=$(quotespace $nohoneyports) run 'echo "nohoneyports=$nohoneyports" >> /etc/dshield.ini' run 'echo "manualupdates=$MANUPDATES" >> /etc/dshield.ini' run 'echo "telnet=$telnet" >> /etc/dshield.ini' +run 'echo "[plugin:tcp:http]" >> /etc/dshield.ini' +run 'echo "http_ports = [8000]" >> /etc/dshield.ini' +run 'echo "https_ports = [8443]" >> /etc/dshield.ini' +run 'echo "submit_logs_rate = 30" >> /etc/dshield.ini' +run 'echo "[iscagent]" >> /etc/dshield.ini' +run 'echo "database=sqlite+pysqlite:///srv/db/isc-agent.sqlite" >> /etc/dshield.ini' +run 'echo "debug=false" >> /etc/dshield.ini' dlog "new /etc/dshield.ini follows" drun 'cat /etc/dshield.ini' + + ########################################################### ## Installation of cowrie ########################################################### @@ -1894,7 +1907,7 @@ if [ "$FAST" == "0" ]; then dlog "installing dependencies: requirements.txt" run 'pip3 install --upgrade pip' run 'pip3 install --upgrade bcrypt' - run 'pip3 install --upgrade -r requirements.txt' + run 'pip3 install --upgrade -r requirements2.txt' run 'pip3 install --upgrade requests' if [ ${?} -ne 0 ]; then outlog "Error installing dependencies from requirements.txt. See ${LOGFILE} for details." diff --git a/srv/isc-agent/settings.py b/srv/isc-agent/settings.py index fc9d8dd..42ac8dc 100644 --- a/srv/isc-agent/settings.py +++ b/srv/isc-agent/settings.py @@ -19,11 +19,7 @@ ] config = configparser.ConfigParser() -config.read('settings.ini') - -# TODO: Remvoe when everything gets rolled over -legacy_config = configparser.ConfigParser() -legacy_config.read('/etc/dshield.ini') +config.read('/etc/dshield.ini') # APPLICATION BASE_DIR = os.path.join(os.path.dirname(__file__)) @@ -58,20 +54,20 @@ logging.config.dictConfig(LOGGING) # AUTH -DSHIELD_API_KEY = legacy_config.get( +DSHIELD_API_KEY = config.get( 'DShield', 'apikey', fallback=config.get("auth", "api_key", fallback=None) ) -DSHIELD_EMAIL = legacy_config.get( +DSHIELD_EMAIL = config.get( 'DShield', 'email', fallback=config.get("auth", "email", fallback=None) ) -DSHIELD_URL = config.get("auth", "url", fallback="https://www.dshield.org") -DSHIELD_USER_ID = legacy_config.get( +DSHIELD_URL = "https://www.dshield.org" +DSHIELD_USER_ID = config.get( 'DShield', 'userid', fallback=config.get("auth", "user_id", fallback=None) @@ -81,8 +77,10 @@ # DATABASE SETTINGS DATABASE_MAPPER_REGISTRY = registry() DATABASE_BASE = DATABASE_MAPPER_REGISTRY.generate_base() -DATABASE_DEBUG_LOGGING = os.getenv('DATABASE_DEBUG_LOGGING', False) -DATABASE_URL = os.getenv('DATABASE_URL', 'sqlite+pysqlite:///:memory:') +DATABASE_DEBUG_LOGGING = False +if config.get('iscagent','debug', fallback='False')=='True': + DATABASE_DEBUG_LOGGING=True +DATABASE_URL = config.get('iscagent','database', fallback='sqlite+pysqlite:///:memory:') DATABASE_ENGINE = create_engine( DATABASE_URL, echo=DATABASE_DEBUG_LOGGING, @@ -96,7 +94,7 @@ CERT_KEY = os.getenv('ISC_AGENT_CERT_KEY_PATH', '~/dshield/etc/CA/certs/honeypot.crt') # PLUGINS -# Read from settings.ini file +# Read from /etc/dshield.ini file PLUGINS = [] for k, v in config.items(): protocol_dict = {} @@ -110,7 +108,3 @@ protocol_dict[k1] = v1 PLUGINS.append(protocol_dict) -# TODO: Temp solution to ensure at least http is started if no settings are given -if not PLUGINS: - PLUGINS.append({"protocol": "tcp", "name": "http"}) - From 4ddcdccc2b2186132476a0c919aa5e486e51e324 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Mon, 13 Mar 2023 21:51:08 -0400 Subject: [PATCH 10/63] fixing sqlite url --- bin/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/install.sh b/bin/install.sh index 0cb0d1a..658ac98 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -1805,7 +1805,7 @@ run 'echo "http_ports = [8000]" >> /etc/dshield.ini' run 'echo "https_ports = [8443]" >> /etc/dshield.ini' run 'echo "submit_logs_rate = 30" >> /etc/dshield.ini' run 'echo "[iscagent]" >> /etc/dshield.ini' -run 'echo "database=sqlite+pysqlite:///srv/db/isc-agent.sqlite" >> /etc/dshield.ini' +run 'echo "database=sqlite+pysqlite:////srv/db/isc-agent.sqlite" >> /etc/dshield.ini' run 'echo "debug=false" >> /etc/dshield.ini' dlog "new /etc/dshield.ini follows" drun 'cat /etc/dshield.ini' From ff95abb1ec6ffb7788ab01fd9419dc6b5bbb368c Mon Sep 17 00:00:00 2001 From: Johannes Ullrich Date: Tue, 14 Mar 2023 13:43:30 -0400 Subject: [PATCH 11/63] Update README.md fixing diary url --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e2dae4b..6f4bfcb 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ This is a set of scripts to setup a Raspberry Pi as a DShield Sensor. Current design goals and prerequisites for using the automated installation procedure: -- use of a __dedicated__ device (Raspberry Pi, any model as [per] (https://isc.sans.edu/forums/diary//22680/)) +- use of a __dedicated__ device (Raspberry Pi, any model as [per] (https://isc.sans.edu/diary/22680/)) - current Raspberry Pi OS ("Lite" version will suffice) - easy installation / configuration (and therefore not that much configurable) - disposable (when something breaks (e.g. during upgrade): re-install from scratch) From 5b945e65080e679ab76b597918cf4d5c5247d2dc Mon Sep 17 00:00:00 2001 From: Will Deem Date: Tue, 14 Mar 2023 21:44:54 -0400 Subject: [PATCH 12/63] Various bug fixes --- .github/workflows/poetry-to-legacy.yml | 2 +- .gitignore | 3 +- srv/isc-agent/poetry.lock | 1943 ------------------------ srv/isc-agent/pyproject.toml | 5 +- 4 files changed, 4 insertions(+), 1949 deletions(-) delete mode 100644 srv/isc-agent/poetry.lock diff --git a/.github/workflows/poetry-to-legacy.yml b/.github/workflows/poetry-to-legacy.yml index 1c669c7..b9fb6e8 100644 --- a/.github/workflows/poetry-to-legacy.yml +++ b/.github/workflows/poetry-to-legacy.yml @@ -19,7 +19,7 @@ jobs: - name: Convert poetry file to requirements.txt run: | cd srv/isc-agent - poetry export -f requirements.txt -o requirements.txt + poetry export -f requirements.txt -o requirements.txt --without-hashes mv requirements.txt ../../bin/ - name: Commit changes uses: EndBug/add-and-commit@v7 diff --git a/.gitignore b/.gitignore index 2176615..56b2127 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,5 @@ etc/CA/index.txt.attr etc/CA/index.txt etc/dshield.ini srv/dshield/lastweblogtime.txt -env/ \ No newline at end of file +env/ +poetry.lock \ No newline at end of file diff --git a/srv/isc-agent/poetry.lock b/srv/isc-agent/poetry.lock deleted file mode 100644 index 2cf0bee..0000000 --- a/srv/isc-agent/poetry.lock +++ /dev/null @@ -1,1943 +0,0 @@ -# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. - -[[package]] -name = "appdirs" -version = "1.4.4" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, - {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, -] - -[[package]] -name = "astroid" -version = "2.15.0" -description = "An abstract syntax tree for Python with inference support." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "astroid-2.15.0-py3-none-any.whl", hash = "sha256:e3e4d0ffc2d15d954065579689c36aac57a339a4679a679579af6401db4d3fdb"}, - {file = "astroid-2.15.0.tar.gz", hash = "sha256:525f126d5dc1b8b0b6ee398b33159105615d92dc4a17f2cd064125d57f6186fa"}, -] - -[package.dependencies] -lazy-object-proxy = ">=1.4.0" -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} -wrapt = [ - {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, -] - -[[package]] -name = "attrs" -version = "22.2.0" -description = "Classes Without Boilerplate" -category = "main" -optional = false -python-versions = ">=3.6" -files = [ - {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, - {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, -] - -[package.extras] -cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] -tests = ["attrs[tests-no-zope]", "zope.interface"] -tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] - -[[package]] -name = "automat" -version = "22.10.0" -description = "Self-service finite-state machines for the programmer on the go." -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "Automat-22.10.0-py2.py3-none-any.whl", hash = "sha256:c3164f8742b9dc440f3682482d32aaff7bb53f71740dd018533f9de286b64180"}, - {file = "Automat-22.10.0.tar.gz", hash = "sha256:e56beb84edad19dcc11d30e8d9b895f75deeb5ef5e96b84a467066b3b84bb04e"}, -] - -[package.dependencies] -attrs = ">=19.2.0" -six = "*" - -[package.extras] -visualize = ["Twisted (>=16.1.1)", "graphviz (>0.5.1)"] - -[[package]] -name = "bandit" -version = "1.7.4" -description = "Security oriented static analyser for python code." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, - {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"}, -] - -[package.dependencies] -colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} -GitPython = ">=1.0.1" -PyYAML = ">=5.3.1" -stevedore = ">=1.20.0" - -[package.extras] -test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "toml"] -toml = ["toml"] -yaml = ["PyYAML"] - -[[package]] -name = "bcrypt" -version = "4.0.1" -description = "Modern password hashing for your software and your servers" -category = "main" -optional = false -python-versions = ">=3.6" -files = [ - {file = "bcrypt-4.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2"}, - {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535"}, - {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e"}, - {file = "bcrypt-4.0.1-cp36-abi3-win32.whl", hash = "sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab"}, - {file = "bcrypt-4.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71"}, - {file = "bcrypt-4.0.1.tar.gz", hash = "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd"}, -] - -[package.extras] -tests = ["pytest (>=3.2.1,!=3.3.0)"] -typecheck = ["mypy"] - -[[package]] -name = "cachetools" -version = "5.3.0" -description = "Extensible memoizing collections and decorators" -category = "dev" -optional = false -python-versions = "~=3.7" -files = [ - {file = "cachetools-5.3.0-py3-none-any.whl", hash = "sha256:429e1a1e845c008ea6c85aa35d4b98b65d6a9763eeef3e37e92728a12d1de9d4"}, - {file = "cachetools-5.3.0.tar.gz", hash = "sha256:13dfddc7b8df938c21a940dfa6557ce6e94a2f1cdfa58eb90c805721d58f2c14"}, -] - -[[package]] -name = "certifi" -version = "2022.12.7" -description = "Python package for providing Mozilla's CA Bundle." -category = "main" -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, - {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, -] - -[[package]] -name = "cffi" -version = "1.15.1" -description = "Foreign Function Interface for Python calling C code." -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, - {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, - {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, - {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, - {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, - {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, - {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, - {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, - {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, - {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, - {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, - {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, - {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, - {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, - {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, - {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, - {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, - {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, - {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, -] - -[package.dependencies] -pycparser = "*" - -[[package]] -name = "chardet" -version = "5.1.0" -description = "Universal encoding detector for Python 3" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "chardet-5.1.0-py3-none-any.whl", hash = "sha256:362777fb014af596ad31334fde1e8c327dfdb076e1960d1694662d46a6917ab9"}, - {file = "chardet-5.1.0.tar.gz", hash = "sha256:0d62712b956bc154f85fb0a266e2a3c5913c2967e00348701b32411d6def31e5"}, -] - -[[package]] -name = "charset-normalizer" -version = "2.0.12" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" -optional = false -python-versions = ">=3.5.0" -files = [ - {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, - {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, -] - -[package.extras] -unicode-backport = ["unicodedata2"] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -category = "dev" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "constantly" -version = "15.1.0" -description = "Symbolic constants in Python" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "constantly-15.1.0-py2.py3-none-any.whl", hash = "sha256:dd2fa9d6b1a51a83f0d7dd76293d734046aa176e384bf6e33b7e44880eb37c5d"}, - {file = "constantly-15.1.0.tar.gz", hash = "sha256:586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"}, -] - -[[package]] -name = "coverage" -version = "7.2.1" -description = "Code coverage measurement for Python" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "coverage-7.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49567ec91fc5e0b15356da07a2feabb421d62f52a9fff4b1ec40e9e19772f5f8"}, - {file = "coverage-7.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d2ef6cae70168815ed91388948b5f4fcc69681480a0061114db737f957719f03"}, - {file = "coverage-7.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3004765bca3acd9e015794e5c2f0c9a05587f5e698127ff95e9cfba0d3f29339"}, - {file = "coverage-7.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cca7c0b7f5881dfe0291ef09ba7bb1582cb92ab0aeffd8afb00c700bf692415a"}, - {file = "coverage-7.2.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2167d116309f564af56f9aa5e75ef710ef871c5f9b313a83050035097b56820"}, - {file = "coverage-7.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cb5f152fb14857cbe7f3e8c9a5d98979c4c66319a33cad6e617f0067c9accdc4"}, - {file = "coverage-7.2.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:87dc37f16fb5e3a28429e094145bf7c1753e32bb50f662722e378c5851f7fdc6"}, - {file = "coverage-7.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e191a63a05851f8bce77bc875e75457f9b01d42843f8bd7feed2fc26bbe60833"}, - {file = "coverage-7.2.1-cp310-cp310-win32.whl", hash = "sha256:e3ea04b23b114572b98a88c85379e9e9ae031272ba1fb9b532aa934c621626d4"}, - {file = "coverage-7.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:0cf557827be7eca1c38a2480484d706693e7bb1929e129785fe59ec155a59de6"}, - {file = "coverage-7.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:570c21a29493b350f591a4b04c158ce1601e8d18bdcd21db136fbb135d75efa6"}, - {file = "coverage-7.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e872b082b32065ac2834149dc0adc2a2e6d8203080501e1e3c3c77851b466f9"}, - {file = "coverage-7.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fac6343bae03b176e9b58104a9810df3cdccd5cfed19f99adfa807ffbf43cf9b"}, - {file = "coverage-7.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abacd0a738e71b20e224861bc87e819ef46fedba2fb01bc1af83dfd122e9c319"}, - {file = "coverage-7.2.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9256d4c60c4bbfec92721b51579c50f9e5062c21c12bec56b55292464873508"}, - {file = "coverage-7.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:80559eaf6c15ce3da10edb7977a1548b393db36cbc6cf417633eca05d84dd1ed"}, - {file = "coverage-7.2.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:0bd7e628f6c3ec4e7d2d24ec0e50aae4e5ae95ea644e849d92ae4805650b4c4e"}, - {file = "coverage-7.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09643fb0df8e29f7417adc3f40aaf379d071ee8f0350ab290517c7004f05360b"}, - {file = "coverage-7.2.1-cp311-cp311-win32.whl", hash = "sha256:1b7fb13850ecb29b62a447ac3516c777b0e7a09ecb0f4bb6718a8654c87dfc80"}, - {file = "coverage-7.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:617a94ada56bbfe547aa8d1b1a2b8299e2ec1ba14aac1d4b26a9f7d6158e1273"}, - {file = "coverage-7.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8649371570551d2fd7dee22cfbf0b61f1747cdfb2b7587bb551e4beaaa44cb97"}, - {file = "coverage-7.2.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d2b9b5e70a21474c105a133ba227c61bc95f2ac3b66861143ce39a5ea4b3f84"}, - {file = "coverage-7.2.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae82c988954722fa07ec5045c57b6d55bc1a0890defb57cf4a712ced65b26ddd"}, - {file = "coverage-7.2.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:861cc85dfbf55a7a768443d90a07e0ac5207704a9f97a8eb753292a7fcbdfcfc"}, - {file = "coverage-7.2.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0339dc3237c0d31c3b574f19c57985fcbe494280153bbcad33f2cdf469f4ac3e"}, - {file = "coverage-7.2.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5928b85416a388dd557ddc006425b0c37e8468bd1c3dc118c1a3de42f59e2a54"}, - {file = "coverage-7.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8d3843ca645f62c426c3d272902b9de90558e9886f15ddf5efe757b12dd376f5"}, - {file = "coverage-7.2.1-cp37-cp37m-win32.whl", hash = "sha256:6a034480e9ebd4e83d1aa0453fd78986414b5d237aea89a8fdc35d330aa13bae"}, - {file = "coverage-7.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6fce673f79a0e017a4dc35e18dc7bb90bf6d307c67a11ad5e61ca8d42b87cbff"}, - {file = "coverage-7.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7f099da6958ddfa2ed84bddea7515cb248583292e16bb9231d151cd528eab657"}, - {file = "coverage-7.2.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:97a3189e019d27e914ecf5c5247ea9f13261d22c3bb0cfcfd2a9b179bb36f8b1"}, - {file = "coverage-7.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a81dbcf6c6c877986083d00b834ac1e84b375220207a059ad45d12f6e518a4e3"}, - {file = "coverage-7.2.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78d2c3dde4c0b9be4b02067185136b7ee4681978228ad5ec1278fa74f5ca3e99"}, - {file = "coverage-7.2.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a209d512d157379cc9ab697cbdbb4cfd18daa3e7eebaa84c3d20b6af0037384"}, - {file = "coverage-7.2.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f3d07edb912a978915576a776756069dede66d012baa503022d3a0adba1b6afa"}, - {file = "coverage-7.2.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8dca3c1706670297851bca1acff9618455122246bdae623be31eca744ade05ec"}, - {file = "coverage-7.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b1991a6d64231a3e5bbe3099fb0dd7c9aeaa4275ad0e0aeff4cb9ef885c62ba2"}, - {file = "coverage-7.2.1-cp38-cp38-win32.whl", hash = "sha256:22c308bc508372576ffa3d2dbc4824bb70d28eeb4fcd79d4d1aed663a06630d0"}, - {file = "coverage-7.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:b0c0d46de5dd97f6c2d1b560bf0fcf0215658097b604f1840365296302a9d1fb"}, - {file = "coverage-7.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4dd34a935de268a133e4741827ae951283a28c0125ddcdbcbba41c4b98f2dfef"}, - {file = "coverage-7.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0f8318ed0f3c376cfad8d3520f496946977abde080439d6689d7799791457454"}, - {file = "coverage-7.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:834c2172edff5a08d78e2f53cf5e7164aacabeb66b369f76e7bb367ca4e2d993"}, - {file = "coverage-7.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4d70c853f0546855f027890b77854508bdb4d6a81242a9d804482e667fff6e6"}, - {file = "coverage-7.2.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a6450da4c7afc4534305b2b7d8650131e130610cea448ff240b6ab73d7eab63"}, - {file = "coverage-7.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:99f4dd81b2bb8fc67c3da68b1f5ee1650aca06faa585cbc6818dbf67893c6d58"}, - {file = "coverage-7.2.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bdd3f2f285ddcf2e75174248b2406189261a79e7fedee2ceeadc76219b6faa0e"}, - {file = "coverage-7.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f29351393eb05e6326f044a7b45ed8e38cb4dcc38570d12791f271399dc41431"}, - {file = "coverage-7.2.1-cp39-cp39-win32.whl", hash = "sha256:e2b50ebc2b6121edf352336d503357321b9d8738bb7a72d06fc56153fd3f4cd8"}, - {file = "coverage-7.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:bd5a12239c0006252244f94863f1c518ac256160cd316ea5c47fb1a11b25889a"}, - {file = "coverage-7.2.1-pp37.pp38.pp39-none-any.whl", hash = "sha256:436313d129db7cf5b4ac355dd2bd3f7c7e5294af077b090b85de75f8458b8616"}, - {file = "coverage-7.2.1.tar.gz", hash = "sha256:c77f2a9093ccf329dd523a9b2b3c854c20d2a3d968b6def3b820272ca6732242"}, -] - -[package.extras] -toml = ["tomli"] - -[[package]] -name = "cryptography" -version = "39.0.2" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" -optional = false -python-versions = ">=3.6" -files = [ - {file = "cryptography-39.0.2-cp36-abi3-macosx_10_12_universal2.whl", hash = "sha256:2725672bb53bb92dc7b4150d233cd4b8c59615cd8288d495eaa86db00d4e5c06"}, - {file = "cryptography-39.0.2-cp36-abi3-macosx_10_12_x86_64.whl", hash = "sha256:23df8ca3f24699167daf3e23e51f7ba7334d504af63a94af468f468b975b7dd7"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:eb40fe69cfc6f5cdab9a5ebd022131ba21453cf7b8a7fd3631f45bbf52bed612"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc0521cce2c1d541634b19f3ac661d7a64f9555135e9d8af3980965be717fd4a"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffd394c7896ed7821a6d13b24657c6a34b6e2650bd84ae063cf11ccffa4f1a97"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:e8a0772016feeb106efd28d4a328e77dc2edae84dfbac06061319fdb669ff828"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8f35c17bd4faed2bc7797d2a66cbb4f986242ce2e30340ab832e5d99ae60e011"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b49a88ff802e1993b7f749b1eeb31134f03c8d5c956e3c125c75558955cda536"}, - {file = "cryptography-39.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5f8c682e736513db7d04349b4f6693690170f95aac449c56f97415c6980edef5"}, - {file = "cryptography-39.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:d7d84a512a59f4412ca8549b01f94be4161c94efc598bf09d027d67826beddc0"}, - {file = "cryptography-39.0.2-cp36-abi3-win32.whl", hash = "sha256:c43ac224aabcbf83a947eeb8b17eaf1547bce3767ee2d70093b461f31729a480"}, - {file = "cryptography-39.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:788b3921d763ee35dfdb04248d0e3de11e3ca8eb22e2e48fef880c42e1f3c8f9"}, - {file = "cryptography-39.0.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d15809e0dbdad486f4ad0979753518f47980020b7a34e9fc56e8be4f60702fac"}, - {file = "cryptography-39.0.2-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:50cadb9b2f961757e712a9737ef33d89b8190c3ea34d0fb6675e00edbe35d074"}, - {file = "cryptography-39.0.2-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:103e8f7155f3ce2ffa0049fe60169878d47a4364b277906386f8de21c9234aa1"}, - {file = "cryptography-39.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:6236a9610c912b129610eb1a274bdc1350b5df834d124fa84729ebeaf7da42c3"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e944fe07b6f229f4c1a06a7ef906a19652bdd9fd54c761b0ff87e83ae7a30354"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:35d658536b0a4117c885728d1a7032bdc9a5974722ae298d6c533755a6ee3915"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:30b1d1bfd00f6fc80d11300a29f1d8ab2b8d9febb6ed4a38a76880ec564fae84"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e029b844c21116564b8b61216befabca4b500e6816fa9f0ba49527653cae2108"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fa507318e427169ade4e9eccef39e9011cdc19534f55ca2f36ec3f388c1f70f3"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:8bc0008ef798231fac03fe7d26e82d601d15bd16f3afaad1c6113771566570f3"}, - {file = "cryptography-39.0.2.tar.gz", hash = "sha256:bc5b871e977c8ee5a1bbc42fa8d19bcc08baf0c51cbf1586b0e87a2694dde42f"}, -] - -[package.dependencies] -cffi = ">=1.12" - -[package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] -pep8test = ["black", "check-manifest", "mypy", "ruff", "types-pytz", "types-requests"] -sdist = ["setuptools-rust (>=0.11.4)"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-shard (>=0.1.2)", "pytest-subtests", "pytest-xdist", "pytz"] -test-randomorder = ["pytest-randomly"] -tox = ["tox"] - -[[package]] -name = "cython-test-exception-raiser" -version = "1.0.2" -description = "A trivial extension that just raises an exception." -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "cython-test-exception-raiser-1.0.2.tar.gz", hash = "sha256:c5003a6321057a8222d2f5aed329fcdb5eb3bc615a9239f461bdf06c491fbdaa"}, - {file = "cython_test_exception_raiser-1.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0396ae2ad249b7612d1a59737691095309f736654d29ddf8384f73309c57aba7"}, - {file = "cython_test_exception_raiser-1.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f823e4a9b0c8a99c133250fb059b8b05a18bac00783285ef48a4b3485646953f"}, - {file = "cython_test_exception_raiser-1.0.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7b7ee87afc912a4c9aa1fb139bf448bae93732ea0f17dabb52234668a2165c97"}, - {file = "cython_test_exception_raiser-1.0.2-cp310-cp310-win32.whl", hash = "sha256:3f5032e507c14adef7523f4b94498c85a8db6169b3a385471d081f4ea2c24c05"}, - {file = "cython_test_exception_raiser-1.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:4d2123822c0d5197bde4b3b1a6f33513791749af8848e69f97219c7a72d497f9"}, - {file = "cython_test_exception_raiser-1.0.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a881ab31e6455123a0acc34743d539fd3649bfa8b1c0b31bb5c04251ea9792"}, - {file = "cython_test_exception_raiser-1.0.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1cb1a1f0db302396d4f8e9be1f564777b47787608f8577fbc754aeb1187531c3"}, - {file = "cython_test_exception_raiser-1.0.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8a261236f8f3254760514f7532973a98e27b16365b7a1c1e8e262ab64a5d1f3d"}, - {file = "cython_test_exception_raiser-1.0.2-cp36-cp36m-win32.whl", hash = "sha256:7ce9236d449ed78bc57c8819ff5c17191b614f2904b15a1b1f20e48ddb689862"}, - {file = "cython_test_exception_raiser-1.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:545b68df558c2bcf827ed08f1de21e74751e83901b3767aadd5e6878c17c9525"}, - {file = "cython_test_exception_raiser-1.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:22d051bba31caf8457a24c6eee9d700c327dae3c1c48a5dc966d8a149676c21f"}, - {file = "cython_test_exception_raiser-1.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8fe6d23ca7cc97cef29f85671e3d0bc313dcaf7414f3d4f32eb3ce345d451748"}, - {file = "cython_test_exception_raiser-1.0.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:877d2df83c63c208af497fb6926e215778f9cec1f9146a4700304237a2af02f1"}, - {file = "cython_test_exception_raiser-1.0.2-cp37-cp37m-win32.whl", hash = "sha256:569c6c9190fca8b38606b73f94ae64bedc43d692959454e151f6d48e936fcfd7"}, - {file = "cython_test_exception_raiser-1.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:69fa226fbecd579ad62107a7fec1dcc6469d22a4b917ee34cbb42aec8dbdae81"}, - {file = "cython_test_exception_raiser-1.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d0faf66f5926b48eb62740fa9eeaad7d8ea4010e09975be7def585d0bb087ce7"}, - {file = "cython_test_exception_raiser-1.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:13efc23b95088183edab33cc564f47d4adf4ae0943e303c367fe20443987e6b0"}, - {file = "cython_test_exception_raiser-1.0.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cf433219a445a61c4b57302ec8dbb4a7572d58af35e61f8729480bf40c408cc5"}, - {file = "cython_test_exception_raiser-1.0.2-cp38-cp38-win32.whl", hash = "sha256:3b698b36387cfced4346512425bf840d252dc1bab54d415df6b349c0b67f78c9"}, - {file = "cython_test_exception_raiser-1.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:c4d413ba40a8f5867bfc1ba2a9512cc1b652eed443a9cfe423f3ba8fa5c57f0b"}, - {file = "cython_test_exception_raiser-1.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:18426985e4e328be9c89e8151397abc078b0482a86eb86a80763b1738c34c217"}, - {file = "cython_test_exception_raiser-1.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:eec60f994acfea7a29017cdc8063c18181ec6e78317760f022d7c291cb67d6ff"}, - {file = "cython_test_exception_raiser-1.0.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a3a0161281108c6460a24c984b1bf09d1eae217484b176d127f2fd3a55279ce5"}, - {file = "cython_test_exception_raiser-1.0.2-cp39-cp39-win32.whl", hash = "sha256:381cb1025ca9f1f13563585cffc5363bfb468d665713d8f5a0c98ba2e35cab07"}, - {file = "cython_test_exception_raiser-1.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:bd2d5a7d17e12819e078f7cf23c9295704ad78c9c46022ae973097d0767f0d31"}, - {file = "cython_test_exception_raiser-1.0.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9b5f61ce75c6804a3619b9bc633f6a12894f7d58e8394454929473ae9cefd331"}, - {file = "cython_test_exception_raiser-1.0.2-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f93b0df46cb45fe0db736317a30fa60874cad531f0549be935546513bd76e68d"}, - {file = "cython_test_exception_raiser-1.0.2-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3bbef4e2286125e6692e993ae41919f61eea603b97aa423282c752ebbc0cc28"}, - {file = "cython_test_exception_raiser-1.0.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:d41b0c8802653c00dee9d39ea7be2c61b2b313934cb315a2650bf5cb8a45fd62"}, -] - -[[package]] -name = "dill" -version = "0.3.6" -description = "serialize all of python" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"}, - {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, -] - -[package.extras] -graph = ["objgraph (>=1.7.2)"] - -[[package]] -name = "distlib" -version = "0.3.6" -description = "Distribution utilities" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, - {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, -] - -[[package]] -name = "dnspython" -version = "2.3.0" -description = "DNS toolkit" -category = "main" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "dnspython-2.3.0-py3-none-any.whl", hash = "sha256:89141536394f909066cabd112e3e1a37e4e654db00a25308b0f130bc3152eb46"}, - {file = "dnspython-2.3.0.tar.gz", hash = "sha256:224e32b03eb46be70e12ef6d64e0be123a64e621ab4c0822ff6d450d52a540b9"}, -] - -[package.extras] -curio = ["curio (>=1.2,<2.0)", "sniffio (>=1.1,<2.0)"] -dnssec = ["cryptography (>=2.6,<40.0)"] -doh = ["h2 (>=4.1.0)", "httpx (>=0.21.1)", "requests (>=2.23.0,<3.0.0)", "requests-toolbelt (>=0.9.1,<0.11.0)"] -doq = ["aioquic (>=0.9.20)"] -idna = ["idna (>=2.1,<4.0)"] -trio = ["trio (>=0.14,<0.23)"] -wmi = ["wmi (>=1.5.1,<2.0.0)"] - -[[package]] -name = "email-validator" -version = "1.3.1" -description = "A robust email address syntax and deliverability validation library." -category = "main" -optional = false -python-versions = ">=3.5" -files = [ - {file = "email_validator-1.3.1-py2.py3-none-any.whl", hash = "sha256:49a72f5fa6ed26be1c964f0567d931d10bf3fdeeacdf97bc26ef1cd2a44e0bda"}, - {file = "email_validator-1.3.1.tar.gz", hash = "sha256:d178c5c6fa6c6824e9b04f199cf23e79ac15756786573c190d2ad13089411ad2"}, -] - -[package.dependencies] -dnspython = ">=1.15.0" -idna = ">=2.0.0" - -[[package]] -name = "exceptiongroup" -version = "1.1.0" -description = "Backport of PEP 654 (exception groups)" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.1.0-py3-none-any.whl", hash = "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e"}, - {file = "exceptiongroup-1.1.0.tar.gz", hash = "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "factory-boy" -version = "3.2.1" -description = "A versatile test fixtures replacement based on thoughtbot's factory_bot for Ruby." -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "factory_boy-3.2.1-py2.py3-none-any.whl", hash = "sha256:eb02a7dd1b577ef606b75a253b9818e6f9eaf996d94449c9d5ebb124f90dc795"}, - {file = "factory_boy-3.2.1.tar.gz", hash = "sha256:a98d277b0c047c75eb6e4ab8508a7f81fb03d2cb21986f627913546ef7a2a55e"}, -] - -[package.dependencies] -Faker = ">=0.7.0" - -[package.extras] -dev = ["Django", "Pillow", "SQLAlchemy", "coverage", "flake8", "isort", "mongoengine", "tox", "wheel (>=0.32.0)", "zest.releaser[recommended]"] -doc = ["Sphinx", "sphinx-rtd-theme", "sphinxcontrib-spelling"] - -[[package]] -name = "faker" -version = "17.6.0" -description = "Faker is a Python package that generates fake data for you." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "Faker-17.6.0-py3-none-any.whl", hash = "sha256:5aaa16fa9cfde7d117eef70b6b293a705021e57158f3fa6b44ed1b70202d2065"}, - {file = "Faker-17.6.0.tar.gz", hash = "sha256:51f37ff9df710159d6d736d0ba1c75e063430a8c806b91334d7794305b5a6114"}, -] - -[package.dependencies] -python-dateutil = ">=2.4" - -[[package]] -name = "filelock" -version = "3.9.0" -description = "A platform independent file lock." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "filelock-3.9.0-py3-none-any.whl", hash = "sha256:f58d535af89bb9ad5cd4df046f741f8553a418c01a7856bf0d173bbc9f6bd16d"}, - {file = "filelock-3.9.0.tar.gz", hash = "sha256:7b319f24340b51f55a2bf7a12ac0755a9b03e718311dac567a0f4f7fabd2f5de"}, -] - -[package.extras] -docs = ["furo (>=2022.12.7)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] -testing = ["covdefaults (>=2.2.2)", "coverage (>=7.0.1)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)"] - -[[package]] -name = "gitdb" -version = "4.0.10" -description = "Git Object Database" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, - {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, -] - -[package.dependencies] -smmap = ">=3.0.1,<6" - -[[package]] -name = "gitpython" -version = "3.1.31" -description = "GitPython is a Python library used to interact with Git repositories" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "GitPython-3.1.31-py3-none-any.whl", hash = "sha256:f04893614f6aa713a60cbbe1e6a97403ef633103cdd0ef5eb6efe0deb98dbe8d"}, - {file = "GitPython-3.1.31.tar.gz", hash = "sha256:8ce3bcf69adfdf7c7d503e78fd3b1c492af782d58893b650adb2ac8912ddd573"}, -] - -[package.dependencies] -gitdb = ">=4.0.1,<5" - -[[package]] -name = "greenlet" -version = "2.0.2" -description = "Lightweight in-process concurrent programming" -category = "main" -optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" -files = [ - {file = "greenlet-2.0.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:bdfea8c661e80d3c1c99ad7c3ff74e6e87184895bbaca6ee8cc61209f8b9b85d"}, - {file = "greenlet-2.0.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9d14b83fab60d5e8abe587d51c75b252bcc21683f24699ada8fb275d7712f5a9"}, - {file = "greenlet-2.0.2-cp27-cp27m-win32.whl", hash = "sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74"}, - {file = "greenlet-2.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343"}, - {file = "greenlet-2.0.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae"}, - {file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df"}, - {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088"}, - {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb"}, - {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470"}, - {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a51c9751078733d88e013587b108f1b7a1fb106d402fb390740f002b6f6551a"}, - {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91"}, - {file = "greenlet-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645"}, - {file = "greenlet-2.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c"}, - {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca"}, - {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0"}, - {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2"}, - {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19"}, - {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5454276c07d27a740c5892f4907c86327b632127dd9abec42ee62e12427ff7e3"}, - {file = "greenlet-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5"}, - {file = "greenlet-2.0.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6"}, - {file = "greenlet-2.0.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43"}, - {file = "greenlet-2.0.2-cp35-cp35m-win32.whl", hash = "sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a"}, - {file = "greenlet-2.0.2-cp35-cp35m-win_amd64.whl", hash = "sha256:4b58adb399c4d61d912c4c331984d60eb66565175cdf4a34792cd9600f21b394"}, - {file = "greenlet-2.0.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:703f18f3fda276b9a916f0934d2fb6d989bf0b4fb5a64825260eb9bfd52d78f0"}, - {file = "greenlet-2.0.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:32e5b64b148966d9cccc2c8d35a671409e45f195864560829f395a54226408d3"}, - {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dd11f291565a81d71dab10b7033395b7a3a5456e637cf997a6f33ebdf06f8db"}, - {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099"}, - {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75"}, - {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:3c9b12575734155d0c09d6c3e10dbd81665d5c18e1a7c6597df72fd05990c8cf"}, - {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b9ec052b06a0524f0e35bd8790686a1da006bd911dd1ef7d50b77bfbad74e292"}, - {file = "greenlet-2.0.2-cp36-cp36m-win32.whl", hash = "sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9"}, - {file = "greenlet-2.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:9f35ec95538f50292f6d8f2c9c9f8a3c6540bbfec21c9e5b4b751e0a7c20864f"}, - {file = "greenlet-2.0.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b"}, - {file = "greenlet-2.0.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1"}, - {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7"}, - {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2780572ec463d44c1d3ae850239508dbeb9fed38e294c68d19a24d925d9223ca"}, - {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:937e9020b514ceedb9c830c55d5c9872abc90f4b5862f89c0887033ae33c6f73"}, - {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:36abbf031e1c0f79dd5d596bfaf8e921c41df2bdf54ee1eed921ce1f52999a86"}, - {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33"}, - {file = "greenlet-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7"}, - {file = "greenlet-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3"}, - {file = "greenlet-2.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30"}, - {file = "greenlet-2.0.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b"}, - {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526"}, - {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b"}, - {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acd2162a36d3de67ee896c43effcd5ee3de247eb00354db411feb025aa319857"}, - {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a"}, - {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a"}, - {file = "greenlet-2.0.2-cp38-cp38-win32.whl", hash = "sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249"}, - {file = "greenlet-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40"}, - {file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8"}, - {file = "greenlet-2.0.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6"}, - {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df"}, - {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be4ed120b52ae4d974aa40215fcdfde9194d63541c7ded40ee12eb4dda57b76b"}, - {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94c817e84245513926588caf1152e3b559ff794d505555211ca041f032abbb6b"}, - {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8"}, - {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9"}, - {file = "greenlet-2.0.2-cp39-cp39-win32.whl", hash = "sha256:ea9872c80c132f4663822dd2a08d404073a5a9b5ba6155bea72fb2a79d1093b5"}, - {file = "greenlet-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564"}, - {file = "greenlet-2.0.2.tar.gz", hash = "sha256:e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0"}, -] - -[package.extras] -docs = ["Sphinx", "docutils (<0.18)"] -test = ["objgraph", "psutil"] - -[[package]] -name = "h2" -version = "4.1.0" -description = "HTTP/2 State-Machine based protocol implementation" -category = "main" -optional = false -python-versions = ">=3.6.1" -files = [ - {file = "h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d"}, - {file = "h2-4.1.0.tar.gz", hash = "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb"}, -] - -[package.dependencies] -hpack = ">=4.0,<5" -hyperframe = ">=6.0,<7" - -[[package]] -name = "hpack" -version = "4.0.0" -description = "Pure-Python HPACK header compression" -category = "main" -optional = false -python-versions = ">=3.6.1" -files = [ - {file = "hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c"}, - {file = "hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095"}, -] - -[[package]] -name = "hyperframe" -version = "6.0.1" -description = "HTTP/2 framing layer for Python" -category = "main" -optional = false -python-versions = ">=3.6.1" -files = [ - {file = "hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15"}, - {file = "hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914"}, -] - -[[package]] -name = "hyperlink" -version = "21.0.0" -description = "A featureful, immutable, and correct URL for Python." -category = "main" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "hyperlink-21.0.0-py2.py3-none-any.whl", hash = "sha256:e6b14c37ecb73e89c77d78cdb4c2cc8f3fb59a885c5b3f819ff4ed80f25af1b4"}, - {file = "hyperlink-21.0.0.tar.gz", hash = "sha256:427af957daa58bc909471c6c40f74c5450fa123dd093fc53efd2e91d2705a56b"}, -] - -[package.dependencies] -idna = ">=2.5" - -[[package]] -name = "hypothesis" -version = "6.68.2" -description = "A library for property-based testing" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "hypothesis-6.68.2-py3-none-any.whl", hash = "sha256:2a41cc766cde52705895e54547374af89c617e8ec7bc4186cb7f03884a667d4e"}, - {file = "hypothesis-6.68.2.tar.gz", hash = "sha256:a7eb2b0c9a18560d8197fe35047ceb58e7e8ab7623a3e5a82613f6a2cd71cffa"}, -] - -[package.dependencies] -attrs = ">=19.2.0" -exceptiongroup = {version = ">=1.0.0", markers = "python_version < \"3.11\""} -sortedcontainers = ">=2.1.0,<3.0.0" - -[package.extras] -all = ["backports.zoneinfo (>=0.2.1)", "black (>=19.10b0)", "click (>=7.0)", "django (>=3.2)", "dpcontracts (>=0.4)", "importlib-metadata (>=3.6)", "lark (>=0.10.1)", "libcst (>=0.3.16)", "numpy (>=1.9.0)", "pandas (>=1.0)", "pytest (>=4.6)", "python-dateutil (>=1.4)", "pytz (>=2014.1)", "redis (>=3.0.0)", "rich (>=9.0.0)", "tzdata (>=2022.7)"] -cli = ["black (>=19.10b0)", "click (>=7.0)", "rich (>=9.0.0)"] -codemods = ["libcst (>=0.3.16)"] -dateutil = ["python-dateutil (>=1.4)"] -django = ["django (>=3.2)"] -dpcontracts = ["dpcontracts (>=0.4)"] -ghostwriter = ["black (>=19.10b0)"] -lark = ["lark (>=0.10.1)"] -numpy = ["numpy (>=1.9.0)"] -pandas = ["pandas (>=1.0)"] -pytest = ["pytest (>=4.6)"] -pytz = ["pytz (>=2014.1)"] -redis = ["redis (>=3.0.0)"] -zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2022.7)"] - -[[package]] -name = "idna" -version = "3.4" -description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" -optional = false -python-versions = ">=3.5" -files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, -] - -[[package]] -name = "importlib-metadata" -version = "6.0.0" -description = "Read metadata from Python packages" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "importlib_metadata-6.0.0-py3-none-any.whl", hash = "sha256:7efb448ec9a5e313a57655d35aa54cd3e01b7e1fbcf72dce1bf06119420f5bad"}, - {file = "importlib_metadata-6.0.0.tar.gz", hash = "sha256:e354bedeb60efa6affdcc8ae121b73544a7aa74156d047311948f6d711cd378d"}, -] - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -perf = ["ipython"] -testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] - -[[package]] -name = "incremental" -version = "22.10.0" -description = "\"A small library that versions your Python projects.\"" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "incremental-22.10.0-py2.py3-none-any.whl", hash = "sha256:b864a1f30885ee72c5ac2835a761b8fe8aa9c28b9395cacf27286602688d3e51"}, - {file = "incremental-22.10.0.tar.gz", hash = "sha256:912feeb5e0f7e0188e6f42241d2f450002e11bbc0937c65865045854c24c0bd0"}, -] - -[package.extras] -mypy = ["click (>=6.0)", "mypy (==0.812)", "twisted (>=16.4.0)"] -scripts = ["click (>=6.0)", "twisted (>=16.4.0)"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "isort" -version = "5.12.0" -description = "A Python utility / library to sort Python imports." -category = "dev" -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, - {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, -] - -[package.extras] -colors = ["colorama (>=0.4.3)"] -pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] -plugins = ["setuptools"] -requirements-deprecated-finder = ["pip-api", "pipreqs"] - -[[package]] -name = "jinja2" -version = "3.0.3" -description = "A very fast and expressive template engine." -category = "main" -optional = false -python-versions = ">=3.6" -files = [ - {file = "Jinja2-3.0.3-py3-none-any.whl", hash = "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8"}, - {file = "Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "lazy-object-proxy" -version = "1.9.0" -description = "A fast and thorough lazy object proxy." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, -] - -[[package]] -name = "markdown" -version = "3.4.1" -description = "Python implementation of Markdown." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "Markdown-3.4.1-py3-none-any.whl", hash = "sha256:08fb8465cffd03d10b9dd34a5c3fea908e20391a2a90b88d66362cb05beed186"}, - {file = "Markdown-3.4.1.tar.gz", hash = "sha256:3b809086bb6efad416156e00a0da66fe47618a5d6918dd688f53f40c8e4cfeff"}, -] - -[package.dependencies] -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} - -[package.extras] -testing = ["coverage", "pyyaml"] - -[[package]] -name = "markupsafe" -version = "2.1.2" -description = "Safely add untrusted strings to HTML/XML markup." -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"}, - {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"}, -] - -[[package]] -name = "mccabe" -version = "0.7.0" -description = "McCabe checker, plugin for flake8" -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, - {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, -] - -[[package]] -name = "packaging" -version = "23.0" -description = "Core utilities for Python packages" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"}, - {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"}, -] - -[[package]] -name = "pbr" -version = "5.11.1" -description = "Python Build Reasonableness" -category = "dev" -optional = false -python-versions = ">=2.6" -files = [ - {file = "pbr-5.11.1-py2.py3-none-any.whl", hash = "sha256:567f09558bae2b3ab53cb3c1e2e33e726ff3338e7bae3db5dc954b3a44eef12b"}, - {file = "pbr-5.11.1.tar.gz", hash = "sha256:aefc51675b0b533d56bb5fd1c8c6c0522fe31896679882e1c4c63d5e4a0fccb3"}, -] - -[[package]] -name = "platformdirs" -version = "3.1.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "platformdirs-3.1.0-py3-none-any.whl", hash = "sha256:13b08a53ed71021350c9e300d4ea8668438fb0046ab3937ac9a29913a1a1350a"}, - {file = "platformdirs-3.1.0.tar.gz", hash = "sha256:accc3665857288317f32c7bebb5a8e482ba717b474f3fc1d18ca7f9214be0cef"}, -] - -[package.extras] -docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] - -[[package]] -name = "pluggy" -version = "1.0.0" -description = "plugin and hook calling mechanisms for python" -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "priority" -version = "1.3.0" -description = "A pure-Python implementation of the HTTP/2 priority tree" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "priority-1.3.0-py2.py3-none-any.whl", hash = "sha256:be4fcb94b5e37cdeb40af5533afe6dd603bd665fe9c8b3052610fc1001d5d1eb"}, - {file = "priority-1.3.0.tar.gz", hash = "sha256:6bc1961a6d7fcacbfc337769f1a382c8e746566aaa365e78047abe9f66b2ffbe"}, -] - -[[package]] -name = "pyasn1" -version = "0.4.8" -description = "ASN.1 types and codecs" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "pyasn1-0.4.8-py2.py3-none-any.whl", hash = "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d"}, - {file = "pyasn1-0.4.8.tar.gz", hash = "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"}, -] - -[[package]] -name = "pyasn1-modules" -version = "0.2.8" -description = "A collection of ASN.1-based protocols modules." -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "pyasn1-modules-0.2.8.tar.gz", hash = "sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e"}, - {file = "pyasn1_modules-0.2.8-py2.py3-none-any.whl", hash = "sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74"}, -] - -[package.dependencies] -pyasn1 = ">=0.4.6,<0.5.0" - -[[package]] -name = "pycparser" -version = "2.21" -description = "C parser in Python" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, -] - -[[package]] -name = "pydantic" -version = "1.9.2" -description = "Data validation and settings management using python type hints" -category = "main" -optional = false -python-versions = ">=3.6.1" -files = [ - {file = "pydantic-1.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9c9e04a6cdb7a363d7cb3ccf0efea51e0abb48e180c0d31dca8d247967d85c6e"}, - {file = "pydantic-1.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fafe841be1103f340a24977f61dee76172e4ae5f647ab9e7fd1e1fca51524f08"}, - {file = "pydantic-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afacf6d2a41ed91fc631bade88b1d319c51ab5418870802cedb590b709c5ae3c"}, - {file = "pydantic-1.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ee0d69b2a5b341fc7927e92cae7ddcfd95e624dfc4870b32a85568bd65e6131"}, - {file = "pydantic-1.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ff68fc85355532ea77559ede81f35fff79a6a5543477e168ab3a381887caea76"}, - {file = "pydantic-1.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c0f5e142ef8217019e3eef6ae1b6b55f09a7a15972958d44fbd228214cede567"}, - {file = "pydantic-1.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:615661bfc37e82ac677543704437ff737418e4ea04bef9cf11c6d27346606044"}, - {file = "pydantic-1.9.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:328558c9f2eed77bd8fffad3cef39dbbe3edc7044517f4625a769d45d4cf7555"}, - {file = "pydantic-1.9.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bd446bdb7755c3a94e56d7bdfd3ee92396070efa8ef3a34fab9579fe6aa1d84"}, - {file = "pydantic-1.9.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0b214e57623a535936005797567231a12d0da0c29711eb3514bc2b3cd008d0f"}, - {file = "pydantic-1.9.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d8ce3fb0841763a89322ea0432f1f59a2d3feae07a63ea2c958b2315e1ae8adb"}, - {file = "pydantic-1.9.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b34ba24f3e2d0b39b43f0ca62008f7ba962cff51efa56e64ee25c4af6eed987b"}, - {file = "pydantic-1.9.2-cp36-cp36m-win_amd64.whl", hash = "sha256:84d76ecc908d917f4684b354a39fd885d69dd0491be175f3465fe4b59811c001"}, - {file = "pydantic-1.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4de71c718c9756d679420c69f216776c2e977459f77e8f679a4a961dc7304a56"}, - {file = "pydantic-1.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5803ad846cdd1ed0d97eb00292b870c29c1f03732a010e66908ff48a762f20e4"}, - {file = "pydantic-1.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8c5360a0297a713b4123608a7909e6869e1b56d0e96eb0d792c27585d40757f"}, - {file = "pydantic-1.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:cdb4272678db803ddf94caa4f94f8672e9a46bae4a44f167095e4d06fec12979"}, - {file = "pydantic-1.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19b5686387ea0d1ea52ecc4cffb71abb21702c5e5b2ac626fd4dbaa0834aa49d"}, - {file = "pydantic-1.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:32e0b4fb13ad4db4058a7c3c80e2569adbd810c25e6ca3bbd8b2a9cc2cc871d7"}, - {file = "pydantic-1.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:91089b2e281713f3893cd01d8e576771cd5bfdfbff5d0ed95969f47ef6d676c3"}, - {file = "pydantic-1.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e631c70c9280e3129f071635b81207cad85e6c08e253539467e4ead0e5b219aa"}, - {file = "pydantic-1.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b3946f87e5cef3ba2e7bd3a4eb5a20385fe36521d6cc1ebf3c08a6697c6cfb3"}, - {file = "pydantic-1.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5565a49effe38d51882cb7bac18bda013cdb34d80ac336428e8908f0b72499b0"}, - {file = "pydantic-1.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:bd67cb2c2d9602ad159389c29e4ca964b86fa2f35c2faef54c3eb28b4efd36c8"}, - {file = "pydantic-1.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4aafd4e55e8ad5bd1b19572ea2df546ccace7945853832bb99422a79c70ce9b8"}, - {file = "pydantic-1.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:d70916235d478404a3fa8c997b003b5f33aeac4686ac1baa767234a0f8ac2326"}, - {file = "pydantic-1.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0ca86b525264daa5f6b192f216a0d1e860b7383e3da1c65a1908f9c02f42801"}, - {file = "pydantic-1.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1061c6ee6204f4f5a27133126854948e3b3d51fcc16ead2e5d04378c199b2f44"}, - {file = "pydantic-1.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e78578f0c7481c850d1c969aca9a65405887003484d24f6110458fb02cca7747"}, - {file = "pydantic-1.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5da164119602212a3fe7e3bc08911a89db4710ae51444b4224c2382fd09ad453"}, - {file = "pydantic-1.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ead3cd020d526f75b4188e0a8d71c0dbbe1b4b6b5dc0ea775a93aca16256aeb"}, - {file = "pydantic-1.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7d0f183b305629765910eaad707800d2f47c6ac5bcfb8c6397abdc30b69eeb15"}, - {file = "pydantic-1.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f1a68f4f65a9ee64b6ccccb5bf7e17db07caebd2730109cb8a95863cfa9c4e55"}, - {file = "pydantic-1.9.2-py3-none-any.whl", hash = "sha256:78a4d6bdfd116a559aeec9a4cfe77dda62acc6233f8b56a716edad2651023e5e"}, - {file = "pydantic-1.9.2.tar.gz", hash = "sha256:8cb0bc509bfb71305d7a59d00163d5f9fc4530f0881ea32c74ff4f74c85f3d3d"}, -] - -[package.dependencies] -email-validator = {version = ">=1.0.3", optional = true, markers = "extra == \"email\""} -python-dotenv = {version = ">=0.10.4", optional = true, markers = "extra == \"dotenv\""} -typing-extensions = ">=3.7.4.3" - -[package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] - -[[package]] -name = "pyhamcrest" -version = "2.0.4" -description = "Hamcrest framework for matcher objects" -category = "main" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pyhamcrest-2.0.4-py3-none-any.whl", hash = "sha256:60a41d4783b9d56c9ec8586635d2301db5072b3ea8a51c32dd03c408ae2b0f79"}, - {file = "pyhamcrest-2.0.4.tar.gz", hash = "sha256:b5d9ce6b977696286cf232ce2adf8969b4d0b045975b0936ac9005e84e67e9c1"}, -] - -[package.extras] -dev = ["black", "flake8", "pyhamcrest[docs,tests]", "pytest-mypy", "towncrier", "tox", "tox-asdf", "twine"] -docs = ["alabaster (>=0.7,<1.0)", "sphinx (>=4.0,<5.0)"] -tests = ["coverage[toml]", "dataclasses", "mypy (!=0.940)", "pytest (>=5.0)", "pytest-mypy-plugins", "pytest-sugar", "pytest-xdist", "types-dataclasses", "types-mock"] -tests-numpy = ["numpy", "pyhamcrest[tests]"] - -[[package]] -name = "pylint" -version = "2.16.4" -description = "python code static checker" -category = "dev" -optional = false -python-versions = ">=3.7.2" -files = [ - {file = "pylint-2.16.4-py3-none-any.whl", hash = "sha256:4a770bb74fde0550fa0ab4248a2ad04e7887462f9f425baa0cd8d3c1d098eaee"}, - {file = "pylint-2.16.4.tar.gz", hash = "sha256:8841f26a0dbc3503631b6a20ee368b3f5e0e5461a1d95cf15d103dab748a0db3"}, -] - -[package.dependencies] -astroid = ">=2.14.2,<=2.16.0-dev0" -colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -dill = [ - {version = ">=0.2", markers = "python_version < \"3.11\""}, - {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, -] -isort = ">=4.2.5,<6" -mccabe = ">=0.6,<0.8" -platformdirs = ">=2.2.0" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -tomlkit = ">=0.10.1" -typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} - -[package.extras] -spelling = ["pyenchant (>=3.2,<4.0)"] -testutils = ["gitpython (>3)"] - -[[package]] -name = "pyopenssl" -version = "23.0.0" -description = "Python wrapper module around the OpenSSL library" -category = "main" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pyOpenSSL-23.0.0-py3-none-any.whl", hash = "sha256:df5fc28af899e74e19fccb5510df423581047e10ab6f1f4ba1763ff5fde844c0"}, - {file = "pyOpenSSL-23.0.0.tar.gz", hash = "sha256:c1cc5f86bcacefc84dada7d31175cae1b1518d5f60d3d0bb595a67822a868a6f"}, -] - -[package.dependencies] -cryptography = ">=38.0.0,<40" - -[package.extras] -docs = ["sphinx (!=5.2.0,!=5.2.0.post0)", "sphinx-rtd-theme"] -test = ["flaky", "pretend", "pytest (>=3.0.1)"] - -[[package]] -name = "pyproject-api" -version = "1.5.0" -description = "API to interact with the python pyproject.toml based projects" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyproject_api-1.5.0-py3-none-any.whl", hash = "sha256:4c111277dfb96bcd562c6245428f27250b794bfe3e210b8714c4f893952f2c17"}, - {file = "pyproject_api-1.5.0.tar.gz", hash = "sha256:0962df21f3e633b8ddb9567c011e6c1b3dcdfc31b7860c0ede7e24c5a1200fbe"}, -] - -[package.dependencies] -packaging = ">=21.3" -tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} - -[package.extras] -docs = ["furo (>=2022.9.29)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] -testing = ["covdefaults (>=2.2.2)", "importlib-metadata (>=5.1)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "virtualenv (>=20.17)", "wheel (>=0.38.4)"] - -[[package]] -name = "pyserial" -version = "3.5" -description = "Python Serial Port Extension" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "pyserial-3.5-py2.py3-none-any.whl", hash = "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0"}, - {file = "pyserial-3.5.tar.gz", hash = "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb"}, -] - -[package.extras] -cp2110 = ["hidapi"] - -[[package]] -name = "pytest" -version = "7.2.2" -description = "pytest: simple powerful testing with Python" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pytest-7.2.2-py3-none-any.whl", hash = "sha256:130328f552dcfac0b1cec75c12e3f005619dc5f874f0a06e8ff7263f0ee6225e"}, - {file = "pytest-7.2.2.tar.gz", hash = "sha256:c99ab0c73aceb050f68929bc93af19ab6db0558791c6a0715723abe9d0ade9d4"}, -] - -[package.dependencies] -attrs = ">=19.2.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} - -[package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] - -[[package]] -name = "python-dateutil" -version = "2.8.2" -description = "Extensions to the standard Python datetime module" -category = "dev" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "python-dotenv" -version = "1.0.0" -description = "Read key-value pairs from a .env file and set them as environment variables" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, -] - -[package.extras] -cli = ["click (>=5.0)"] - -[[package]] -name = "pywin32" -version = "305" -description = "Python for Window Extensions" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "pywin32-305-cp310-cp310-win32.whl", hash = "sha256:421f6cd86e84bbb696d54563c48014b12a23ef95a14e0bdba526be756d89f116"}, - {file = "pywin32-305-cp310-cp310-win_amd64.whl", hash = "sha256:73e819c6bed89f44ff1d690498c0a811948f73777e5f97c494c152b850fad478"}, - {file = "pywin32-305-cp310-cp310-win_arm64.whl", hash = "sha256:742eb905ce2187133a29365b428e6c3b9001d79accdc30aa8969afba1d8470f4"}, - {file = "pywin32-305-cp311-cp311-win32.whl", hash = "sha256:19ca459cd2e66c0e2cc9a09d589f71d827f26d47fe4a9d09175f6aa0256b51c2"}, - {file = "pywin32-305-cp311-cp311-win_amd64.whl", hash = "sha256:326f42ab4cfff56e77e3e595aeaf6c216712bbdd91e464d167c6434b28d65990"}, - {file = "pywin32-305-cp311-cp311-win_arm64.whl", hash = "sha256:4ecd404b2c6eceaca52f8b2e3e91b2187850a1ad3f8b746d0796a98b4cea04db"}, - {file = "pywin32-305-cp36-cp36m-win32.whl", hash = "sha256:48d8b1659284f3c17b68587af047d110d8c44837736b8932c034091683e05863"}, - {file = "pywin32-305-cp36-cp36m-win_amd64.whl", hash = "sha256:13362cc5aa93c2beaf489c9c9017c793722aeb56d3e5166dadd5ef82da021fe1"}, - {file = "pywin32-305-cp37-cp37m-win32.whl", hash = "sha256:a55db448124d1c1484df22fa8bbcbc45c64da5e6eae74ab095b9ea62e6d00496"}, - {file = "pywin32-305-cp37-cp37m-win_amd64.whl", hash = "sha256:109f98980bfb27e78f4df8a51a8198e10b0f347257d1e265bb1a32993d0c973d"}, - {file = "pywin32-305-cp38-cp38-win32.whl", hash = "sha256:9dd98384da775afa009bc04863426cb30596fd78c6f8e4e2e5bbf4edf8029504"}, - {file = "pywin32-305-cp38-cp38-win_amd64.whl", hash = "sha256:56d7a9c6e1a6835f521788f53b5af7912090674bb84ef5611663ee1595860fc7"}, - {file = "pywin32-305-cp39-cp39-win32.whl", hash = "sha256:9d968c677ac4d5cbdaa62fd3014ab241718e619d8e36ef8e11fb930515a1e918"}, - {file = "pywin32-305-cp39-cp39-win_amd64.whl", hash = "sha256:50768c6b7c3f0b38b7fb14dd4104da93ebced5f1a50dc0e834594bff6fbe1271"}, -] - -[[package]] -name = "pyyaml" -version = "6.0" -description = "YAML parser and emitter for Python" -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, - {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, - {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, - {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, -] - -[[package]] -name = "requests" -version = "2.27.1" -description = "Python HTTP for Humans." -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, - {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} -idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} -urllib3 = ">=1.21.1,<1.27" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<5)"] - -[[package]] -name = "service-identity" -version = "21.1.0" -description = "Service identity verification for pyOpenSSL & cryptography." -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "service-identity-21.1.0.tar.gz", hash = "sha256:6e6c6086ca271dc11b033d17c3a8bea9f24ebff920c587da090afc9519419d34"}, - {file = "service_identity-21.1.0-py2.py3-none-any.whl", hash = "sha256:f0b0caac3d40627c3c04d7a51b6e06721857a0e10a8775f2d1d7e72901b3a7db"}, -] - -[package.dependencies] -attrs = ">=19.1.0" -cryptography = "*" -pyasn1 = "*" -pyasn1-modules = "*" -six = "*" - -[package.extras] -dev = ["coverage[toml] (>=5.0.2)", "furo", "idna", "pyOpenSSL", "pytest", "sphinx"] -docs = ["furo", "sphinx"] -idna = ["idna"] -tests = ["coverage[toml] (>=5.0.2)", "pytest"] - -[[package]] -name = "setuptools" -version = "67.5.1" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "setuptools-67.5.1-py3-none-any.whl", hash = "sha256:1c39d42bda4cb89f7fdcad52b6762e3c309ec8f8715b27c684176b7d71283242"}, - {file = "setuptools-67.5.1.tar.gz", hash = "sha256:15136a251127da2d2e77ac7a1bc231eb504654f7e3346d93613a13f2e2787535"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "smmap" -version = "5.0.0" -description = "A pure Python implementation of a sliding window memory map manager" -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, - {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, -] - -[[package]] -name = "sortedcontainers" -version = "2.4.0" -description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, - {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, -] - -[[package]] -name = "sqlalchemy" -version = "1.4.46" -description = "Database Abstraction Library" -category = "main" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -files = [ - {file = "SQLAlchemy-1.4.46-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:7001f16a9a8e06488c3c7154827c48455d1c1507d7228d43e781afbc8ceccf6d"}, - {file = "SQLAlchemy-1.4.46-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c7a46639ba058d320c9f53a81db38119a74b8a7a1884df44d09fbe807d028aaf"}, - {file = "SQLAlchemy-1.4.46-cp27-cp27m-win32.whl", hash = "sha256:c04144a24103135ea0315d459431ac196fe96f55d3213bfd6d39d0247775c854"}, - {file = "SQLAlchemy-1.4.46-cp27-cp27m-win_amd64.whl", hash = "sha256:7b81b1030c42b003fc10ddd17825571603117f848814a344d305262d370e7c34"}, - {file = "SQLAlchemy-1.4.46-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:939f9a018d2ad04036746e15d119c0428b1e557470361aa798e6e7d7f5875be0"}, - {file = "SQLAlchemy-1.4.46-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b7f4b6aa6e87991ec7ce0e769689a977776db6704947e562102431474799a857"}, - {file = "SQLAlchemy-1.4.46-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbf17ac9a61e7a3f1c7ca47237aac93cabd7f08ad92ac5b96d6f8dea4287fc1"}, - {file = "SQLAlchemy-1.4.46-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7f8267682eb41a0584cf66d8a697fef64b53281d01c93a503e1344197f2e01fe"}, - {file = "SQLAlchemy-1.4.46-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64cb0ad8a190bc22d2112001cfecdec45baffdf41871de777239da6a28ed74b6"}, - {file = "SQLAlchemy-1.4.46-cp310-cp310-win32.whl", hash = "sha256:5f752676fc126edc1c4af0ec2e4d2adca48ddfae5de46bb40adbd3f903eb2120"}, - {file = "SQLAlchemy-1.4.46-cp310-cp310-win_amd64.whl", hash = "sha256:31de1e2c45e67a5ec1ecca6ec26aefc299dd5151e355eb5199cd9516b57340be"}, - {file = "SQLAlchemy-1.4.46-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d68e1762997bfebf9e5cf2a9fd0bcf9ca2fdd8136ce7b24bbd3bbfa4328f3e4a"}, - {file = "SQLAlchemy-1.4.46-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d112b0f3c1bc5ff70554a97344625ef621c1bfe02a73c5d97cac91f8cd7a41e"}, - {file = "SQLAlchemy-1.4.46-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69fac0a7054d86b997af12dc23f581cf0b25fb1c7d1fed43257dee3af32d3d6d"}, - {file = "SQLAlchemy-1.4.46-cp311-cp311-win32.whl", hash = "sha256:887865924c3d6e9a473dc82b70977395301533b3030d0f020c38fd9eba5419f2"}, - {file = "SQLAlchemy-1.4.46-cp311-cp311-win_amd64.whl", hash = "sha256:984ee13543a346324319a1fb72b698e521506f6f22dc37d7752a329e9cd00a32"}, - {file = "SQLAlchemy-1.4.46-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:9167d4227b56591a4cc5524f1b79ccd7ea994f36e4c648ab42ca995d28ebbb96"}, - {file = "SQLAlchemy-1.4.46-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d61e9ecc849d8d44d7f80894ecff4abe347136e9d926560b818f6243409f3c86"}, - {file = "SQLAlchemy-1.4.46-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3ec187acf85984263299a3f15c34a6c0671f83565d86d10f43ace49881a82718"}, - {file = "SQLAlchemy-1.4.46-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9883f5fae4fd8e3f875adc2add69f8b945625811689a6c65866a35ee9c0aea23"}, - {file = "SQLAlchemy-1.4.46-cp36-cp36m-win32.whl", hash = "sha256:535377e9b10aff5a045e3d9ada8a62d02058b422c0504ebdcf07930599890eb0"}, - {file = "SQLAlchemy-1.4.46-cp36-cp36m-win_amd64.whl", hash = "sha256:18cafdb27834fa03569d29f571df7115812a0e59fd6a3a03ccb0d33678ec8420"}, - {file = "SQLAlchemy-1.4.46-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:a1ad90c97029cc3ab4ffd57443a20fac21d2ec3c89532b084b073b3feb5abff3"}, - {file = "SQLAlchemy-1.4.46-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4847f4b1d822754e35707db913396a29d874ee77b9c3c3ef3f04d5a9a6209618"}, - {file = "SQLAlchemy-1.4.46-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c5a99282848b6cae0056b85da17392a26b2d39178394fc25700bcf967e06e97a"}, - {file = "SQLAlchemy-1.4.46-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4b1cc7835b39835c75cf7c20c926b42e97d074147c902a9ebb7cf2c840dc4e2"}, - {file = "SQLAlchemy-1.4.46-cp37-cp37m-win32.whl", hash = "sha256:c522e496f9b9b70296a7675272ec21937ccfc15da664b74b9f58d98a641ce1b6"}, - {file = "SQLAlchemy-1.4.46-cp37-cp37m-win_amd64.whl", hash = "sha256:ae067ab639fa499f67ded52f5bc8e084f045d10b5ac7bb928ae4ca2b6c0429a5"}, - {file = "SQLAlchemy-1.4.46-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:e3c1808008124850115a3f7e793a975cfa5c8a26ceeeb9ff9cbb4485cac556df"}, - {file = "SQLAlchemy-1.4.46-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d164df3d83d204c69f840da30b292ac7dc54285096c6171245b8d7807185aa"}, - {file = "SQLAlchemy-1.4.46-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b33ffbdbbf5446cf36cd4cc530c9d9905d3c2fe56ed09e25c22c850cdb9fac92"}, - {file = "SQLAlchemy-1.4.46-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d94682732d1a0def5672471ba42a29ff5e21bb0aae0afa00bb10796fc1e28dd"}, - {file = "SQLAlchemy-1.4.46-cp38-cp38-win32.whl", hash = "sha256:f8cb80fe8d14307e4124f6fad64dfd87ab749c9d275f82b8b4ec84c84ecebdbe"}, - {file = "SQLAlchemy-1.4.46-cp38-cp38-win_amd64.whl", hash = "sha256:07e48cbcdda6b8bc7a59d6728bd3f5f574ffe03f2c9fb384239f3789c2d95c2e"}, - {file = "SQLAlchemy-1.4.46-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1b1e5e96e2789d89f023d080bee432e2fef64d95857969e70d3cadec80bd26f0"}, - {file = "SQLAlchemy-1.4.46-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3714e5b33226131ac0da60d18995a102a17dddd42368b7bdd206737297823ad"}, - {file = "SQLAlchemy-1.4.46-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:955162ad1a931fe416eded6bb144ba891ccbf9b2e49dc7ded39274dd9c5affc5"}, - {file = "SQLAlchemy-1.4.46-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6e4cb5c63f705c9d546a054c60d326cbde7421421e2d2565ce3e2eee4e1a01f"}, - {file = "SQLAlchemy-1.4.46-cp39-cp39-win32.whl", hash = "sha256:51e1ba2884c6a2b8e19109dc08c71c49530006c1084156ecadfaadf5f9b8b053"}, - {file = "SQLAlchemy-1.4.46-cp39-cp39-win_amd64.whl", hash = "sha256:315676344e3558f1f80d02535f410e80ea4e8fddba31ec78fe390eff5fb8f466"}, - {file = "SQLAlchemy-1.4.46.tar.gz", hash = "sha256:6913b8247d8a292ef8315162a51931e2b40ce91681f1b6f18f697045200c4a30"}, -] - -[package.dependencies] -greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and platform_machine == \"aarch64\" or python_version >= \"3\" and platform_machine == \"ppc64le\" or python_version >= \"3\" and platform_machine == \"x86_64\" or python_version >= \"3\" and platform_machine == \"amd64\" or python_version >= \"3\" and platform_machine == \"AMD64\" or python_version >= \"3\" and platform_machine == \"win32\" or python_version >= \"3\" and platform_machine == \"WIN32\""} - -[package.extras] -aiomysql = ["aiomysql", "greenlet (!=0.4.17)"] -aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"] -asyncio = ["greenlet (!=0.4.17)"] -asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"] -mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2)"] -mssql = ["pyodbc"] -mssql-pymssql = ["pymssql"] -mssql-pyodbc = ["pyodbc"] -mypy = ["mypy (>=0.910)", "sqlalchemy2-stubs"] -mysql = ["mysqlclient (>=1.4.0)", "mysqlclient (>=1.4.0,<2)"] -mysql-connector = ["mysql-connector-python"] -oracle = ["cx-oracle (>=7)", "cx-oracle (>=7,<8)"] -postgresql = ["psycopg2 (>=2.7)"] -postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] -postgresql-pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] -postgresql-psycopg2binary = ["psycopg2-binary"] -postgresql-psycopg2cffi = ["psycopg2cffi"] -pymysql = ["pymysql", "pymysql (<1)"] -sqlcipher = ["sqlcipher3-binary"] - -[[package]] -name = "stevedore" -version = "5.0.0" -description = "Manage dynamic plugins for Python applications" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "stevedore-5.0.0-py3-none-any.whl", hash = "sha256:bd5a71ff5e5e5f5ea983880e4a1dd1bb47f8feebbb3d95b592398e2f02194771"}, - {file = "stevedore-5.0.0.tar.gz", hash = "sha256:2c428d2338976279e8eb2196f7a94910960d9f7ba2f41f3988511e95ca447021"}, -] - -[package.dependencies] -pbr = ">=2.0.0,<2.1.0 || >2.1.0" - -[[package]] -name = "tomli" -version = "2.0.1" -description = "A lil' TOML parser" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] - -[[package]] -name = "tomlkit" -version = "0.11.6" -description = "Style preserving TOML library" -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"}, - {file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"}, -] - -[[package]] -name = "tox" -version = "4.4.6" -description = "tox is a generic virtualenv management and test command line tool" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tox-4.4.6-py3-none-any.whl", hash = "sha256:e3d4a65852f029e5ba441a01824d2d839d30bb8fb071635ef9cb53952698e6bf"}, - {file = "tox-4.4.6.tar.gz", hash = "sha256:9786671d23b673ace7499c602c5746e2a225d1ecd9d9f624d0461303f40bd93b"}, -] - -[package.dependencies] -cachetools = ">=5.3" -chardet = ">=5.1" -colorama = ">=0.4.6" -filelock = ">=3.9" -packaging = ">=23" -platformdirs = ">=2.6.2" -pluggy = ">=1" -pyproject-api = ">=1.5" -tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} -virtualenv = ">=20.17.1" - -[package.extras] -docs = ["furo (>=2022.12.7)", "sphinx (>=6.1.3)", "sphinx-argparse-cli (>=1.11)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)", "sphinx-copybutton (>=0.5.1)", "sphinx-inline-tabs (>=2022.1.2b11)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=22.12)"] -testing = ["build[virtualenv] (>=0.10)", "covdefaults (>=2.2.2)", "devpi-process (>=0.3)", "diff-cover (>=7.4)", "distlib (>=0.3.6)", "flaky (>=3.7)", "hatch-vcs (>=0.3)", "hatchling (>=1.12.2)", "psutil (>=5.9.4)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "pytest-xdist (>=3.1)", "re-assert (>=1.1)", "time-machine (>=2.9)", "wheel (>=0.38.4)"] - -[[package]] -name = "twisted" -version = "22.10.0" -description = "An asynchronous networking framework written in Python" -category = "main" -optional = false -python-versions = ">=3.7.1" -files = [ - {file = "Twisted-22.10.0-py3-none-any.whl", hash = "sha256:86c55f712cc5ab6f6d64e02503352464f0400f66d4f079096d744080afcccbd0"}, - {file = "Twisted-22.10.0.tar.gz", hash = "sha256:32acbd40a94f5f46e7b42c109bfae2b302250945561783a8b7a059048f2d4d31"}, -] - -[package.dependencies] -appdirs = {version = ">=1.4.0", optional = true, markers = "extra == \"all_non_platform\""} -attrs = ">=19.2.0" -Automat = ">=0.8.0" -bcrypt = {version = ">=3.0.0", optional = true, markers = "extra == \"all_non_platform\""} -constantly = ">=15.1" -cryptography = {version = ">=2.6", optional = true, markers = "extra == \"all_non_platform\""} -cython-test-exception-raiser = {version = ">=1.0.2,<2", optional = true, markers = "extra == \"all_non_platform\""} -h2 = {version = ">=3.0,<5.0", optional = true, markers = "extra == \"all_non_platform\" or extra == \"http2\""} -hyperlink = ">=17.1.1" -hypothesis = {version = ">=6.0,<7.0", optional = true, markers = "extra == \"all_non_platform\""} -idna = {version = ">=2.4", optional = true, markers = "extra == \"all_non_platform\""} -incremental = ">=21.3.0" -priority = {version = ">=1.1.0,<2.0", optional = true, markers = "extra == \"all_non_platform\" or extra == \"http2\""} -pyasn1 = {version = "*", optional = true, markers = "extra == \"all_non_platform\""} -PyHamcrest = {version = ">=1.9.0", optional = true, markers = "extra == \"all_non_platform\""} -pyopenssl = {version = ">=21.0.0", optional = true, markers = "extra == \"all_non_platform\""} -pyserial = {version = ">=3.0", optional = true, markers = "extra == \"all_non_platform\""} -pywin32 = {version = "!=226", optional = true, markers = "platform_system == \"Windows\" and extra == \"all_non_platform\""} -service-identity = {version = ">=18.1.0", optional = true, markers = "extra == \"all_non_platform\""} -twisted-iocpsupport = {version = ">=1.0.2,<2", markers = "platform_system == \"Windows\""} -typing-extensions = ">=3.6.5" -"zope.interface" = ">=4.4.2" - -[package.extras] -all-non-platform = ["PyHamcrest (>=1.9.0)", "appdirs (>=1.4.0)", "bcrypt (>=3.0.0)", "contextvars (>=2.4,<3)", "cryptography (>=2.6)", "cython-test-exception-raiser (>=1.0.2,<2)", "h2 (>=3.0,<5.0)", "hypothesis (>=6.0,<7.0)", "idna (>=2.4)", "priority (>=1.1.0,<2.0)", "pyasn1", "pyopenssl (>=21.0.0)", "pyserial (>=3.0)", "pywin32 (!=226)", "service-identity (>=18.1.0)"] -conch = ["appdirs (>=1.4.0)", "bcrypt (>=3.0.0)", "cryptography (>=2.6)", "pyasn1"] -conch-nacl = ["PyNaCl", "appdirs (>=1.4.0)", "bcrypt (>=3.0.0)", "cryptography (>=2.6)", "pyasn1"] -contextvars = ["contextvars (>=2.4,<3)"] -dev = ["coverage (>=6b1,<7)", "pydoctor (>=22.9.0,<22.10.0)", "pyflakes (>=2.2,<3.0)", "python-subunit (>=1.4,<2.0)", "readthedocs-sphinx-ext (>=2.1,<3.0)", "sphinx (>=5.0,<6)", "sphinx-rtd-theme (>=1.0,<2.0)", "towncrier (>=22.8,<23.0)", "twistedchecker (>=0.7,<1.0)"] -dev-release = ["pydoctor (>=22.9.0,<22.10.0)", "readthedocs-sphinx-ext (>=2.1,<3.0)", "sphinx (>=5.0,<6)", "sphinx-rtd-theme (>=1.0,<2.0)", "towncrier (>=22.8,<23.0)"] -gtk-platform = ["PyHamcrest (>=1.9.0)", "appdirs (>=1.4.0)", "bcrypt (>=3.0.0)", "contextvars (>=2.4,<3)", "cryptography (>=2.6)", "cython-test-exception-raiser (>=1.0.2,<2)", "h2 (>=3.0,<5.0)", "hypothesis (>=6.0,<7.0)", "idna (>=2.4)", "priority (>=1.1.0,<2.0)", "pyasn1", "pygobject", "pyopenssl (>=21.0.0)", "pyserial (>=3.0)", "pywin32 (!=226)", "service-identity (>=18.1.0)"] -http2 = ["h2 (>=3.0,<5.0)", "priority (>=1.1.0,<2.0)"] -macos-platform = ["PyHamcrest (>=1.9.0)", "appdirs (>=1.4.0)", "bcrypt (>=3.0.0)", "contextvars (>=2.4,<3)", "cryptography (>=2.6)", "cython-test-exception-raiser (>=1.0.2,<2)", "h2 (>=3.0,<5.0)", "hypothesis (>=6.0,<7.0)", "idna (>=2.4)", "priority (>=1.1.0,<2.0)", "pyasn1", "pyobjc-core", "pyobjc-framework-CFNetwork", "pyobjc-framework-Cocoa", "pyopenssl (>=21.0.0)", "pyserial (>=3.0)", "pywin32 (!=226)", "service-identity (>=18.1.0)"] -mypy = ["PyHamcrest (>=1.9.0)", "PyNaCl", "appdirs (>=1.4.0)", "bcrypt (>=3.0.0)", "contextvars (>=2.4,<3)", "coverage (>=6b1,<7)", "cryptography (>=2.6)", "cython-test-exception-raiser (>=1.0.2,<2)", "h2 (>=3.0,<5.0)", "hypothesis (>=6.0,<7.0)", "idna (>=2.4)", "mypy (==0.930)", "mypy-zope (==0.3.4)", "priority (>=1.1.0,<2.0)", "pyasn1", "pydoctor (>=22.9.0,<22.10.0)", "pyflakes (>=2.2,<3.0)", "pyopenssl (>=21.0.0)", "pyserial (>=3.0)", "python-subunit (>=1.4,<2.0)", "pywin32 (!=226)", "readthedocs-sphinx-ext (>=2.1,<3.0)", "service-identity (>=18.1.0)", "sphinx (>=5.0,<6)", "sphinx-rtd-theme (>=1.0,<2.0)", "towncrier (>=22.8,<23.0)", "twistedchecker (>=0.7,<1.0)", "types-pyOpenSSL", "types-setuptools"] -osx-platform = ["PyHamcrest (>=1.9.0)", "appdirs (>=1.4.0)", "bcrypt (>=3.0.0)", "contextvars (>=2.4,<3)", "cryptography (>=2.6)", "cython-test-exception-raiser (>=1.0.2,<2)", "h2 (>=3.0,<5.0)", "hypothesis (>=6.0,<7.0)", "idna (>=2.4)", "priority (>=1.1.0,<2.0)", "pyasn1", "pyobjc-core", "pyobjc-framework-CFNetwork", "pyobjc-framework-Cocoa", "pyopenssl (>=21.0.0)", "pyserial (>=3.0)", "pywin32 (!=226)", "service-identity (>=18.1.0)"] -serial = ["pyserial (>=3.0)", "pywin32 (!=226)"] -test = ["PyHamcrest (>=1.9.0)", "cython-test-exception-raiser (>=1.0.2,<2)", "hypothesis (>=6.0,<7.0)"] -tls = ["idna (>=2.4)", "pyopenssl (>=21.0.0)", "service-identity (>=18.1.0)"] -windows-platform = ["PyHamcrest (>=1.9.0)", "appdirs (>=1.4.0)", "bcrypt (>=3.0.0)", "contextvars (>=2.4,<3)", "cryptography (>=2.6)", "cython-test-exception-raiser (>=1.0.2,<2)", "h2 (>=3.0,<5.0)", "hypothesis (>=6.0,<7.0)", "idna (>=2.4)", "priority (>=1.1.0,<2.0)", "pyasn1", "pyopenssl (>=21.0.0)", "pyserial (>=3.0)", "pywin32 (!=226)", "pywin32 (!=226)", "service-identity (>=18.1.0)"] - -[[package]] -name = "twisted-iocpsupport" -version = "1.0.2" -description = "An extension for use in the twisted I/O Completion Ports reactor." -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "twisted-iocpsupport-1.0.2.tar.gz", hash = "sha256:72068b206ee809c9c596b57b5287259ea41ddb4774d86725b19f35bf56aa32a9"}, - {file = "twisted_iocpsupport-1.0.2-cp310-cp310-win32.whl", hash = "sha256:985c06a33f5c0dae92c71a036d1ea63872ee86a21dd9b01e1f287486f15524b4"}, - {file = "twisted_iocpsupport-1.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:81b3abe3527b367da0220482820cb12a16c661672b7bcfcde328902890d63323"}, - {file = "twisted_iocpsupport-1.0.2-cp36-cp36m-win32.whl", hash = "sha256:9dbb8823b49f06d4de52721b47de4d3b3026064ef4788ce62b1a21c57c3fff6f"}, - {file = "twisted_iocpsupport-1.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:b9fed67cf0f951573f06d560ac2f10f2a4bbdc6697770113a2fc396ea2cb2565"}, - {file = "twisted_iocpsupport-1.0.2-cp37-cp37m-win32.whl", hash = "sha256:b76b4eed9b27fd63ddb0877efdd2d15835fdcb6baa745cb85b66e5d016ac2878"}, - {file = "twisted_iocpsupport-1.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:851b3735ca7e8102e661872390e3bce88f8901bece95c25a0c8bb9ecb8a23d32"}, - {file = "twisted_iocpsupport-1.0.2-cp38-cp38-win32.whl", hash = "sha256:bf4133139d77fc706d8f572e6b7d82871d82ec7ef25d685c2351bdacfb701415"}, - {file = "twisted_iocpsupport-1.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:306becd6e22ab6e8e4f36b6bdafd9c92e867c98a5ce517b27fdd27760ee7ae41"}, - {file = "twisted_iocpsupport-1.0.2-cp39-cp39-win32.whl", hash = "sha256:3c61742cb0bc6c1ac117a7e5f422c129832f0c295af49e01d8a6066df8cfc04d"}, - {file = "twisted_iocpsupport-1.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:b435857b9efcbfc12f8c326ef0383f26416272260455bbca2cd8d8eca470c546"}, - {file = "twisted_iocpsupport-1.0.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:7d972cfa8439bdcb35a7be78b7ef86d73b34b808c74be56dfa785c8a93b851bf"}, -] - -[[package]] -name = "typing-extensions" -version = "4.5.0" -description = "Backported and Experimental Type Hints for Python 3.7+" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"}, - {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, -] - -[[package]] -name = "urllib3" -version = "1.26.14" -description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "urllib3-1.26.14-py2.py3-none-any.whl", hash = "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"}, - {file = "urllib3-1.26.14.tar.gz", hash = "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] - -[[package]] -name = "virtualenv" -version = "20.20.0" -description = "Virtual Python Environment builder" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "virtualenv-20.20.0-py3-none-any.whl", hash = "sha256:3c22fa5a7c7aa106ced59934d2c20a2ecb7f49b4130b8bf444178a16b880fa45"}, - {file = "virtualenv-20.20.0.tar.gz", hash = "sha256:a8a4b8ca1e28f864b7514a253f98c1d62b64e31e77325ba279248c65fb4fcef4"}, -] - -[package.dependencies] -distlib = ">=0.3.6,<1" -filelock = ">=3.4.1,<4" -platformdirs = ">=2.4,<4" - -[package.extras] -docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=22.12)"] -test = ["covdefaults (>=2.2.2)", "coverage (>=7.1)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23)", "pytest (>=7.2.1)", "pytest-env (>=0.8.1)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)"] - -[[package]] -name = "watchdog" -version = "2.3.1" -description = "Filesystem events monitoring" -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "watchdog-2.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1f1200d4ec53b88bf04ab636f9133cb703eb19768a39351cee649de21a33697"}, - {file = "watchdog-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:564e7739abd4bd348aeafbf71cc006b6c0ccda3160c7053c4a53b67d14091d42"}, - {file = "watchdog-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:95ad708a9454050a46f741ba5e2f3468655ea22da1114e4c40b8cbdaca572565"}, - {file = "watchdog-2.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a073c91a6ef0dda488087669586768195c3080c66866144880f03445ca23ef16"}, - {file = "watchdog-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aa8b028750b43e80eea9946d01925168eeadb488dfdef1d82be4b1e28067f375"}, - {file = "watchdog-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:964fd236cd443933268ae49b59706569c8b741073dbfd7ca705492bae9d39aab"}, - {file = "watchdog-2.3.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:91fd146d723392b3e6eb1ac21f122fcce149a194a2ba0a82c5e4d0ee29cd954c"}, - {file = "watchdog-2.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:efe3252137392a471a2174d721e1037a0e6a5da7beb72a021e662b7000a9903f"}, - {file = "watchdog-2.3.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:85bf2263290591b7c5fa01140601b64c831be88084de41efbcba6ea289874f44"}, - {file = "watchdog-2.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f2df370cd8e4e18499dd0bfdef476431bcc396108b97195d9448d90924e3131"}, - {file = "watchdog-2.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ea5d86d1bcf4a9d24610aa2f6f25492f441960cf04aed2bd9a97db439b643a7b"}, - {file = "watchdog-2.3.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6f5d0f7eac86807275eba40b577c671b306f6f335ba63a5c5a348da151aba0fc"}, - {file = "watchdog-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b848c71ef2b15d0ef02f69da8cc120d335cec0ed82a3fa7779e27a5a8527225"}, - {file = "watchdog-2.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0d9878be36d2b9271e3abaa6f4f051b363ff54dbbe7e7df1af3c920e4311ee43"}, - {file = "watchdog-2.3.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4cd61f98cb37143206818cb1786d2438626aa78d682a8f2ecee239055a9771d5"}, - {file = "watchdog-2.3.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3d2dbcf1acd96e7a9c9aefed201c47c8e311075105d94ce5e899f118155709fd"}, - {file = "watchdog-2.3.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03f342a9432fe08107defbe8e405a2cb922c5d00c4c6c168c68b633c64ce6190"}, - {file = "watchdog-2.3.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7a596f9415a378d0339681efc08d2249e48975daae391d58f2e22a3673b977cf"}, - {file = "watchdog-2.3.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:0e1dd6d449267cc7d6935d7fe27ee0426af6ee16578eed93bacb1be9ff824d2d"}, - {file = "watchdog-2.3.1-py3-none-manylinux2014_i686.whl", hash = "sha256:7a1876f660e32027a1a46f8a0fa5747ad4fcf86cb451860eae61a26e102c8c79"}, - {file = "watchdog-2.3.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:2caf77ae137935c1466f8cefd4a3aec7017b6969f425d086e6a528241cba7256"}, - {file = "watchdog-2.3.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:53f3e95081280898d9e4fc51c5c69017715929e4eea1ab45801d5e903dd518ad"}, - {file = "watchdog-2.3.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:9da7acb9af7e4a272089bd2af0171d23e0d6271385c51d4d9bde91fe918c53ed"}, - {file = "watchdog-2.3.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:8a4d484e846dcd75e96b96d80d80445302621be40e293bfdf34a631cab3b33dc"}, - {file = "watchdog-2.3.1-py3-none-win32.whl", hash = "sha256:a74155398434937ac2780fd257c045954de5b11b5c52fc844e2199ce3eecf4cf"}, - {file = "watchdog-2.3.1-py3-none-win_amd64.whl", hash = "sha256:5defe4f0918a2a1a4afbe4dbb967f743ac3a93d546ea4674567806375b024adb"}, - {file = "watchdog-2.3.1-py3-none-win_ia64.whl", hash = "sha256:4109cccf214b7e3462e8403ab1e5b17b302ecce6c103eb2fc3afa534a7f27b96"}, - {file = "watchdog-2.3.1.tar.gz", hash = "sha256:d9f9ed26ed22a9d331820a8432c3680707ea8b54121ddcc9dc7d9f2ceeb36906"}, -] - -[package.extras] -watchmedo = ["PyYAML (>=3.10)"] - -[[package]] -name = "wrapt" -version = "1.15.0" -description = "Module for decorators, wrappers and monkey patching." -category = "dev" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -files = [ - {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, - {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, - {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, - {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, - {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, - {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, - {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, - {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, - {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, - {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, - {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, - {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, - {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, - {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, - {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, - {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, - {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, - {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, - {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, - {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, - {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, - {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, - {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, - {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, - {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, - {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, - {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, -] - -[[package]] -name = "zipp" -version = "3.15.0" -description = "Backport of pathlib-compatible object wrapper for zip files" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, - {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] - -[[package]] -name = "zope-interface" -version = "5.5.2" -description = "Interfaces for Python" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "zope.interface-5.5.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:a2ad597c8c9e038a5912ac3cf166f82926feff2f6e0dabdab956768de0a258f5"}, - {file = "zope.interface-5.5.2-cp27-cp27m-win_amd64.whl", hash = "sha256:65c3c06afee96c654e590e046c4a24559e65b0a87dbff256cd4bd6f77e1a33f9"}, - {file = "zope.interface-5.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d514c269d1f9f5cd05ddfed15298d6c418129f3f064765295659798349c43e6f"}, - {file = "zope.interface-5.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5334e2ef60d3d9439c08baedaf8b84dc9bb9522d0dacbc10572ef5609ef8db6d"}, - {file = "zope.interface-5.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc26c8d44472e035d59d6f1177eb712888447f5799743da9c398b0339ed90b1b"}, - {file = "zope.interface-5.5.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:17ebf6e0b1d07ed009738016abf0d0a0f80388e009d0ac6e0ead26fc162b3b9c"}, - {file = "zope.interface-5.5.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f98d4bd7bbb15ca701d19b93263cc5edfd480c3475d163f137385f49e5b3a3a7"}, - {file = "zope.interface-5.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:696f3d5493eae7359887da55c2afa05acc3db5fc625c49529e84bd9992313296"}, - {file = "zope.interface-5.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7579960be23d1fddecb53898035a0d112ac858c3554018ce615cefc03024e46d"}, - {file = "zope.interface-5.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:765d703096ca47aa5d93044bf701b00bbce4d903a95b41fff7c3796e747b1f1d"}, - {file = "zope.interface-5.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e945de62917acbf853ab968d8916290548df18dd62c739d862f359ecd25842a6"}, - {file = "zope.interface-5.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:655796a906fa3ca67273011c9805c1e1baa047781fca80feeb710328cdbed87f"}, - {file = "zope.interface-5.5.2-cp35-cp35m-win_amd64.whl", hash = "sha256:0fb497c6b088818e3395e302e426850f8236d8d9f4ef5b2836feae812a8f699c"}, - {file = "zope.interface-5.5.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:008b0b65c05993bb08912f644d140530e775cf1c62a072bf9340c2249e613c32"}, - {file = "zope.interface-5.5.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:404d1e284eda9e233c90128697c71acffd55e183d70628aa0bbb0e7a3084ed8b"}, - {file = "zope.interface-5.5.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3218ab1a7748327e08ef83cca63eea7cf20ea7e2ebcb2522072896e5e2fceedf"}, - {file = "zope.interface-5.5.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d169ccd0756c15bbb2f1acc012f5aab279dffc334d733ca0d9362c5beaebe88e"}, - {file = "zope.interface-5.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:e1574980b48c8c74f83578d1e77e701f8439a5d93f36a5a0af31337467c08fcf"}, - {file = "zope.interface-5.5.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:0217a9615531c83aeedb12e126611b1b1a3175013bbafe57c702ce40000eb9a0"}, - {file = "zope.interface-5.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:311196634bb9333aa06f00fc94f59d3a9fddd2305c2c425d86e406ddc6f2260d"}, - {file = "zope.interface-5.5.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6373d7eb813a143cb7795d3e42bd8ed857c82a90571567e681e1b3841a390d16"}, - {file = "zope.interface-5.5.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:959697ef2757406bff71467a09d940ca364e724c534efbf3786e86eee8591452"}, - {file = "zope.interface-5.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:dbaeb9cf0ea0b3bc4b36fae54a016933d64c6d52a94810a63c00f440ecb37dd7"}, - {file = "zope.interface-5.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:604cdba8f1983d0ab78edc29aa71c8df0ada06fb147cea436dc37093a0100a4e"}, - {file = "zope.interface-5.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e74a578172525c20d7223eac5f8ad187f10940dac06e40113d62f14f3adb1e8f"}, - {file = "zope.interface-5.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0980d44b8aded808bec5059018d64692f0127f10510eca71f2f0ace8fb11188"}, - {file = "zope.interface-5.5.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6e972493cdfe4ad0411fd9abfab7d4d800a7317a93928217f1a5de2bb0f0d87a"}, - {file = "zope.interface-5.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9d783213fab61832dbb10d385a319cb0e45451088abd45f95b5bb88ed0acca1a"}, - {file = "zope.interface-5.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:a16025df73d24795a0bde05504911d306307c24a64187752685ff6ea23897cb0"}, - {file = "zope.interface-5.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:40f4065745e2c2fa0dff0e7ccd7c166a8ac9748974f960cd39f63d2c19f9231f"}, - {file = "zope.interface-5.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8a2ffadefd0e7206adc86e492ccc60395f7edb5680adedf17a7ee4205c530df4"}, - {file = "zope.interface-5.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d692374b578360d36568dd05efb8a5a67ab6d1878c29c582e37ddba80e66c396"}, - {file = "zope.interface-5.5.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4087e253bd3bbbc3e615ecd0b6dd03c4e6a1e46d152d3be6d2ad08fbad742dcc"}, - {file = "zope.interface-5.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fb68d212efd057596dee9e6582daded9f8ef776538afdf5feceb3059df2d2e7b"}, - {file = "zope.interface-5.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:7e66f60b0067a10dd289b29dceabd3d0e6d68be1504fc9d0bc209cf07f56d189"}, - {file = "zope.interface-5.5.2.tar.gz", hash = "sha256:bfee1f3ff62143819499e348f5b8a7f3aa0259f9aca5e0ddae7391d059dce671"}, -] - -[package.dependencies] -setuptools = "*" - -[package.extras] -docs = ["Sphinx", "repoze.sphinx.autointerface"] -test = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] -testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] - -[metadata] -lock-version = "2.0" -python-versions = "^3.9" -content-hash = "4d2bb81d9245e963aebb73f64da5a114c3f45f139a0c349a7b87d2d14d70cc46" diff --git a/srv/isc-agent/pyproject.toml b/srv/isc-agent/pyproject.toml index 9d72adb..ccd8c76 100644 --- a/srv/isc-agent/pyproject.toml +++ b/srv/isc-agent/pyproject.toml @@ -1,13 +1,10 @@ [tool.poetry] name = "sans-isc-agent" version = "0.1.0" -description = "" -authors = ["Your Name "] readme = "README.md" -packages = [{include = "sans_isc_agent"}] [tool.poetry.dependencies] -python = "^3.7" +python = "^3.7.1" jinja2 = "~=3.0.3" pydantic = {extras = ["dotenv", "email"], version = "~=1.9.0"} requests = "~=2.27.1" From 251d9de339e1a43a7d8a06157512367677151374 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Tue, 14 Mar 2023 21:47:47 -0400 Subject: [PATCH 13/63] catching issues connecting to dshield --- bin/install.sh | 2 +- srv/isc-agent/plugins/tcp/http/models.py | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/bin/install.sh b/bin/install.sh index 658ac98..4071b6b 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -305,8 +305,8 @@ quotespace() { do_log() { if [ ! -d ${LOGDIR} ]; then mkdir -p ${LOGDIR} - chmod 700 ${LOGDIR} fi + chmod 1777 ${LOGDIR} if [ ! -f ${LOGFILE} ]; then touch ${LOGFILE} chmod 600 ${LOGFILE} diff --git a/srv/isc-agent/plugins/tcp/http/models.py b/srv/isc-agent/plugins/tcp/http/models.py index 3ec352e..40cd04a 100644 --- a/srv/isc-agent/plugins/tcp/http/models.py +++ b/srv/isc-agent/plugins/tcp/http/models.py @@ -3,6 +3,7 @@ import logging import json import os +import sys import requests from pydantic import ValidationError @@ -108,11 +109,13 @@ def hydrate_tables(): settings.DATABASE_SESSION.query(Signature).delete() settings.DATABASE_SESSION.query(Response).delete() - resp = requests.get( - f'{settings.DSHIELD_URL}/api/honeypotrules/', - verify=False - ) - + try: + resp = requests.get( + f'{settings.DSHIELD_URL}/api/honeypotrules/', verify=False + ) + except requests.exceptions.ConnectionError as e: + logger.exception(f"unable to connect to DShield {e}") + sys.exit() if not resp.ok: logger.exception("HTTP plugin failed to download artifacts.") return From 1eb8157355002703aff07a5ac349315352520e3b Mon Sep 17 00:00:00 2001 From: Will Deem Date: Tue, 14 Mar 2023 21:54:32 -0400 Subject: [PATCH 14/63] Fix pyproject.toml required fields --- srv/isc-agent/pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/srv/isc-agent/pyproject.toml b/srv/isc-agent/pyproject.toml index ccd8c76..48fa7da 100644 --- a/srv/isc-agent/pyproject.toml +++ b/srv/isc-agent/pyproject.toml @@ -2,6 +2,8 @@ name = "sans-isc-agent" version = "0.1.0" readme = "README.md" +description = "" +authors = ["Your Name "] [tool.poetry.dependencies] python = "^3.7.1" From a84235036570a3085cbc122191044f76b8c74f62 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 15 Mar 2023 01:56:28 +0000 Subject: [PATCH 15/63] Converted pyproject.toml to requirements.txt --- bin/requirements.txt | 542 ++++--------------------------------------- 1 file changed, 46 insertions(+), 496 deletions(-) diff --git a/bin/requirements.txt b/bin/requirements.txt index 5d33f27..57b3079 100644 --- a/bin/requirements.txt +++ b/bin/requirements.txt @@ -1,496 +1,46 @@ -appdirs==1.4.4 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41 \ - --hash=sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128 -attrs==22.2.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836 \ - --hash=sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99 -automat==22.10.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:c3164f8742b9dc440f3682482d32aaff7bb53f71740dd018533f9de286b64180 \ - --hash=sha256:e56beb84edad19dcc11d30e8d9b895f75deeb5ef5e96b84a467066b3b84bb04e -bcrypt==4.0.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535 \ - --hash=sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0 \ - --hash=sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410 \ - --hash=sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd \ - --hash=sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665 \ - --hash=sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab \ - --hash=sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71 \ - --hash=sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215 \ - --hash=sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b \ - --hash=sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda \ - --hash=sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9 \ - --hash=sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a \ - --hash=sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344 \ - --hash=sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f \ - --hash=sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d \ - --hash=sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c \ - --hash=sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c \ - --hash=sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2 \ - --hash=sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d \ - --hash=sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e \ - --hash=sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3 -certifi==2022.12.7 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \ - --hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18 -cffi==1.15.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \ - --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \ - --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \ - --hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 \ - --hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 \ - --hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 \ - --hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a \ - --hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e \ - --hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc \ - --hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf \ - --hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 \ - --hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 \ - --hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 \ - --hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 \ - --hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c \ - --hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 \ - --hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 \ - --hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca \ - --hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 \ - --hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac \ - --hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd \ - --hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee \ - --hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a \ - --hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 \ - --hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 \ - --hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 \ - --hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 \ - --hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f \ - --hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e \ - --hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 \ - --hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b \ - --hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e \ - --hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e \ - --hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d \ - --hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c \ - --hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 \ - --hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 \ - --hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 \ - --hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 \ - --hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 \ - --hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c \ - --hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 \ - --hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 \ - --hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 \ - --hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d \ - --hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 \ - --hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 \ - --hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 \ - --hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c \ - --hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 \ - --hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 \ - --hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 \ - --hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d \ - --hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d \ - --hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 \ - --hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 \ - --hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 \ - --hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 \ - --hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e \ - --hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 \ - --hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 \ - --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \ - --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \ - --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0 -charset-normalizer==2.0.12 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597 \ - --hash=sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df -constantly==15.1.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35 \ - --hash=sha256:dd2fa9d6b1a51a83f0d7dd76293d734046aa176e384bf6e33b7e44880eb37c5d -cryptography==39.0.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:103e8f7155f3ce2ffa0049fe60169878d47a4364b277906386f8de21c9234aa1 \ - --hash=sha256:23df8ca3f24699167daf3e23e51f7ba7334d504af63a94af468f468b975b7dd7 \ - --hash=sha256:2725672bb53bb92dc7b4150d233cd4b8c59615cd8288d495eaa86db00d4e5c06 \ - --hash=sha256:30b1d1bfd00f6fc80d11300a29f1d8ab2b8d9febb6ed4a38a76880ec564fae84 \ - --hash=sha256:35d658536b0a4117c885728d1a7032bdc9a5974722ae298d6c533755a6ee3915 \ - --hash=sha256:50cadb9b2f961757e712a9737ef33d89b8190c3ea34d0fb6675e00edbe35d074 \ - --hash=sha256:5f8c682e736513db7d04349b4f6693690170f95aac449c56f97415c6980edef5 \ - --hash=sha256:6236a9610c912b129610eb1a274bdc1350b5df834d124fa84729ebeaf7da42c3 \ - --hash=sha256:788b3921d763ee35dfdb04248d0e3de11e3ca8eb22e2e48fef880c42e1f3c8f9 \ - --hash=sha256:8bc0008ef798231fac03fe7d26e82d601d15bd16f3afaad1c6113771566570f3 \ - --hash=sha256:8f35c17bd4faed2bc7797d2a66cbb4f986242ce2e30340ab832e5d99ae60e011 \ - --hash=sha256:b49a88ff802e1993b7f749b1eeb31134f03c8d5c956e3c125c75558955cda536 \ - --hash=sha256:bc0521cce2c1d541634b19f3ac661d7a64f9555135e9d8af3980965be717fd4a \ - --hash=sha256:bc5b871e977c8ee5a1bbc42fa8d19bcc08baf0c51cbf1586b0e87a2694dde42f \ - --hash=sha256:c43ac224aabcbf83a947eeb8b17eaf1547bce3767ee2d70093b461f31729a480 \ - --hash=sha256:d15809e0dbdad486f4ad0979753518f47980020b7a34e9fc56e8be4f60702fac \ - --hash=sha256:d7d84a512a59f4412ca8549b01f94be4161c94efc598bf09d027d67826beddc0 \ - --hash=sha256:e029b844c21116564b8b61216befabca4b500e6816fa9f0ba49527653cae2108 \ - --hash=sha256:e8a0772016feeb106efd28d4a328e77dc2edae84dfbac06061319fdb669ff828 \ - --hash=sha256:e944fe07b6f229f4c1a06a7ef906a19652bdd9fd54c761b0ff87e83ae7a30354 \ - --hash=sha256:eb40fe69cfc6f5cdab9a5ebd022131ba21453cf7b8a7fd3631f45bbf52bed612 \ - --hash=sha256:fa507318e427169ade4e9eccef39e9011cdc19534f55ca2f36ec3f388c1f70f3 \ - --hash=sha256:ffd394c7896ed7821a6d13b24657c6a34b6e2650bd84ae063cf11ccffa4f1a97 -cython-test-exception-raiser==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:0396ae2ad249b7612d1a59737691095309f736654d29ddf8384f73309c57aba7 \ - --hash=sha256:13efc23b95088183edab33cc564f47d4adf4ae0943e303c367fe20443987e6b0 \ - --hash=sha256:18426985e4e328be9c89e8151397abc078b0482a86eb86a80763b1738c34c217 \ - --hash=sha256:1cb1a1f0db302396d4f8e9be1f564777b47787608f8577fbc754aeb1187531c3 \ - --hash=sha256:22d051bba31caf8457a24c6eee9d700c327dae3c1c48a5dc966d8a149676c21f \ - --hash=sha256:381cb1025ca9f1f13563585cffc5363bfb468d665713d8f5a0c98ba2e35cab07 \ - --hash=sha256:3b698b36387cfced4346512425bf840d252dc1bab54d415df6b349c0b67f78c9 \ - --hash=sha256:3f5032e507c14adef7523f4b94498c85a8db6169b3a385471d081f4ea2c24c05 \ - --hash=sha256:4d2123822c0d5197bde4b3b1a6f33513791749af8848e69f97219c7a72d497f9 \ - --hash=sha256:50a881ab31e6455123a0acc34743d539fd3649bfa8b1c0b31bb5c04251ea9792 \ - --hash=sha256:545b68df558c2bcf827ed08f1de21e74751e83901b3767aadd5e6878c17c9525 \ - --hash=sha256:569c6c9190fca8b38606b73f94ae64bedc43d692959454e151f6d48e936fcfd7 \ - --hash=sha256:69fa226fbecd579ad62107a7fec1dcc6469d22a4b917ee34cbb42aec8dbdae81 \ - --hash=sha256:7b7ee87afc912a4c9aa1fb139bf448bae93732ea0f17dabb52234668a2165c97 \ - --hash=sha256:7ce9236d449ed78bc57c8819ff5c17191b614f2904b15a1b1f20e48ddb689862 \ - --hash=sha256:877d2df83c63c208af497fb6926e215778f9cec1f9146a4700304237a2af02f1 \ - --hash=sha256:8a261236f8f3254760514f7532973a98e27b16365b7a1c1e8e262ab64a5d1f3d \ - --hash=sha256:8fe6d23ca7cc97cef29f85671e3d0bc313dcaf7414f3d4f32eb3ce345d451748 \ - --hash=sha256:9b5f61ce75c6804a3619b9bc633f6a12894f7d58e8394454929473ae9cefd331 \ - --hash=sha256:a3a0161281108c6460a24c984b1bf09d1eae217484b176d127f2fd3a55279ce5 \ - --hash=sha256:b3bbef4e2286125e6692e993ae41919f61eea603b97aa423282c752ebbc0cc28 \ - --hash=sha256:bd2d5a7d17e12819e078f7cf23c9295704ad78c9c46022ae973097d0767f0d31 \ - --hash=sha256:c4d413ba40a8f5867bfc1ba2a9512cc1b652eed443a9cfe423f3ba8fa5c57f0b \ - --hash=sha256:c5003a6321057a8222d2f5aed329fcdb5eb3bc615a9239f461bdf06c491fbdaa \ - --hash=sha256:cf433219a445a61c4b57302ec8dbb4a7572d58af35e61f8729480bf40c408cc5 \ - --hash=sha256:d0faf66f5926b48eb62740fa9eeaad7d8ea4010e09975be7def585d0bb087ce7 \ - --hash=sha256:d41b0c8802653c00dee9d39ea7be2c61b2b313934cb315a2650bf5cb8a45fd62 \ - --hash=sha256:eec60f994acfea7a29017cdc8063c18181ec6e78317760f022d7c291cb67d6ff \ - --hash=sha256:f823e4a9b0c8a99c133250fb059b8b05a18bac00783285ef48a4b3485646953f \ - --hash=sha256:f93b0df46cb45fe0db736317a30fa60874cad531f0549be935546513bd76e68d -dnspython==2.3.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:224e32b03eb46be70e12ef6d64e0be123a64e621ab4c0822ff6d450d52a540b9 \ - --hash=sha256:89141536394f909066cabd112e3e1a37e4e654db00a25308b0f130bc3152eb46 -email-validator==1.3.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:49a72f5fa6ed26be1c964f0567d931d10bf3fdeeacdf97bc26ef1cd2a44e0bda \ - --hash=sha256:d178c5c6fa6c6824e9b04f199cf23e79ac15756786573c190d2ad13089411ad2 -exceptiongroup==1.1.0 ; python_version >= "3.8" and python_version < "3.11" \ - --hash=sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e \ - --hash=sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23 -greenlet==2.0.2 ; python_version >= "3.8" and platform_machine == "aarch64" and python_version < "4.0" or python_version >= "3.8" and platform_machine == "ppc64le" and python_version < "4.0" or python_version >= "3.8" and platform_machine == "x86_64" and python_version < "4.0" or python_version >= "3.8" and platform_machine == "amd64" and python_version < "4.0" or python_version >= "3.8" and platform_machine == "AMD64" and python_version < "4.0" or python_version >= "3.8" and platform_machine == "win32" and python_version < "4.0" or python_version >= "3.8" and platform_machine == "WIN32" and python_version < "4.0" \ - --hash=sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a \ - --hash=sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a \ - --hash=sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43 \ - --hash=sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33 \ - --hash=sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8 \ - --hash=sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088 \ - --hash=sha256:2780572ec463d44c1d3ae850239508dbeb9fed38e294c68d19a24d925d9223ca \ - --hash=sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343 \ - --hash=sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645 \ - --hash=sha256:2dd11f291565a81d71dab10b7033395b7a3a5456e637cf997a6f33ebdf06f8db \ - --hash=sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df \ - --hash=sha256:32e5b64b148966d9cccc2c8d35a671409e45f195864560829f395a54226408d3 \ - --hash=sha256:36abbf031e1c0f79dd5d596bfaf8e921c41df2bdf54ee1eed921ce1f52999a86 \ - --hash=sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2 \ - --hash=sha256:3a51c9751078733d88e013587b108f1b7a1fb106d402fb390740f002b6f6551a \ - --hash=sha256:3c9b12575734155d0c09d6c3e10dbd81665d5c18e1a7c6597df72fd05990c8cf \ - --hash=sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7 \ - --hash=sha256:4b58adb399c4d61d912c4c331984d60eb66565175cdf4a34792cd9600f21b394 \ - --hash=sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40 \ - --hash=sha256:5454276c07d27a740c5892f4907c86327b632127dd9abec42ee62e12427ff7e3 \ - --hash=sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6 \ - --hash=sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74 \ - --hash=sha256:703f18f3fda276b9a916f0934d2fb6d989bf0b4fb5a64825260eb9bfd52d78f0 \ - --hash=sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3 \ - --hash=sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91 \ - --hash=sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5 \ - --hash=sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9 \ - --hash=sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8 \ - --hash=sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b \ - --hash=sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6 \ - --hash=sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb \ - --hash=sha256:937e9020b514ceedb9c830c55d5c9872abc90f4b5862f89c0887033ae33c6f73 \ - --hash=sha256:94c817e84245513926588caf1152e3b559ff794d505555211ca041f032abbb6b \ - --hash=sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df \ - --hash=sha256:9d14b83fab60d5e8abe587d51c75b252bcc21683f24699ada8fb275d7712f5a9 \ - --hash=sha256:9f35ec95538f50292f6d8f2c9c9f8a3c6540bbfec21c9e5b4b751e0a7c20864f \ - --hash=sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0 \ - --hash=sha256:acd2162a36d3de67ee896c43effcd5ee3de247eb00354db411feb025aa319857 \ - --hash=sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a \ - --hash=sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249 \ - --hash=sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30 \ - --hash=sha256:b9ec052b06a0524f0e35bd8790686a1da006bd911dd1ef7d50b77bfbad74e292 \ - --hash=sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b \ - --hash=sha256:bdfea8c661e80d3c1c99ad7c3ff74e6e87184895bbaca6ee8cc61209f8b9b85d \ - --hash=sha256:be4ed120b52ae4d974aa40215fcdfde9194d63541c7ded40ee12eb4dda57b76b \ - --hash=sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c \ - --hash=sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca \ - --hash=sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7 \ - --hash=sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75 \ - --hash=sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae \ - --hash=sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b \ - --hash=sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470 \ - --hash=sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564 \ - --hash=sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9 \ - --hash=sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099 \ - --hash=sha256:e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0 \ - --hash=sha256:ea9872c80c132f4663822dd2a08d404073a5a9b5ba6155bea72fb2a79d1093b5 \ - --hash=sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19 \ - --hash=sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1 \ - --hash=sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526 -h2==4.1.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d \ - --hash=sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb -hpack==4.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c \ - --hash=sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095 -hyperframe==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15 \ - --hash=sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914 -hyperlink==21.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:427af957daa58bc909471c6c40f74c5450fa123dd093fc53efd2e91d2705a56b \ - --hash=sha256:e6b14c37ecb73e89c77d78cdb4c2cc8f3fb59a885c5b3f819ff4ed80f25af1b4 -hypothesis==6.68.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2a41cc766cde52705895e54547374af89c617e8ec7bc4186cb7f03884a667d4e \ - --hash=sha256:a7eb2b0c9a18560d8197fe35047ceb58e7e8ab7623a3e5a82613f6a2cd71cffa -idna==3.4 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ - --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 -incremental==22.10.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:912feeb5e0f7e0188e6f42241d2f450002e11bbc0937c65865045854c24c0bd0 \ - --hash=sha256:b864a1f30885ee72c5ac2835a761b8fe8aa9c28b9395cacf27286602688d3e51 -jinja2==3.0.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8 \ - --hash=sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7 -markupsafe==2.1.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed \ - --hash=sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc \ - --hash=sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2 \ - --hash=sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460 \ - --hash=sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7 \ - --hash=sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0 \ - --hash=sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1 \ - --hash=sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa \ - --hash=sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03 \ - --hash=sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323 \ - --hash=sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65 \ - --hash=sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013 \ - --hash=sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036 \ - --hash=sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f \ - --hash=sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4 \ - --hash=sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419 \ - --hash=sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2 \ - --hash=sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619 \ - --hash=sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a \ - --hash=sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a \ - --hash=sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd \ - --hash=sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7 \ - --hash=sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666 \ - --hash=sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65 \ - --hash=sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859 \ - --hash=sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625 \ - --hash=sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff \ - --hash=sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156 \ - --hash=sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd \ - --hash=sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba \ - --hash=sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f \ - --hash=sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1 \ - --hash=sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094 \ - --hash=sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a \ - --hash=sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513 \ - --hash=sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed \ - --hash=sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d \ - --hash=sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3 \ - --hash=sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147 \ - --hash=sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c \ - --hash=sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603 \ - --hash=sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601 \ - --hash=sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a \ - --hash=sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1 \ - --hash=sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d \ - --hash=sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3 \ - --hash=sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54 \ - --hash=sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2 \ - --hash=sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6 \ - --hash=sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58 -priority==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:6bc1961a6d7fcacbfc337769f1a382c8e746566aaa365e78047abe9f66b2ffbe \ - --hash=sha256:be4fcb94b5e37cdeb40af5533afe6dd603bd665fe9c8b3052610fc1001d5d1eb -pyasn1-modules==0.2.8 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e \ - --hash=sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74 -pyasn1==0.4.8 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \ - --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba -pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ - --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic[dotenv,email]==1.9.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1061c6ee6204f4f5a27133126854948e3b3d51fcc16ead2e5d04378c199b2f44 \ - --hash=sha256:19b5686387ea0d1ea52ecc4cffb71abb21702c5e5b2ac626fd4dbaa0834aa49d \ - --hash=sha256:2bd446bdb7755c3a94e56d7bdfd3ee92396070efa8ef3a34fab9579fe6aa1d84 \ - --hash=sha256:328558c9f2eed77bd8fffad3cef39dbbe3edc7044517f4625a769d45d4cf7555 \ - --hash=sha256:32e0b4fb13ad4db4058a7c3c80e2569adbd810c25e6ca3bbd8b2a9cc2cc871d7 \ - --hash=sha256:3ee0d69b2a5b341fc7927e92cae7ddcfd95e624dfc4870b32a85568bd65e6131 \ - --hash=sha256:4aafd4e55e8ad5bd1b19572ea2df546ccace7945853832bb99422a79c70ce9b8 \ - --hash=sha256:4b3946f87e5cef3ba2e7bd3a4eb5a20385fe36521d6cc1ebf3c08a6697c6cfb3 \ - --hash=sha256:4de71c718c9756d679420c69f216776c2e977459f77e8f679a4a961dc7304a56 \ - --hash=sha256:5565a49effe38d51882cb7bac18bda013cdb34d80ac336428e8908f0b72499b0 \ - --hash=sha256:5803ad846cdd1ed0d97eb00292b870c29c1f03732a010e66908ff48a762f20e4 \ - --hash=sha256:5da164119602212a3fe7e3bc08911a89db4710ae51444b4224c2382fd09ad453 \ - --hash=sha256:615661bfc37e82ac677543704437ff737418e4ea04bef9cf11c6d27346606044 \ - --hash=sha256:78a4d6bdfd116a559aeec9a4cfe77dda62acc6233f8b56a716edad2651023e5e \ - --hash=sha256:7d0f183b305629765910eaad707800d2f47c6ac5bcfb8c6397abdc30b69eeb15 \ - --hash=sha256:7ead3cd020d526f75b4188e0a8d71c0dbbe1b4b6b5dc0ea775a93aca16256aeb \ - --hash=sha256:84d76ecc908d917f4684b354a39fd885d69dd0491be175f3465fe4b59811c001 \ - --hash=sha256:8cb0bc509bfb71305d7a59d00163d5f9fc4530f0881ea32c74ff4f74c85f3d3d \ - --hash=sha256:91089b2e281713f3893cd01d8e576771cd5bfdfbff5d0ed95969f47ef6d676c3 \ - --hash=sha256:9c9e04a6cdb7a363d7cb3ccf0efea51e0abb48e180c0d31dca8d247967d85c6e \ - --hash=sha256:a8c5360a0297a713b4123608a7909e6869e1b56d0e96eb0d792c27585d40757f \ - --hash=sha256:afacf6d2a41ed91fc631bade88b1d319c51ab5418870802cedb590b709c5ae3c \ - --hash=sha256:b34ba24f3e2d0b39b43f0ca62008f7ba962cff51efa56e64ee25c4af6eed987b \ - --hash=sha256:bd67cb2c2d9602ad159389c29e4ca964b86fa2f35c2faef54c3eb28b4efd36c8 \ - --hash=sha256:c0f5e142ef8217019e3eef6ae1b6b55f09a7a15972958d44fbd228214cede567 \ - --hash=sha256:cdb4272678db803ddf94caa4f94f8672e9a46bae4a44f167095e4d06fec12979 \ - --hash=sha256:d70916235d478404a3fa8c997b003b5f33aeac4686ac1baa767234a0f8ac2326 \ - --hash=sha256:d8ce3fb0841763a89322ea0432f1f59a2d3feae07a63ea2c958b2315e1ae8adb \ - --hash=sha256:e0b214e57623a535936005797567231a12d0da0c29711eb3514bc2b3cd008d0f \ - --hash=sha256:e631c70c9280e3129f071635b81207cad85e6c08e253539467e4ead0e5b219aa \ - --hash=sha256:e78578f0c7481c850d1c969aca9a65405887003484d24f6110458fb02cca7747 \ - --hash=sha256:f0ca86b525264daa5f6b192f216a0d1e860b7383e3da1c65a1908f9c02f42801 \ - --hash=sha256:f1a68f4f65a9ee64b6ccccb5bf7e17db07caebd2730109cb8a95863cfa9c4e55 \ - --hash=sha256:fafe841be1103f340a24977f61dee76172e4ae5f647ab9e7fd1e1fca51524f08 \ - --hash=sha256:ff68fc85355532ea77559ede81f35fff79a6a5543477e168ab3a381887caea76 -pyhamcrest==2.0.4 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:60a41d4783b9d56c9ec8586635d2301db5072b3ea8a51c32dd03c408ae2b0f79 \ - --hash=sha256:b5d9ce6b977696286cf232ce2adf8969b4d0b045975b0936ac9005e84e67e9c1 -pyopenssl==23.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:c1cc5f86bcacefc84dada7d31175cae1b1518d5f60d3d0bb595a67822a868a6f \ - --hash=sha256:df5fc28af899e74e19fccb5510df423581047e10ab6f1f4ba1763ff5fde844c0 -pyserial==3.5 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb \ - --hash=sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0 -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ - --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a -pywin32==305 ; platform_system == "Windows" and python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:109f98980bfb27e78f4df8a51a8198e10b0f347257d1e265bb1a32993d0c973d \ - --hash=sha256:13362cc5aa93c2beaf489c9c9017c793722aeb56d3e5166dadd5ef82da021fe1 \ - --hash=sha256:19ca459cd2e66c0e2cc9a09d589f71d827f26d47fe4a9d09175f6aa0256b51c2 \ - --hash=sha256:326f42ab4cfff56e77e3e595aeaf6c216712bbdd91e464d167c6434b28d65990 \ - --hash=sha256:421f6cd86e84bbb696d54563c48014b12a23ef95a14e0bdba526be756d89f116 \ - --hash=sha256:48d8b1659284f3c17b68587af047d110d8c44837736b8932c034091683e05863 \ - --hash=sha256:4ecd404b2c6eceaca52f8b2e3e91b2187850a1ad3f8b746d0796a98b4cea04db \ - --hash=sha256:50768c6b7c3f0b38b7fb14dd4104da93ebced5f1a50dc0e834594bff6fbe1271 \ - --hash=sha256:56d7a9c6e1a6835f521788f53b5af7912090674bb84ef5611663ee1595860fc7 \ - --hash=sha256:73e819c6bed89f44ff1d690498c0a811948f73777e5f97c494c152b850fad478 \ - --hash=sha256:742eb905ce2187133a29365b428e6c3b9001d79accdc30aa8969afba1d8470f4 \ - --hash=sha256:9d968c677ac4d5cbdaa62fd3014ab241718e619d8e36ef8e11fb930515a1e918 \ - --hash=sha256:9dd98384da775afa009bc04863426cb30596fd78c6f8e4e2e5bbf4edf8029504 \ - --hash=sha256:a55db448124d1c1484df22fa8bbcbc45c64da5e6eae74ab095b9ea62e6d00496 -requests==2.27.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61 \ - --hash=sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d -service-identity==21.1.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:6e6c6086ca271dc11b033d17c3a8bea9f24ebff920c587da090afc9519419d34 \ - --hash=sha256:f0b0caac3d40627c3c04d7a51b6e06721857a0e10a8775f2d1d7e72901b3a7db -setuptools==67.5.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:15136a251127da2d2e77ac7a1bc231eb504654f7e3346d93613a13f2e2787535 \ - --hash=sha256:1c39d42bda4cb89f7fdcad52b6762e3c309ec8f8715b27c684176b7d71283242 -six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ - --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 -sortedcontainers==2.4.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88 \ - --hash=sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0 -sqlalchemy==1.4.46 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:07e48cbcdda6b8bc7a59d6728bd3f5f574ffe03f2c9fb384239f3789c2d95c2e \ - --hash=sha256:18cafdb27834fa03569d29f571df7115812a0e59fd6a3a03ccb0d33678ec8420 \ - --hash=sha256:1b1e5e96e2789d89f023d080bee432e2fef64d95857969e70d3cadec80bd26f0 \ - --hash=sha256:315676344e3558f1f80d02535f410e80ea4e8fddba31ec78fe390eff5fb8f466 \ - --hash=sha256:31de1e2c45e67a5ec1ecca6ec26aefc299dd5151e355eb5199cd9516b57340be \ - --hash=sha256:3d94682732d1a0def5672471ba42a29ff5e21bb0aae0afa00bb10796fc1e28dd \ - --hash=sha256:3ec187acf85984263299a3f15c34a6c0671f83565d86d10f43ace49881a82718 \ - --hash=sha256:4847f4b1d822754e35707db913396a29d874ee77b9c3c3ef3f04d5a9a6209618 \ - --hash=sha256:4d112b0f3c1bc5ff70554a97344625ef621c1bfe02a73c5d97cac91f8cd7a41e \ - --hash=sha256:51e1ba2884c6a2b8e19109dc08c71c49530006c1084156ecadfaadf5f9b8b053 \ - --hash=sha256:535377e9b10aff5a045e3d9ada8a62d02058b422c0504ebdcf07930599890eb0 \ - --hash=sha256:5dbf17ac9a61e7a3f1c7ca47237aac93cabd7f08ad92ac5b96d6f8dea4287fc1 \ - --hash=sha256:5f752676fc126edc1c4af0ec2e4d2adca48ddfae5de46bb40adbd3f903eb2120 \ - --hash=sha256:64cb0ad8a190bc22d2112001cfecdec45baffdf41871de777239da6a28ed74b6 \ - --hash=sha256:6913b8247d8a292ef8315162a51931e2b40ce91681f1b6f18f697045200c4a30 \ - --hash=sha256:69fac0a7054d86b997af12dc23f581cf0b25fb1c7d1fed43257dee3af32d3d6d \ - --hash=sha256:7001f16a9a8e06488c3c7154827c48455d1c1507d7228d43e781afbc8ceccf6d \ - --hash=sha256:7b81b1030c42b003fc10ddd17825571603117f848814a344d305262d370e7c34 \ - --hash=sha256:7f8267682eb41a0584cf66d8a697fef64b53281d01c93a503e1344197f2e01fe \ - --hash=sha256:887865924c3d6e9a473dc82b70977395301533b3030d0f020c38fd9eba5419f2 \ - --hash=sha256:9167d4227b56591a4cc5524f1b79ccd7ea994f36e4c648ab42ca995d28ebbb96 \ - --hash=sha256:939f9a018d2ad04036746e15d119c0428b1e557470361aa798e6e7d7f5875be0 \ - --hash=sha256:955162ad1a931fe416eded6bb144ba891ccbf9b2e49dc7ded39274dd9c5affc5 \ - --hash=sha256:984ee13543a346324319a1fb72b698e521506f6f22dc37d7752a329e9cd00a32 \ - --hash=sha256:9883f5fae4fd8e3f875adc2add69f8b945625811689a6c65866a35ee9c0aea23 \ - --hash=sha256:a1ad90c97029cc3ab4ffd57443a20fac21d2ec3c89532b084b073b3feb5abff3 \ - --hash=sha256:a3714e5b33226131ac0da60d18995a102a17dddd42368b7bdd206737297823ad \ - --hash=sha256:ae067ab639fa499f67ded52f5bc8e084f045d10b5ac7bb928ae4ca2b6c0429a5 \ - --hash=sha256:b33ffbdbbf5446cf36cd4cc530c9d9905d3c2fe56ed09e25c22c850cdb9fac92 \ - --hash=sha256:b6e4cb5c63f705c9d546a054c60d326cbde7421421e2d2565ce3e2eee4e1a01f \ - --hash=sha256:b7f4b6aa6e87991ec7ce0e769689a977776db6704947e562102431474799a857 \ - --hash=sha256:c04144a24103135ea0315d459431ac196fe96f55d3213bfd6d39d0247775c854 \ - --hash=sha256:c522e496f9b9b70296a7675272ec21937ccfc15da664b74b9f58d98a641ce1b6 \ - --hash=sha256:c5a99282848b6cae0056b85da17392a26b2d39178394fc25700bcf967e06e97a \ - --hash=sha256:c7a46639ba058d320c9f53a81db38119a74b8a7a1884df44d09fbe807d028aaf \ - --hash=sha256:d4b1cc7835b39835c75cf7c20c926b42e97d074147c902a9ebb7cf2c840dc4e2 \ - --hash=sha256:d4d164df3d83d204c69f840da30b292ac7dc54285096c6171245b8d7807185aa \ - --hash=sha256:d61e9ecc849d8d44d7f80894ecff4abe347136e9d926560b818f6243409f3c86 \ - --hash=sha256:d68e1762997bfebf9e5cf2a9fd0bcf9ca2fdd8136ce7b24bbd3bbfa4328f3e4a \ - --hash=sha256:e3c1808008124850115a3f7e793a975cfa5c8a26ceeeb9ff9cbb4485cac556df \ - --hash=sha256:f8cb80fe8d14307e4124f6fad64dfd87ab749c9d275f82b8b4ec84c84ecebdbe -twisted-iocpsupport==1.0.2 ; python_version >= "3.8" and python_version < "4.0" and platform_system == "Windows" \ - --hash=sha256:306becd6e22ab6e8e4f36b6bdafd9c92e867c98a5ce517b27fdd27760ee7ae41 \ - --hash=sha256:3c61742cb0bc6c1ac117a7e5f422c129832f0c295af49e01d8a6066df8cfc04d \ - --hash=sha256:72068b206ee809c9c596b57b5287259ea41ddb4774d86725b19f35bf56aa32a9 \ - --hash=sha256:7d972cfa8439bdcb35a7be78b7ef86d73b34b808c74be56dfa785c8a93b851bf \ - --hash=sha256:81b3abe3527b367da0220482820cb12a16c661672b7bcfcde328902890d63323 \ - --hash=sha256:851b3735ca7e8102e661872390e3bce88f8901bece95c25a0c8bb9ecb8a23d32 \ - --hash=sha256:985c06a33f5c0dae92c71a036d1ea63872ee86a21dd9b01e1f287486f15524b4 \ - --hash=sha256:9dbb8823b49f06d4de52721b47de4d3b3026064ef4788ce62b1a21c57c3fff6f \ - --hash=sha256:b435857b9efcbfc12f8c326ef0383f26416272260455bbca2cd8d8eca470c546 \ - --hash=sha256:b76b4eed9b27fd63ddb0877efdd2d15835fdcb6baa745cb85b66e5d016ac2878 \ - --hash=sha256:b9fed67cf0f951573f06d560ac2f10f2a4bbdc6697770113a2fc396ea2cb2565 \ - --hash=sha256:bf4133139d77fc706d8f572e6b7d82871d82ec7ef25d685c2351bdacfb701415 -twisted[all-non-platform,http2]==22.10.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:32acbd40a94f5f46e7b42c109bfae2b302250945561783a8b7a059048f2d4d31 \ - --hash=sha256:86c55f712cc5ab6f6d64e02503352464f0400f66d4f079096d744080afcccbd0 -typing-extensions==4.5.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb \ - --hash=sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4 -urllib3==1.26.14 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72 \ - --hash=sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1 -zope-interface==5.5.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:008b0b65c05993bb08912f644d140530e775cf1c62a072bf9340c2249e613c32 \ - --hash=sha256:0217a9615531c83aeedb12e126611b1b1a3175013bbafe57c702ce40000eb9a0 \ - --hash=sha256:0fb497c6b088818e3395e302e426850f8236d8d9f4ef5b2836feae812a8f699c \ - --hash=sha256:17ebf6e0b1d07ed009738016abf0d0a0f80388e009d0ac6e0ead26fc162b3b9c \ - --hash=sha256:311196634bb9333aa06f00fc94f59d3a9fddd2305c2c425d86e406ddc6f2260d \ - --hash=sha256:3218ab1a7748327e08ef83cca63eea7cf20ea7e2ebcb2522072896e5e2fceedf \ - --hash=sha256:404d1e284eda9e233c90128697c71acffd55e183d70628aa0bbb0e7a3084ed8b \ - --hash=sha256:4087e253bd3bbbc3e615ecd0b6dd03c4e6a1e46d152d3be6d2ad08fbad742dcc \ - --hash=sha256:40f4065745e2c2fa0dff0e7ccd7c166a8ac9748974f960cd39f63d2c19f9231f \ - --hash=sha256:5334e2ef60d3d9439c08baedaf8b84dc9bb9522d0dacbc10572ef5609ef8db6d \ - --hash=sha256:604cdba8f1983d0ab78edc29aa71c8df0ada06fb147cea436dc37093a0100a4e \ - --hash=sha256:6373d7eb813a143cb7795d3e42bd8ed857c82a90571567e681e1b3841a390d16 \ - --hash=sha256:655796a906fa3ca67273011c9805c1e1baa047781fca80feeb710328cdbed87f \ - --hash=sha256:65c3c06afee96c654e590e046c4a24559e65b0a87dbff256cd4bd6f77e1a33f9 \ - --hash=sha256:696f3d5493eae7359887da55c2afa05acc3db5fc625c49529e84bd9992313296 \ - --hash=sha256:6e972493cdfe4ad0411fd9abfab7d4d800a7317a93928217f1a5de2bb0f0d87a \ - --hash=sha256:7579960be23d1fddecb53898035a0d112ac858c3554018ce615cefc03024e46d \ - --hash=sha256:765d703096ca47aa5d93044bf701b00bbce4d903a95b41fff7c3796e747b1f1d \ - --hash=sha256:7e66f60b0067a10dd289b29dceabd3d0e6d68be1504fc9d0bc209cf07f56d189 \ - --hash=sha256:8a2ffadefd0e7206adc86e492ccc60395f7edb5680adedf17a7ee4205c530df4 \ - --hash=sha256:959697ef2757406bff71467a09d940ca364e724c534efbf3786e86eee8591452 \ - --hash=sha256:9d783213fab61832dbb10d385a319cb0e45451088abd45f95b5bb88ed0acca1a \ - --hash=sha256:a16025df73d24795a0bde05504911d306307c24a64187752685ff6ea23897cb0 \ - --hash=sha256:a2ad597c8c9e038a5912ac3cf166f82926feff2f6e0dabdab956768de0a258f5 \ - --hash=sha256:bfee1f3ff62143819499e348f5b8a7f3aa0259f9aca5e0ddae7391d059dce671 \ - --hash=sha256:d169ccd0756c15bbb2f1acc012f5aab279dffc334d733ca0d9362c5beaebe88e \ - --hash=sha256:d514c269d1f9f5cd05ddfed15298d6c418129f3f064765295659798349c43e6f \ - --hash=sha256:d692374b578360d36568dd05efb8a5a67ab6d1878c29c582e37ddba80e66c396 \ - --hash=sha256:dbaeb9cf0ea0b3bc4b36fae54a016933d64c6d52a94810a63c00f440ecb37dd7 \ - --hash=sha256:dc26c8d44472e035d59d6f1177eb712888447f5799743da9c398b0339ed90b1b \ - --hash=sha256:e1574980b48c8c74f83578d1e77e701f8439a5d93f36a5a0af31337467c08fcf \ - --hash=sha256:e74a578172525c20d7223eac5f8ad187f10940dac06e40113d62f14f3adb1e8f \ - --hash=sha256:e945de62917acbf853ab968d8916290548df18dd62c739d862f359ecd25842a6 \ - --hash=sha256:f0980d44b8aded808bec5059018d64692f0127f10510eca71f2f0ace8fb11188 \ - --hash=sha256:f98d4bd7bbb15ca701d19b93263cc5edfd480c3475d163f137385f49e5b3a3a7 \ - --hash=sha256:fb68d212efd057596dee9e6582daded9f8ef776538afdf5feceb3059df2d2e7b +appdirs==1.4.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +attrs==22.2.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +automat==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +bcrypt==4.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +certifi==2022.12.7 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +cffi==1.15.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +charset-normalizer==2.0.12 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +constantly==15.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +cryptography==39.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +cython-test-exception-raiser==1.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +dnspython==2.3.0 ; python_full_version >= "3.7.1" and python_version < "4.0" +email-validator==1.3.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +exceptiongroup==1.1.1 ; python_full_version >= "3.7.1" and python_version < "3.11" +greenlet==2.0.2 ; python_full_version >= "3.7.1" and platform_machine == "aarch64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "ppc64le" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "x86_64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "amd64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "AMD64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "win32" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "WIN32" and python_full_version < "4.0.0" +h2==4.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +hpack==4.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +hyperframe==6.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +hyperlink==21.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +hypothesis==6.68.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +idna==3.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +importlib-metadata==6.0.0 ; python_full_version >= "3.7.1" and python_version < "3.8" +incremental==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +jinja2==3.0.3 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +markupsafe==2.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +priority==1.3.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pyasn1-modules==0.2.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pyasn1==0.4.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pycparser==2.21 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pydantic[dotenv,email]==1.9.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pyhamcrest==2.0.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pyopenssl==23.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pyserial==3.5 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +python-dotenv==0.21.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pywin32==305 ; platform_system == "Windows" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" +requests==2.27.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +service-identity==21.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +setuptools==67.6.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +six==1.16.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +sortedcontainers==2.4.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +sqlalchemy==1.4.46 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +twisted-iocpsupport==1.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and platform_system == "Windows" +twisted[all-non-platform,http2]==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +typing-extensions==4.5.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +urllib3==1.26.15 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +zipp==3.15.0 ; python_full_version >= "3.7.1" and python_version < "3.8" +zope-interface==5.5.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" From b82758345557b55e981d3733735923c7f40250fe Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Tue, 14 Mar 2023 22:07:28 -0400 Subject: [PATCH 16/63] switch back to original requirements --- bin/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/install.sh b/bin/install.sh index 4071b6b..c963581 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -1907,7 +1907,7 @@ if [ "$FAST" == "0" ]; then dlog "installing dependencies: requirements.txt" run 'pip3 install --upgrade pip' run 'pip3 install --upgrade bcrypt' - run 'pip3 install --upgrade -r requirements2.txt' + run 'pip3 install --upgrade -r requirements.txt' run 'pip3 install --upgrade requests' if [ ${?} -ne 0 ]; then outlog "Error installing dependencies from requirements.txt. See ${LOGFILE} for details." From 271225debc3c3777dc478caa7d69f7035c5de64f Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Tue, 14 Mar 2023 22:19:53 -0400 Subject: [PATCH 17/63] more logging --- bin/install.sh | 2 +- srv/isc-agent/plugins/tcp/http/main.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/bin/install.sh b/bin/install.sh index c963581..f790792 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -1803,7 +1803,7 @@ run 'echo "telnet=$telnet" >> /etc/dshield.ini' run 'echo "[plugin:tcp:http]" >> /etc/dshield.ini' run 'echo "http_ports = [8000]" >> /etc/dshield.ini' run 'echo "https_ports = [8443]" >> /etc/dshield.ini' -run 'echo "submit_logs_rate = 30" >> /etc/dshield.ini' +run 'echo "submit_logs_rate = 300" >> /etc/dshield.ini' run 'echo "[iscagent]" >> /etc/dshield.ini' run 'echo "database=sqlite+pysqlite:////srv/db/isc-agent.sqlite" >> /etc/dshield.ini' run 'echo "debug=false" >> /etc/dshield.ini' diff --git a/srv/isc-agent/plugins/tcp/http/main.py b/srv/isc-agent/plugins/tcp/http/main.py index 3bf1a94..9e1e9a7 100644 --- a/srv/isc-agent/plugins/tcp/http/main.py +++ b/srv/isc-agent/plugins/tcp/http/main.py @@ -125,6 +125,9 @@ def submit_logs(): resp.status_code, resp.text ) + else: + logger.info("succesfully submitted logs {request_logs}") + hydrate_tables() From 576f67c8fa9f15e1c3b460ea63d42fc588f81258 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Tue, 14 Mar 2023 22:21:43 -0400 Subject: [PATCH 18/63] little fixes to help debugging --- srv/isc-agent/main.py | 1 + 1 file changed, 1 insertion(+) mode change 100644 => 100755 srv/isc-agent/main.py diff --git a/srv/isc-agent/main.py b/srv/isc-agent/main.py old mode 100644 new mode 100755 index cd9205f..c0ac81e --- a/srv/isc-agent/main.py +++ b/srv/isc-agent/main.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 import importlib import logging From d3fb76b97c5b0ab53a9bd6dc98e57866e7ec83f3 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Tue, 14 Mar 2023 22:28:34 -0400 Subject: [PATCH 19/63] removing venv from isc-agent --- srv/isc-agent/bin/isc-agent | 1 - 1 file changed, 1 deletion(-) diff --git a/srv/isc-agent/bin/isc-agent b/srv/isc-agent/bin/isc-agent index 165c92d..a60bc32 100644 --- a/srv/isc-agent/bin/isc-agent +++ b/srv/isc-agent/bin/isc-agent @@ -19,7 +19,6 @@ function startup() { s=$? if [[ $s -eq 0 ]]; then echo "starting isc-agent" - activate_venv .venv cd /srv/isc-agent/ && python3 ./main.py > /dev/null 2>/srv/log/isc-agent.err & echo $! > $PIDFILE fi From 2a58cecdcabcce392c82e0a42527d81657d73534 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Thu, 16 Mar 2023 14:46:50 -0400 Subject: [PATCH 20/63] fixing dependencies --- bin/install.sh | 2 ++ bin/requirements2.txt | 42 ------------------------------------------ 2 files changed, 2 insertions(+), 42 deletions(-) delete mode 100644 bin/requirements2.txt diff --git a/bin/install.sh b/bin/install.sh index f790792..37e4b56 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -1907,6 +1907,8 @@ if [ "$FAST" == "0" ]; then dlog "installing dependencies: requirements.txt" run 'pip3 install --upgrade pip' run 'pip3 install --upgrade bcrypt' + run 'pip3 install --upgrade sqlalchemy' + run 'pip3 install --upgrade twisted' run 'pip3 install --upgrade -r requirements.txt' run 'pip3 install --upgrade requests' if [ ${?} -ne 0 ]; then diff --git a/bin/requirements2.txt b/bin/requirements2.txt deleted file mode 100644 index 6316ddf..0000000 --- a/bin/requirements2.txt +++ /dev/null @@ -1,42 +0,0 @@ -appdirs -attrs -automat -bcrypt -certifi -cffi -charset-normalizer -constantly -cryptography -cython-test-exception-raiser -dnspython -email-validator -exceptiongroup -greenlet -h2 -hpack -hyperframe -hyperlink -hypothesis -idna -incremental -jinja2 -markupsafe -priority -pyasn1-modules -pyasn1 -pycparser -pydantic[dotenv,email] -pyhamcrest -pyopenssl -pyserial -python-dotenv -requests -service-identity -setuptools -six -sortedcontainers -sqlalchemy -twisted -typing-extensions -urllib3 -zope-interface From ec10bf52f8739fdaa4def5355f2ace193c9505ad Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Thu, 16 Mar 2023 18:47:37 +0000 Subject: [PATCH 21/63] Converted pyproject.toml to requirements.txt --- bin/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/requirements.txt b/bin/requirements.txt index 57b3079..988c701 100644 --- a/bin/requirements.txt +++ b/bin/requirements.txt @@ -16,7 +16,7 @@ h2==4.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hpack==4.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hyperframe==6.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hyperlink==21.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -hypothesis==6.68.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +hypothesis==6.70.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" idna==3.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" importlib-metadata==6.0.0 ; python_full_version >= "3.7.1" and python_version < "3.8" incremental==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" From 1457ae3050b9271d018a87a5776e82c662fd7b81 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Thu, 16 Mar 2023 15:00:33 -0400 Subject: [PATCH 22/63] more forgiving python depenencies --- srv/isc-agent/pyproject.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/srv/isc-agent/pyproject.toml b/srv/isc-agent/pyproject.toml index 48fa7da..5526c73 100644 --- a/srv/isc-agent/pyproject.toml +++ b/srv/isc-agent/pyproject.toml @@ -7,11 +7,11 @@ authors = ["Your Name "] [tool.poetry.dependencies] python = "^3.7.1" -jinja2 = "~=3.0.3" -pydantic = {extras = ["dotenv", "email"], version = "~=1.9.0"} -requests = "~=2.27.1" -sqlalchemy = "~=1.4.31" -twisted = {extras = ["all_non_platform", "http2"], version = "~=22.10.0"} +jinja2 = ">=3.0.3" +pydantic = {extras = ["dotenv", "email"], version = ">=1.9.0"} +requests = ">=2.27.1" +sqlalchemy = ">=1.4.31" +twisted = {extras = ["all_non_platform", "http2"], version = ">=22.10.0"} [tool.poetry.group.dev.dependencies] From 750a30c688e674bea79ffb7b64dc2f0e7cd0384d Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Thu, 16 Mar 2023 19:01:35 +0000 Subject: [PATCH 23/63] Converted pyproject.toml to requirements.txt --- bin/requirements.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/bin/requirements.txt b/bin/requirements.txt index 988c701..58fcd3f 100644 --- a/bin/requirements.txt +++ b/bin/requirements.txt @@ -2,9 +2,9 @@ appdirs==1.4.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0 attrs==22.2.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" automat==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" bcrypt==4.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -certifi==2022.12.7 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +certifi==2022.12.7 ; python_full_version >= "3.7.1" and python_version < "4" cffi==1.15.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -charset-normalizer==2.0.12 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +charset-normalizer==3.1.0 ; python_full_version >= "3.7.1" and python_version < "4" constantly==15.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" cryptography==39.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" cython-test-exception-raiser==1.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" @@ -17,30 +17,30 @@ hpack==4.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hyperframe==6.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hyperlink==21.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hypothesis==6.70.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -idna==3.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +idna==3.4 ; python_full_version >= "3.7.1" and python_version < "4" importlib-metadata==6.0.0 ; python_full_version >= "3.7.1" and python_version < "3.8" incremental==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -jinja2==3.0.3 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +jinja2==3.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" markupsafe==2.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" priority==1.3.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pyasn1-modules==0.2.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pyasn1==0.4.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pycparser==2.21 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pydantic[dotenv,email]==1.9.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pydantic[dotenv,email]==1.10.6 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pyhamcrest==2.0.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pyopenssl==23.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pyserial==3.5 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" python-dotenv==0.21.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pywin32==305 ; platform_system == "Windows" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" -requests==2.27.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +requests==2.28.2 ; python_full_version >= "3.7.1" and python_version < "4" service-identity==21.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" setuptools==67.6.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" six==1.16.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" sortedcontainers==2.4.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -sqlalchemy==1.4.46 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +sqlalchemy==2.0.6 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" twisted-iocpsupport==1.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and platform_system == "Windows" twisted[all-non-platform,http2]==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" typing-extensions==4.5.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -urllib3==1.26.15 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +urllib3==1.26.15 ; python_full_version >= "3.7.1" and python_version < "4" zipp==3.15.0 ; python_full_version >= "3.7.1" and python_version < "3.8" zope-interface==5.5.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" From b0f74628cdf64f3bdcf225e2285a3d9da6f36bb4 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Thu, 16 Mar 2023 15:27:38 -0400 Subject: [PATCH 24/63] fixing more dependency issues --- bin/install.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bin/install.sh b/bin/install.sh index 37e4b56..8c13600 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -1895,10 +1895,13 @@ else fi fi +run 'pip3 install --upgrade -r requirements.txt' + # step 4 (Setup Virtual Environment) outlog "Installing Python packages with PIP. This will take a LOOONG time." OLDDIR=$(pwd) cd ${COWRIEDIR} + dlog "setting up virtual environment" run 'virtualenv --python=python3 cowrie-env' dlog "activating virtual environment" @@ -1909,7 +1912,7 @@ if [ "$FAST" == "0" ]; then run 'pip3 install --upgrade bcrypt' run 'pip3 install --upgrade sqlalchemy' run 'pip3 install --upgrade twisted' - run 'pip3 install --upgrade -r requirements.txt' + run 'pip3 install --upgrade testresources' run 'pip3 install --upgrade requests' if [ ${?} -ne 0 ]; then outlog "Error installing dependencies from requirements.txt. See ${LOGFILE} for details." From 8f0a865e86bf8b4248d2c19e75482792650bbc33 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Thu, 16 Mar 2023 15:52:24 -0400 Subject: [PATCH 25/63] more dependency fixes --- bin/install.sh | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/bin/install.sh b/bin/install.sh index 8c13600..7a0f0e5 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -240,6 +240,7 @@ DSHIELDDIR="${TARGETDIR}/dshield" COWRIEDIR="${TARGETDIR}/cowrie" # remember to also change the init.d script! TXTCMDS=${COWRIEDIR}/share/cowrie/txtcmds LOGDIR="${TARGETDIR}/log" +SCRIPTDIR=$( cd -- "$(dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) ISC_AGENT_DIR="${TARGETDIR}/isc-agent" INSTDATE="$(date +'%Y-%m-%d_%H%M%S')" LOGFILE="${LOGDIR}/install_${INSTDATE}.log" @@ -1895,25 +1896,27 @@ else fi fi -run 'pip3 install --upgrade -r requirements.txt' + # step 4 (Setup Virtual Environment) outlog "Installing Python packages with PIP. This will take a LOOONG time." OLDDIR=$(pwd) -cd ${COWRIEDIR} + +cd ${COWRIEDIR} +dlog "installing global rependencies from ${SCRIPTDIR}/requirements.txt" +run 'pip3 install --upgrade pip' +run "pip3 install -r ${SCRIPTDIR}/requirements.txt" dlog "setting up virtual environment" run 'virtualenv --python=python3 cowrie-env' dlog "activating virtual environment" run 'source cowrie-env/bin/activate' if [ "$FAST" == "0" ]; then - dlog "installing dependencies: requirements.txt" + dlog "installing cowrie dependencies: requirements.txt" run 'pip3 install --upgrade pip' run 'pip3 install --upgrade bcrypt' - run 'pip3 install --upgrade sqlalchemy' - run 'pip3 install --upgrade twisted' - run 'pip3 install --upgrade testresources' run 'pip3 install --upgrade requests' + run 'pip3 install -r requirements.txt' if [ ${?} -ne 0 ]; then outlog "Error installing dependencies from requirements.txt. See ${LOGFILE} for details." exit 9 From 8206b1d81d33adfd2d8d45c35746a2614edb1fdd Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Thu, 16 Mar 2023 16:01:46 -0400 Subject: [PATCH 26/63] more dependency stuff --- srv/isc-agent/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srv/isc-agent/pyproject.toml b/srv/isc-agent/pyproject.toml index 5526c73..795c8c5 100644 --- a/srv/isc-agent/pyproject.toml +++ b/srv/isc-agent/pyproject.toml @@ -12,7 +12,7 @@ pydantic = {extras = ["dotenv", "email"], version = ">=1.9.0"} requests = ">=2.27.1" sqlalchemy = ">=1.4.31" twisted = {extras = ["all_non_platform", "http2"], version = ">=22.10.0"} - +pyasn1-modules = ">=0.2.1" [tool.poetry.group.dev.dependencies] pytest = "*" From 92d102f135b1c01ed83bfa630b6ce4e59e48153b Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Thu, 16 Mar 2023 16:11:49 -0400 Subject: [PATCH 27/63] temp adjusting versions --- bin/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/requirements.txt b/bin/requirements.txt index 58fcd3f..1a7c816 100644 --- a/bin/requirements.txt +++ b/bin/requirements.txt @@ -23,7 +23,7 @@ incremental==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < jinja2==3.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" markupsafe==2.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" priority==1.3.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pyasn1-modules==0.2.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pyasn1-modules==0.2.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pyasn1==0.4.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pycparser==2.21 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pydantic[dotenv,email]==1.10.6 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" From 59651d626399cf0d0cc8773b2a1d963c728c8bfc Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Thu, 16 Mar 2023 20:12:42 +0000 Subject: [PATCH 28/63] Converted pyproject.toml to requirements.txt --- bin/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/requirements.txt b/bin/requirements.txt index 1a7c816..58fcd3f 100644 --- a/bin/requirements.txt +++ b/bin/requirements.txt @@ -23,7 +23,7 @@ incremental==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < jinja2==3.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" markupsafe==2.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" priority==1.3.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pyasn1-modules==0.2.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pyasn1-modules==0.2.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pyasn1==0.4.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pycparser==2.21 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pydantic[dotenv,email]==1.10.6 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" From ed86f79e1e591fc4c3253bdc4db3b8b8e45692d8 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Thu, 16 Mar 2023 16:17:54 -0400 Subject: [PATCH 29/63] cutting off versions --- .github/workflows/poetry-to-legacy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/poetry-to-legacy.yml b/.github/workflows/poetry-to-legacy.yml index b9fb6e8..b22b935 100644 --- a/.github/workflows/poetry-to-legacy.yml +++ b/.github/workflows/poetry-to-legacy.yml @@ -20,7 +20,7 @@ jobs: run: | cd srv/isc-agent poetry export -f requirements.txt -o requirements.txt --without-hashes - mv requirements.txt ../../bin/ + cut -f1 -d '=' < requirements.txt > ../../bin/requirements.txt - name: Commit changes uses: EndBug/add-and-commit@v7 with: From 48543b9e85ae45170eced0b8ed5412cd0a3c7a29 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Thu, 16 Mar 2023 20:19:09 +0000 Subject: [PATCH 30/63] Converted pyproject.toml to requirements.txt --- bin/requirements.txt | 92 +++++++++++++++++----------------- srv/isc-agent/requirements.txt | 46 +++++++++++++++++ 2 files changed, 92 insertions(+), 46 deletions(-) create mode 100644 srv/isc-agent/requirements.txt diff --git a/bin/requirements.txt b/bin/requirements.txt index 58fcd3f..deff6ce 100644 --- a/bin/requirements.txt +++ b/bin/requirements.txt @@ -1,46 +1,46 @@ -appdirs==1.4.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -attrs==22.2.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -automat==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -bcrypt==4.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -certifi==2022.12.7 ; python_full_version >= "3.7.1" and python_version < "4" -cffi==1.15.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -charset-normalizer==3.1.0 ; python_full_version >= "3.7.1" and python_version < "4" -constantly==15.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -cryptography==39.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -cython-test-exception-raiser==1.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -dnspython==2.3.0 ; python_full_version >= "3.7.1" and python_version < "4.0" -email-validator==1.3.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -exceptiongroup==1.1.1 ; python_full_version >= "3.7.1" and python_version < "3.11" -greenlet==2.0.2 ; python_full_version >= "3.7.1" and platform_machine == "aarch64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "ppc64le" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "x86_64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "amd64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "AMD64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "win32" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "WIN32" and python_full_version < "4.0.0" -h2==4.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -hpack==4.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -hyperframe==6.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -hyperlink==21.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -hypothesis==6.70.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -idna==3.4 ; python_full_version >= "3.7.1" and python_version < "4" -importlib-metadata==6.0.0 ; python_full_version >= "3.7.1" and python_version < "3.8" -incremental==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -jinja2==3.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -markupsafe==2.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -priority==1.3.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pyasn1-modules==0.2.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pyasn1==0.4.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pycparser==2.21 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pydantic[dotenv,email]==1.10.6 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pyhamcrest==2.0.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pyopenssl==23.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pyserial==3.5 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -python-dotenv==0.21.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pywin32==305 ; platform_system == "Windows" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" -requests==2.28.2 ; python_full_version >= "3.7.1" and python_version < "4" -service-identity==21.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -setuptools==67.6.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -six==1.16.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -sortedcontainers==2.4.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -sqlalchemy==2.0.6 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -twisted-iocpsupport==1.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and platform_system == "Windows" -twisted[all-non-platform,http2]==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -typing-extensions==4.5.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -urllib3==1.26.15 ; python_full_version >= "3.7.1" and python_version < "4" -zipp==3.15.0 ; python_full_version >= "3.7.1" and python_version < "3.8" -zope-interface==5.5.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +appdirs +attrs +automat +bcrypt +certifi +cffi +charset-normalizer +constantly +cryptography +cython-test-exception-raiser +dnspython +email-validator +exceptiongroup +greenlet +h2 +hpack +hyperframe +hyperlink +hypothesis +idna +importlib-metadata +incremental +jinja2 +markupsafe +priority +pyasn1-modules +pyasn1 +pycparser +pydantic[dotenv,email] +pyhamcrest +pyopenssl +pyserial +python-dotenv +pywin32 +requests +service-identity +setuptools +six +sortedcontainers +sqlalchemy +twisted-iocpsupport +twisted[all-non-platform,http2] +typing-extensions +urllib3 +zipp +zope-interface diff --git a/srv/isc-agent/requirements.txt b/srv/isc-agent/requirements.txt new file mode 100644 index 0000000..58fcd3f --- /dev/null +++ b/srv/isc-agent/requirements.txt @@ -0,0 +1,46 @@ +appdirs==1.4.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +attrs==22.2.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +automat==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +bcrypt==4.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +certifi==2022.12.7 ; python_full_version >= "3.7.1" and python_version < "4" +cffi==1.15.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +charset-normalizer==3.1.0 ; python_full_version >= "3.7.1" and python_version < "4" +constantly==15.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +cryptography==39.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +cython-test-exception-raiser==1.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +dnspython==2.3.0 ; python_full_version >= "3.7.1" and python_version < "4.0" +email-validator==1.3.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +exceptiongroup==1.1.1 ; python_full_version >= "3.7.1" and python_version < "3.11" +greenlet==2.0.2 ; python_full_version >= "3.7.1" and platform_machine == "aarch64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "ppc64le" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "x86_64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "amd64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "AMD64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "win32" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "WIN32" and python_full_version < "4.0.0" +h2==4.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +hpack==4.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +hyperframe==6.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +hyperlink==21.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +hypothesis==6.70.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +idna==3.4 ; python_full_version >= "3.7.1" and python_version < "4" +importlib-metadata==6.0.0 ; python_full_version >= "3.7.1" and python_version < "3.8" +incremental==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +jinja2==3.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +markupsafe==2.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +priority==1.3.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pyasn1-modules==0.2.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pyasn1==0.4.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pycparser==2.21 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pydantic[dotenv,email]==1.10.6 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pyhamcrest==2.0.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pyopenssl==23.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pyserial==3.5 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +python-dotenv==0.21.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pywin32==305 ; platform_system == "Windows" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" +requests==2.28.2 ; python_full_version >= "3.7.1" and python_version < "4" +service-identity==21.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +setuptools==67.6.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +six==1.16.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +sortedcontainers==2.4.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +sqlalchemy==2.0.6 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +twisted-iocpsupport==1.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and platform_system == "Windows" +twisted[all-non-platform,http2]==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +typing-extensions==4.5.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +urllib3==1.26.15 ; python_full_version >= "3.7.1" and python_version < "4" +zipp==3.15.0 ; python_full_version >= "3.7.1" and python_version < "3.8" +zope-interface==5.5.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" From bb40137150111ee274284f717cb703a423617628 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Thu, 16 Mar 2023 16:30:17 -0400 Subject: [PATCH 31/63] fixing stuff --- .github/workflows/poetry-to-legacy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/poetry-to-legacy.yml b/.github/workflows/poetry-to-legacy.yml index b22b935..e787813 100644 --- a/.github/workflows/poetry-to-legacy.yml +++ b/.github/workflows/poetry-to-legacy.yml @@ -20,7 +20,7 @@ jobs: run: | cd srv/isc-agent poetry export -f requirements.txt -o requirements.txt --without-hashes - cut -f1 -d '=' < requirements.txt > ../../bin/requirements.txt + cut -f1 -d '=' < requirements.txt | grep -v 'Windows' > ../../bin/requirements.txt - name: Commit changes uses: EndBug/add-and-commit@v7 with: From 036a00fd015c9c81a1b7c2bef63bc635bdd9d736 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Thu, 16 Mar 2023 16:31:08 -0400 Subject: [PATCH 32/63] fixing stuff --- .github/workflows/poetry-to-legacy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/poetry-to-legacy.yml b/.github/workflows/poetry-to-legacy.yml index e787813..80fb8c3 100644 --- a/.github/workflows/poetry-to-legacy.yml +++ b/.github/workflows/poetry-to-legacy.yml @@ -20,7 +20,7 @@ jobs: run: | cd srv/isc-agent poetry export -f requirements.txt -o requirements.txt --without-hashes - cut -f1 -d '=' < requirements.txt | grep -v 'Windows' > ../../bin/requirements.txt + grep -v 'Windows' requirements.txt | cut -f1 -d '=' > ../../bin/requirements.txt - name: Commit changes uses: EndBug/add-and-commit@v7 with: From 74f2eaa883405c06077e04c965a5cf6fd86cc741 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Thu, 16 Mar 2023 20:31:53 +0000 Subject: [PATCH 33/63] Converted pyproject.toml to requirements.txt --- bin/requirements.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/bin/requirements.txt b/bin/requirements.txt index deff6ce..f4f093d 100644 --- a/bin/requirements.txt +++ b/bin/requirements.txt @@ -31,14 +31,12 @@ pyhamcrest pyopenssl pyserial python-dotenv -pywin32 requests service-identity setuptools six sortedcontainers sqlalchemy -twisted-iocpsupport twisted[all-non-platform,http2] typing-extensions urllib3 From 377605fc40f68c57315e56de8ae4946b737932cd Mon Sep 17 00:00:00 2001 From: David Norman Date: Tue, 21 Mar 2023 22:01:40 -0400 Subject: [PATCH 34/63] Run the HTML through a validator. Close the first form POST element that could theoretically cause some HTML parsers to ignore the second GET style form tag. --- srv/www/bin/web.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/srv/www/bin/web.py b/srv/www/bin/web.py index 23a6c0e..e95b6f6 100755 --- a/srv/www/bin/web.py +++ b/srv/www/bin/web.py @@ -163,9 +163,11 @@ def do_GET(self): pass else: # default message_parts = [ - 'Upload\ + '\ + Upload\
\ \ +
\
\ Form Using GET\
\ @@ -175,7 +177,7 @@ def do_GET(self):
\
\

 

\ -
' + ' ] message = '\r\n'.join(message_parts) try: From 9b52a08e82cf631251e22e2b9f18f191a99377be Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Thu, 13 Apr 2023 19:16:38 -0400 Subject: [PATCH 35/63] fixing tls key location issues --- bin/makecert.sh | 7 ++----- bin/requirements.txt | 2 +- srv/isc-agent/settings.py | 5 +++-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/bin/makecert.sh b/bin/makecert.sh index b326b99..f1c8d08 100755 --- a/bin/makecert.sh +++ b/bin/makecert.sh @@ -44,10 +44,6 @@ if [ ! -f $d/../etc/CA/keys/honeypot.key ]; then openssl req -sha256 -new -newkey rsa:2048 -keyout $d/../etc/CA/keys/honeypot.key -out $d/../etc/CA/requests/honeypot.csr -nodes -subj "/C=$country/ST=$state/L=$city/O=$company/OU=$department/CN=$hostname" openssl req -in $d/../etc/CA/requests/honeypot.csr -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | base64 > $d/../etc/CA/requests/honeypot.keypin fi -if [ ! -f $d/../etc/CA/keys/honeypot-spare.key ]; then - openssl req -sha256 -new -newkey rsa:2048 -keyout $d/../etc/CA/keys/honeypot-spare.key -out $d/../etc/CA/requests/honeypot-spare.csr -nodes -subj "/C=$country/ST=$state/L=$city/O=$company/OU=$department/CN=$hostname" - openssl req -in $d/../etc/CA/requests/honeypot-spare.csr -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | base64 > $d/../etc/CA/requests/honeypot-spare.keypin -fi cadir=$d/../etc/CA @@ -58,7 +54,7 @@ dialog --title "Signing Certificate" --yesno "Would you like me to create a CA t if [ $? -eq 0 ]; then - + # creating key without passphrase since this is just a simple self signed certificate. # if you want more security, then please use a "real" certificate authority or @@ -73,6 +69,7 @@ if [ $? -eq 0 ]; then fi # we will only sign the primary CSR, not the spare one for now. touch ../etc/CA/index.txt + echo "unique_subject = no" > ../etc/CA/index.txt.attr sed -r --in-place=.bak "s|^dir\s=.*$|dir = $cadir|" ../etc/openssl.cnf openssl ca -batch -config ../etc/openssl.cnf -policy signing_policy -extensions signing_req -out ../etc/CA/certs/honeypot.crt -infiles ../etc/CA/requests/honeypot.csr diff --git a/bin/requirements.txt b/bin/requirements.txt index f4f093d..f928ef2 100644 --- a/bin/requirements.txt +++ b/bin/requirements.txt @@ -37,7 +37,7 @@ setuptools six sortedcontainers sqlalchemy -twisted[all-non-platform,http2] +twisted typing-extensions urllib3 zipp diff --git a/srv/isc-agent/settings.py b/srv/isc-agent/settings.py index 42ac8dc..1809e7c 100644 --- a/srv/isc-agent/settings.py +++ b/srv/isc-agent/settings.py @@ -90,8 +90,9 @@ DATABASE_SESSION = Session(DATABASE_ENGINE) # SSL certification key and certificate -PRIVATE_KEY = os.getenv('ISC_AGENT_PRIVATE_KEY_PATH', '~/dshield/etc/CA/keys/honeypot.key') -CERT_KEY = os.getenv('ISC_AGENT_CERT_KEY_PATH', '~/dshield/etc/CA/certs/honeypot.crt') + +PRIVATE_KEY = config.get('isc-agent', 'tlskey', fallback='/srv/isc-agent/honeypot.key') +CERT_KEY = config.get('isc-agent', 'tlscert', fallback='/srv/isc-agent/honeypot.crt') # PLUGINS # Read from /etc/dshield.ini file From 59b14e3794827d14e37331d48003717692a409a7 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Thu, 13 Apr 2023 23:17:30 +0000 Subject: [PATCH 36/63] Converted pyproject.toml to requirements.txt --- bin/requirements.txt | 2 +- srv/isc-agent/requirements.txt | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/bin/requirements.txt b/bin/requirements.txt index f928ef2..f4f093d 100644 --- a/bin/requirements.txt +++ b/bin/requirements.txt @@ -37,7 +37,7 @@ setuptools six sortedcontainers sqlalchemy -twisted +twisted[all-non-platform,http2] typing-extensions urllib3 zipp diff --git a/srv/isc-agent/requirements.txt b/srv/isc-agent/requirements.txt index 58fcd3f..3329e2a 100644 --- a/srv/isc-agent/requirements.txt +++ b/srv/isc-agent/requirements.txt @@ -6,7 +6,7 @@ certifi==2022.12.7 ; python_full_version >= "3.7.1" and python_version < "4" cffi==1.15.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" charset-normalizer==3.1.0 ; python_full_version >= "3.7.1" and python_version < "4" constantly==15.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -cryptography==39.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +cryptography==40.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" cython-test-exception-raiser==1.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" dnspython==2.3.0 ; python_full_version >= "3.7.1" and python_version < "4.0" email-validator==1.3.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" @@ -16,9 +16,9 @@ h2==4.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hpack==4.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hyperframe==6.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hyperlink==21.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -hypothesis==6.70.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +hypothesis==6.71.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" idna==3.4 ; python_full_version >= "3.7.1" and python_version < "4" -importlib-metadata==6.0.0 ; python_full_version >= "3.7.1" and python_version < "3.8" +importlib-metadata==6.3.0 ; python_full_version >= "3.7.1" and python_version < "3.8" incremental==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" jinja2==3.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" markupsafe==2.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" @@ -26,21 +26,21 @@ priority==1.3.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0. pyasn1-modules==0.2.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pyasn1==0.4.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pycparser==2.21 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pydantic[dotenv,email]==1.10.6 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pydantic[dotenv,email]==1.10.7 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pyhamcrest==2.0.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pyopenssl==23.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pyopenssl==23.1.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pyserial==3.5 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" python-dotenv==0.21.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pywin32==305 ; platform_system == "Windows" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pywin32==306 ; platform_system == "Windows" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" requests==2.28.2 ; python_full_version >= "3.7.1" and python_version < "4" service-identity==21.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -setuptools==67.6.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +setuptools==67.6.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" six==1.16.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" sortedcontainers==2.4.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -sqlalchemy==2.0.6 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -twisted-iocpsupport==1.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and platform_system == "Windows" +sqlalchemy==2.0.9 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +twisted-iocpsupport==1.0.3 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and platform_system == "Windows" twisted[all-non-platform,http2]==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" typing-extensions==4.5.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" urllib3==1.26.15 ; python_full_version >= "3.7.1" and python_version < "4" zipp==3.15.0 ; python_full_version >= "3.7.1" and python_version < "3.8" -zope-interface==5.5.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +zope-interface==6.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" From e6b91ef3b0f71214b61e4c15ba70d650df995c8f Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Thu, 13 Apr 2023 19:38:33 -0400 Subject: [PATCH 37/63] fixing venv --- srv/isc-agent/bin/isc-agent | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/srv/isc-agent/bin/isc-agent b/srv/isc-agent/bin/isc-agent index a60bc32..714feb0 100644 --- a/srv/isc-agent/bin/isc-agent +++ b/srv/isc-agent/bin/isc-agent @@ -19,7 +19,9 @@ function startup() { s=$? if [[ $s -eq 0 ]]; then echo "starting isc-agent" - cd /srv/isc-agent/ && python3 ./main.py > /dev/null 2>/srv/log/isc-agent.err & + cd /srv/isc-agent + activate_venv .venv + python3 ./main.py > /dev/null 2>/srv/log/isc-agent.err & echo $! > $PIDFILE fi status From 3e92dff61ebdce1ecba15f21285334ceaf62427f Mon Sep 17 00:00:00 2001 From: port0x50 Date: Fri, 14 Apr 2023 21:40:01 +0000 Subject: [PATCH 38/63] Updated bin/install.sh and srv/isc-agent/settings.py --- bin/install.sh | 27 ++++++++++++++++++++++++--- srv/isc-agent/settings.py | 4 ++-- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/bin/install.sh b/bin/install.sh index 7a0f0e5..e69de78 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -1827,7 +1827,11 @@ drun 'cat /etc/dshield.ini' dlog "installing cowrie" -# step 1 (Install OS dependencies): done +# step 1 (Install OS dependencies) + +# support for ubuntu server 22.04.2 LTS +dlog "(re)installing python attrs package" +run "pip3 install --ignore-installed attrs" # step 2 (Create a user account) dlog "checking if cowrie OS user already exists" @@ -2004,6 +2008,9 @@ find /etc/rc?.d -name '*cowrie*' -delete run 'systemctl daemon-reload' run 'systemctl enable cowrie.service' +dlog 'deactivate cowrie venv' +run 'deactivate' + ########################################################### ## Installation of isc-agent ########################################################### @@ -2012,16 +2019,17 @@ outlog "Installing ISC-Agent" dlog "installing ISC-Agent" run "mkdir -p ${ISC_AGENT_DIR}" - do_copy $progdir/../srv/isc-agent ${ISC_AGENT_DIR}/../ do_copy $progdir/../lib/systemd/system/isc-agent.service ${systemdpref}/lib/systemd/system/ 644 run "chmod +x /srv/isc-agent/bin/isc-agent" run "mkdir -m 0700 /srv/isc-agent/run" -run "deactivate" OLDPWD=$PWD cd ${ISC_AGENT_DIR} +dlog "activate isc-agent venv" +run "source /srv/isc-agent/.venv/bin/activate" run "pip3 install --upgrade pip" run "pip3 install pipenv" +run "pip3 install --ignore-installed -r requirements.txt --prefix /srv/isc-agent/.venv" run "pipenv lock" run "PIPENV_IGNORE_VIRTUALENVS=1 PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy" run "systemctl daemon-reload" @@ -2029,6 +2037,9 @@ run "systemctl enable isc-agent.service" [ "$ID" != "opensuse" ] && run "systemctl enable systemd-networkd.service systemd-networkd-wait-online.service" cd $OLDPWD +dlog "deactivate isc-agent venv" +run "deactivate" + ########################################################### ## Copying further system files ########################################################### @@ -2191,8 +2202,18 @@ clear if [ ${GENCERT} -eq 1 ]; then dlog "generating new CERTs using ./makecert.sh" ./makecert.sh + dlog "moving certs to /srv/log/isc-agent" + run "mv ~/dshield/etc/CA/keys/honeypot.key /srv/log/isc-agent/honeypot.key" + run "mv ~/dshield/etc/CA/certs/honeypot.crt /srv/log/isc-agent/honeypot.crt" + + dlog "updating /etc/dshield.ini" + run 'echo "tlskey=/srv/log/isc-agent/honeypot.key" >> /etc/dshield.ini' + run 'echo "tlscert=/srv/log/isc-agent/honeypot.crt" >> /etc/dshield.ini' fi + + + # # creating PID directory # diff --git a/srv/isc-agent/settings.py b/srv/isc-agent/settings.py index 1809e7c..1114e8c 100644 --- a/srv/isc-agent/settings.py +++ b/srv/isc-agent/settings.py @@ -91,8 +91,8 @@ # SSL certification key and certificate -PRIVATE_KEY = config.get('isc-agent', 'tlskey', fallback='/srv/isc-agent/honeypot.key') -CERT_KEY = config.get('isc-agent', 'tlscert', fallback='/srv/isc-agent/honeypot.crt') +PRIVATE_KEY = config.get('iscagent', 'tlskey', fallback='/srv/isc-agent/honeypot.key') +CERT_KEY = config.get('iscagent', 'tlscert', fallback='/srv/isc-agent/honeypot.crt') # PLUGINS # Read from /etc/dshield.ini file From c8166f48172508e2ca16c3f4cb375622c7e44e5f Mon Sep 17 00:00:00 2001 From: AI <93689721+port0x50@users.noreply.github.com> Date: Fri, 14 Apr 2023 21:41:39 -0400 Subject: [PATCH 39/63] Revert "Updated bin/install.sh and srv/isc-agent/settings.py" --- bin/install.sh | 27 +++------------------------ srv/isc-agent/settings.py | 4 ++-- 2 files changed, 5 insertions(+), 26 deletions(-) diff --git a/bin/install.sh b/bin/install.sh index e69de78..7a0f0e5 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -1827,11 +1827,7 @@ drun 'cat /etc/dshield.ini' dlog "installing cowrie" -# step 1 (Install OS dependencies) - -# support for ubuntu server 22.04.2 LTS -dlog "(re)installing python attrs package" -run "pip3 install --ignore-installed attrs" +# step 1 (Install OS dependencies): done # step 2 (Create a user account) dlog "checking if cowrie OS user already exists" @@ -2008,9 +2004,6 @@ find /etc/rc?.d -name '*cowrie*' -delete run 'systemctl daemon-reload' run 'systemctl enable cowrie.service' -dlog 'deactivate cowrie venv' -run 'deactivate' - ########################################################### ## Installation of isc-agent ########################################################### @@ -2019,17 +2012,16 @@ outlog "Installing ISC-Agent" dlog "installing ISC-Agent" run "mkdir -p ${ISC_AGENT_DIR}" + do_copy $progdir/../srv/isc-agent ${ISC_AGENT_DIR}/../ do_copy $progdir/../lib/systemd/system/isc-agent.service ${systemdpref}/lib/systemd/system/ 644 run "chmod +x /srv/isc-agent/bin/isc-agent" run "mkdir -m 0700 /srv/isc-agent/run" +run "deactivate" OLDPWD=$PWD cd ${ISC_AGENT_DIR} -dlog "activate isc-agent venv" -run "source /srv/isc-agent/.venv/bin/activate" run "pip3 install --upgrade pip" run "pip3 install pipenv" -run "pip3 install --ignore-installed -r requirements.txt --prefix /srv/isc-agent/.venv" run "pipenv lock" run "PIPENV_IGNORE_VIRTUALENVS=1 PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy" run "systemctl daemon-reload" @@ -2037,9 +2029,6 @@ run "systemctl enable isc-agent.service" [ "$ID" != "opensuse" ] && run "systemctl enable systemd-networkd.service systemd-networkd-wait-online.service" cd $OLDPWD -dlog "deactivate isc-agent venv" -run "deactivate" - ########################################################### ## Copying further system files ########################################################### @@ -2202,18 +2191,8 @@ clear if [ ${GENCERT} -eq 1 ]; then dlog "generating new CERTs using ./makecert.sh" ./makecert.sh - dlog "moving certs to /srv/log/isc-agent" - run "mv ~/dshield/etc/CA/keys/honeypot.key /srv/log/isc-agent/honeypot.key" - run "mv ~/dshield/etc/CA/certs/honeypot.crt /srv/log/isc-agent/honeypot.crt" - - dlog "updating /etc/dshield.ini" - run 'echo "tlskey=/srv/log/isc-agent/honeypot.key" >> /etc/dshield.ini' - run 'echo "tlscert=/srv/log/isc-agent/honeypot.crt" >> /etc/dshield.ini' fi - - - # # creating PID directory # diff --git a/srv/isc-agent/settings.py b/srv/isc-agent/settings.py index 1114e8c..1809e7c 100644 --- a/srv/isc-agent/settings.py +++ b/srv/isc-agent/settings.py @@ -91,8 +91,8 @@ # SSL certification key and certificate -PRIVATE_KEY = config.get('iscagent', 'tlskey', fallback='/srv/isc-agent/honeypot.key') -CERT_KEY = config.get('iscagent', 'tlscert', fallback='/srv/isc-agent/honeypot.crt') +PRIVATE_KEY = config.get('isc-agent', 'tlskey', fallback='/srv/isc-agent/honeypot.key') +CERT_KEY = config.get('isc-agent', 'tlscert', fallback='/srv/isc-agent/honeypot.crt') # PLUGINS # Read from /etc/dshield.ini file From a3f5bce2ab85e5059b351f1ac4caf1ba257da4b9 Mon Sep 17 00:00:00 2001 From: port0x50 Date: Sat, 15 Apr 2023 01:58:54 +0000 Subject: [PATCH 40/63] update install.sh and isc-agent settings.py --- bin/install.sh | 27 +++++++++++++++++++++++++-- srv/isc-agent/settings.py | 4 ++-- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/bin/install.sh b/bin/install.sh index 7a0f0e5..9815804 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -2004,6 +2004,10 @@ find /etc/rc?.d -name '*cowrie*' -delete run 'systemctl daemon-reload' run 'systemctl enable cowrie.service' +dlog 'deactivate cowrie venv' +run 'deactivate' + + ########################################################### ## Installation of isc-agent ########################################################### @@ -2011,17 +2015,24 @@ run 'systemctl enable cowrie.service' outlog "Installing ISC-Agent" dlog "installing ISC-Agent" -run "mkdir -p ${ISC_AGENT_DIR}" +# support for ubuntu server 22.04.2 LTS +dlog "(re)installing python attrs package" +run "pip3 install --ignore-installed attrs" +run "mkdir -p ${ISC_AGENT_DIR}" do_copy $progdir/../srv/isc-agent ${ISC_AGENT_DIR}/../ do_copy $progdir/../lib/systemd/system/isc-agent.service ${systemdpref}/lib/systemd/system/ 644 run "chmod +x /srv/isc-agent/bin/isc-agent" run "mkdir -m 0700 /srv/isc-agent/run" -run "deactivate" + +dlog "activate isc-agent venv" +run "source /srv/isc-agent/.venv/bin/activate" + OLDPWD=$PWD cd ${ISC_AGENT_DIR} run "pip3 install --upgrade pip" run "pip3 install pipenv" +run "pip3 install --ignore-installed -r requirements.txt --prefix /srv/isc-agent/.venv" run "pipenv lock" run "PIPENV_IGNORE_VIRTUALENVS=1 PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy" run "systemctl daemon-reload" @@ -2029,6 +2040,9 @@ run "systemctl enable isc-agent.service" [ "$ID" != "opensuse" ] && run "systemctl enable systemd-networkd.service systemd-networkd-wait-online.service" cd $OLDPWD +dlog "deactivate isc-agent venv" +run "deactivate" + ########################################################### ## Copying further system files ########################################################### @@ -2191,6 +2205,15 @@ clear if [ ${GENCERT} -eq 1 ]; then dlog "generating new CERTs using ./makecert.sh" ./makecert.sh + + dlog "moving certs to /srv/isc-agent" + run "mv $SCRIPTDIR/dshield/etc/CA/keys/honeypot.key /srv/isc-agent/honeypot.key" + run "mv $SCRIPTDIR/dshield/etc/CA/certs/honeypot.crt /srv/isc-agent/honeypot.crt" + + dlog "updating /etc/dshield.ini" + run 'echo "tlskey=/srv/isc-agent/honeypot.key" >> /etc/dshield.ini' + run 'echo "tlscert=/srv/isc-agent/honeypot.crt" >> /etc/dshield.ini' + fi # diff --git a/srv/isc-agent/settings.py b/srv/isc-agent/settings.py index 1809e7c..1114e8c 100644 --- a/srv/isc-agent/settings.py +++ b/srv/isc-agent/settings.py @@ -91,8 +91,8 @@ # SSL certification key and certificate -PRIVATE_KEY = config.get('isc-agent', 'tlskey', fallback='/srv/isc-agent/honeypot.key') -CERT_KEY = config.get('isc-agent', 'tlscert', fallback='/srv/isc-agent/honeypot.crt') +PRIVATE_KEY = config.get('iscagent', 'tlskey', fallback='/srv/isc-agent/honeypot.key') +CERT_KEY = config.get('iscagent', 'tlscert', fallback='/srv/isc-agent/honeypot.crt') # PLUGINS # Read from /etc/dshield.ini file From 476ff5f51da4e9a73e010aa7cbf893477359c02f Mon Sep 17 00:00:00 2001 From: port0x50 Date: Sat, 15 Apr 2023 02:37:23 +0000 Subject: [PATCH 41/63] Updated bin/install.sh --- bin/install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/install.sh b/bin/install.sh index 9815804..48afcbb 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -2207,8 +2207,8 @@ if [ ${GENCERT} -eq 1 ]; then ./makecert.sh dlog "moving certs to /srv/isc-agent" - run "mv $SCRIPTDIR/dshield/etc/CA/keys/honeypot.key /srv/isc-agent/honeypot.key" - run "mv $SCRIPTDIR/dshield/etc/CA/certs/honeypot.crt /srv/isc-agent/honeypot.crt" + run "mv $SCRIPTDIR/../etc/CA/keys/honeypot.key /srv/isc-agent/honeypot.key" + run "mv $SCRIPTDIR/../etc/CA/certs/honeypot.crt /srv/isc-agent/honeypot.crt" dlog "updating /etc/dshield.ini" run 'echo "tlskey=/srv/isc-agent/honeypot.key" >> /etc/dshield.ini' From 4f7d2d5cb36518013eb947659d5e452eaf2a0e67 Mon Sep 17 00:00:00 2001 From: AI <93689721+port0x50@users.noreply.github.com> Date: Sun, 16 Apr 2023 03:57:36 +0000 Subject: [PATCH 42/63] Update install.sh Revised install.sh: - looks like activating venv for isc-agent may not be needed --- bin/install.sh | 6 ------ 1 file changed, 6 deletions(-) diff --git a/bin/install.sh b/bin/install.sh index 48afcbb..72f06fb 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -2025,9 +2025,6 @@ do_copy $progdir/../lib/systemd/system/isc-agent.service ${systemdpref}/lib/syst run "chmod +x /srv/isc-agent/bin/isc-agent" run "mkdir -m 0700 /srv/isc-agent/run" -dlog "activate isc-agent venv" -run "source /srv/isc-agent/.venv/bin/activate" - OLDPWD=$PWD cd ${ISC_AGENT_DIR} run "pip3 install --upgrade pip" @@ -2040,9 +2037,6 @@ run "systemctl enable isc-agent.service" [ "$ID" != "opensuse" ] && run "systemctl enable systemd-networkd.service systemd-networkd-wait-online.service" cd $OLDPWD -dlog "deactivate isc-agent venv" -run "deactivate" - ########################################################### ## Copying further system files ########################################################### From 6357f5282690a48b2eaef888b08a40cd8a97e302 Mon Sep 17 00:00:00 2001 From: AI <93689721+port0x50@users.noreply.github.com> Date: Sun, 16 Apr 2023 05:05:21 +0000 Subject: [PATCH 43/63] Update install.sh Updated install.sh: - moved additional package installation into isc-agent venv until after venv lock attempt --- bin/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/install.sh b/bin/install.sh index 72f06fb..0cccf77 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -2029,9 +2029,9 @@ OLDPWD=$PWD cd ${ISC_AGENT_DIR} run "pip3 install --upgrade pip" run "pip3 install pipenv" -run "pip3 install --ignore-installed -r requirements.txt --prefix /srv/isc-agent/.venv" run "pipenv lock" run "PIPENV_IGNORE_VIRTUALENVS=1 PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy" +run "pip3 install --ignore-installed -r requirements.txt --prefix /srv/isc-agent/.venv" run "systemctl daemon-reload" run "systemctl enable isc-agent.service" [ "$ID" != "opensuse" ] && run "systemctl enable systemd-networkd.service systemd-networkd-wait-online.service" From 2235c784e2ecbd9cfcdaf908d026784f0ff8b43f Mon Sep 17 00:00:00 2001 From: AI <93689721+port0x50@users.noreply.github.com> Date: Sun, 16 Apr 2023 05:47:11 +0000 Subject: [PATCH 44/63] Update install.sh Update install.sh: - fixed a typo - "pip3 list --format=legacy" no longer working, revised to columns for all installs --- bin/install.sh | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/bin/install.sh b/bin/install.sh index 0cccf77..93733b9 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -791,11 +791,8 @@ if [ "$FAST" == "0" ]; then fi fi - if [ "$ID" != "opensuse" ]; then - drun 'pip3 list --format=legacy' - else - drun 'pip3 list --format=columns' - fi + drun 'pip3 list --format=columns' + else outlog "Skipping PIP check in FAST mode" fi @@ -1904,7 +1901,7 @@ OLDDIR=$(pwd) cd ${COWRIEDIR} -dlog "installing global rependencies from ${SCRIPTDIR}/requirements.txt" +dlog "installing global dependencies from ${SCRIPTDIR}/requirements.txt" run 'pip3 install --upgrade pip' run "pip3 install -r ${SCRIPTDIR}/requirements.txt" dlog "setting up virtual environment" From 0f6f8497e2df85c449545a7312e18ba7c6466a6c Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sun, 16 Apr 2023 14:23:38 +0000 Subject: [PATCH 45/63] Converted pyproject.toml to requirements.txt --- srv/isc-agent/requirements.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/srv/isc-agent/requirements.txt b/srv/isc-agent/requirements.txt index 3329e2a..bff6715 100644 --- a/srv/isc-agent/requirements.txt +++ b/srv/isc-agent/requirements.txt @@ -1,24 +1,24 @@ appdirs==1.4.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -attrs==22.2.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +attrs==23.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" automat==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" bcrypt==4.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" certifi==2022.12.7 ; python_full_version >= "3.7.1" and python_version < "4" cffi==1.15.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" charset-normalizer==3.1.0 ; python_full_version >= "3.7.1" and python_version < "4" constantly==15.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -cryptography==40.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +cryptography==40.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" cython-test-exception-raiser==1.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" dnspython==2.3.0 ; python_full_version >= "3.7.1" and python_version < "4.0" -email-validator==1.3.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +email-validator==2.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" exceptiongroup==1.1.1 ; python_full_version >= "3.7.1" and python_version < "3.11" greenlet==2.0.2 ; python_full_version >= "3.7.1" and platform_machine == "aarch64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "ppc64le" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "x86_64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "amd64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "AMD64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "win32" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "WIN32" and python_full_version < "4.0.0" h2==4.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hpack==4.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hyperframe==6.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hyperlink==21.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -hypothesis==6.71.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +hypothesis==6.72.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" idna==3.4 ; python_full_version >= "3.7.1" and python_version < "4" -importlib-metadata==6.3.0 ; python_full_version >= "3.7.1" and python_version < "3.8" +importlib-metadata==6.4.1 ; python_full_version >= "3.7.1" and python_version < "3.8" incremental==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" jinja2==3.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" markupsafe==2.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" From da9e5a3b8cb5e73cb0b720ae19961bd02ef0ddb6 Mon Sep 17 00:00:00 2001 From: AI <93689721+port0x50@users.noreply.github.com> Date: Sun, 16 Apr 2023 11:58:17 -0400 Subject: [PATCH 46/63] Update status.sh Updated: - was returning "isc-agent not running"; revised to check the status of isc-agent service directly with systemctl --- bin/status.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/status.sh b/bin/status.sh index 954bcb2..aee0f4e 100755 --- a/bin/status.sh +++ b/bin/status.sh @@ -222,7 +222,7 @@ fi if [ ${TESTS['fw']} -eq 0 ] ; then echo "${RED}MISSING${NC}: firewall rules" fi -x=$(ps -ef | grep -c 'isc-agent\sstart') +x=$((systemctl is-active isc-agent > /dev/null && echo 1) || echo 0) if [ $x -eq 1 ]; then echo "${GREEN}OK${NC}: isc-agent running" TESTS['iscagentrunnint']=1 From b5a131bd544fc7ac13dac739e59bbcc4718fa25f Mon Sep 17 00:00:00 2001 From: AI <93689721+port0x50@users.noreply.github.com> Date: Wed, 26 Apr 2023 20:46:10 -0400 Subject: [PATCH 47/63] Fix plugins' main.py to update isc-agent.sqlite - change commits logs to the sqlite file --- srv/isc-agent/plugins/tcp/http/main.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/srv/isc-agent/plugins/tcp/http/main.py b/srv/isc-agent/plugins/tcp/http/main.py index 9e1e9a7..cb54628 100644 --- a/srv/isc-agent/plugins/tcp/http/main.py +++ b/srv/isc-agent/plugins/tcp/http/main.py @@ -102,6 +102,8 @@ def log_request(request_attributes: Dict, signature_id: Optional[int] = None, re def submit_logs(): # Submit logs request_logs = settings.DATABASE_SESSION.query(RequestLog).all() + settings.DATABASE_SESSION.add_all(request_logs) # adds logs to current session + settings.DATABASE_SESSION.commit() # commits the change to the db (/srv/db/isc-agent.sqlite) logger.debug(request_logs) if request_logs: auth = get_auth() From 796337c03be0799112bf344bf56c9377bd07f08e Mon Sep 17 00:00:00 2001 From: AI <93689721+port0x50@users.noreply.github.com> Date: Fri, 28 Apr 2023 22:18:37 -0400 Subject: [PATCH 48/63] Update main.py --- srv/isc-agent/plugins/tcp/http/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srv/isc-agent/plugins/tcp/http/main.py b/srv/isc-agent/plugins/tcp/http/main.py index cb54628..9f96bb9 100644 --- a/srv/isc-agent/plugins/tcp/http/main.py +++ b/srv/isc-agent/plugins/tcp/http/main.py @@ -102,8 +102,8 @@ def log_request(request_attributes: Dict, signature_id: Optional[int] = None, re def submit_logs(): # Submit logs request_logs = settings.DATABASE_SESSION.query(RequestLog).all() - settings.DATABASE_SESSION.add_all(request_logs) # adds logs to current session - settings.DATABASE_SESSION.commit() # commits the change to the db (/srv/db/isc-agent.sqlite) + #settings.DATABASE_SESSION.add_all(request_logs) # adds logs to current session + #settings.DATABASE_SESSION.commit() # commits the change to the db (/srv/db/isc-agent.sqlite) logger.debug(request_logs) if request_logs: auth = get_auth() From 3d6ef4f993b25188763868b33a2d45ddfaf37f03 Mon Sep 17 00:00:00 2001 From: AI <93689721+port0x50@users.noreply.github.com> Date: Sat, 29 Apr 2023 17:19:00 -0400 Subject: [PATCH 49/63] Update models.py - webhoneypot log Update creates /srv/db/webhoneypot.json - preserves request log, signature, and response on a per entry basis - does not preserve the full response, just the headers, status code, and comment (if present) --- srv/isc-agent/plugins/tcp/http/models.py | 31 +++++++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/srv/isc-agent/plugins/tcp/http/models.py b/srv/isc-agent/plugins/tcp/http/models.py index 40cd04a..2a5c7d5 100644 --- a/srv/isc-agent/plugins/tcp/http/models.py +++ b/srv/isc-agent/plugins/tcp/http/models.py @@ -153,22 +153,45 @@ def prepare_database(): create_tables() hydrate_tables() +def read_db_and_log(file_name="/srv/db/webhoneypot.json"): + unique_logs = set() + logs = [] + + if os.path.exists(file_name): + with open(file_name, "r") as file: + unique_logs = set(json.load(file)) -def read_db_and_log(): for instance in settings.DATABASE_SESSION.query(RequestLog).order_by(RequestLog.id): + signature = settings.DATABASE_SESSION.query(Signature).filter(Signature.id == instance.signature_id).first() + signature_rules = {"max score": signature.max_score, "rules": signature.rules} if signature else None + + resp = settings.DATABASE_SESSION.query(Response).filter(Response.id == instance.response_id).first() + resp_details = {"comment": resp.comment, "headers": resp.headers, "status_code": resp.status_code} if resp else None + try: useragent = ast.literal_eval(instance.headers)['user-agent'], except KeyError: useragent = '' log_data = { - 'time': instance.time, + 'time': instance.time.isoformat(), 'headers': ast.literal_eval(instance.headers), 'sip': instance.client_ip, 'dip': instance.target_ip, 'method': instance.method, 'url': instance.path, 'data': instance.data, - 'useragent': useragent + 'useragent': useragent, + 'version': (instance.version).decode("utf-8"), + 'response_id': resp_details, + 'signature_id': signature_rules } - logs.append(log_data) + log_data_str = json.dumps(log_data) + + if log_data_str not in unique_logs: + unique_logs.add(log_data_str) + logs.append(log_data) + + with open(file_name, "w") as file: + json.dump(list(unique_logs), file) + return logs From a3c9fcd28bfec44ce316f08beccb33e174908437 Mon Sep 17 00:00:00 2001 From: AI <93689721+port0x50@users.noreply.github.com> Date: Sat, 29 Apr 2023 17:22:16 -0400 Subject: [PATCH 50/63] Update main.py --- srv/isc-agent/plugins/tcp/http/main.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/srv/isc-agent/plugins/tcp/http/main.py b/srv/isc-agent/plugins/tcp/http/main.py index 9f96bb9..9e1e9a7 100644 --- a/srv/isc-agent/plugins/tcp/http/main.py +++ b/srv/isc-agent/plugins/tcp/http/main.py @@ -102,8 +102,6 @@ def log_request(request_attributes: Dict, signature_id: Optional[int] = None, re def submit_logs(): # Submit logs request_logs = settings.DATABASE_SESSION.query(RequestLog).all() - #settings.DATABASE_SESSION.add_all(request_logs) # adds logs to current session - #settings.DATABASE_SESSION.commit() # commits the change to the db (/srv/db/isc-agent.sqlite) logger.debug(request_logs) if request_logs: auth = get_auth() From 70ed490e6d71009c706a2753740bb578a907485a Mon Sep 17 00:00:00 2001 From: AI <93689721+port0x50@users.noreply.github.com> Date: Sat, 29 Apr 2023 18:10:30 -0400 Subject: [PATCH 51/63] Update models.py changed "max score" to "max_score" --- srv/isc-agent/plugins/tcp/http/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srv/isc-agent/plugins/tcp/http/models.py b/srv/isc-agent/plugins/tcp/http/models.py index 2a5c7d5..0dea157 100644 --- a/srv/isc-agent/plugins/tcp/http/models.py +++ b/srv/isc-agent/plugins/tcp/http/models.py @@ -163,7 +163,7 @@ def read_db_and_log(file_name="/srv/db/webhoneypot.json"): for instance in settings.DATABASE_SESSION.query(RequestLog).order_by(RequestLog.id): signature = settings.DATABASE_SESSION.query(Signature).filter(Signature.id == instance.signature_id).first() - signature_rules = {"max score": signature.max_score, "rules": signature.rules} if signature else None + signature_rules = {"max_score": signature.max_score, "rules": signature.rules} if signature else None resp = settings.DATABASE_SESSION.query(Response).filter(Response.id == instance.response_id).first() resp_details = {"comment": resp.comment, "headers": resp.headers, "status_code": resp.status_code} if resp else None From c0b7bd6a8309495c8385bb1d6ae7805e9707a499 Mon Sep 17 00:00:00 2001 From: AI <93689721+port0x50@users.noreply.github.com> Date: Sun, 30 Apr 2023 06:45:46 -0400 Subject: [PATCH 52/63] Update models.py datetime was not updating with each webhoneypot.json entry - it is now --- srv/isc-agent/plugins/tcp/http/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srv/isc-agent/plugins/tcp/http/models.py b/srv/isc-agent/plugins/tcp/http/models.py index 0dea157..28fb17f 100644 --- a/srv/isc-agent/plugins/tcp/http/models.py +++ b/srv/isc-agent/plugins/tcp/http/models.py @@ -173,7 +173,7 @@ def read_db_and_log(file_name="/srv/db/webhoneypot.json"): except KeyError: useragent = '' log_data = { - 'time': instance.time.isoformat(), + 'time': datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S.%f"), 'headers': ast.literal_eval(instance.headers), 'sip': instance.client_ip, 'dip': instance.target_ip, From ba8b7bd82007ea49a8f549d76168836459e387c3 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sun, 30 Apr 2023 17:35:59 +0000 Subject: [PATCH 53/63] Converted pyproject.toml to requirements.txt --- srv/isc-agent/requirements.txt | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/srv/isc-agent/requirements.txt b/srv/isc-agent/requirements.txt index bff6715..f9246a6 100644 --- a/srv/isc-agent/requirements.txt +++ b/srv/isc-agent/requirements.txt @@ -2,29 +2,29 @@ appdirs==1.4.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0 attrs==23.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" automat==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" bcrypt==4.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -certifi==2022.12.7 ; python_full_version >= "3.7.1" and python_version < "4" +certifi==2022.12.7 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" cffi==1.15.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -charset-normalizer==3.1.0 ; python_full_version >= "3.7.1" and python_version < "4" +charset-normalizer==3.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" constantly==15.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" cryptography==40.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" cython-test-exception-raiser==1.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" dnspython==2.3.0 ; python_full_version >= "3.7.1" and python_version < "4.0" -email-validator==2.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +email-validator==2.0.0.post2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" exceptiongroup==1.1.1 ; python_full_version >= "3.7.1" and python_version < "3.11" greenlet==2.0.2 ; python_full_version >= "3.7.1" and platform_machine == "aarch64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "ppc64le" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "x86_64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "amd64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "AMD64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "win32" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "WIN32" and python_full_version < "4.0.0" h2==4.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hpack==4.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hyperframe==6.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hyperlink==21.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -hypothesis==6.72.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -idna==3.4 ; python_full_version >= "3.7.1" and python_version < "4" -importlib-metadata==6.4.1 ; python_full_version >= "3.7.1" and python_version < "3.8" +hypothesis==6.75.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +idna==3.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +importlib-metadata==6.6.0 ; python_full_version >= "3.7.1" and python_version < "3.8" incremental==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" jinja2==3.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" markupsafe==2.1.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" priority==1.3.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pyasn1-modules==0.2.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pyasn1==0.4.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pyasn1-modules==0.3.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pyasn1==0.5.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pycparser==2.21 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pydantic[dotenv,email]==1.10.7 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pyhamcrest==2.0.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" @@ -32,15 +32,15 @@ pyopenssl==23.1.1 ; python_full_version >= "3.7.1" and python_full_version < "4. pyserial==3.5 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" python-dotenv==0.21.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pywin32==306 ; platform_system == "Windows" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" -requests==2.28.2 ; python_full_version >= "3.7.1" and python_version < "4" +requests==2.29.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" service-identity==21.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -setuptools==67.6.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +setuptools==67.7.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" six==1.16.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" sortedcontainers==2.4.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -sqlalchemy==2.0.9 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +sqlalchemy==2.0.11 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" twisted-iocpsupport==1.0.3 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and platform_system == "Windows" twisted[all-non-platform,http2]==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" typing-extensions==4.5.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -urllib3==1.26.15 ; python_full_version >= "3.7.1" and python_version < "4" +urllib3==1.26.15 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" zipp==3.15.0 ; python_full_version >= "3.7.1" and python_version < "3.8" zope-interface==6.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" From cfe849a0b2198b1ea10068926d8958cc5be5bd4d Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Mon, 15 May 2023 10:50:22 -0400 Subject: [PATCH 54/63] adding interface check --- bin/install.sh | 16 +++++++++++----- bin/status.sh | 13 +++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/bin/install.sh b/bin/install.sh index 93733b9..b6e1341 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -617,7 +617,6 @@ if [ "$FAST" == "0" ]; then run 'yum -q update -y' outlog "Installing additional packages" run 'yum -q install -y dialog perl-libwww-perl perl-Switch rng-tools boost-random jq MySQL-python mariadb mariadb-devel iptables-services' - outlog "The new script /srv/dshield/webpy.sh needs lsof; it might need to be added here to be installed." fi if [ "$ID" == "opensuse" ]; then @@ -1211,6 +1210,13 @@ adminports="'${ADMINPORTS}'" dlog "firewall config: IPs / nets for which firewall logging should NOT be done" +if [ "${database}" == "" ]; then + database='sqlite+pysqlite:////srv/db/isc-agent.sqlite' +fi +if [ "${archivedatabase}" == "" ]; then + archivedatabase='none' +fi + if [ "${nofwlogging}" == "" ]; then # default: local net & connected IPs (as the user confirmed) nofwlogging="${localnet} ${CONIPS}" @@ -1702,8 +1708,6 @@ drun 'cat /etc/rsyslog.d/dshield.conf' run "mkdir -p ${DSHIELDDIR}" do_copy $progdir/../srv/dshield/fwlogparser.py ${DSHIELDDIR} 700 -do_copy $progdir/../srv/dshield/weblogsubmit.py ${DSHIELDDIR} 700 -do_copy $progdir/../srv/dshield/webpy.sh ${DSHIELDDIR} 700 do_copy $progdir/status.sh ${DSHIELDDIR} 700 do_copy $progdir/cleanup.sh ${DSHIELDDIR} 700 do_copy $progdir/../srv/dshield/DShield.py ${DSHIELDDIR} 700 @@ -1733,7 +1737,6 @@ fi dlog "creating /etc/cron.d/dshield" offset1=$(shuf -i0-29 -n1) offset2=$((offset1 + 30)) -echo "${offset1},${offset2} * * * * root cd ${DSHIELDDIR}; ./weblogsubmit.py ; sleep 10; ./webpy.sh" >/etc/cron.d/dshield echo "${offset1},${offset2} * * * * root ${DSHIELDDIR}/fwlogparser.py" >>/etc/cron.d/dshield offset1=$(shuf -i0-59 -n1) offset2=$(shuf -i0-23 -n1) @@ -1803,7 +1806,10 @@ run 'echo "http_ports = [8000]" >> /etc/dshield.ini' run 'echo "https_ports = [8443]" >> /etc/dshield.ini' run 'echo "submit_logs_rate = 300" >> /etc/dshield.ini' run 'echo "[iscagent]" >> /etc/dshield.ini' -run 'echo "database=sqlite+pysqlite:////srv/db/isc-agent.sqlite" >> /etc/dshield.ini' +database=$(quotespace $database) +run 'echo "database=$database" >> /etc/dshield.ini' +archivedatabase=$(quotespace $archivedatabase) +run 'echo "archivedatabase=$archivedatabase" >> /etc/dshield.ini' run 'echo "debug=false" >> /etc/dshield.ini' dlog "new /etc/dshield.ini follows" drun 'cat /etc/dshield.ini' diff --git a/bin/status.sh b/bin/status.sh index aee0f4e..718f0d0 100755 --- a/bin/status.sh +++ b/bin/status.sh @@ -138,6 +138,13 @@ echo API Key: $apikey echo User-ID: $userid echo My Internal IP: $myip echo My External IP: $honeypotip +defaultinterface=$(ip -4 route show | grep '^default ' | head -1 | cut -f5 -d' ') +if [ $defaultinterface == $interface ]; then + echo Interface: $interface ${GREEN}OK${NC} +else + echo Interface: $interface ${RED}ERROR: interface should be $defaultinterface${NC} +fi + echo " ###### Are My Reports Received? ###### @@ -239,6 +246,12 @@ else echo "${RED}ERROR${NC}: webserver not exposed. check network firewall" TESTS['exposed']=0 fi +if [ $defaultinterface == $interface ]; then + echo ${GREEN}OK${NC}: correct interface +else + echo ${RED}ERROR${NC}: wrong interface. Should be $defaultinterface but is $interface. See /etc/dshield.ini +fi + if [ -f "/var/log/messages" ]; then voltagecount=$(grep -c 'Voltage normalised' /var/log/messages) if [ $voltagecount -gt 10 ]; then From f4ce864aa62b3a988b2df1fccd5732f169526325 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Mon, 15 May 2023 14:51:15 +0000 Subject: [PATCH 55/63] Converted pyproject.toml to requirements.txt --- srv/isc-agent/requirements.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/srv/isc-agent/requirements.txt b/srv/isc-agent/requirements.txt index f9246a6..ea1f4c2 100644 --- a/srv/isc-agent/requirements.txt +++ b/srv/isc-agent/requirements.txt @@ -2,7 +2,7 @@ appdirs==1.4.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0 attrs==23.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" automat==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" bcrypt==4.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -certifi==2022.12.7 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +certifi==2023.5.7 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" cffi==1.15.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" charset-normalizer==3.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" constantly==15.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" @@ -16,7 +16,7 @@ h2==4.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hpack==4.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hyperframe==6.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hyperlink==21.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -hypothesis==6.75.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +hypothesis==6.75.3 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" idna==3.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" importlib-metadata==6.6.0 ; python_full_version >= "3.7.1" and python_version < "3.8" incremental==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" @@ -32,15 +32,15 @@ pyopenssl==23.1.1 ; python_full_version >= "3.7.1" and python_full_version < "4. pyserial==3.5 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" python-dotenv==0.21.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pywin32==306 ; platform_system == "Windows" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" -requests==2.29.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +requests==2.30.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" service-identity==21.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" setuptools==67.7.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" six==1.16.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" sortedcontainers==2.4.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -sqlalchemy==2.0.11 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +sqlalchemy==2.0.13 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" twisted-iocpsupport==1.0.3 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and platform_system == "Windows" twisted[all-non-platform,http2]==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" typing-extensions==4.5.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -urllib3==1.26.15 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +urllib3==2.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" zipp==3.15.0 ; python_full_version >= "3.7.1" and python_version < "3.8" zope-interface==6.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" From 21bbbd07b91c0c38e5cc573bd2f6e6ef57a4ef18 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Mon, 15 May 2023 14:01:58 -0400 Subject: [PATCH 56/63] fixing misc issues --- srv/isc-agent/plugins/tcp/http/models.py | 77 ++++++++++++++++-------- 1 file changed, 51 insertions(+), 26 deletions(-) diff --git a/srv/isc-agent/plugins/tcp/http/models.py b/srv/isc-agent/plugins/tcp/http/models.py index 28fb17f..46efc69 100644 --- a/srv/isc-agent/plugins/tcp/http/models.py +++ b/srv/isc-agent/plugins/tcp/http/models.py @@ -20,6 +20,9 @@ class RequestLog(BaseModel): + """ + Request Log class (for web logs + """ __tablename__ = 'request_log' id = Column(Integer, primary_key=True) @@ -38,9 +41,15 @@ class RequestLog(BaseModel): signature = relationship('Signature', back_populates='request_logs') def __str__(self): + """ + represent log as a string + """ return str(self.id) def format_log_for_submission(self): + """ + format logs in the json format needed to submit them + """ headers = json.loads(self.headers.replace("'", '"')) return { "time": self.time.timestamp(), @@ -54,6 +63,9 @@ def format_log_for_submission(self): class Response(BaseModel): + """ + pre-defined responses sent back to clients + """ __tablename__ = 'response' id = Column(Integer, primary_key=True) @@ -63,29 +75,45 @@ class Response(BaseModel): status_code = Column(Integer) request_logs = relationship('RequestLog', back_populates='response') - signatures = relationship('Signature', back_populates='responses', secondary='signature_response') - signature_responses = relationship('SignatureResponse', back_populates='response', viewonly=True) + signatures = relationship('Signature', back_populates='responses', + secondary='signature_response') + signature_responses = relationship('SignatureResponse', + back_populates='response', viewonly=True) def __str__(self): + """ + represent response as a string by returning the ID + """ return str(self.id) class Signature(BaseModel): + """ + Signatures matching requests to responses + """ __tablename__ = 'signature' id = Column(Integer, primary_key=True) max_score = Column(Integer, nullable=False) rules = Column(JSON, nullable=False) - responses = relationship('Response', back_populates='signatures', secondary='signature_response') + responses = relationship('Response', back_populates='signatures', + secondary='signature_response') request_logs = relationship('RequestLog', back_populates='signature') - signature_responses = relationship('SignatureResponse', back_populates='signature', viewonly=True) + signature_responses = relationship('SignatureResponse', + back_populates='signature', viewonly=True) def __str__(self): + """ + represent as a string by returning id + """ return str(self.id) class SignatureResponse(BaseModel): + """ + response to send back + """ __tablename__ = 'signature_response' response_id = Column(Integer, ForeignKey('response.id'), primary_key=True) @@ -95,14 +123,23 @@ class SignatureResponse(BaseModel): signature = relationship('Signature', back_populates='signature_responses', viewonly=True) def __str__(self): + """ + string is signature and response + """ return f'{repr(self.signature)} : {repr(self.response)}' def create_tables(): + """ + create database tables + """ settings.DATABASE_MAPPER_REGISTRY.metadata.create_all(settings.DATABASE_ENGINE) def hydrate_tables(): + """ + potentially insert data into the tables we just created + """ # Empty tables settings.DATABASE_SESSION.query(RequestLog).delete() settings.DATABASE_SESSION.query(SignatureResponse).delete() @@ -113,8 +150,8 @@ def hydrate_tables(): resp = requests.get( f'{settings.DSHIELD_URL}/api/honeypotrules/', verify=False ) - except requests.exceptions.ConnectionError as e: - logger.exception(f"unable to connect to DShield {e}") + except requests.exceptions.ConnectionError as err: + logger.exception(f"unable to connect to DShield {err}") sys.exit() if not resp.ok: logger.exception("HTTP plugin failed to download artifacts.") @@ -125,9 +162,9 @@ def hydrate_tables(): for response in resp.json()["responses"]: try: response_schema = schemas.Response(**response) - except ValidationError as e: + except ValidationError as err: logger.warning('Response failed: %s', response) - logger.warning(e, exc_info=True) + logger.warning(err, exc_info=True) continue responses.append(Response(**response_schema.dict())) settings.DATABASE_SESSION.add_all(responses) @@ -136,13 +173,14 @@ def hydrate_tables(): for signature in resp.json()["signatures"]: try: signature_schema = schemas.Signature(**signature) - except ValidationError as e: + except ValidationError as err: logger.warning('Signature failed: %s', signature) - logger.warning(e, exc_info=True) + logger.warning(err, exc_info=True) continue signature_schema_dict = signature_schema.dict() response_ids = signature_schema_dict.pop('responses') - associated_responses = settings.DATABASE_SESSION.query(Response).filter(Response.id.in_(response_ids)) + associated_responses = settings.DATABASE_SESSION.query(Response).filter( + Response.id.in_(response_ids)) signature_schema_dict['responses'] = list(associated_responses) signatures.append(Signature(**signature_schema_dict)) settings.DATABASE_SESSION.add_all(signatures) @@ -154,13 +192,7 @@ def prepare_database(): hydrate_tables() def read_db_and_log(file_name="/srv/db/webhoneypot.json"): - unique_logs = set() logs = [] - - if os.path.exists(file_name): - with open(file_name, "r") as file: - unique_logs = set(json.load(file)) - for instance in settings.DATABASE_SESSION.query(RequestLog).order_by(RequestLog.id): signature = settings.DATABASE_SESSION.query(Signature).filter(Signature.id == instance.signature_id).first() signature_rules = {"max_score": signature.max_score, "rules": signature.rules} if signature else None @@ -185,13 +217,6 @@ def read_db_and_log(file_name="/srv/db/webhoneypot.json"): 'response_id': resp_details, 'signature_id': signature_rules } - log_data_str = json.dumps(log_data) - - if log_data_str not in unique_logs: - unique_logs.add(log_data_str) - logs.append(log_data) - - with open(file_name, "w") as file: - json.dump(list(unique_logs), file) - + with open(file_name, "a") as file: + json.dump(log_data, file) return logs From 0d3dce50a001bc973d1620db2ce53c83cef56858 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Mon, 22 May 2023 16:24:11 -0400 Subject: [PATCH 57/63] adding venv creation for isc-agent --- bin/install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/install.sh b/bin/install.sh index b6e1341..d4bb813 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -2034,6 +2034,7 @@ run "pip3 install --upgrade pip" run "pip3 install pipenv" run "pipenv lock" run "PIPENV_IGNORE_VIRTUALENVS=1 PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy" +run "python -m venv /srv/isc-agent/.venv" run "pip3 install --ignore-installed -r requirements.txt --prefix /srv/isc-agent/.venv" run "systemctl daemon-reload" run "systemctl enable isc-agent.service" From 964573b4fa9022fa6cc4cf34c0d194e957358b06 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Mon, 22 May 2023 20:25:00 +0000 Subject: [PATCH 58/63] Converted pyproject.toml to requirements.txt --- srv/isc-agent/requirements.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/srv/isc-agent/requirements.txt b/srv/isc-agent/requirements.txt index ea1f4c2..7331c15 100644 --- a/srv/isc-agent/requirements.txt +++ b/srv/isc-agent/requirements.txt @@ -11,7 +11,7 @@ cython-test-exception-raiser==1.0.2 ; python_full_version >= "3.7.1" and python_ dnspython==2.3.0 ; python_full_version >= "3.7.1" and python_version < "4.0" email-validator==2.0.0.post2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" exceptiongroup==1.1.1 ; python_full_version >= "3.7.1" and python_version < "3.11" -greenlet==2.0.2 ; python_full_version >= "3.7.1" and platform_machine == "aarch64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "ppc64le" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "x86_64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "amd64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "AMD64" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "win32" and python_full_version < "4.0.0" or python_full_version >= "3.7.1" and platform_machine == "WIN32" and python_full_version < "4.0.0" +greenlet==2.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and (platform_machine == "win32" or platform_machine == "WIN32" or platform_machine == "AMD64" or platform_machine == "amd64" or platform_machine == "x86_64" or platform_machine == "ppc64le" or platform_machine == "aarch64") h2==4.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hpack==4.0.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" hyperframe==6.0.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" @@ -32,12 +32,12 @@ pyopenssl==23.1.1 ; python_full_version >= "3.7.1" and python_full_version < "4. pyserial==3.5 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" python-dotenv==0.21.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pywin32==306 ; platform_system == "Windows" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" -requests==2.30.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +requests==2.31.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" service-identity==21.1.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -setuptools==67.7.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +setuptools==67.8.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" six==1.16.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" sortedcontainers==2.4.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -sqlalchemy==2.0.13 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +sqlalchemy==2.0.15 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" twisted-iocpsupport==1.0.3 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and platform_system == "Windows" twisted[all-non-platform,http2]==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" typing-extensions==4.5.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" From 511644cb3d77b94ccd1610fa10398ce1f3f60aa3 Mon Sep 17 00:00:00 2001 From: "Johannes B. Ullrich" Date: Tue, 23 May 2023 16:40:27 -0400 Subject: [PATCH 59/63] cleanup. moving main.py to isc-agent.py and renaming isc-agent venv --- bin/install.sh | 12 ++++++------ srv/isc-agent/Dockerfile | 2 +- srv/isc-agent/Makefile | 2 +- srv/isc-agent/bin/isc-agent | 4 ++-- srv/isc-agent/{main.py => isc-agent.py} | 0 5 files changed, 10 insertions(+), 10 deletions(-) rename srv/isc-agent/{main.py => isc-agent.py} (100%) diff --git a/bin/install.sh b/bin/install.sh index d4bb813..273f7b3 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -2021,7 +2021,6 @@ dlog "installing ISC-Agent" # support for ubuntu server 22.04.2 LTS dlog "(re)installing python attrs package" run "pip3 install --ignore-installed attrs" - run "mkdir -p ${ISC_AGENT_DIR}" do_copy $progdir/../srv/isc-agent ${ISC_AGENT_DIR}/../ do_copy $progdir/../lib/systemd/system/isc-agent.service ${systemdpref}/lib/systemd/system/ 644 @@ -2031,13 +2030,14 @@ run "mkdir -m 0700 /srv/isc-agent/run" OLDPWD=$PWD cd ${ISC_AGENT_DIR} run "pip3 install --upgrade pip" -run "pip3 install pipenv" -run "pipenv lock" -run "PIPENV_IGNORE_VIRTUALENVS=1 PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy" -run "python -m venv /srv/isc-agent/.venv" -run "pip3 install --ignore-installed -r requirements.txt --prefix /srv/isc-agent/.venv" +ISCAGENTENV="/srv/isc-agent/virtenv" +run "virtualenv --python=python3 $ISCAGENTENV" +run "pip3 install --ignore-installed -r requirements.txt --prefix $ISCAGENTENV" run "systemctl daemon-reload" run "systemctl enable isc-agent.service" +dlog 'deactivate isc-agent venv' +run 'deactivate' + [ "$ID" != "opensuse" ] && run "systemctl enable systemd-networkd.service systemd-networkd-wait-online.service" cd $OLDPWD diff --git a/srv/isc-agent/Dockerfile b/srv/isc-agent/Dockerfile index 005e59a..83d7ea6 100644 --- a/srv/isc-agent/Dockerfile +++ b/srv/isc-agent/Dockerfile @@ -19,4 +19,4 @@ EXPOSE 8080 EXPOSE 8443 EXPOSE 3000 -CMD ["poetry", "run", "python", "main.py"] +CMD ["poetry", "run", "python", "isc-agent.py"] diff --git a/srv/isc-agent/Makefile b/srv/isc-agent/Makefile index a3d5982..a39b19d 100644 --- a/srv/isc-agent/Makefile +++ b/srv/isc-agent/Makefile @@ -43,7 +43,7 @@ install-prod-package ipp: .PHONY: lint l lint l: - docker run -v $(PWD):/opt/sans-isc-agent --rm $(IMAGE_NAME) sh -c "pylint main.py ./plugins" + docker run -v $(PWD):/opt/sans-isc-agent --rm $(IMAGE_NAME) sh -c "pylint isc-agent.py ./plugins" .PHONY: security sec security sec: diff --git a/srv/isc-agent/bin/isc-agent b/srv/isc-agent/bin/isc-agent index 714feb0..e737116 100644 --- a/srv/isc-agent/bin/isc-agent +++ b/srv/isc-agent/bin/isc-agent @@ -20,8 +20,8 @@ function startup() { if [[ $s -eq 0 ]]; then echo "starting isc-agent" cd /srv/isc-agent - activate_venv .venv - python3 ./main.py > /dev/null 2>/srv/log/isc-agent.err & + activate_venv virtenv + python3 ./isc-agent.py > /dev/null 2>/srv/log/isc-agent.err & echo $! > $PIDFILE fi status diff --git a/srv/isc-agent/main.py b/srv/isc-agent/isc-agent.py similarity index 100% rename from srv/isc-agent/main.py rename to srv/isc-agent/isc-agent.py From f3a058df7b216549742281d33ea8ebf7385d5536 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 23 May 2023 20:41:56 +0000 Subject: [PATCH 60/63] Converted pyproject.toml to requirements.txt --- srv/isc-agent/requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srv/isc-agent/requirements.txt b/srv/isc-agent/requirements.txt index 7331c15..7d2781d 100644 --- a/srv/isc-agent/requirements.txt +++ b/srv/isc-agent/requirements.txt @@ -26,7 +26,7 @@ priority==1.3.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0. pyasn1-modules==0.3.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pyasn1==0.5.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pycparser==2.21 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -pydantic[dotenv,email]==1.10.7 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +pydantic[dotenv,email]==1.10.8 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pyhamcrest==2.0.4 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pyopenssl==23.1.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" pyserial==3.5 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" @@ -40,7 +40,7 @@ sortedcontainers==2.4.0 ; python_full_version >= "3.7.1" and python_full_version sqlalchemy==2.0.15 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" twisted-iocpsupport==1.0.3 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and platform_system == "Windows" twisted[all-non-platform,http2]==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -typing-extensions==4.5.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +typing-extensions==4.6.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" urllib3==2.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" zipp==3.15.0 ; python_full_version >= "3.7.1" and python_version < "3.8" zope-interface==6.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" From bfa43511ce50bc51f077307f33f11ae1745bd68b Mon Sep 17 00:00:00 2001 From: MHeezy <46223175+MHeezy@users.noreply.github.com> Date: Tue, 23 May 2023 23:12:18 -0400 Subject: [PATCH 61/63] Update AWS.md Adjusted organization (separate sections for creating instance and installing dshield) New screenshots reflecting newer AWS menus/navigation --- docs/install-instructions/AWS.md | 66 +++++++++++++++++++++++--------- 1 file changed, 48 insertions(+), 18 deletions(-) diff --git a/docs/install-instructions/AWS.md b/docs/install-instructions/AWS.md index 054deb0..8b4d0fa 100644 --- a/docs/install-instructions/AWS.md +++ b/docs/install-instructions/AWS.md @@ -1,42 +1,72 @@ -Use the following guide to deploy DShield honeypot using the free compute tier (https://aws.amazon.com/ec2/?did=ft_card&trk=ft_card). This guide uses Ubuntu as Amazon has deprecated AWS Linux AMI (https://aws.amazon.com/amazon-linux-ami/#:~:text=The%20Amazon%20Linux%20AMI%20will,long%20term%20support%20through%202023.) +Overview +======== +Use the following guide to deploy DShield honeypot using the [free compute tier](https://aws.amazon.com/free/). +This guide uses the Ubuntu 20.04 LTS Server AMI (Amazon Machine Image). +This guide assumes you already have an AWS account and some basic knowledge of the platform. If you need help getting started, see [this link](https://docs.aws.amazon.com/SetUp/latest/UserGuide/setup-AWSsignup.html). -1. **Be sure to select the region you want to launch the honeypot.** -![Image of AWS location selection for launching the honeypot](https://github.com/parthdmaniar/images/blob/master/1_selecting_location.png) +Select a Region +---------------- +1. On the top right corner of the AWS console, select the region button. Using this dropdown, you can change the region that your honeypot will deploy into. +![Image of AWS location selection for launching the honeypot](https://github.com/MHeezy/images/blob/main/aws_region_selection.png) -2. **Navigate to EC2 service & click launch instance:** -![Launch new instance](https://github.com/parthdmaniar/images/blob/master/3_launch_instance.png) +Create the EC2 Instance +------------------------ +1. Navigate to EC2 service & select "Launch instance": +![Launch new instance](https://github.com/MHeezy/images/blob/main/ec2_launch_instance.png) +2. Under "Names and tags", enter a name for the instance. -3. **Select "free tier eligible" and search for Ubuntu images, select version 18.04. *Please be advised that current installer build does not work on Ubuntu 20.04:** -![OS Selection](https://github.com/dlee35/images/blob/main/dshield/2_OS_Selection.png) +3. Under "Application and OS Images", there are a number of "Quick Start" images, including Ubuntu. Select "Ubuntu" from this menu. In the dropdown below that, select "Ubuntu Server 20.04 LTS (HVM), SSD Volume Type". This is the current, tested version for dshield. +![OS Selection](https://github.com/MHeezy/images/blob/main/ubuntu_ami_selection.png) -4. **Choose a general-purpose t2.micro instance along with storage size of your preference:** -![instance_selection](https://github.com/parthdmaniar/images/blob/master/4_ec2_instance_selection.png) -![disk_selection](https://github.com/parthdmaniar/images/blob/master/5_ec2_disk_selection.png) +4. Under "Instance type", the default "t2.micro" will suffice for dshield, and is free-tier eligible. For certain use cases, feel free to adjust this setting, at the risk of incurring increased costs. +![Select Instance Type](https://github.com/MHeezy/images/blob/main/aws_instance_type.png) +5. Under "Key pair (login)", it is recommended to use a key pair for secure access to your EC2 instance. + - Select "Create new key pair" + - In the pop-up, enter a name for the key pair + - Select "Create key pair" +![Key pair creation](https://github.com/MHeezy/images/blob/main/key_pair_creation.png) +Save this key in a handy, secure location. -5. **Create a new network security group and give your home public IP (in case you have a static IP address from your ISP.) full access. If you do not have static IP address and want higher security add your renewed IP address when accessing the honeypot.** -![Initial_network_configuraiton](https://github.com/parthdmaniar/images/blob/master/6_ec2_network_security_rules.png) -![full_AWS_network_security_configuraiton](https://github.com/parthdmaniar/images/blob/master/7_ec2_network_security_rules_detailed.png) +6. Under "Network settings", the default settings for "Network" and "Subnet" will suffice. These default settings deploy the instance in your default VPC; [read more here](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html). In this section, you will also see an option to "Create security group". Select this, then select the box beside "Allow SSH traffic from", and choose either "Anywhere" or your own public IP. Please note, however, that your public IP may change, requiring you to reconfigure this security group. For the time being, it will suffice to allow you to access the instance and install dshield. Once installed, dshield sets up security on Ubuntu itself, and you will need to adjust the security group to allow internet traffic to hit the instance. +![Network settings](https://github.com/MHeezy/images/blob/main/ec2_network_settings.png) +7. Under "Configure storage", the default setting "1x 8 GiB gp2 Root volume" suffices for this use case and is free-tier eligible. Per AWS, "Free tier eligible customers can get up to 30 GB of EBS General Purpose (SSD) or Magnetic storage". -6. **Launch the instance and login via SSH** +8. At the bottom of the summary window on the right side, select "Launch instance". +![EC2 Summary](https://github.com/MHeezy/images/blob/main/ews_creation_summary.png) +9. Your EC2 instance will be launched. View completion progress by navigating to the EC2 dashboard, select "Instances", and select the Instance ID of the created instance. +![EC2 Instances List](https://github.com/MHeezy/images/blob/main/ec2_instance_list.png) -7. **Optional: If you're going to directly ingest logs for analysis set hostname for your honeypot using:** +Install dshield +---------------- +1. Check your instance's public IP by navigating to the instance summary (see step 9 above). + +2. Open a terminal on a machine with SSH installed, or using a program such as PuTTY, connect to your instance's public IP address using the key pair created previously. Note that the default user created for the Ubuntu 20.04 Server is "ubuntu". +``` +ssh -i dshield.pem ubuntu@1.2.3.4 +``` + - When I tried doing this on Windows 11 Pro, I got an error: Load key "dshield.pem": bad permissions + - Use [this guide](https://www.thewindowsclub.com/change-files-and-folders-permissions-in-windows-10) if you run into the issue on Windows 10/11. + - On a \*nix system, doing "chmod 700" to the file should fix this error. + + +3. Optional: If you're going to directly ingest logs for analysis set hostname for your honeypot using: ``` sudo hostnamectl set-hostname "hostname" ``` -8. **Make sure the OS is updated** +4. Make sure the OS is updated ``` sudo apt update && sudo apt full-upgrade -y ``` -9. **You will have to install Python2, Python-pip, git [may be installed by default] manually.** +5. You will have to install Python2, Python-pip, git [may be installed by default] manually. You may refer: https://linuxize.com/post/how-to-install-pip-on-ubuntu-20.04/ or use the following commands: It is advisable to be in the home directory when carrying out the following commands. (cd ~) @@ -44,7 +74,7 @@ It is advisable to be in the home directory when carrying out the following comm cd ~ && sudo apt update && sudo apt full-upgrade -y && sudo apt install python-pip -y && sudo apt install python3-pip -y && sudo apt update && sudo apt install python2.7 -y && sudo apt install git -y && curl https://bootstrap.pypa.io/get-pip.py --output get-pip.py && sudo python2 get-pip.py && sudo python3 get-pip.py ``` -9. **Follow installation steps from Readme.md** +6. Follow installation steps from Readme.md ``` mkdir install cd install From 33f9155627b3ad4de1f08cb6f8d8706c48b20fb6 Mon Sep 17 00:00:00 2001 From: MHeezy <46223175+MHeezy@users.noreply.github.com> Date: Tue, 23 May 2023 23:59:15 -0400 Subject: [PATCH 62/63] Update AWS.md Added post install section --- docs/install-instructions/AWS.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/install-instructions/AWS.md b/docs/install-instructions/AWS.md index 8b4d0fa..7da671b 100644 --- a/docs/install-instructions/AWS.md +++ b/docs/install-instructions/AWS.md @@ -82,3 +82,16 @@ git clone https://github.com/DShield-ISC/dshield.git cd dshield/bin sudo ./install.sh ``` + +Post-Install Notes +------------------- +Once dshield is installed, adjust security group settings to allow internet traffic to hit it. +1. Navigate to the instance's summary page +2. Select the "Security" tab +3. Select the security group name +![Navigate to instance security group](https://github.com/MHeezy/images/blob/main/ec2_securitygroup_navigate.png) +4. On the security group page, with "Inbound rules" tab selected, select "Edit inbound rules" +![Edit inbound rules](https://github.com/MHeezy/images/blob/main/securitygroup_edit_inbound.png) +5. For enhanced security, change the existing inbound SSH rule to "Type" -> "Custom TCP", "Port range" -> 12222, "Source" -> "My IP" + - Recall that dshield adjusts the true SSH service to port 12222; restrict this port to only your management IP +6. To allow all internet traffic to hit the honeypot, select "Add rule", with the settings "Type" -> "All traffic", "Source" -> "Anywhere" From 1c7ab7c90f8ff572d4e603f3072208ceaaca277a Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 24 May 2023 12:40:43 +0000 Subject: [PATCH 63/63] Converted pyproject.toml to requirements.txt --- srv/isc-agent/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srv/isc-agent/requirements.txt b/srv/isc-agent/requirements.txt index 7d2781d..01e30ef 100644 --- a/srv/isc-agent/requirements.txt +++ b/srv/isc-agent/requirements.txt @@ -40,7 +40,7 @@ sortedcontainers==2.4.0 ; python_full_version >= "3.7.1" and python_full_version sqlalchemy==2.0.15 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" twisted-iocpsupport==1.0.3 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and platform_system == "Windows" twisted[all-non-platform,http2]==22.10.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" -typing-extensions==4.6.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +typing-extensions==4.6.1 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" urllib3==2.0.2 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0" zipp==3.15.0 ; python_full_version >= "3.7.1" and python_version < "3.8" zope-interface==6.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0"