diff --git a/Pipfile b/Pipfile index 911224a..8dbf92c 100644 --- a/Pipfile +++ b/Pipfile @@ -20,6 +20,8 @@ flask-testing = "*" flask-pyoidc = "*" python-jose = "*" flask-jwt-extended = "*" +ssh2-python = "*" +telnetlib = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index 11072e3..b4a9ee5 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "bde392334efe0c90dfcb180d0fc07549827e819343af266b4fa43be0bc1c0596" + "sha256": "3c4317b4cad2510995180e361c84a57ba0b8e31f86ab2d8a78dccbd3223bc814" }, "pipfile-spec": 6, "requires": { @@ -25,23 +25,23 @@ }, "alembic": { "hashes": [ - "sha256:505d41e01dc0c9e6d85c116d0d35dbb0a833dcb490bf483b75abeb06648864e8" + "sha256:828dcaa922155a2b7166c4f36ec45268944e4055c86499bd14319b4c8c0094b7" ], - "version": "==1.0.8" + "version": "==1.0.10" }, "aniso8601": { "hashes": [ - "sha256:b8a6a9b24611fc50cf2d9b45d371bfdc4fd0581d1cc52254f5502130a776d4af", - "sha256:bb167645c79f7a438f9dfab6161af9bed75508c645b1f07d1158240841d22673" + "sha256:513d2b6637b7853806ae79ffaca6f3e8754bdd547048f5ccc1420aec4b714f1e", + "sha256:d10a4bf949f619f719b227ef5386e31f49a2b6d453004b21f02661ccc8670c7b" ], - "version": "==6.0.0" + "version": "==7.0.0" }, "apispec": { "hashes": [ - "sha256:6746a57f1395fc201d06b051e43e8a7fdd23138607ebbeabdfcc6477bc3cc956", - "sha256:f0a5ddaee255eebeda8e84659028c3523b7801c7023f9364972035d36b23d734" + "sha256:0bdfa1c56c0f3ff0ae7ca305c4140e633f467a9c371929018bf2cd85f45ae73f", + "sha256:71271878a79f636e14056f854bfc35d2d8599eae8d48f1f5123d030b157dfb54" ], - "version": "==1.1.1" + "version": "==2.0.0" }, "asn1crypto": { "hashes": [ @@ -65,43 +65,43 @@ }, "certifi": { "hashes": [ - "sha256:59b7658e26ca9c7339e00f8f4636cdfe59d34fa37b9b04f6f9e9926b3cece1a5", - "sha256:b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae" + "sha256:046832c04d4e752f37383b628bc601a7ea7211496b4638f6514d0e5b9acc4939", + "sha256:945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695" ], - "version": "==2019.3.9" + "version": "==2019.6.16" }, "cffi": { "hashes": [ - "sha256:00b97afa72c233495560a0793cdc86c2571721b4271c0667addc83c417f3d90f", - "sha256:0ba1b0c90f2124459f6966a10c03794082a2f3985cd699d7d63c4a8dae113e11", - "sha256:0bffb69da295a4fc3349f2ec7cbe16b8ba057b0a593a92cbe8396e535244ee9d", - "sha256:21469a2b1082088d11ccd79dd84157ba42d940064abbfa59cf5f024c19cf4891", - "sha256:2e4812f7fa984bf1ab253a40f1f4391b604f7fc424a3e21f7de542a7f8f7aedf", - "sha256:2eac2cdd07b9049dd4e68449b90d3ef1adc7c759463af5beb53a84f1db62e36c", - "sha256:2f9089979d7456c74d21303c7851f158833d48fb265876923edcb2d0194104ed", - "sha256:3dd13feff00bddb0bd2d650cdb7338f815c1789a91a6f68fdc00e5c5ed40329b", - "sha256:4065c32b52f4b142f417af6f33a5024edc1336aa845b9d5a8d86071f6fcaac5a", - "sha256:51a4ba1256e9003a3acf508e3b4f4661bebd015b8180cc31849da222426ef585", - "sha256:59888faac06403767c0cf8cfb3f4a777b2939b1fbd9f729299b5384f097f05ea", - "sha256:59c87886640574d8b14910840327f5cd15954e26ed0bbd4e7cef95fa5aef218f", - "sha256:610fc7d6db6c56a244c2701575f6851461753c60f73f2de89c79bbf1cc807f33", - "sha256:70aeadeecb281ea901bf4230c6222af0248c41044d6f57401a614ea59d96d145", - "sha256:71e1296d5e66c59cd2c0f2d72dc476d42afe02aeddc833d8e05630a0551dad7a", - "sha256:8fc7a49b440ea752cfdf1d51a586fd08d395ff7a5d555dc69e84b1939f7ddee3", - "sha256:9b5c2afd2d6e3771d516045a6cfa11a8da9a60e3d128746a7fe9ab36dfe7221f", - "sha256:9c759051ebcb244d9d55ee791259ddd158188d15adee3c152502d3b69005e6bd", - "sha256:b4d1011fec5ec12aa7cc10c05a2f2f12dfa0adfe958e56ae38dc140614035804", - "sha256:b4f1d6332339ecc61275bebd1f7b674098a66fea11a00c84d1c58851e618dc0d", - "sha256:c030cda3dc8e62b814831faa4eb93dd9a46498af8cd1d5c178c2de856972fd92", - "sha256:c2e1f2012e56d61390c0e668c20c4fb0ae667c44d6f6a2eeea5d7148dcd3df9f", - "sha256:c37c77d6562074452120fc6c02ad86ec928f5710fbc435a181d69334b4de1d84", - "sha256:c8149780c60f8fd02752d0429246088c6c04e234b895c4a42e1ea9b4de8d27fb", - "sha256:cbeeef1dc3c4299bd746b774f019de9e4672f7cc666c777cd5b409f0b746dac7", - "sha256:e113878a446c6228669144ae8a56e268c91b7f1fafae927adc4879d9849e0ea7", - "sha256:e21162bf941b85c0cda08224dade5def9360f53b09f9f259adb85fc7dd0e7b35", - "sha256:fb6934ef4744becbda3143d30c6604718871495a5e36c408431bf33d9c146889" + "sha256:041c81822e9f84b1d9c401182e174996f0bae9991f33725d059b771744290774", + "sha256:046ef9a22f5d3eed06334d01b1e836977eeef500d9b78e9ef693f9380ad0b83d", + "sha256:066bc4c7895c91812eff46f4b1c285220947d4aa46fa0a2651ff85f2afae9c90", + "sha256:066c7ff148ae33040c01058662d6752fd73fbc8e64787229ea8498c7d7f4041b", + "sha256:2444d0c61f03dcd26dbf7600cf64354376ee579acad77aef459e34efcb438c63", + "sha256:300832850b8f7967e278870c5d51e3819b9aad8f0a2c8dbe39ab11f119237f45", + "sha256:34c77afe85b6b9e967bd8154e3855e847b70ca42043db6ad17f26899a3df1b25", + "sha256:46de5fa00f7ac09f020729148ff632819649b3e05a007d286242c4882f7b1dc3", + "sha256:4aa8ee7ba27c472d429b980c51e714a24f47ca296d53f4d7868075b175866f4b", + "sha256:4d0004eb4351e35ed950c14c11e734182591465a33e960a4ab5e8d4f04d72647", + "sha256:4e3d3f31a1e202b0f5a35ba3bc4eb41e2fc2b11c1eff38b362de710bcffb5016", + "sha256:50bec6d35e6b1aaeb17f7c4e2b9374ebf95a8975d57863546fa83e8d31bdb8c4", + "sha256:55cad9a6df1e2a1d62063f79d0881a414a906a6962bc160ac968cc03ed3efcfb", + "sha256:5662ad4e4e84f1eaa8efce5da695c5d2e229c563f9d5ce5b0113f71321bcf753", + "sha256:59b4dc008f98fc6ee2bb4fd7fc786a8d70000d058c2bbe2698275bc53a8d3fa7", + "sha256:73e1ffefe05e4ccd7bcea61af76f36077b914f92b76f95ccf00b0c1b9186f3f9", + "sha256:a1f0fd46eba2d71ce1589f7e50a9e2ffaeb739fb2c11e8192aa2b45d5f6cc41f", + "sha256:a2e85dc204556657661051ff4bab75a84e968669765c8a2cd425918699c3d0e8", + "sha256:a5457d47dfff24882a21492e5815f891c0ca35fefae8aa742c6c263dac16ef1f", + "sha256:a8dccd61d52a8dae4a825cdbb7735da530179fea472903eb871a5513b5abbfdc", + "sha256:ae61af521ed676cf16ae94f30fe202781a38d7178b6b4ab622e4eec8cefaff42", + "sha256:b012a5edb48288f77a63dba0840c92d0504aa215612da4541b7b42d849bc83a3", + "sha256:d2c5cfa536227f57f97c92ac30c8109688ace8fa4ac086d19d0af47d134e2909", + "sha256:d42b5796e20aacc9d15e66befb7a345454eef794fdb0737d1af593447c6c8f45", + "sha256:dee54f5d30d775f525894d67b1495625dd9322945e7fee00731952e0368ff42d", + "sha256:e070535507bd6aa07124258171be2ee8dfc19119c28ca94c9dfb7efd23564512", + "sha256:e1ff2748c84d97b065cc95429814cdba39bcbd77c9c85c89344b317dc0d9cbff", + "sha256:ed851c75d1e0e043cbf5ca9a8e1b13c4c90f3fbd863dacb01c0808e2b5204201" ], - "version": "==1.12.2" + "version": "==1.12.3" }, "chardet": { "hashes": [ @@ -156,27 +156,24 @@ }, "cryptography": { "hashes": [ - "sha256:066f815f1fe46020877c5983a7e747ae140f517f1b09030ec098503575265ce1", - "sha256:210210d9df0afba9e000636e97810117dc55b7157c903a55716bb73e3ae07705", - "sha256:26c821cbeb683facb966045e2064303029d572a87ee69ca5a1bf54bf55f93ca6", - "sha256:2afb83308dc5c5255149ff7d3fb9964f7c9ee3d59b603ec18ccf5b0a8852e2b1", - "sha256:2db34e5c45988f36f7a08a7ab2b69638994a8923853dec2d4af121f689c66dc8", - "sha256:409c4653e0f719fa78febcb71ac417076ae5e20160aec7270c91d009837b9151", - "sha256:45a4f4cf4f4e6a55c8128f8b76b4c057027b27d4c67e3fe157fa02f27e37830d", - "sha256:48eab46ef38faf1031e58dfcc9c3e71756a1108f4c9c966150b605d4a1a7f659", - "sha256:6b9e0ae298ab20d371fc26e2129fd683cfc0cfde4d157c6341722de645146537", - "sha256:6c4778afe50f413707f604828c1ad1ff81fadf6c110cb669579dea7e2e98a75e", - "sha256:8c33fb99025d353c9520141f8bc989c2134a1f76bac6369cea060812f5b5c2bb", - "sha256:9873a1760a274b620a135054b756f9f218fa61ca030e42df31b409f0fb738b6c", - "sha256:9b069768c627f3f5623b1cbd3248c5e7e92aec62f4c98827059eed7053138cc9", - "sha256:9e4ce27a507e4886efbd3c32d120db5089b906979a4debf1d5939ec01b9dd6c5", - "sha256:acb424eaca214cb08735f1a744eceb97d014de6530c1ea23beb86d9c6f13c2ad", - "sha256:c8181c7d77388fe26ab8418bb088b1a1ef5fde058c6926790c8a0a3d94075a4a", - "sha256:d4afbb0840f489b60f5a580a41a1b9c3622e08ecb5eec8614d4fb4cd914c4460", - "sha256:d9ed28030797c00f4bc43c86bf819266c76a5ea61d006cd4078a93ebf7da6bfd", - "sha256:e603aa7bb52e4e8ed4119a58a03b60323918467ef209e6ff9db3ac382e5cf2c6" + "sha256:24b61e5fcb506424d3ec4e18bca995833839bf13c59fc43e530e488f28d46b8c", + "sha256:25dd1581a183e9e7a806fe0543f485103232f940fcfc301db65e630512cce643", + "sha256:3452bba7c21c69f2df772762be0066c7ed5dc65df494a1d53a58b683a83e1216", + "sha256:41a0be220dd1ed9e998f5891948306eb8c812b512dc398e5a01846d855050799", + "sha256:5751d8a11b956fbfa314f6553d186b94aa70fdb03d8a4d4f1c82dcacf0cbe28a", + "sha256:5f61c7d749048fa6e3322258b4263463bfccefecb0dd731b6561cb617a1d9bb9", + "sha256:72e24c521fa2106f19623a3851e9f89ddfdeb9ac63871c7643790f872a305dfc", + "sha256:7b97ae6ef5cba2e3bb14256625423413d5ce8d1abb91d4f29b6d1a081da765f8", + "sha256:961e886d8a3590fd2c723cf07be14e2a91cf53c25f02435c04d39e90780e3b53", + "sha256:96d8473848e984184b6728e2c9d391482008646276c3ff084a1bd89e15ff53a1", + "sha256:ae536da50c7ad1e002c3eee101871d93abdc90d9c5f651818450a0d3af718609", + "sha256:b0db0cecf396033abb4a93c95d1602f268b3a68bb0a9cc06a7cff587bb9a7292", + "sha256:cfee9164954c186b191b91d4193989ca994703b2fff406f71cf454a2d3c7327e", + "sha256:e6347742ac8f35ded4a46ff835c60e68c22a536a8ae5c4422966d06946b6d4c6", + "sha256:f27d93f0139a3c056172ebb5d4f9056e770fdf0206c2f422ff2ebbad142e09ed", + "sha256:f57b76e46a58b63d1c6375017f4564a28f19a5ca912691fd2e4261b3414b618d" ], - "version": "==2.6.1" + "version": "==2.7" }, "decorator": { "hashes": [ @@ -187,33 +184,33 @@ }, "ecdsa": { "hashes": [ - "sha256:40d002cf360d0e035cf2cb985e1308d41aaa087cbfc135b2dc2d844296ea546c", - "sha256:64cf1ee26d1cde3c73c6d7d107f835fed7c6a2904aef9eac223d57ad800c43fa" + "sha256:20c17e527e75acad8f402290e158a6ac178b91b881f941fc6ea305bfdfb9657c", + "sha256:5c034ffa23413ac923541ceb3ac14ec15a0d2530690413bff58c12b80e56d884" ], - "version": "==0.13" + "version": "==0.13.2" }, "flask": { "hashes": [ - "sha256:2271c0070dbcb5275fad4a82e29f23ab92682dc45f9dfbc22c02ba9b9322ce48", - "sha256:a080b744b7e345ccfcbc77954861cb05b3c63786e93f2b3875e0913d44b43f05" + "sha256:ad7c6d841e64296b962296c2c2dabc6543752985727af86a975072dea984b6f3", + "sha256:e7d32475d1de5facaa55e3958bc4ec66d3762076b074296aa50ef8fdc5b9df61" ], "index": "pypi", - "version": "==1.0.2" + "version": "==1.0.3" }, "flask-httpauth": { "hashes": [ - "sha256:c08b69b302f1aa7ecd0db327809132ef6ca9486a36a9174776da146d1a4adc18", - "sha256:f71b7611f385fbdf350e8c430eed17b41c3b2200dc35eae19c1734264b68e31d" + "sha256:0149953720489407e51ec24bc2f86273597b7973d71cd51f9443bd0e2a89bd72", + "sha256:6ef8b761332e780f9ff74d5f9056c2616f52babc1998b01d9f361a1e439e61b9" ], "index": "pypi", - "version": "==3.2.4" + "version": "==3.3.0" }, "flask-jwt-extended": { "hashes": [ - "sha256:68035dba637fd58c0f0b308e49103cba7f6977aa301d958ddbd7b811a91c6dec" + "sha256:69d683b51cc85f3a0beb187787e8456a1cfe60e3f8d9da00dc0d7c34e38b698a" ], "index": "pypi", - "version": "==3.18.0" + "version": "==3.18.2" }, "flask-login": { "hashes": [ @@ -224,18 +221,18 @@ }, "flask-marshmallow": { "hashes": [ - "sha256:b880246097f526e106395598f52f1b3d3bd0108ee8697bec8a1657499f27e123", - "sha256:db6d1d2610a169e616e0aec3aeef67ed31525a85bcc567cabd832261121273f7" + "sha256:4f507f883838b397638a3a36c7d36ee146b255a49db952f5d9de3f6f4522e8a8", + "sha256:69e99e3a123393894884a032ae2d11e6bdf4519a505819b66cec7eda32057741" ], - "version": "==0.10.0" + "version": "==0.10.1" }, "flask-migrate": { "hashes": [ - "sha256:a361578cb829681f860e4de5ed2c48886264512f0c16144e404c36ddc95ab49c", - "sha256:c24d105c5d6cc670de20f8cbfb909e04f4e04b8784d0df070005944de1f21549" + "sha256:6fb038be63d4c60727d5dfa5f581a6189af5b4e2925bc378697b4f0a40cfb4e1", + "sha256:a96ff1875a49a40bd3e8ac04fce73fdb0870b9211e6168608cbafa4eb839d502" ], "index": "pypi", - "version": "==2.4.0" + "version": "==2.5.2" }, "flask-pyoidc": { "hashes": [ @@ -267,11 +264,11 @@ }, "flask-sqlalchemy": { "hashes": [ - "sha256:3bc0fac969dd8c0ace01b32060f0c729565293302f0c4269beed154b46bec50b", - "sha256:5971b9852b5888655f11db634e87725a9031e170f37c0ce7851cf83497f56e53" + "sha256:0c9609b0d72871c540a7945ea559c8fdf5455192d2db67219509aed680a3d45a", + "sha256:8631bbea987bc3eb0f72b1f691d47bd37ceb795e73b59ab48586d76d75a7c605" ], "index": "pypi", - "version": "==2.3.2" + "version": "==2.4.0" }, "flask-testing": { "hashes": [ @@ -302,10 +299,10 @@ }, "jinja2": { "hashes": [ - "sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd", - "sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4" + "sha256:065c4f02ebe7f7cf559e49ee5a95fb800a9e4528727aec6f24402a5374c65013", + "sha256:14dd6caf1527abb21f08f86c784eac40853ba93edb79552aa1e4b8aef1b61c7b" ], - "version": "==2.10" + "version": "==2.10.1" }, "jsonschema": { "hashes": [ @@ -316,9 +313,9 @@ }, "mako": { "hashes": [ - "sha256:04092940c0df49b01f43daea4f5adcecd0e50ef6a4b222be5ac003d5d84b2843" + "sha256:0cfa65de3a835e87eeca6ac856b3013aade55f49e32515f65d999f91a2324162" ], - "version": "==1.0.8" + "version": "==1.0.12" }, "markupsafe": { "hashes": [ @@ -355,10 +352,10 @@ }, "marshmallow": { "hashes": [ - "sha256:0e497a6447ffaad55578138ca512752de7a48d12f444996ededc3d6bf8a09ca2", - "sha256:e21a4dea20deb167c723e0ffb13f4cf33bcbbeb8a334e92406a3308cedea2826" + "sha256:9cedfc5b6f568d57e8a2cf3d293fbd81b05e5ef557854008d03e25660a39ccfd", + "sha256:a4d99922116a76e5abd8f997ec0519086e24814b7e1e1344bebe2a312ba50235" ], - "version": "==2.19.2" + "version": "==2.19.5" }, "oic": { "hashes": [ @@ -376,10 +373,10 @@ }, "pbr": { "hashes": [ - "sha256:8257baf496c8522437e8a6cfe0f15e00aedc6c0e0e7c9d55eeeeab31e0853843", - "sha256:8c361cc353d988e4f5b998555c88098b9d5964c2e11acf7b0d21925a66bb5824" + "sha256:9181e2a34d80f07a359ff1d0504fad3a47e00e1cf2c475b0aa7dcb030af54c40", + "sha256:94bdc84da376b3dd5061aa0c3b6faffe943ee2e56fa4ff9bd63e1643932f34fc" ], - "version": "==5.1.3" + "version": "==5.3.1" }, "pyasn1": { "hashes": [ @@ -396,36 +393,36 @@ }, "pycryptodomex": { "hashes": [ - "sha256:00e0a7c992756c8d6d63f2cf992276ca62e702629bfcb54f57a192624c22c3d9", - "sha256:04689a34f5cf54bd049371c6b16ca44ed4c4202f3f9d58ff25e75016808d076e", - "sha256:088689b91b8dc0df52710e88ef447c6ca087c1f82398b8a41537c2a907f03e6a", - "sha256:1607d36788ff97b43abb896f7f81a2eed1bdc86e982e953e36b9afeb01942c9c", - "sha256:184356bb5039fc24c337dbe485b406425d6f0ee2659d59c313e69703063bf518", - "sha256:21cde61813059437206f745b620068d22cfe5059134eefe858ba7e4b639c410f", - "sha256:27a7968b231c1dec2a3d4cc66621c97ee623abda65fc1df392aa19a764f2e803", - "sha256:42c089411f55663c08e04c5bb8ce51d18002534ae76e8d2e1dd560b3d44dec5c", - "sha256:42e20e201267726c2d0687886d08f3e97192e0fa456535bb62274dd4b190dc0a", - "sha256:47ac3a9e87e559d1bfd60ebb5a81eac66f080ec5593c77d9e33b811bee929c87", - "sha256:73f72f7670d2182077fc36420e651ddc6eaa7c8478bf586719f051ecafec533e", - "sha256:84182dd94089287269a93f4d49226915b3aab386cba587dd8ec68da01bfa3e25", - "sha256:898c311e6fc8df2c4aba67c554276e5e798f8fb65d1854e26494f3d809314b91", - "sha256:96352d121e5a750b006e2a357d0a9913f12c6652ca07a5e61c74f63d8be0394f", - "sha256:9a18a7078cfdf61e020f0705c6b7188513973af68a26df42b7aaaa395b5e3e2f", - "sha256:9ecce5ab26737dde0beeff894344d56758e0711f2883619f10625d6a46d8116c", - "sha256:a4bac3507bcefd43e26a92182bcde27c4e37dbe4385b12ba04025a8bf93be5e7", - "sha256:ae044ff318656aaacdfce4d91c369ead871d170d03dfd44ee37e46734f06d24e", - "sha256:c8186e82d2854738ae7c18c9683bf023aa13d564b5c845a4cfd83063cf44e182", - "sha256:d2bc76e6edbcc8b32465c7e47f045398bb857390aca0782bfc6985919cf9d27c", - "sha256:d89db6097c644f814c9f8995a6a6e4b13dffcc82dcdb6ca06dc8a12545d36319", - "sha256:deb56cc3b9381b0d5a2060edb6e2ea31351c4b569abf52216d05c91a16214ac3", - "sha256:e3fe77a6558d21481d4c1290462eb3c9498bad46ce4cd979ff9dd2dd76b5700f", - "sha256:f04359d03506c4a8b0a7d178afda8dca78405bf6f8e8f2080d5206fc7733631a", - "sha256:f066c42bbc84c658d81aaecf36a14b71ef89a0353b17dc5c50f50fd7fb92fc15", - "sha256:f26d76c5430efc44b7a3ca4f5f661f3cb314a33bc2a9656f89f44bf73514446c", - "sha256:fab723651dfb40d25d8557bc0230133b29cf12835875cd56f77138ee467408cb", - "sha256:feb7673ee7981cee624c9cdb3446a7d909e99e7296eedef973e766a2bd5128ff" + "sha256:029c7a150347c81899c14de0e4d5f918b8a0c68e8b0108dbe6192ad24358a845", + "sha256:08f0f3f89e6561f3c7ad99c4fb5f4a5b596701edb0aa92ac32c166b615517740", + "sha256:09d1d8aa842ba3d2d18c7bca1233a3d3ab0b083f657bb9f57adfd4fee5d7f02d", + "sha256:12d2b8b4dc3d8b464b9db1e2f54c08a56e8a255110f927c69ba2e17456bfe8ac", + "sha256:14f509a672c24f27fc8e589be35f3950ac8b4338b4466ff2b33de03124646568", + "sha256:267646fa6855fc65679b95fa01b3f032758a3d32b41858688c8ff81761a1a2f6", + "sha256:2db8e8e36cb7b3ae16ae782453fc7c4887402b5afe268f1e4c602d75e999359a", + "sha256:2fc867a467841d209d001c49c34bbf56004e8b1e358db7dcb9b8200d2e8b25b1", + "sha256:3cfcd1cc49919bd571de6e5f3d99ceac0e3898a83d3ed4dfda6d12166d848d88", + "sha256:4b28007bc34fe7469f2097c07fc77b866650e4695008cf953d6caa247296ea19", + "sha256:6355795ccb2bc9800a7d6a33a4ba8d8fdc2d1d9fd3c13cd8fa16f530239b1d53", + "sha256:6390ca23b2e1a5c2a9d037012b923b6b2fc788cba234f45683f1ddad6f4112ad", + "sha256:7226bbab87b751a3cc052476f0db1cb89e6e4103eec18d1169b2bddd894c3d9d", + "sha256:7240cde2dc32ee6588d03b85fb619cb3629e6d302d32c807c82dadb4233b9a48", + "sha256:80439f10be257b65ee6c9db3c5a3d1450b8f1e7ab5130d7c7ddfb373ca13c25e", + "sha256:83d6cab80d64298e84f6d9962dc4c4f2619805fc11aed939f0257e313028ea15", + "sha256:9586b41f68b28fbaaae5232055ef2db2cecd37661e6792d19fb9c24792281811", + "sha256:b5f641fa8640a4bdf31621f920bdf2c646f823a9ee1c7525f57cb92ec710fe0c", + "sha256:c90d8f9919e57be2f0cb5840a05fdaadc5fffefa40192aebfe459cc68b53ee9f", + "sha256:ceaea1e14b2df86278a1c252d176556c30b3e2568bb86ea37130c810376b7a6b", + "sha256:e46ef46c89d50fb1b22adbbcdabea94e62ec5932ab83afe104801f913af9ad4b", + "sha256:e50b15af6bbdc6b5f8bd70d818cb846b15303ffa6c371b799db561a403a21607", + "sha256:e56438a25b32594ece62dab9df8d4349e935ad2a7a1f20cc446a43b28e4d0940", + "sha256:e9e63278c617940f7f3ccde373cf1120115a842392d37c419cf68bf38ca53fc0", + "sha256:f35922bf0c7ed5ef9f1248a38ac7b44cda62549e2c57245ccf76fdec325d6684", + "sha256:fc951613c5deb7f9c9b42a8d147e7094a2ff4f9be8128511e30f551975ada870", + "sha256:fcfb2d6ad91021bc1e4196eb293f8eca958161d5b8a0953fbbec3328a0966f74", + "sha256:feeebb7ee5c5b2be1f3498da517226668e775d1260d52480c59d39c16dea03fa" ], - "version": "==3.8.0" + "version": "==3.8.2" }, "pyjwkest": { "hashes": [ @@ -450,9 +447,9 @@ }, "pyrsistent": { "hashes": [ - "sha256:3ca82748918eb65e2d89f222b702277099aca77e34843c5eb9d52451173970e2" + "sha256:16692ee739d42cf5e39cef8d27649a8c1fdb7aa99887098f1460057c5eb75c3a" ], - "version": "==0.14.11" + "version": "==0.15.2" }, "python-dateutil": { "hashes": [ @@ -479,17 +476,17 @@ }, "pytz": { "hashes": [ - "sha256:32b0891edff07e28efe91284ed9c31e123d84bea3fd98e1f72be2508f43ef8d9", - "sha256:d5f05e487007e29e03409f9398d074e158d920d36eb82eaf66fb1136b0c5374c" + "sha256:303879e36b721603cc54604edcac9d20401bdbe31e1e4fdee5b9f98d5d31dfda", + "sha256:d747dd3d23d77ef44c6a3526e274af6efeb0a6f1afd5a69ba4d5be4098c8e141" ], - "version": "==2018.9" + "version": "==2019.1" }, "requests": { "hashes": [ - "sha256:502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e", - "sha256:7bf2a778576d825600030a110f3c0e3e8edc51dfaafe1c146e39a2027784957b" + "sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4", + "sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31" ], - "version": "==2.21.0" + "version": "==2.22.0" }, "rsa": { "hashes": [ @@ -507,10 +504,10 @@ }, "sqlalchemy": { "hashes": [ - "sha256:d5432832f91d200c3d8b473a266d59442d825f9ea744c467e68c5d9a9479fbce" + "sha256:c30925d60af95443458ebd7525daf791f55762b106049ae71e18f8dd58084c2f" ], "index": "pypi", - "version": "==1.3.2" + "version": "==1.3.5" }, "sqlalchemy-migrate": { "hashes": [ @@ -527,6 +524,41 @@ ], "version": "==0.3.0" }, + "ssh2-python": { + "hashes": [ + "sha256:286ae90146e1a500891976bfa2bd174df82a99b345583fa26052f2ae3271756a", + "sha256:37217762a4b71b5a46cc45f06bf5c460a7547262020bf1c147ced30ab0e11e5c", + "sha256:4bd1e6889a99472ef05459a502f041bfe53453372a235cacccffce74df553b4e", + "sha256:4c15ee53d0af149634f2d793a5b44293f3f6fe70722cc33a53ddacf5327cabdb", + "sha256:4e8c82493fc7583cda2714a23aca018562916cc45dd3c6e0ffc5f723f21384e7", + "sha256:59e6d1a589b69aef5efe03fe692b5600b84aa1f604a451b95c2fefb4ec1821c6", + "sha256:5b9fe88eceb4a1ace4c55079142b1e9f0dbad86c3c235986af96b809a8f9845f", + "sha256:5ec53c69e2b3eb6fbc01c58af4097f76e42f3637effd5daf3caea374d723d2d1", + "sha256:5ed50af9e73aa599fde4bb2357b9911275f02a58214fa3b560529e0b7ff46033", + "sha256:6167353e631a2f829931046b6267af08593d7ecc19e3dc7724236a5e4042679e", + "sha256:62934a0c01feb42fa67fdac1b4cebeaeee09c9b509778d4d0edc4f0bcc6980a4", + "sha256:634a198fb50c4bfb1a9acda34149008661171cc96a7bf01faf692f15f848a90b", + "sha256:677e7ad1f1792e2cd06f5baf9c850e353fcc514d54195fb402e127062ea6eca2", + "sha256:68381cac1c01d3bd4164f563516da0228f54be7e57a95de99ce3bb2bb607da4d", + "sha256:6a2d0bfe1b0990568a6ff2f3d057a4e627749b8a54f47af175dbdcb450bb3761", + "sha256:7266dc0a19fc8269e2b3930127a59bbdb68d39ff81559c4d7c36fea902fd81a3", + "sha256:7b2d8cf5cf91fb97744e5d660f276de833aff4253178ffd65d5a9590d4e9ff04", + "sha256:8ca222576de2d311122479bf1a91ce9d8fa22742564da7da23b2951fde425bc1", + "sha256:90af6e0713a582173d7b3fd621c9bd59bb8d155bca12426401a98cab4fab01a2", + "sha256:a7dd3760692e00c882397c940956358f45238c264d14e317aea95c638b6d01c0", + "sha256:ae916e3822701e6ca78d1857507abe3d1fba1a2658628ed91ad90564eda33078", + "sha256:aec216637ca9a3e452ae6e43d9bac20702b2b9c4464823c5fbd92b5aca67f9ce", + "sha256:c2afd7824e094b90283d6bac0e5f2360de4860fe6feae6755f3ed8653eeb10be", + "sha256:c724fb88d1ffb5a639949c7f16638d6914492843a4a8a66da38b6d32223bcf46", + "sha256:ca6faa65b28e1d3349a5770390a2ea523915864f0b6590141564184153453210", + "sha256:d8375952a103b7e47e5684f05a7656a27055fa9278b18587d9628823f0c9604c", + "sha256:dec556e968109d7f7c7279516f96333e95ef9824e4bfa93fa00b2f3673b2615d", + "sha256:eb88b6c6615d4369e7f701a1db8268275ecd915fa7ee7c8e02c4684a1f948eec", + "sha256:f2f46855073419bfbea53ba837f15dfe9c875e175987f09dd1fec99ae7eab47e" + ], + "index": "pypi", + "version": "==0.17.0" + }, "tempita": { "hashes": [ "sha256:cacecf0baa674d356641f1d406b8bff1d756d739c46b869a54de515d08e6fc9c" @@ -535,25 +567,25 @@ }, "urllib3": { "hashes": [ - "sha256:61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39", - "sha256:de9529817c93f27c8ccbfead6985011db27bd0ddfcdb2d86f3f663385c6a9c22" + "sha256:b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1", + "sha256:dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232" ], - "version": "==1.24.1" + "version": "==1.25.3" }, "webargs": { "hashes": [ - "sha256:15ddf90d7bfe05c9db87c9f22215cacc1228da98a8e7bd62508d9d8020935123", - "sha256:75c568581af6ef6345156fc8621a7735ce6846bf9d7ec058aa6ea9cc3a620580", - "sha256:e2381557f0a5e4db37dbbddc2833b0f3aa6dca58b5ced4ca6b14620f685a643f" + "sha256:6b81ce44572d4f345104aa41c734fdc01165f054a061a8ebb1b46e89851e1170", + "sha256:713bd63440ee078ce48ca953d254d51e5f1a6fa0c76fb521fc596306c78d95a5", + "sha256:e2394ea7e422c1e795681cee5e8b1c6083bab7db6d7a380841130cbbae173d29" ], - "version": "==5.2.0" + "version": "==5.3.2" }, "werkzeug": { "hashes": [ - "sha256:0a73e8bb2ff2feecfc5d56e6f458f5b99290ef34f565ffb2665801ff7de6af7a", - "sha256:7fad9770a8778f9576693f0cc29c7dcc36964df916b83734f4431c0e612a7fbc" + "sha256:865856ebb55c4dcd0630cdd8f3331a1847a819dda7e8c750d3db6f2aa6c0209c", + "sha256:a0b915f0815982fb2a09161cb8f31708052d0951c3ba433ccc5e1aa276507ca6" ], - "version": "==0.15.2" + "version": "==0.15.4" } }, "develop": {} diff --git a/app.db b/app.db index 273a357..7e71e48 100644 Binary files a/app.db and b/app.db differ diff --git a/recorder_adapters/__init__.py b/recorder_adapters/__init__.py new file mode 100644 index 0000000..e5d823a --- /dev/null +++ b/recorder_adapters/__init__.py @@ -0,0 +1,87 @@ +import telnetlib +from abc import ABC, abstractmethod + +# monkey patching of telnet lib +original_read_until = telnetlib.Telnet.read_until +original_write = telnetlib.Telnet.write + + +def new_read_until(self, match, timeout=None): + if isinstance(match, str): + return original_read_until(self, match.encode("ascii"), timeout) + else: + return original_read_until(self, match, timeout) + + +def new_write(self, buffer): + if isinstance(buffer, str): + return original_write(self, buffer.encode("ascii")) + else: + return original_write(self, buffer) + + +telnetlib.Telnet.read_until = new_read_until +telnetlib.Telnet.write = new_write + + +def read_line(self, timeout=2): + return self.read_until("\n", timeout) + + +telnetlib.Telnet.read_line = read_line + + +def read_until_non_empty_line(self): + line = self.read_line() + if line is None: + return None + while len(line.rstrip()) <= 0: + line = self.read_line() + return line + + +telnetlib.Telnet.read_until_non_empty_line = read_until_non_empty_line + + +def assert_string_in_output(self, string, timeout=2): + resp = self.read_until(string, timeout) + if resp is None: + return False, resp, + resp = resp.decode("ascii") + if string in resp: + return True, resp + return False, resp + + +telnetlib.Telnet.assert_string_in_output = assert_string_in_output + + +class TelnetAdapter(ABC): + def __init__(self, address): + self.address = address + self.tn = None + + @abstractmethod + def login(self): + pass + + def run_cmd(self, cmd, timeout=1, auto_connect=True): + if self.tn is None and not auto_connect: + raise Exception("Not connected!") + elif self.tn is None: + self.login() + self.tn.write(cmd) + out = tn.read_until_non_empty_line() + res = out + while out is not None and out != "": + out = tn.read_until_non_empty_line() + print(out) + res += out + return res + + @staticmethod + def get_response_str(tn_response): + if isinstance(tn_response, bytes): + return str(tn_response.decode("ascii").rstrip()) + else: + return str(tn_response).rstrip() diff --git a/recorder_adapters/extron_smp.py b/recorder_adapters/extron_smp.py new file mode 100644 index 0000000..d6327b2 --- /dev/null +++ b/recorder_adapters/extron_smp.py @@ -0,0 +1,43 @@ +import getpass +import sys +from abc import ABC, abstractmethod +from backend.recorder_adapters import telnetlib, TelnetAdapter + +# HOST = "localhost" +# HOST = "129.13.51.102" # Audimax SMP 351 +# HOST = "129.13.51.106" # Tulla SMP 351 +HOST = "172.22.246.207" # Test SMP MZ + +USER = "admin" +PW = "123mzsmp" + + +class SMP(TelnetAdapter): + def __init__(self, address, admin_password): + super().__init__(address) + self.admin_pw = admin_password + + def login(self): + self.tn = telnetlib.Telnet(HOST) + self.tn.read_until("\r\nPassword:") + # password = getpass.getpass() + password = self.admin_pw + self.tn.write(password + "\n\r") + + if not self.tn.assert_string_in_output("Login Administrator")[0]: + print("WRONG (admin) password!! Exiting!") + self.tn = None + raise Exception("Could not login as administrator with given pw!") + print("OK, we have admin rights!") + + def get_version(self): + self.tn.write("1Q\n") + + # print_tn(read_line(tn)) + return TelnetAdapter.get_response_str(self.tn.read_until_non_empty_line()) + + +smp = SMP(HOST, PW) +print(smp) +smp.login() +print(smp.get_version()) diff --git a/recorder_adapters/extron_smp_testing.py b/recorder_adapters/extron_smp_testing.py new file mode 100644 index 0000000..0fe8e6c --- /dev/null +++ b/recorder_adapters/extron_smp_testing.py @@ -0,0 +1,65 @@ +import getpass +import sys +from abc import ABC, abstractmethod +from backend.recorder_adapters import telnetlib + +# HOST = "localhost" +# HOST = "129.13.51.102" # Audimax SMP 351 +# HOST = "129.13.51.106" # Tulla SMP 351 +HOST = "172.22.246.207" # Test SMP MZ + +user = "admin" +pw = "123mzsmp" + + +def print_tn(tn_response): + if isinstance(tn_response, bytes): + print(tn_response.decode("ascii").rstrip()) + else: + print(str(tn_response).rstrip()) + + +def run_cmd(tn, cmd, timeout=1): + tn.write(cmd) + out = tn.read_until_non_empty_line() + res = out + while out is not None and out != "": + out = tn.read_until_non_empty_line() + print(out) + res += out + return res + + +tn = telnetlib.Telnet(HOST) +tn.read_until("\r\nPassword:") +# password = getpass.getpass() +password = pw +tn.write(password + "\n\r") + +if not tn.assert_string_in_output("Login Administrator")[0]: + print("WRONG (admin) password!! Exiting!") + exit(1) + +print("OK, we have admin rights!") + +tn.write("1Q\n") + +# print_tn(read_line(tn)) +print_tn(tn.read_until_non_empty_line()) +print("test") + + +# print(run_cmd(tn, "I\n")) +# run_cmd(tn, "X1CERT\n") +# tn.write(chr(27)+"X1CERT") +# tn.write("WX1CERT\n") +# tn.write(chr(27)+"1BOOT") +# tn.write("W1BOOT\n") +# print_tn(tn.read_until_non_empty_line()) +# tn.write("I\n") +# print_tn(tn.read_some()) + +# tn.write("exit\n\r".encode("ascii")) + +# print_tn(tn.read_eager()) +