Compare commits
11 Commits
52664b7adb
...
production
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
419056bf03 | ||
|
|
26251ed8e7 | ||
| f181e4a785 | |||
| 1d011af64b | |||
| 6ba38cd42d | |||
| 1745f56ac7 | |||
|
|
6971b4b618 | ||
| bb4db25dcd | |||
|
|
da200f95b8 | ||
|
|
190f728eb7 | ||
| a709dbcaef |
@@ -1,15 +1,14 @@
|
|||||||
[tool.poetry]
|
[[source]]
|
||||||
name = "lrc-backend"
|
url = "https://pypi.org/simple"
|
||||||
version = "0.1.0"
|
verify_ssl = true
|
||||||
description = ""
|
name = "pypi"
|
||||||
authors = ["Tobias Kurze <it@t-kurze.de>"]
|
|
||||||
readme = "README.md"
|
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[packages]
|
||||||
python = "^3.11"
|
ffmpeg-python = "*"
|
||||||
flask = "*"
|
flask = "*"
|
||||||
flask-httpauth = "*"
|
flask-httpauth = "*"
|
||||||
flask-sqlalchemy = "*"
|
flask-sqlalchemy = "*"
|
||||||
|
flask-login = "*"
|
||||||
pyjwt = "*"
|
pyjwt = "*"
|
||||||
passlib = "*"
|
passlib = "*"
|
||||||
sqlalchemy = "*"
|
sqlalchemy = "*"
|
||||||
@@ -32,10 +31,16 @@ ics = "*"
|
|||||||
coloredlogs = "*"
|
coloredlogs = "*"
|
||||||
pythonping = "*"
|
pythonping = "*"
|
||||||
scapy = "*"
|
scapy = "*"
|
||||||
flask-login = "^0.6.2"
|
python-socketio = {version = "*",extras = ["client"]}
|
||||||
werkzeug = "2.*"
|
socketio-client = "*"
|
||||||
flask-restx = "^1.1.0"
|
websocket-client = "*"
|
||||||
|
apscheduler = "*"
|
||||||
|
pillow = "*"
|
||||||
|
pydub = "*"
|
||||||
|
simpleaudio = "*"
|
||||||
|
flask-restx = "*"
|
||||||
|
|
||||||
[build-system]
|
[dev-packages]
|
||||||
requires = ["poetry-core"]
|
|
||||||
build-backend = "poetry.core.masonry.api"
|
[requires]
|
||||||
|
python_version = "3.6"
|
||||||
846
Pipfile.lock
generated
Normal file
846
Pipfile.lock
generated
Normal file
@@ -0,0 +1,846 @@
|
|||||||
|
{
|
||||||
|
"_meta": {
|
||||||
|
"hash": {
|
||||||
|
"sha256": "ed9faf5db1ecd9f6524b4e3903b2d2e3cfedff03a928c6921dd799bb1e4ed90b"
|
||||||
|
},
|
||||||
|
"pipfile-spec": 6,
|
||||||
|
"requires": {
|
||||||
|
"python_version": "3.6"
|
||||||
|
},
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"name": "pypi",
|
||||||
|
"url": "https://pypi.org/simple",
|
||||||
|
"verify_ssl": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"alembic": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:791a5686953c4b366d3228c5377196db2f534475bb38d26f70eb69668efd9028"
|
||||||
|
],
|
||||||
|
"version": "==1.4.1"
|
||||||
|
},
|
||||||
|
"aniso8601": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:529dcb1f5f26ee0df6c0a1ee84b7b27197c3c50fc3a6321d66c544689237d072",
|
||||||
|
"sha256:c033f63d028b9a58e3ab0c2c7d0532ab4bfa7452bfc788fbfe3ddabd327b181a"
|
||||||
|
],
|
||||||
|
"version": "==8.0.0"
|
||||||
|
},
|
||||||
|
"apscheduler": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:3bb5229eed6fbbdafc13ce962712ae66e175aa214c69bed35a06bffcf0c5e244",
|
||||||
|
"sha256:e8b1ecdb4c7cb2818913f766d5898183c7cb8936680710a4d3a966e02262e526"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==3.6.3"
|
||||||
|
},
|
||||||
|
"arrow": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:4bfacea734ead51495dc47df00421ecfd4ca1f2c0fbe58b9a26eaeddedc31caf",
|
||||||
|
"sha256:67f8be7c0cf420424bc62d8d7dc40b44e4bb2f7b515f9cc2954fb36e35797656"
|
||||||
|
],
|
||||||
|
"version": "==0.14.7"
|
||||||
|
},
|
||||||
|
"attrs": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c",
|
||||||
|
"sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"
|
||||||
|
],
|
||||||
|
"version": "==19.3.0"
|
||||||
|
},
|
||||||
|
"beaker": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:ad5d1c05027ee3be3a482ea39f8cb70339b41e5d6ace0cb861382754076d187e"
|
||||||
|
],
|
||||||
|
"version": "==1.11.0"
|
||||||
|
},
|
||||||
|
"beautifulsoup4": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:05fd825eb01c290877657a56df4c6e4c311b3965bda790c613a3d6fb01a5462a",
|
||||||
|
"sha256:9fbb4d6e48ecd30bcacc5b63b94088192dcda178513b2ae3c394229f8911b887",
|
||||||
|
"sha256:e1505eeed31b0f4ce2dbb3bc8eb256c04cc2b3b72af7d551a4ab6efd5cbe5dae"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==4.8.2"
|
||||||
|
},
|
||||||
|
"certifi": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:017c25db2a153ce562900032d5bc68e9f191e44e9a0f762f373977de9df1fbb3",
|
||||||
|
"sha256:25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f"
|
||||||
|
],
|
||||||
|
"version": "==2019.11.28"
|
||||||
|
},
|
||||||
|
"cffi": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:001bf3242a1bb04d985d63e138230802c6c8d4db3668fb545fb5005ddf5bb5ff",
|
||||||
|
"sha256:00789914be39dffba161cfc5be31b55775de5ba2235fe49aa28c148236c4e06b",
|
||||||
|
"sha256:028a579fc9aed3af38f4892bdcc7390508adabc30c6af4a6e4f611b0c680e6ac",
|
||||||
|
"sha256:14491a910663bf9f13ddf2bc8f60562d6bc5315c1f09c704937ef17293fb85b0",
|
||||||
|
"sha256:1cae98a7054b5c9391eb3249b86e0e99ab1e02bb0cc0575da191aedadbdf4384",
|
||||||
|
"sha256:2089ed025da3919d2e75a4d963d008330c96751127dd6f73c8dc0c65041b4c26",
|
||||||
|
"sha256:2d384f4a127a15ba701207f7639d94106693b6cd64173d6c8988e2c25f3ac2b6",
|
||||||
|
"sha256:337d448e5a725bba2d8293c48d9353fc68d0e9e4088d62a9571def317797522b",
|
||||||
|
"sha256:399aed636c7d3749bbed55bc907c3288cb43c65c4389964ad5ff849b6370603e",
|
||||||
|
"sha256:3b911c2dbd4f423b4c4fcca138cadde747abdb20d196c4a48708b8a2d32b16dd",
|
||||||
|
"sha256:3d311bcc4a41408cf5854f06ef2c5cab88f9fded37a3b95936c9879c1640d4c2",
|
||||||
|
"sha256:62ae9af2d069ea2698bf536dcfe1e4eed9090211dbaafeeedf5cb6c41b352f66",
|
||||||
|
"sha256:66e41db66b47d0d8672d8ed2708ba91b2f2524ece3dee48b5dfb36be8c2f21dc",
|
||||||
|
"sha256:675686925a9fb403edba0114db74e741d8181683dcf216be697d208857e04ca8",
|
||||||
|
"sha256:7e63cbcf2429a8dbfe48dcc2322d5f2220b77b2e17b7ba023d6166d84655da55",
|
||||||
|
"sha256:8a6c688fefb4e1cd56feb6c511984a6c4f7ec7d2a1ff31a10254f3c817054ae4",
|
||||||
|
"sha256:8c0ffc886aea5df6a1762d0019e9cb05f825d0eec1f520c51be9d198701daee5",
|
||||||
|
"sha256:95cd16d3dee553f882540c1ffe331d085c9e629499ceadfbda4d4fde635f4b7d",
|
||||||
|
"sha256:99f748a7e71ff382613b4e1acc0ac83bf7ad167fb3802e35e90d9763daba4d78",
|
||||||
|
"sha256:b8c78301cefcf5fd914aad35d3c04c2b21ce8629b5e4f4e45ae6812e461910fa",
|
||||||
|
"sha256:c420917b188a5582a56d8b93bdd8e0f6eca08c84ff623a4c16e809152cd35793",
|
||||||
|
"sha256:c43866529f2f06fe0edc6246eb4faa34f03fe88b64a0a9a942561c8e22f4b71f",
|
||||||
|
"sha256:cab50b8c2250b46fe738c77dbd25ce017d5e6fb35d3407606e7a4180656a5a6a",
|
||||||
|
"sha256:cef128cb4d5e0b3493f058f10ce32365972c554572ff821e175dbc6f8ff6924f",
|
||||||
|
"sha256:cf16e3cf6c0a5fdd9bc10c21687e19d29ad1fe863372b5543deaec1039581a30",
|
||||||
|
"sha256:e56c744aa6ff427a607763346e4170629caf7e48ead6921745986db3692f987f",
|
||||||
|
"sha256:e577934fc5f8779c554639376beeaa5657d54349096ef24abe8c74c5d9c117c3",
|
||||||
|
"sha256:f2b0fa0c01d8a0c7483afd9f31d7ecf2d71760ca24499c8697aeb5ca37dc090c"
|
||||||
|
],
|
||||||
|
"version": "==1.14.0"
|
||||||
|
},
|
||||||
|
"chardet": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
|
||||||
|
"sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
|
||||||
|
],
|
||||||
|
"version": "==3.0.4"
|
||||||
|
},
|
||||||
|
"click": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:8a18b4ea89d8820c5d0c7da8a64b2c324b4dabb695804dbfea19b9be9d88c0cc",
|
||||||
|
"sha256:e345d143d80bf5ee7534056164e5e112ea5e22716bbb1ce727941f4c8b471b9a"
|
||||||
|
],
|
||||||
|
"version": "==7.1.1"
|
||||||
|
},
|
||||||
|
"coloredlogs": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:346f58aad6afd48444c2468618623638dadab76e4e70d5e10822676f2d32226a",
|
||||||
|
"sha256:a1fab193d2053aa6c0a97608c4342d031f1f93a3d1218432c59322441d31a505"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==14.0"
|
||||||
|
},
|
||||||
|
"coverage": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:15cf13a6896048d6d947bf7d222f36e4809ab926894beb748fc9caa14605d9c3",
|
||||||
|
"sha256:1daa3eceed220f9fdb80d5ff950dd95112cd27f70d004c7918ca6dfc6c47054c",
|
||||||
|
"sha256:1e44a022500d944d42f94df76727ba3fc0a5c0b672c358b61067abb88caee7a0",
|
||||||
|
"sha256:25dbf1110d70bab68a74b4b9d74f30e99b177cde3388e07cc7272f2168bd1477",
|
||||||
|
"sha256:3230d1003eec018ad4a472d254991e34241e0bbd513e97a29727c7c2f637bd2a",
|
||||||
|
"sha256:3dbb72eaeea5763676a1a1efd9b427a048c97c39ed92e13336e726117d0b72bf",
|
||||||
|
"sha256:5012d3b8d5a500834783689a5d2292fe06ec75dc86ee1ccdad04b6f5bf231691",
|
||||||
|
"sha256:51bc7710b13a2ae0c726f69756cf7ffd4362f4ac36546e243136187cfcc8aa73",
|
||||||
|
"sha256:527b4f316e6bf7755082a783726da20671a0cc388b786a64417780b90565b987",
|
||||||
|
"sha256:722e4557c8039aad9592c6a4213db75da08c2cd9945320220634f637251c3894",
|
||||||
|
"sha256:76e2057e8ffba5472fd28a3a010431fd9e928885ff480cb278877c6e9943cc2e",
|
||||||
|
"sha256:77afca04240c40450c331fa796b3eab6f1e15c5ecf8bf2b8bee9706cd5452fef",
|
||||||
|
"sha256:7afad9835e7a651d3551eab18cbc0fdb888f0a6136169fbef0662d9cdc9987cf",
|
||||||
|
"sha256:9bea19ac2f08672636350f203db89382121c9c2ade85d945953ef3c8cf9d2a68",
|
||||||
|
"sha256:a8b8ac7876bc3598e43e2603f772d2353d9931709345ad6c1149009fd1bc81b8",
|
||||||
|
"sha256:b0840b45187699affd4c6588286d429cd79a99d509fe3de0f209594669bb0954",
|
||||||
|
"sha256:b26aaf69713e5674efbde4d728fb7124e429c9466aeaf5f4a7e9e699b12c9fe2",
|
||||||
|
"sha256:b63dd43f455ba878e5e9f80ba4f748c0a2156dde6e0e6e690310e24d6e8caf40",
|
||||||
|
"sha256:be18f4ae5a9e46edae3f329de2191747966a34a3d93046dbdf897319923923bc",
|
||||||
|
"sha256:c312e57847db2526bc92b9bfa78266bfbaabac3fdcd751df4d062cd4c23e46dc",
|
||||||
|
"sha256:c60097190fe9dc2b329a0eb03393e2e0829156a589bd732e70794c0dd804258e",
|
||||||
|
"sha256:c62a2143e1313944bf4a5ab34fd3b4be15367a02e9478b0ce800cb510e3bbb9d",
|
||||||
|
"sha256:cc1109f54a14d940b8512ee9f1c3975c181bbb200306c6d8b87d93376538782f",
|
||||||
|
"sha256:cd60f507c125ac0ad83f05803063bed27e50fa903b9c2cfee3f8a6867ca600fc",
|
||||||
|
"sha256:d513cc3db248e566e07a0da99c230aca3556d9b09ed02f420664e2da97eac301",
|
||||||
|
"sha256:d649dc0bcace6fcdb446ae02b98798a856593b19b637c1b9af8edadf2b150bea",
|
||||||
|
"sha256:d7008a6796095a79544f4da1ee49418901961c97ca9e9d44904205ff7d6aa8cb",
|
||||||
|
"sha256:da93027835164b8223e8e5af2cf902a4c80ed93cb0909417234f4a9df3bcd9af",
|
||||||
|
"sha256:e69215621707119c6baf99bda014a45b999d37602cb7043d943c76a59b05bf52",
|
||||||
|
"sha256:ea9525e0fef2de9208250d6c5aeeee0138921057cd67fcef90fbed49c4d62d37",
|
||||||
|
"sha256:fca1669d464f0c9831fd10be2eef6b86f5ebd76c724d1e0706ebdff86bb4adf0"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==5.0.3"
|
||||||
|
},
|
||||||
|
"cryptography": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:02079a6addc7b5140ba0825f542c0869ff4df9a69c360e339ecead5baefa843c",
|
||||||
|
"sha256:1df22371fbf2004c6f64e927668734070a8953362cd8370ddd336774d6743595",
|
||||||
|
"sha256:369d2346db5934345787451504853ad9d342d7f721ae82d098083e1f49a582ad",
|
||||||
|
"sha256:3cda1f0ed8747339bbdf71b9f38ca74c7b592f24f65cdb3ab3765e4b02871651",
|
||||||
|
"sha256:44ff04138935882fef7c686878e1c8fd80a723161ad6a98da31e14b7553170c2",
|
||||||
|
"sha256:4b1030728872c59687badcca1e225a9103440e467c17d6d1730ab3d2d64bfeff",
|
||||||
|
"sha256:58363dbd966afb4f89b3b11dfb8ff200058fbc3b947507675c19ceb46104b48d",
|
||||||
|
"sha256:6ec280fb24d27e3d97aa731e16207d58bd8ae94ef6eab97249a2afe4ba643d42",
|
||||||
|
"sha256:7270a6c29199adc1297776937a05b59720e8a782531f1f122f2eb8467f9aab4d",
|
||||||
|
"sha256:73fd30c57fa2d0a1d7a49c561c40c2f79c7d6c374cc7750e9ac7c99176f6428e",
|
||||||
|
"sha256:7f09806ed4fbea8f51585231ba742b58cbcfbfe823ea197d8c89a5e433c7e912",
|
||||||
|
"sha256:90df0cc93e1f8d2fba8365fb59a858f51a11a394d64dbf3ef844f783844cc793",
|
||||||
|
"sha256:971221ed40f058f5662a604bd1ae6e4521d84e6cad0b7b170564cc34169c8f13",
|
||||||
|
"sha256:a518c153a2b5ed6b8cc03f7ae79d5ffad7315ad4569b2d5333a13c38d64bd8d7",
|
||||||
|
"sha256:b0de590a8b0979649ebeef8bb9f54394d3a41f66c5584fff4220901739b6b2f0",
|
||||||
|
"sha256:b43f53f29816ba1db8525f006fa6f49292e9b029554b3eb56a189a70f2a40879",
|
||||||
|
"sha256:d31402aad60ed889c7e57934a03477b572a03af7794fa8fb1780f21ea8f6551f",
|
||||||
|
"sha256:de96157ec73458a7f14e3d26f17f8128c959084931e8997b9e655a39c8fde9f9",
|
||||||
|
"sha256:df6b4dca2e11865e6cfbfb708e800efb18370f5a46fd601d3755bc7f85b3a8a2",
|
||||||
|
"sha256:ecadccc7ba52193963c0475ac9f6fa28ac01e01349a2ca48509667ef41ffd2cf",
|
||||||
|
"sha256:fb81c17e0ebe3358486cd8cc3ad78adbae58af12fc2bf2bc0bb84e8090fa5ce8"
|
||||||
|
],
|
||||||
|
"version": "==2.8"
|
||||||
|
},
|
||||||
|
"decorator": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760",
|
||||||
|
"sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7"
|
||||||
|
],
|
||||||
|
"version": "==4.4.2"
|
||||||
|
},
|
||||||
|
"defusedxml": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:6687150770438374ab581bb7a1b327a847dd9c5749e396102de3fad4e8a3ef93",
|
||||||
|
"sha256:f684034d135af4c6cbb949b8a4d2ed61634515257a67299e5f940fbaa34377f5"
|
||||||
|
],
|
||||||
|
"version": "==0.6.0"
|
||||||
|
},
|
||||||
|
"dnspython": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:36c5e8e38d4369a08b6780b7f27d790a292b2b08eea01607865bf0936c558e01",
|
||||||
|
"sha256:f69c21288a962f4da86e56c4905b49d11aba7938d3d740e80d9e366ee4f1632d"
|
||||||
|
],
|
||||||
|
"version": "==1.16.0"
|
||||||
|
},
|
||||||
|
"ecdsa": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:867ec9cf6df0b03addc8ef66b56359643cb5d0c1dc329df76ba7ecfe256c8061",
|
||||||
|
"sha256:8f12ac317f8a1318efa75757ef0a651abe12e51fc1af8838fb91079445227277"
|
||||||
|
],
|
||||||
|
"version": "==0.15"
|
||||||
|
},
|
||||||
|
"eventlet": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:658b1cd80937adc1a4860de2841e0528f64e2ca672885c4e00fc0e2217bde6b1",
|
||||||
|
"sha256:6c9c625af48424c4680d89314dbe45a76cc990cf002489f9469ff214b044ffc1"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.25.1"
|
||||||
|
},
|
||||||
|
"ffmpeg-python": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:65225db34627c578ef0e11c8b1eb528bb35e024752f6f10b78c011f6f64c4127",
|
||||||
|
"sha256:ac441a0404e053f8b6a1113a77c0f452f1cfc62f6344a769475ffdc0f56c23c5"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.2.0"
|
||||||
|
},
|
||||||
|
"flask": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52",
|
||||||
|
"sha256:45eb5a6fd193d6cf7e0cf5d8a5b31f83d5faae0293695626f539a823e93b13f6"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==1.1.1"
|
||||||
|
},
|
||||||
|
"flask-cors": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:72170423eb4612f0847318afff8c247b38bd516b7737adfc10d1c2cdbb382d16",
|
||||||
|
"sha256:f4d97201660e6bbcff2d89d082b5b6d31abee04b1b3003ee073a6fd25ad1d69a"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==3.0.8"
|
||||||
|
},
|
||||||
|
"flask-httpauth": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0149953720489407e51ec24bc2f86273597b7973d71cd51f9443bd0e2a89bd72",
|
||||||
|
"sha256:6ef8b761332e780f9ff74d5f9056c2616f52babc1998b01d9f361a1e439e61b9"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==3.3.0"
|
||||||
|
},
|
||||||
|
"flask-jwt-extended": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0aa8ee6fa7eb3be9314e39dd199ac8e19389a95371f9d54e155c7aa635e319dd"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==3.24.1"
|
||||||
|
},
|
||||||
|
"flask-login": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:6d33aef15b5bcead780acc339464aae8a6e28f13c90d8b1cf9de8b549d1c0b4b",
|
||||||
|
"sha256:7451b5001e17837ba58945aead261ba425fdf7b4f0448777e597ddab39f4fba0"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.5.0"
|
||||||
|
},
|
||||||
|
"flask-migrate": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:6fb038be63d4c60727d5dfa5f581a6189af5b4e2925bc378697b4f0a40cfb4e1",
|
||||||
|
"sha256:a96ff1875a49a40bd3e8ac04fce73fdb0870b9211e6168608cbafa4eb839d502"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==2.5.2"
|
||||||
|
},
|
||||||
|
"flask-pyoidc": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:215f91ec5f08d7a40b5fc10f88bec06bf39840f9242bb18e0ead3a249c1329ee"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==3.2.0"
|
||||||
|
},
|
||||||
|
"flask-restx": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:641759fe7cba1cb073d15b4258b1b15840af8cffe6edbd0da3e6b61eae0a67a6",
|
||||||
|
"sha256:fe0845112014201d618c1b0f3e41fa5f818a17c1d9e3fb6600d4e2c2bbc76a42"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.1.1"
|
||||||
|
},
|
||||||
|
"flask-script": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:6425963d91054cfcc185807141c7314a9c5ad46325911bd24dcb489bd0161c65"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==2.0.6"
|
||||||
|
},
|
||||||
|
"flask-socketio": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:2172dff1e42415ba480cee02c30c2fc833671ff326f1598ee3d69aa02cf768ec",
|
||||||
|
"sha256:7ff5b2f5edde23e875a8b0abf868584e5706e11741557449bc5147df2cd78268"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==4.2.1"
|
||||||
|
},
|
||||||
|
"flask-sqlalchemy": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0078d8663330dc05a74bc72b3b6ddc441b9a744e2f56fe60af1a5bfc81334327",
|
||||||
|
"sha256:6974785d913666587949f7c2946f7001e4fa2cb2d19f4e69ead02e4b8f50b33d"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==2.4.1"
|
||||||
|
},
|
||||||
|
"flask-testing": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:d849bf53eb1ceb09dff6611888588cb60f20238058fb1ebcd917d69febc373e6"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.8.0"
|
||||||
|
},
|
||||||
|
"future": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"
|
||||||
|
],
|
||||||
|
"version": "==0.18.2"
|
||||||
|
},
|
||||||
|
"greenlet": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:000546ad01e6389e98626c1367be58efa613fa82a1be98b0c6fc24b563acc6d0",
|
||||||
|
"sha256:0d48200bc50cbf498716712129eef819b1729339e34c3ae71656964dac907c28",
|
||||||
|
"sha256:23d12eacffa9d0f290c0fe0c4e81ba6d5f3a5b7ac3c30a5eaf0126bf4deda5c8",
|
||||||
|
"sha256:37c9ba82bd82eb6a23c2e5acc03055c0e45697253b2393c9a50cef76a3985304",
|
||||||
|
"sha256:51155342eb4d6058a0ffcd98a798fe6ba21195517da97e15fca3db12ab201e6e",
|
||||||
|
"sha256:51503524dd6f152ab4ad1fbd168fc6c30b5795e8c70be4410a64940b3abb55c0",
|
||||||
|
"sha256:7457d685158522df483196b16ec648b28f8e847861adb01a55d41134e7734122",
|
||||||
|
"sha256:8041e2de00e745c0e05a502d6e6db310db7faa7c979b3a5877123548a4c0b214",
|
||||||
|
"sha256:81fcd96a275209ef117e9ec91f75c731fa18dcfd9ffaa1c0adbdaa3616a86043",
|
||||||
|
"sha256:853da4f9563d982e4121fed8c92eea1a4594a2299037b3034c3c898cb8e933d6",
|
||||||
|
"sha256:8b4572c334593d449113f9dc8d19b93b7b271bdbe90ba7509eb178923327b625",
|
||||||
|
"sha256:9416443e219356e3c31f1f918a91badf2e37acf297e2fa13d24d1cc2380f8fbc",
|
||||||
|
"sha256:9854f612e1b59ec66804931df5add3b2d5ef0067748ea29dc60f0efdcda9a638",
|
||||||
|
"sha256:99a26afdb82ea83a265137a398f570402aa1f2b5dfb4ac3300c026931817b163",
|
||||||
|
"sha256:a19bf883b3384957e4a4a13e6bd1ae3d85ae87f4beb5957e35b0be287f12f4e4",
|
||||||
|
"sha256:a9f145660588187ff835c55a7d2ddf6abfc570c2651c276d3d4be8a2766db490",
|
||||||
|
"sha256:ac57fcdcfb0b73bb3203b58a14501abb7e5ff9ea5e2edfa06bb03035f0cff248",
|
||||||
|
"sha256:bcb530089ff24f6458a81ac3fa699e8c00194208a724b644ecc68422e1111939",
|
||||||
|
"sha256:beeabe25c3b704f7d56b573f7d2ff88fc99f0138e43480cecdfcaa3b87fe4f87",
|
||||||
|
"sha256:d634a7ea1fc3380ff96f9e44d8d22f38418c1c381d5fac680b272d7d90883720",
|
||||||
|
"sha256:d97b0661e1aead761f0ded3b769044bb00ed5d33e1ec865e891a8b128bf7c656",
|
||||||
|
"sha256:e538b8dae561080b542b0f5af64d47ef859f22517f7eca617bb314e0e03fd7ef"
|
||||||
|
],
|
||||||
|
"version": "==0.4.15"
|
||||||
|
},
|
||||||
|
"html5lib": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:20b159aa3badc9d5ee8f5c647e5efd02ed2a66ab8d354930bd9ff139fc1dc0a3",
|
||||||
|
"sha256:66cb0dcfdbbc4f9c3ba1a63fdb511ffdbd4f513b2b6d81b80cd26ce6b3fb3736"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==1.0.1"
|
||||||
|
},
|
||||||
|
"humanfriendly": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:25c2108a45cfd1e8fbe9cdb30b825d34ef5d5675c8e11e4775c9aedbfb0bdee2",
|
||||||
|
"sha256:3a831920e40e55ad49adb64c9179ed50c604cabca72cd300e7bd5b51310e4ebb"
|
||||||
|
],
|
||||||
|
"version": "==8.1"
|
||||||
|
},
|
||||||
|
"ics": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:bf5fbdef6e1e073afdadf1b996f0271186dd114a148e38e795919a1ae644d6ac"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.7"
|
||||||
|
},
|
||||||
|
"idna": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb",
|
||||||
|
"sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa"
|
||||||
|
],
|
||||||
|
"version": "==2.9"
|
||||||
|
},
|
||||||
|
"importlib-metadata": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:06f5b3a99029c7134207dd882428a66992a9de2bef7c2b699b5641f9886c3302",
|
||||||
|
"sha256:b97607a1a18a5100839aec1dc26a1ea17ee0d93b20b0f008d80a5a050afb200b"
|
||||||
|
],
|
||||||
|
"markers": "python_version < '3.8'",
|
||||||
|
"version": "==1.5.0"
|
||||||
|
},
|
||||||
|
"importlib-resources": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1dff36d42d94bd523eeb847c25c7dd327cb56686d74a26dfcc8d67c504922d59",
|
||||||
|
"sha256:7f0e1b2b5f3981e39c52da0f99b2955353c5a139c314994d1126c2551ace9bdf"
|
||||||
|
],
|
||||||
|
"version": "==1.3.1"
|
||||||
|
},
|
||||||
|
"itsdangerous": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19",
|
||||||
|
"sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"
|
||||||
|
],
|
||||||
|
"version": "==1.1.0"
|
||||||
|
},
|
||||||
|
"jinja2": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:93187ffbc7808079673ef52771baa950426fd664d3aad1d0fa3e95644360e250",
|
||||||
|
"sha256:b0eaf100007721b5c16c1fc1eecb87409464edc10469ddc9a22a27a99123be49"
|
||||||
|
],
|
||||||
|
"version": "==2.11.1"
|
||||||
|
},
|
||||||
|
"jsonschema": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163",
|
||||||
|
"sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"
|
||||||
|
],
|
||||||
|
"version": "==3.2.0"
|
||||||
|
},
|
||||||
|
"mako": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:3139c5d64aa5d175dbafb95027057128b5fbd05a40c53999f3905ceb53366d9d",
|
||||||
|
"sha256:8e8b53c71c7e59f3de716b6832c4e401d903af574f6962edbbbf6ecc2a5fe6c9"
|
||||||
|
],
|
||||||
|
"version": "==1.1.2"
|
||||||
|
},
|
||||||
|
"markupsafe": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473",
|
||||||
|
"sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161",
|
||||||
|
"sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235",
|
||||||
|
"sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5",
|
||||||
|
"sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42",
|
||||||
|
"sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff",
|
||||||
|
"sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b",
|
||||||
|
"sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1",
|
||||||
|
"sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e",
|
||||||
|
"sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183",
|
||||||
|
"sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66",
|
||||||
|
"sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b",
|
||||||
|
"sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1",
|
||||||
|
"sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15",
|
||||||
|
"sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1",
|
||||||
|
"sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e",
|
||||||
|
"sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b",
|
||||||
|
"sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905",
|
||||||
|
"sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735",
|
||||||
|
"sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d",
|
||||||
|
"sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e",
|
||||||
|
"sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d",
|
||||||
|
"sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c",
|
||||||
|
"sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21",
|
||||||
|
"sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2",
|
||||||
|
"sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5",
|
||||||
|
"sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b",
|
||||||
|
"sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6",
|
||||||
|
"sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f",
|
||||||
|
"sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f",
|
||||||
|
"sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2",
|
||||||
|
"sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7",
|
||||||
|
"sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"
|
||||||
|
],
|
||||||
|
"version": "==1.1.1"
|
||||||
|
},
|
||||||
|
"monotonic": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:23953d55076df038541e648a53676fb24980f7a1be290cdda21300b3bc21dfb0",
|
||||||
|
"sha256:552a91f381532e33cbd07c6a2655a21908088962bb8fa7239ecbcc6ad1140cc7"
|
||||||
|
],
|
||||||
|
"version": "==1.5"
|
||||||
|
},
|
||||||
|
"oic": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:091b20c0a4866e5afeef8fc21bfdffd65382763f09d782e14f8ce9081326e1ed",
|
||||||
|
"sha256:865da7ade1291c2f39dd196c34e5641a782b29871c3a48289e317d62fa49ef20"
|
||||||
|
],
|
||||||
|
"version": "==1.1.2"
|
||||||
|
},
|
||||||
|
"passlib": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:68c35c98a7968850e17f1b6892720764cc7eed0ef2b7cb3116a89a28e43fe177",
|
||||||
|
"sha256:8d666cef936198bc2ab47ee9b0410c94adf2ba798e5a84bf220be079ae7ab6a8"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==1.7.2"
|
||||||
|
},
|
||||||
|
"pbr": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:139d2625547dbfa5fb0b81daebb39601c478c21956dc57e2e07b74450a8c506b",
|
||||||
|
"sha256:61aa52a0f18b71c5cc58232d2cf8f8d09cd67fcad60b742a60124cb8d6951488"
|
||||||
|
],
|
||||||
|
"version": "==5.4.4"
|
||||||
|
},
|
||||||
|
"pillow": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0a628977ac2e01ca96aaae247ec2bd38e729631ddf2221b4b715446fd45505be",
|
||||||
|
"sha256:4d9ed9a64095e031435af120d3c910148067087541131e82b3e8db302f4c8946",
|
||||||
|
"sha256:54ebae163e8412aff0b9df1e88adab65788f5f5b58e625dc5c7f51eaf14a6837",
|
||||||
|
"sha256:5bfef0b1cdde9f33881c913af14e43db69815c7e8df429ceda4c70a5e529210f",
|
||||||
|
"sha256:5f3546ceb08089cedb9e8ff7e3f6a7042bb5b37c2a95d392fb027c3e53a2da00",
|
||||||
|
"sha256:5f7ae9126d16194f114435ebb79cc536b5682002a4fa57fa7bb2cbcde65f2f4d",
|
||||||
|
"sha256:62a889aeb0a79e50ecf5af272e9e3c164148f4bd9636cc6bcfa182a52c8b0533",
|
||||||
|
"sha256:7406f5a9b2fd966e79e6abdaf700585a4522e98d6559ce37fc52e5c955fade0a",
|
||||||
|
"sha256:8453f914f4e5a3d828281a6628cf517832abfa13ff50679a4848926dac7c0358",
|
||||||
|
"sha256:87269cc6ce1e3dee11f23fa515e4249ae678dbbe2704598a51cee76c52e19cda",
|
||||||
|
"sha256:875358310ed7abd5320f21dd97351d62de4929b0426cdb1eaa904b64ac36b435",
|
||||||
|
"sha256:8ac6ce7ff3892e5deaab7abaec763538ffd011f74dc1801d93d3c5fc541feee2",
|
||||||
|
"sha256:91b710e3353aea6fc758cdb7136d9bbdcb26b53cefe43e2cba953ac3ee1d3313",
|
||||||
|
"sha256:9d2ba4ed13af381233e2d810ff3bab84ef9f18430a9b336ab69eaf3cd24299ff",
|
||||||
|
"sha256:a62ec5e13e227399be73303ff301f2865bf68657d15ea50b038d25fc41097317",
|
||||||
|
"sha256:ab76e5580b0ed647a8d8d2d2daee170e8e9f8aad225ede314f684e297e3643c2",
|
||||||
|
"sha256:bf4003aa538af3f4205c5fac56eacaa67a6dd81e454ffd9e9f055fff9f1bc614",
|
||||||
|
"sha256:bf598d2e37cf8edb1a2f26ed3fb255191f5232badea4003c16301cb94ac5bdd0",
|
||||||
|
"sha256:c18f70dc27cc5d236f10e7834236aff60aadc71346a5bc1f4f83a4b3abee6386",
|
||||||
|
"sha256:c5ed816632204a2fc9486d784d8e0d0ae754347aba99c811458d69fcdfd2a2f9",
|
||||||
|
"sha256:dc058b7833184970d1248135b8b0ab702e6daa833be14035179f2acb78ff5636",
|
||||||
|
"sha256:ff3797f2f16bf9d17d53257612da84dd0758db33935777149b3334c01ff68865"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==7.0.0"
|
||||||
|
},
|
||||||
|
"pyasn1": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d",
|
||||||
|
"sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"
|
||||||
|
],
|
||||||
|
"version": "==0.4.8"
|
||||||
|
},
|
||||||
|
"pycparser": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0",
|
||||||
|
"sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"
|
||||||
|
],
|
||||||
|
"version": "==2.20"
|
||||||
|
},
|
||||||
|
"pycryptodomex": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1537d2d15b604b303aef56e7f440895a1c81adbee786b91f1f06eddc34da5314",
|
||||||
|
"sha256:1d20ab8369b7558168fc014a0745c678613f9f486dae468cca2d68145196b8a4",
|
||||||
|
"sha256:1ecc9db7409db67765eb008e558879d298406642d33ade43a6488224d23e8081",
|
||||||
|
"sha256:37033976f72af829fe15f7fe5fe1dbed308cc43a98d9dd9d2a0a76de8ca5ee78",
|
||||||
|
"sha256:3c3dd9d4c9c1e279d3945ae422895c901f98987333acc132dc094faf52afec35",
|
||||||
|
"sha256:3c9b3fba037ea52c626060c5a87ee6de7e86c99e8a7c6ee07302539985d2bd64",
|
||||||
|
"sha256:45ee555fc5e28c119a46d44ce373f5237e54a35c61b750fb3a94446b09855dbc",
|
||||||
|
"sha256:4c93038ac011b36512cb0bf2ee3e2aec774e8bc81021d015917c89fe02bb0ee5",
|
||||||
|
"sha256:50163324834edd0c9ce3e4512ded3e221c969086e10fdd5d3fdcaadac5e24a78",
|
||||||
|
"sha256:59b0ea9cda5490f924771456912a225d8d9e678891f9f986661af718534719b2",
|
||||||
|
"sha256:5cf306a17cccc327a33cdc3845629fa13f4573a4ec620ed607c79cf6785f2e27",
|
||||||
|
"sha256:5fff8da399af16a1855f58771223acbbdac720b9969cd03fc5013d2e9a7bd9a4",
|
||||||
|
"sha256:68650ce5b9f7152b8283302a4617269f821695a612692640dd247bd12ab21c0b",
|
||||||
|
"sha256:6b3a9a562688996f760b5077714c3ab8b62ca56061b6e9ab7906841e43e19f91",
|
||||||
|
"sha256:7e938ed51a59e29431ea86fab60423ada2757728db0f78952329fa02a789bd31",
|
||||||
|
"sha256:87aa70daad6f039e814790a06422a3189311198b674b62f13933a2bdcb6b1bcc",
|
||||||
|
"sha256:99be3a1df2b2b9f731ebe1c264a2c07c465e71cee68e35e1640b645b5213a755",
|
||||||
|
"sha256:a3f2908666e6f74b8c4893f86dd02e16170f50e4a78ae7f3468b6208d54bc205",
|
||||||
|
"sha256:ae3d44a639fd11dbdeca47e35e94febb1ee8bc15daf26673331add37146e0b85",
|
||||||
|
"sha256:afb4c2fa3c6f492fd9a8b38d76e13f32d429b8e5e1e00238309391b5591cde0d",
|
||||||
|
"sha256:b1515ce3a8a2c3fa537d137c5ca5f8b7a902044d04e07d7c3aa26c3e026120fb",
|
||||||
|
"sha256:bf391b377413a197000b43ef2b74359974d8927d329a897c9f5ba7b63dca7b9c",
|
||||||
|
"sha256:c436919117c23355740c669f89720673578b9aa4569bbfe105f6c10101fc1966",
|
||||||
|
"sha256:d2c3c280975638e2a2c2fd9cb36ab111980219757fa163a2755594b9448e4138",
|
||||||
|
"sha256:e585d530764c459cbd5d460aed0288807bb881f376ca9a20e653645217895961",
|
||||||
|
"sha256:e76e6638ead4a7d93262a24218f0ff3ff74de6b6c823b7e19dccb31b6a481978",
|
||||||
|
"sha256:ebfc2f885cafda076c31ae30fa0dd81e7e919ec34059a88d3018ed66e83fcce3",
|
||||||
|
"sha256:f5797a39933a3d41526da60856735e6684b2b71a8ca99d5f79555ca121be2f4b",
|
||||||
|
"sha256:f7e5fc5e124200b19a14be33fb0099e956e6ebb5e25d287b0829ef0a78ed76c7",
|
||||||
|
"sha256:fb350e31e55211fec8ddc89fc0256f3b9bc3b44b68a8bde1cf44b3b4e80c0e42"
|
||||||
|
],
|
||||||
|
"version": "==3.9.7"
|
||||||
|
},
|
||||||
|
"pydub": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:c362fa02da1eebd1d08bd47aa9b0102582dff7ca2269dbe9e043d228a0c1ea93",
|
||||||
|
"sha256:d29901a486fb421c5d7b0f3d5d3a60527179204d8ffb20e74e1ae81c17e81b46"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.23.1"
|
||||||
|
},
|
||||||
|
"pyjwkest": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:5560fd5ba08655f29ff6ad1df1e15dc05abc9d976fcbcec8d2b5167f49b70222"
|
||||||
|
],
|
||||||
|
"version": "==1.4.2"
|
||||||
|
},
|
||||||
|
"pyjwt": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e",
|
||||||
|
"sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==1.7.1"
|
||||||
|
},
|
||||||
|
"pyrsistent": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:cdc7b5e3ed77bed61270a47d35434a30617b9becdf2478af76ad2c6ade307280"
|
||||||
|
],
|
||||||
|
"version": "==0.15.7"
|
||||||
|
},
|
||||||
|
"python-dateutil": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c",
|
||||||
|
"sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"
|
||||||
|
],
|
||||||
|
"version": "==2.8.1"
|
||||||
|
},
|
||||||
|
"python-editor": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1bf6e860a8ad52a14c3ee1252d5dc25b2030618ed80c022598f00176adc8367d",
|
||||||
|
"sha256:51fda6bcc5ddbbb7063b2af7509e43bd84bfc32a4ff71349ec7847713882327b",
|
||||||
|
"sha256:5f98b069316ea1c2ed3f67e7f5df6c0d8f10b689964a4a811ff64f0106819ec8"
|
||||||
|
],
|
||||||
|
"version": "==1.0.4"
|
||||||
|
},
|
||||||
|
"python-engineio": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:47ae4a9b3b4f2e8a68929f37a518338838e119f24c9a9121af92c49f8bea55c3",
|
||||||
|
"sha256:c3a3822deb51fdf9c7fe4d78abf807c73b83ea538036a50862d3024450746253"
|
||||||
|
],
|
||||||
|
"version": "==3.11.2"
|
||||||
|
},
|
||||||
|
"python-jose": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1ac4caf4bfebd5a70cf5bd82702ed850db69b0b6e1d0ae7368e5f99ac01c9571",
|
||||||
|
"sha256:8484b7fdb6962e9d242cce7680469ecf92bda95d10bbcbbeb560cacdff3abfce"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==3.1.0"
|
||||||
|
},
|
||||||
|
"python-socketio": {
|
||||||
|
"extras": [
|
||||||
|
"client"
|
||||||
|
],
|
||||||
|
"hashes": [
|
||||||
|
"sha256:48cba5b827ac665dbf923a4f5ec590812aed5299a831fc43576a9af346272534",
|
||||||
|
"sha256:af6c23c35497960f82106e36688123ecb52ad5a77d0ca27954ff3811c4d9d562"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==4.4.0"
|
||||||
|
},
|
||||||
|
"pythonping": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:05269d459d2290ff57665aa3b3c9ed1b64bb96106d22712e0054b52d51c6bb13"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==1.0.8"
|
||||||
|
},
|
||||||
|
"pytz": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d",
|
||||||
|
"sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be"
|
||||||
|
],
|
||||||
|
"version": "==2019.3"
|
||||||
|
},
|
||||||
|
"requests": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee",
|
||||||
|
"sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6"
|
||||||
|
],
|
||||||
|
"version": "==2.23.0"
|
||||||
|
},
|
||||||
|
"rsa": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:14ba45700ff1ec9eeb206a2ce76b32814958a98e372006c8fb76ba820211be66",
|
||||||
|
"sha256:1a836406405730121ae9823e19c6e806c62bbad73f890574fff50efa4122c487"
|
||||||
|
],
|
||||||
|
"version": "==4.0"
|
||||||
|
},
|
||||||
|
"scapy": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:e2f8d11f6a941c14a789ae8b236b27bd634681f1b29b5e893861e284d234f6b0"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==2.4.3"
|
||||||
|
},
|
||||||
|
"simpleaudio": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:05b63da515f5fc7c6f40e4d9673d22239c5e03e2bda200fc09fd21c185d73713",
|
||||||
|
"sha256:67348e3d3ccbae73bd126beed7f1e242976889620dbc6974c36800cd286430fc",
|
||||||
|
"sha256:691c88649243544db717e7edf6a9831df112104e1aefb5f6038a5d071e8cf41d",
|
||||||
|
"sha256:86f1b0985629852afe67259ac6c24905ca731cb202a6e96b818865c56ced0c27",
|
||||||
|
"sha256:f1a4fe3358429b2ea3181fd782e4c4fff5c123ca86ec7fc29e01ee9acd8a227a",
|
||||||
|
"sha256:f346a4eac9cdbb1b3f3d0995095b7e86c12219964c022f4d920c22f6ca05fb4c",
|
||||||
|
"sha256:f68820297ad51577e3a77369e7e9b23989d30d5ae923bf34c92cf983c04ade04"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==1.0.4"
|
||||||
|
},
|
||||||
|
"six": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a",
|
||||||
|
"sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c"
|
||||||
|
],
|
||||||
|
"version": "==1.14.0"
|
||||||
|
},
|
||||||
|
"socketio-client": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:64cd84fba79cf97f28c11e64d1fc42a2221f2d7a4fada05ab381e2d73d74d2c1"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.7.2"
|
||||||
|
},
|
||||||
|
"soupsieve": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:e914534802d7ffd233242b785229d5ba0766a7f487385e3f714446a07bf540ae",
|
||||||
|
"sha256:fcd71e08c0aee99aca1b73f45478549ee7e7fc006d51b37bec9e9def7dc22b69"
|
||||||
|
],
|
||||||
|
"version": "==2.0"
|
||||||
|
},
|
||||||
|
"sqlalchemy": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:c4cca4aed606297afbe90d4306b49ad3a4cd36feb3f87e4bfd655c57fd9ef445"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==1.3.15"
|
||||||
|
},
|
||||||
|
"sqlalchemy-migrate": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0bc02e292a040ade5e35a01d3ea744119e1309cdddb704fdb99bac13236614f8",
|
||||||
|
"sha256:e5d2348db19a5062132d93e3b4d9e7644af552fffbec4c78cc5358f848d2f6c1"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.13.0"
|
||||||
|
},
|
||||||
|
"sqlparse": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:022fb9c87b524d1f7862b3037e541f68597a730a8843245c349fc93e1643dc4e",
|
||||||
|
"sha256:e162203737712307dfe78860cc56c8da8a852ab2ee33750e33aeadf38d12c548"
|
||||||
|
],
|
||||||
|
"version": "==0.3.1"
|
||||||
|
},
|
||||||
|
"ssh2-python": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:054f2cab611ddca34095eb78d1ae1f6e29521678c82f0de17f696072a0b924fe",
|
||||||
|
"sha256:097d74684172f163d5025aef316987c1c7acf852d9fb75e4735720c8690adf87",
|
||||||
|
"sha256:0f4555b79e19ca6fdd84a74e85152d375a921d167ed9dc680d05f1f9f5dfc463",
|
||||||
|
"sha256:0fb3d9eca454b2874748c69e7e836ea5c6544f1b7acd87d8a876f99f618c806c",
|
||||||
|
"sha256:180c2728796f777a5856b23e5e1656a15a3e8602b4270348f892599ae5426f45",
|
||||||
|
"sha256:49aaa9d48cf52798d89f466a5e774e9dab8b76dc380b90645fd8d5c6622df177",
|
||||||
|
"sha256:4b5ba1390ff5e8faa6b2409df750e4650de3934c3b76ad707d7b54b477600226",
|
||||||
|
"sha256:57a4452dfc5c7f414de14e32f29e21f680fb8d7bdf94306e5f6bc8c2a235fa7a",
|
||||||
|
"sha256:584f753f0401217a55e70d2ae97a7e5220f4d37993a1bba275c4c5e110d87193",
|
||||||
|
"sha256:692cf27ddc5583da9b07b0f0348f0577579f8d798a0b8e4bf495b8d7f19fc854",
|
||||||
|
"sha256:6dc75bacc37de63aa9c86f9982642982c3a8103297fbbb73543a76e3db9abc6a",
|
||||||
|
"sha256:7a029275e62a1e31333ee7f2f151f661dedfac0345f1108e1a8d0b62e08ddf9b",
|
||||||
|
"sha256:7a3d761c669392e778c24a0eabcf6f1ba48ad68bb3b82a2d98235f56500bc8b0",
|
||||||
|
"sha256:8632684aae2f523e603381cf51a1da134fd5937cf0ae9650b1b9e7b4f328c133",
|
||||||
|
"sha256:8acab66dd73554d2c68abaccf96cdddfc10449ad6c7c273ac4b7a91779d414b2",
|
||||||
|
"sha256:9410b63c2361b2b65a55b5e8dc8187270de0f81e11864a427ad52b82b926bcc9",
|
||||||
|
"sha256:abe29ad01ed2ac4465e61c8de42b6850fca9c87d8792686a2de7c7d06c6eb72d",
|
||||||
|
"sha256:de151500a2a027a29bca3d7196c76008b41bb97db29378f29c4651ba1bcb00e8",
|
||||||
|
"sha256:debc56711643b82ab60a9c8b8cbf2978b65c0293aa7e53557a3c0d1fc57799cf",
|
||||||
|
"sha256:f508144d684b3c3c0f264ce67058f05ae3729ae77cc3a8f2051b442e01594849"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.18.0.post1"
|
||||||
|
},
|
||||||
|
"style": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:6485a4bcb84629341a5fd1587fe3ac4887daa4741f0c8a1d01b9c3c8a263afe7",
|
||||||
|
"sha256:8eb365fc15039b19b728bd4e6e85fb7daf24e7aeeec6a15a666f97484c564005"
|
||||||
|
],
|
||||||
|
"version": "==1.1.0"
|
||||||
|
},
|
||||||
|
"tatsu": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:80713413473a009f2081148d0f494884cabaf9d6866b71f2a68a92b6442f343d",
|
||||||
|
"sha256:c9211eeee9a2d4c90f69879ec0b518b1aa0d9450249cb0dd181f5f5b18be0a92"
|
||||||
|
],
|
||||||
|
"version": "==4.4.0"
|
||||||
|
},
|
||||||
|
"tempita": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:cacecf0baa674d356641f1d406b8bff1d756d739c46b869a54de515d08e6fc9c"
|
||||||
|
],
|
||||||
|
"version": "==0.5.2"
|
||||||
|
},
|
||||||
|
"typing-extensions": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:091ecc894d5e908ac75209f10d5b4f118fbdb2eb1ede6a63544054bb1edb41f2",
|
||||||
|
"sha256:910f4656f54de5993ad9304959ce9bb903f90aadc7c67a0bef07e678014e892d",
|
||||||
|
"sha256:cf8b63fedea4d89bab840ecbb93e75578af28f76f66c35889bd7065f5af88575"
|
||||||
|
],
|
||||||
|
"version": "==3.7.4.1"
|
||||||
|
},
|
||||||
|
"tzlocal": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:11c9f16e0a633b4b60e1eede97d8a46340d042e67b670b290ca526576e039048",
|
||||||
|
"sha256:949b9dd5ba4be17190a80c0268167d7e6c92c62b30026cf9764caf3e308e5590"
|
||||||
|
],
|
||||||
|
"version": "==2.0.0"
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:a25522b4bf60e3e3c1a3ff3ca3a4f5a328ac4b8ff400fdc9614483147e313323"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.0.1"
|
||||||
|
},
|
||||||
|
"urllib3": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc",
|
||||||
|
"sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc"
|
||||||
|
],
|
||||||
|
"version": "==1.25.8"
|
||||||
|
},
|
||||||
|
"webencodings": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78",
|
||||||
|
"sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"
|
||||||
|
],
|
||||||
|
"version": "==0.5.1"
|
||||||
|
},
|
||||||
|
"websocket-client": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0fc45c961324d79c781bab301359d5a1b00b13ad1b10415a4780229ef71a5549",
|
||||||
|
"sha256:d735b91d6d1692a6a181f2a8c9e0238e5f6373356f561bb9dc4c7af36f452010"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.57.0"
|
||||||
|
},
|
||||||
|
"werkzeug": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1e0dedc2acb1f46827daa2e399c1485c8fa17c0d8e70b6b875b4e7f54bf408d2",
|
||||||
|
"sha256:b353856d37dec59d6511359f97f6a4b2468442e454bd1c98298ddce53cac1f04"
|
||||||
|
],
|
||||||
|
"version": "==0.16.1"
|
||||||
|
},
|
||||||
|
"zipp": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b",
|
||||||
|
"sha256:c599e4d75c98f6798c509911d08a22e6c021d074469042177c8c86fb92eefd96"
|
||||||
|
],
|
||||||
|
"markers": "python_version < '3.8'",
|
||||||
|
"version": "==3.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"develop": {}
|
||||||
|
}
|
||||||
7
README.md
Normal file
7
README.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Backend code for LRC
|
||||||
|
|
||||||
|
|
||||||
|
requirements:
|
||||||
|
|
||||||
|
- python > 3.6
|
||||||
|
- libasound2-dev
|
||||||
@@ -3,18 +3,18 @@
|
|||||||
Backend base module
|
Backend base module
|
||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
|
from io import StringIO
|
||||||
from logging.config import dictConfig
|
from logging.config import dictConfig
|
||||||
from logging.handlers import MemoryHandler
|
from logging.handlers import MemoryHandler
|
||||||
from typing import Union
|
from typing import Union
|
||||||
|
|
||||||
import coloredlogs
|
import coloredlogs as coloredlogs
|
||||||
import jwt
|
import jwt
|
||||||
import requests
|
import requests
|
||||||
from flask import Flask, jsonify
|
from flask import Flask, jsonify, abort
|
||||||
from flask_httpauth import HTTPTokenAuth, HTTPBasicAuth, MultiAuth
|
from flask_httpauth import HTTPTokenAuth, HTTPBasicAuth, MultiAuth
|
||||||
from flask_jwt_extended import JWTManager, decode_token
|
from flask_jwt_extended import JWTManager, decode_token
|
||||||
from flask_login import LoginManager
|
from flask_login import LoginManager
|
||||||
from flask_restx import abort
|
|
||||||
from flask_sqlalchemy import SQLAlchemy
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
from flask_cors import CORS
|
from flask_cors import CORS
|
||||||
from backend.config import Config
|
from backend.config import Config
|
||||||
@@ -108,11 +108,11 @@ class LrcException(Exception):
|
|||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
if self.type is None:
|
if self.type is None:
|
||||||
msg = f"LRC Exception: \"{', '.join(super().args)}\""
|
msg = "LRC Exception: \"{}\"".format(', '.join(super().args))
|
||||||
else:
|
else:
|
||||||
msg = f"LRC Exception: (original Exception: {self.type}) \"{', '.join(super().args)}\""
|
msg = "LRC Exception: (original Exception: {}) \"{}\"".format(self.type, ', '.join(super().args))
|
||||||
if self.html_code is not None:
|
if self.html_code is not None:
|
||||||
msg += f" (HTML Code: {self.html_code})"
|
msg += " (HTML Code: {})".format(self.html_code)
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
@@ -134,7 +134,7 @@ jwt_auth = HTTPTokenAuth('Bearer')
|
|||||||
|
|
||||||
@jwt_extended.invalid_token_loader
|
@jwt_extended.invalid_token_loader
|
||||||
def unauthorized_jwt(token):
|
def unauthorized_jwt(token):
|
||||||
main_logger.info("Unauthorized access; invalid token provided: %s", token)
|
main_logger.info("Unauthorized access; invalid token provided: {}".format(token))
|
||||||
abort(401)
|
abort(401)
|
||||||
|
|
||||||
|
|
||||||
@@ -146,10 +146,10 @@ def verify_token(token):
|
|||||||
try:
|
try:
|
||||||
decoded = decode_token(token)
|
decoded = decode_token(token)
|
||||||
except jwt.exceptions.DecodeError as e:
|
except jwt.exceptions.DecodeError as e:
|
||||||
app.logger.warning("Could not verify token: %s", str(e))
|
app.logger.warn("Could not verify token: {}".format(str(e)))
|
||||||
return False
|
return False
|
||||||
except jwt.exceptions.ExpiredSignatureError as e:
|
except jwt.exceptions.ExpiredSignatureError as e:
|
||||||
app.logger.warning("Could not verify token: %s", str(e))
|
app.logger.warn("Could not verify token: {}".format(str(e)))
|
||||||
return False
|
return False
|
||||||
app.logger.info(decoded)
|
app.logger.info(decoded)
|
||||||
return True
|
return True
|
||||||
@@ -163,22 +163,20 @@ from backend.auth import oidc_auth, auth_bp
|
|||||||
try:
|
try:
|
||||||
oidc_auth.init_app(app)
|
oidc_auth.init_app(app)
|
||||||
except requests.exceptions.ConnectionError as err:
|
except requests.exceptions.ConnectionError as err:
|
||||||
app.logger.exception("Could not connect to OIDC!!", exc_info=err)
|
app.logger.error("Could not connect to OIDC!!", err)
|
||||||
|
|
||||||
# oidc_multi_auth = MultiAuth(oidc_auth, jwt_auth) <- can't work as OIDCAuthentication not implementing HTTPAuth
|
# oidc_multi_auth = MultiAuth(oidc_auth, jwt_auth) <- can't work as OIDCAuthentication not implementing HTTPAuth
|
||||||
|
|
||||||
#from .serve_frontend import fe_bp
|
from .serve_frontend import fe_bp
|
||||||
from .api import auth_api_bp, api_v1, api_bp
|
from .api import auth_api_bp, api_v1, api_bp
|
||||||
|
|
||||||
CORS(app)
|
|
||||||
CORS(api_bp)
|
|
||||||
|
|
||||||
app.register_blueprint(auth_bp)
|
app.register_blueprint(auth_bp)
|
||||||
app.register_blueprint(auth_api_bp)
|
app.register_blueprint(auth_api_bp)
|
||||||
app.register_blueprint(api_bp)
|
app.register_blueprint(api_bp)
|
||||||
#app.register_blueprint(fe_bp)
|
app.register_blueprint(fe_bp)
|
||||||
|
|
||||||
|
CORS(app)
|
||||||
|
CORS(api_bp)
|
||||||
|
|
||||||
|
# Fix jwt_extended by duck typing error handlers
|
||||||
# Fix flask-restplus by duck typing error handlers
|
|
||||||
jwt_extended._set_error_handler_callbacks(api_v1)
|
jwt_extended._set_error_handler_callbacks(api_v1)
|
||||||
|
|||||||
@@ -4,32 +4,29 @@
|
|||||||
# Copyright (c) 2019. Tobias Kurze
|
# Copyright (c) 2019. Tobias Kurze
|
||||||
import logging
|
import logging
|
||||||
import ssl
|
import ssl
|
||||||
|
import sys
|
||||||
|
|
||||||
from jinja2.exceptions import TemplateNotFound
|
from jinja2.exceptions import TemplateNotFound
|
||||||
|
|
||||||
from backend import app, db
|
from backend import app, db
|
||||||
from backend.models import room_model, recorder_model, RecorderCommand
|
from backend.cron import get_default_scheduler, add_default_jobs
|
||||||
|
from backend.models import *
|
||||||
|
from backend.models import room_model, recorder_model, RecorderCommand, Recorder
|
||||||
from backend.recorder_adapters import get_defined_recorder_adapters
|
from backend.recorder_adapters import get_defined_recorder_adapters
|
||||||
from backend.tools.model_updater import update_recorder_models_database, create_default_recorders
|
from backend.tools.model_updater import update_recorder_models_database, create_default_recorders
|
||||||
|
from backend.websocket.base import WebSocketBase
|
||||||
|
|
||||||
def setup_database(app):
|
|
||||||
with app.app_context():
|
|
||||||
#db.drop_all()
|
|
||||||
db.create_all()
|
|
||||||
room_model.pre_fill_table()
|
|
||||||
update_recorder_models_database(drop=False)
|
|
||||||
create_default_recorders()
|
|
||||||
|
|
||||||
|
|
||||||
def get_app():
|
|
||||||
setup_database(app)
|
|
||||||
|
|
||||||
#app.register_blueprint(api_blueprint)
|
|
||||||
return app
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
||||||
app = get_app()
|
|
||||||
|
#db.drop_all()
|
||||||
|
#db.create_all()
|
||||||
|
|
||||||
|
#Recorder()
|
||||||
|
room_model.pre_fill_table()
|
||||||
|
update_recorder_models_database(drop=False)
|
||||||
|
create_default_recorders()
|
||||||
|
|
||||||
print(app.config.get("SERVER_NAME", None))
|
print(app.config.get("SERVER_NAME", None))
|
||||||
server_name = app.config.get("SERVER_NAME", None)
|
server_name = app.config.get("SERVER_NAME", None)
|
||||||
@@ -46,7 +43,25 @@ def main():
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.critical(e)
|
logging.critical(e)
|
||||||
|
|
||||||
app.run(debug=True, host="0.0.0.0")
|
print("Starting Scheduler")
|
||||||
|
scheduler = get_default_scheduler()
|
||||||
|
add_default_jobs(scheduler)
|
||||||
|
scheduler.start()
|
||||||
|
|
||||||
|
wsb = WebSocketBase()
|
||||||
|
print("running websocket...(replaces normal app.run()")
|
||||||
|
wsb.start_websocket(debug=True)
|
||||||
|
# print("running web app...")
|
||||||
|
#app.run(debug=True, host="0.0.0.0", threaded=True)
|
||||||
|
wsb.send_test_msg()
|
||||||
|
|
||||||
|
while True:
|
||||||
|
user_in = input("Type >exit< to quit.")
|
||||||
|
if user_in == "exit" or user_in == ">exit<":
|
||||||
|
break
|
||||||
|
|
||||||
|
scheduler.shutdown()
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
@@ -27,8 +27,10 @@ api_v1 = Api(api_bp, prefix="/v1", version='0.1', title='Vue Test API',
|
|||||||
|
|
||||||
api_user = Namespace('user', description="User management namespace", authorizations=api_authorizations)
|
api_user = Namespace('user', description="User management namespace", authorizations=api_authorizations)
|
||||||
api_group = Namespace('group', description="Group management namespace", authorizations=api_authorizations)
|
api_group = Namespace('group', description="Group management namespace", authorizations=api_authorizations)
|
||||||
|
api_permissions = Namespace('permissions', description="Permissions management namespace", authorizations=api_authorizations)
|
||||||
api_room = Namespace('room', description="Room management namespace", authorizations=api_authorizations)
|
api_room = Namespace('room', description="Room management namespace", authorizations=api_authorizations)
|
||||||
api_recorder = Namespace('recorder', description="Recorder management namespace", authorizations=api_authorizations)
|
api_recorder = Namespace('recorder', description="Recorder management namespace", authorizations=api_authorizations)
|
||||||
|
api_state = Namespace('state', description="Object state management namespace", authorizations=api_authorizations)
|
||||||
api_virtual_command = Namespace('virtual_command', description="Virtual command namespace",
|
api_virtual_command = Namespace('virtual_command', description="Virtual command namespace",
|
||||||
authorizations=api_authorizations)
|
authorizations=api_authorizations)
|
||||||
api_cron_job = Namespace('cron_job', description="Cron job namespace",
|
api_cron_job = Namespace('cron_job', description="Cron job namespace",
|
||||||
@@ -38,8 +40,10 @@ api_control = Namespace('control', description="Control namespace",
|
|||||||
|
|
||||||
api_v1.add_namespace(api_user)
|
api_v1.add_namespace(api_user)
|
||||||
api_v1.add_namespace(api_group)
|
api_v1.add_namespace(api_group)
|
||||||
|
api_v1.add_namespace(api_permissions)
|
||||||
api_v1.add_namespace(api_room)
|
api_v1.add_namespace(api_room)
|
||||||
api_v1.add_namespace(api_recorder)
|
api_v1.add_namespace(api_recorder)
|
||||||
|
api_v1.add_namespace(api_state)
|
||||||
api_v1.add_namespace(api_virtual_command)
|
api_v1.add_namespace(api_virtual_command)
|
||||||
api_v1.add_namespace(api_cron_job)
|
api_v1.add_namespace(api_cron_job)
|
||||||
api_v1.add_namespace(api_control)
|
api_v1.add_namespace(api_control)
|
||||||
@@ -58,9 +62,11 @@ auth_api_v1.add_namespace(auth_api_register_ns)
|
|||||||
from .example_api import *
|
from .example_api import *
|
||||||
from .auth_api import *
|
from .auth_api import *
|
||||||
from .user_api import *
|
from .user_api import *
|
||||||
|
from .permission_api import *
|
||||||
from .group_api import *
|
from .group_api import *
|
||||||
from .room_api import *
|
from .room_api import *
|
||||||
from .recorder_api import *
|
from .recorder_api import *
|
||||||
|
from .state_api import *
|
||||||
from .control_api import *
|
from .control_api import *
|
||||||
from .virtual_command_api import *
|
from .virtual_command_api import *
|
||||||
|
|
||||||
|
|||||||
@@ -10,16 +10,21 @@ import json
|
|||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|
||||||
import flask
|
import flask
|
||||||
|
from datetime import datetime, timedelta
|
||||||
import jwt
|
import jwt
|
||||||
from flask import request, jsonify, current_app, url_for, redirect, make_response
|
from flask import request, jsonify, current_app, url_for, Response, session, redirect, make_response
|
||||||
from flask_jwt_extended import create_access_token, create_refresh_token, get_jwt, get_jwt_identity, jwt_required
|
from flask_jwt_extended import create_access_token, create_refresh_token, jwt_refresh_token_required, get_jwt_identity, \
|
||||||
|
get_raw_jwt, jwt_required
|
||||||
|
from functools import wraps
|
||||||
|
from random import randint
|
||||||
|
|
||||||
|
from flask_login import logout_user, login_user
|
||||||
from typing import Iterable
|
from typing import Iterable
|
||||||
|
|
||||||
from flask_restx import Resource, fields
|
from flask_restx import Resource, fields
|
||||||
from werkzeug.routing import BuildError
|
from werkzeug.routing import BuildError
|
||||||
|
|
||||||
from backend import db, app
|
from backend import db, app, jwt_extended
|
||||||
from backend.api import auth_api_bp, auth_api_providers_ns, auth_api_register_ns
|
from backend.api import auth_api_bp, auth_api_providers_ns, auth_api_register_ns
|
||||||
from backend.auth import AUTH_PROVIDERS, oidc_auth
|
from backend.auth import AUTH_PROVIDERS, oidc_auth
|
||||||
from backend.models.user_model import User, Group, BlacklistToken
|
from backend.models.user_model import User, Group, BlacklistToken
|
||||||
@@ -53,19 +58,19 @@ def register():
|
|||||||
return jsonify(user.to_dict()), 201
|
return jsonify(user.to_dict()), 201
|
||||||
|
|
||||||
|
|
||||||
# @auth_api_register_ns.route('/')
|
@auth_api_register_ns.route('/')
|
||||||
# @auth_api_register_ns.expect(auth_api_register_ns.model('RegisterModel', {
|
@auth_api_register_ns.expect(auth_api_register_ns.model('RegisterModel', {
|
||||||
# 'nickname': fields.String(required=False, description='The user\'s nickname'),
|
'nickname': fields.String(required=False, description='The user\'s nickname'),
|
||||||
# 'first_name': fields.String(required=False, description='The user\'s first name'),
|
'first_name': fields.String(required=False, description='The user\'s first name'),
|
||||||
# 'last_name': fields.String(required=False, description='The user\'s last name'),
|
'last_name': fields.String(required=False, description='The user\'s last name'),
|
||||||
# 'lang': fields.String(required=False, description='The user\'s preferred language'),
|
'lang': fields.String(required=False, description='The user\'s preferred language'),
|
||||||
# 'timezone': fields.String(required=False, description='The user\'s preferred timezone'),
|
'timezone': fields.String(required=False, description='The user\'s preferred timezone'),
|
||||||
# 'email': fields.String(required=True, description='The user\'s e-mail address'),
|
'email': fields.String(required=True, description='The user\'s e-mail address'),
|
||||||
# 'password': fields.String(required=False, description='The group\'s name')
|
'password': fields.String(required=False, description='The group\'s name')
|
||||||
# }))
|
}))
|
||||||
# class AuthProviders(Resource):
|
class AuthProviders(Resource):
|
||||||
# def get(self):
|
def get(self):
|
||||||
# return register()
|
return register()
|
||||||
|
|
||||||
|
|
||||||
@auth_api_bp.route('/login', methods=('GET', 'POST',))
|
@auth_api_bp.route('/login', methods=('GET', 'POST',))
|
||||||
@@ -91,7 +96,7 @@ def login():
|
|||||||
@auth_api_bp.route('/logout', methods=['GET', 'DELETE'])
|
@auth_api_bp.route('/logout', methods=['GET', 'DELETE'])
|
||||||
@jwt_required
|
@jwt_required
|
||||||
def logout():
|
def logout():
|
||||||
jti = get_jwt()['jti']
|
jti = get_raw_jwt()['jti']
|
||||||
db.session.add(BlacklistToken(token=jti))
|
db.session.add(BlacklistToken(token=jti))
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return jsonify({"msg": "Successfully logged out"}), 200
|
return jsonify({"msg": "Successfully logged out"}), 200
|
||||||
@@ -99,9 +104,9 @@ def logout():
|
|||||||
|
|
||||||
# Endpoint for revoking the current users refresh token
|
# Endpoint for revoking the current users refresh token
|
||||||
@auth_api_bp.route('/logout2', methods=['GET', 'DELETE'])
|
@auth_api_bp.route('/logout2', methods=['GET', 'DELETE'])
|
||||||
@jwt_required(refresh=True)
|
@jwt_refresh_token_required
|
||||||
def logout2():
|
def logout2():
|
||||||
jti = get_jwt()['jti']
|
jti = get_raw_jwt()['jti']
|
||||||
db.session.add(BlacklistToken(token=jti))
|
db.session.add(BlacklistToken(token=jti))
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return jsonify({"msg": "Successfully logged out"}), 200
|
return jsonify({"msg": "Successfully logged out"}), 200
|
||||||
@@ -177,7 +182,7 @@ def oidc(redirect_url=None):
|
|||||||
|
|
||||||
|
|
||||||
@auth_api_bp.route('/refresh', methods=['GET'])
|
@auth_api_bp.route('/refresh', methods=['GET'])
|
||||||
@jwt_required(refresh=True)
|
@jwt_refresh_token_required
|
||||||
def refresh():
|
def refresh():
|
||||||
"""Refresh token endpoint. This will generate a new access token from
|
"""Refresh token endpoint. This will generate a new access token from
|
||||||
the refresh token, but will mark that access token as non-fresh,
|
the refresh token, but will mark that access token as non-fresh,
|
||||||
|
|||||||
@@ -8,17 +8,18 @@ Login through API does not start a new session, but instead returns JWT.
|
|||||||
import json
|
import json
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from flask_jwt_extended import jwt_required, get_current_user, get_jwt
|
from flask_jwt_extended import jwt_required, get_current_user, get_jwt_claims
|
||||||
from flask_restx import fields, Resource
|
from flask_restx import fields, Resource
|
||||||
|
|
||||||
from backend import db
|
from backend import db
|
||||||
from backend.api import api_control, get_jwt_identity
|
from backend.api import api_control, get_jwt_identity, Recorder, RecorderCommand, pprint
|
||||||
|
from backend.recorder_adapters.helpers import execute_recorder_command
|
||||||
|
|
||||||
control_command_response_model = api_control.model('Control Command Response', {
|
control_command_response_model = api_control.model('Control Command Response', {
|
||||||
'time': fields.DateTime(required=False, description='Creation date of the recorder'),
|
'time': fields.DateTime(required=False, description='Creation date of the recorder'),
|
||||||
'state': fields.String(min_length=3, required=True, description='The recorder\'s name'),
|
'ok': fields.Boolean(required=True, description='Field indicating whether command execution was successful.'),
|
||||||
'output': fields.String(required=False, description='The recorder\'s description'),
|
'output': fields.String(required=False, description='Command output in case of success'),
|
||||||
'error': fields.String(required=False, description='The recorder\'s description'),
|
'error': fields.String(required=False, description='Error description in case of a problem.'),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -27,16 +28,28 @@ class ControlCommand(Resource):
|
|||||||
control_command_parser = api_control.parser()
|
control_command_parser = api_control.parser()
|
||||||
control_command_parser.add_argument('recorder_id', type=int, default=1, required=True)
|
control_command_parser.add_argument('recorder_id', type=int, default=1, required=True)
|
||||||
control_command_parser.add_argument('command_id', type=int, default=1, required=True)
|
control_command_parser.add_argument('command_id', type=int, default=1, required=True)
|
||||||
control_command_parser.add_argument('parameters', default=json.dumps({'p1': 'v1'}), type=dict, required=False,
|
control_command_parser.add_argument('parameters', default={}, type=dict, required=False,
|
||||||
location='json')
|
location='json')
|
||||||
|
|
||||||
@jwt_required
|
#@jwt_required
|
||||||
@api_control.doc('run_command')
|
@api_control.doc('run_command')
|
||||||
@api_control.expect(control_command_parser)
|
@api_control.expect(control_command_parser)
|
||||||
@api_control.marshal_with(control_command_response_model, skip_none=False, code=201)
|
@api_control.marshal_with(control_command_response_model, skip_none=False, code=201)
|
||||||
def post(self):
|
def post(self):
|
||||||
print(get_current_user())
|
#print(get_current_user())
|
||||||
print(get_jwt_identity())
|
#print(get_jwt_identity())
|
||||||
current_user = {'user': get_current_user(), 'claims': get_jwt()}
|
#current_user = {'user': get_current_user(), 'claims': get_jwt_claims()}
|
||||||
|
#TODO: right check! (acl, etc.)
|
||||||
args = self.control_command_parser.parse_args()
|
args = self.control_command_parser.parse_args()
|
||||||
return {'time': datetime.utcnow(), 'output': args, 'state': current_user}
|
recorder = Recorder.get_by_identifier(args.get('recorder_id'))
|
||||||
|
if recorder is None:
|
||||||
|
api_control.abort(404, "Recorder not found!")
|
||||||
|
command = RecorderCommand.get_by_identifier(args.get('command_id'))
|
||||||
|
if command is None:
|
||||||
|
api_control.abort(404, "Command not found!")
|
||||||
|
|
||||||
|
success, output = execute_recorder_command(recorder, command, args.get('parameters', None))
|
||||||
|
|
||||||
|
if success:
|
||||||
|
return {'time': datetime.utcnow(), 'output': output, 'ok': success}
|
||||||
|
return {'time': datetime.utcnow(), 'error': output, 'ok': success}
|
||||||
|
|||||||
@@ -21,7 +21,11 @@ group_model = api_group.model('Group', {
|
|||||||
'first_name': fields.String(), 'last_name': fields.String(),
|
'first_name': fields.String(), 'last_name': fields.String(),
|
||||||
'email': fields.String(), 'registered_on': fields.DateTime(),
|
'email': fields.String(), 'registered_on': fields.DateTime(),
|
||||||
'last_seen': fields.DateTime()})),
|
'last_seen': fields.DateTime()})),
|
||||||
required=False, description='Group members.')
|
required=False, description='Group members.'),
|
||||||
|
'permissions': fields.List(fields.Nested(api_group.model('group_permissions',
|
||||||
|
{'id': fields.Integer,
|
||||||
|
'name': fields.String})),
|
||||||
|
required=False, description='Group permissions.'),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
from flask_restx import fields
|
from flask_restx import fields
|
||||||
from backend.api import api_user, api_recorder, api_v1
|
from backend.api import api_user, api_recorder, api_v1, api_state
|
||||||
|
|
||||||
generic_id_parser = api_v1.parser()
|
generic_id_parser = api_v1.parser()
|
||||||
generic_id_parser.add_argument('id', type=str, required=True, store_missing=False)
|
generic_id_parser.add_argument('id', type=str, required=True, store_missing=False)
|
||||||
@@ -20,7 +20,9 @@ user_model = api_user.model('User', {
|
|||||||
fields.Nested(api_user.model('user_group', {'id': fields.Integer(), 'name': fields.String()})),
|
fields.Nested(api_user.model('user_group', {'id': fields.Integer(), 'name': fields.String()})),
|
||||||
required=False, description='Group memberships.'),
|
required=False, description='Group memberships.'),
|
||||||
'favorite_recorders': fields.List(
|
'favorite_recorders': fields.List(
|
||||||
fields.Nested(api_user.model('favorite_recorder', {'id': fields.Integer(), 'name': fields.String()})),
|
fields.Nested(api_user.model('favorite_recorder',
|
||||||
|
{'id': fields.Integer(), 'name': fields.String(), 'offline': fields.Boolean(),
|
||||||
|
'created_at': fields.DateTime(), 'last_time_modified': fields.DateTime()})),
|
||||||
required=False, description='Favorite recorders.'),
|
required=False, description='Favorite recorders.'),
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -100,3 +102,6 @@ recorder_model_model = api_recorder.model('Recorder Model', {
|
|||||||
description='Model of the recorder.'),
|
description='Model of the recorder.'),
|
||||||
'commands': fields.List(fields.Nested(recorder_command_model), attribute="recorder_commands")
|
'commands': fields.List(fields.Nested(recorder_command_model), attribute="recorder_commands")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
state_model = api_state.model('Recorder', {
|
||||||
|
})
|
||||||
|
|||||||
91
backend/api/permission_api.py
Normal file
91
backend/api/permission_api.py
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
# Copyright (c) 2019. Tobias Kurze
|
||||||
|
"""
|
||||||
|
This module provides functions related to authentication through the API.
|
||||||
|
For example: listing of available auth providers or registration of users.
|
||||||
|
|
||||||
|
Login through API does not start a new session, but instead returns JWT.
|
||||||
|
"""
|
||||||
|
from flask_jwt_extended import jwt_required
|
||||||
|
from flask_restx import fields, Resource
|
||||||
|
|
||||||
|
from backend import db
|
||||||
|
from backend.api import api_permissions
|
||||||
|
from backend.models.user_model import Permission
|
||||||
|
|
||||||
|
permission_model = api_permissions.model('Permission', {
|
||||||
|
'id': fields.String(required=False, description='The permission\'s identifier'),
|
||||||
|
'name': fields.String(required=True, description='The permission\'s name'),
|
||||||
|
'description': fields.String(required=False, description='The permission\'s description'),
|
||||||
|
'groups': fields.List(fields.Nested(api_permissions.model('group_member',
|
||||||
|
{'id': fields.Integer(),
|
||||||
|
'name': fields.String(),
|
||||||
|
'description': fields.String()})),
|
||||||
|
required=False, description='Groups having the permission.'),
|
||||||
|
'access_control_entry': fields.Nested(api_permissions.model('group_member',
|
||||||
|
{'id': fields.Integer(),
|
||||||
|
'name': fields.String(),
|
||||||
|
'url': fields.String()}),
|
||||||
|
required=False, description="Access Control Entry"),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@api_permissions.route('/<int:id>')
|
||||||
|
@api_permissions.response(404, 'permission not found')
|
||||||
|
@api_permissions.param('id', 'The permission identifier')
|
||||||
|
class PermissionResource(Resource):
|
||||||
|
@jwt_required
|
||||||
|
@api_permissions.doc('get_permission')
|
||||||
|
@api_permissions.marshal_with(permission_model)
|
||||||
|
def get(self, id):
|
||||||
|
"""Fetch a user given its identifier"""
|
||||||
|
permission = Permission.get_by_id(id)
|
||||||
|
if permission is not None:
|
||||||
|
return permission
|
||||||
|
api_permissions.abort(404)
|
||||||
|
|
||||||
|
@jwt_required
|
||||||
|
@api_permissions.doc('delete_permission')
|
||||||
|
@api_permissions.response(204, 'permission deleted')
|
||||||
|
def delete(self, id):
|
||||||
|
"""Delete a permission given its identifier"""
|
||||||
|
permission = Permission.get_by_id(id)
|
||||||
|
if permission is not None:
|
||||||
|
permission.delete()
|
||||||
|
return '', 204
|
||||||
|
api_permissions.abort(404)
|
||||||
|
|
||||||
|
@jwt_required
|
||||||
|
@api_permissions.doc('update_permission')
|
||||||
|
@api_permissions.expect(permission_model)
|
||||||
|
@api_permissions.marshal_with(permission_model)
|
||||||
|
def put(self, id):
|
||||||
|
"""Update a task given its identifier"""
|
||||||
|
permission = Permission.get_by_id(id)
|
||||||
|
if permission is not None:
|
||||||
|
permission.name = api_permissions["name"]
|
||||||
|
db.session.commit()
|
||||||
|
return permission
|
||||||
|
api_permissions.abort(404)
|
||||||
|
|
||||||
|
|
||||||
|
@api_permissions.route('')
|
||||||
|
class PermissionList(Resource):
|
||||||
|
@jwt_required
|
||||||
|
@api_permissions.doc('permissions')
|
||||||
|
@api_permissions.marshal_list_with(permission_model)
|
||||||
|
def get(self):
|
||||||
|
"""
|
||||||
|
List all permissions
|
||||||
|
:return: permissions
|
||||||
|
"""
|
||||||
|
return Permission.get_all()
|
||||||
|
|
||||||
|
@jwt_required
|
||||||
|
@api_permissions.doc('create_permission')
|
||||||
|
@api_permissions.expect(permission_model)
|
||||||
|
@api_permissions.marshal_with(permission_model, code=201)
|
||||||
|
def post(self):
|
||||||
|
permission = Permission(**api_permissions.payload)
|
||||||
|
db.session.add(permission)
|
||||||
|
db.session.commit()
|
||||||
|
return permission
|
||||||
@@ -1,9 +1,6 @@
|
|||||||
# Copyright (c) 2019. Tobias Kurze
|
# Copyright (c) 2019. Tobias Kurze
|
||||||
"""
|
"""
|
||||||
This module provides functions related to authentication through the API.
|
This module provides functions related to recorders through the API.
|
||||||
For example: listing of available auth providers or registration of users.
|
|
||||||
|
|
||||||
Login through API does not start a new session, but instead returns JWT.
|
|
||||||
"""
|
"""
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|||||||
67
backend/api/state_api.py
Normal file
67
backend/api/state_api.py
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
# Copyright (c) 2019. Tobias Kurze
|
||||||
|
"""
|
||||||
|
This module provides functions related to object states through the API.
|
||||||
|
"""
|
||||||
|
from datetime import datetime
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
from flask_jwt_extended import jwt_required
|
||||||
|
from flask_restx import fields, Resource, inputs
|
||||||
|
|
||||||
|
from backend import db, app
|
||||||
|
from backend.api import api_state
|
||||||
|
from backend.api.models import recorder_model, recorder_model_model, recorder_command_model, state_model
|
||||||
|
from backend.cron import async_cron_recorder_checker
|
||||||
|
from backend.cron.cron_state_checker import StateChecker
|
||||||
|
from backend.models.recorder_model import Recorder, RecorderModel, RecorderCommand
|
||||||
|
from backend.models.room_model import Room
|
||||||
|
import backend.recorder_adapters as r_a
|
||||||
|
|
||||||
|
|
||||||
|
# ==
|
||||||
|
from backend.tools.recorder_state_checker import get_recorder_adapter, check_capture_agent_state, check_stream_sanity
|
||||||
|
|
||||||
|
|
||||||
|
@api_state.route('/recorder/<int:id>')
|
||||||
|
@api_state.response(404, 'Recorder not found')
|
||||||
|
@api_state.param('id', 'The recorder identifier')
|
||||||
|
class RecorderStateResource(Resource):
|
||||||
|
@jwt_required
|
||||||
|
@api_state.doc('get_recorder_state')
|
||||||
|
@api_state.marshal_with(state_model, skip_none=False)
|
||||||
|
def get(self, id):
|
||||||
|
"""Fetch a recorder given its identifier"""
|
||||||
|
recorder: Recorder = Recorder.query.get(id)
|
||||||
|
if recorder is None:
|
||||||
|
api_state.abort(404)
|
||||||
|
|
||||||
|
current_states_by_checker = async_cron_recorder_checker.get_current_state()
|
||||||
|
state = async_cron_recorder_checker.get_current_state_for_recorder_id(recorder.id)
|
||||||
|
if state is None:
|
||||||
|
state_checker = StateChecker([check_capture_agent_state], Recorder)
|
||||||
|
state_checker.add_object_to_state_check(recorder)
|
||||||
|
state_checker.check_object_state()
|
||||||
|
state = state_checker.get_current_state_for_recorder_id(recorder.id)
|
||||||
|
if not state.get('state_ok', False): # if state is not OK, return state -> no more checks!
|
||||||
|
return state
|
||||||
|
|
||||||
|
# do additional checks, such as: check for single color, sound check, etc.
|
||||||
|
stream_state = check_stream_sanity(recorder)
|
||||||
|
print(stream_state)
|
||||||
|
|
||||||
|
return stream_state
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@api_state.route('/recorder')
|
||||||
|
class RecorderStateList(Resource):
|
||||||
|
@jwt_required
|
||||||
|
@api_state.doc('get_recorders_states')
|
||||||
|
@api_state.marshal_list_with(state_model, skip_none=False)
|
||||||
|
def get(self):
|
||||||
|
"""
|
||||||
|
Get state of all recorders
|
||||||
|
:return: state
|
||||||
|
"""
|
||||||
|
return Recorder.get_all()
|
||||||
@@ -70,7 +70,7 @@ class UserFavoriteRecorders(Resource):
|
|||||||
args = generic_id_parser.parse_args()
|
args = generic_id_parser.parse_args()
|
||||||
current_user_id = get_jwt_identity()
|
current_user_id = get_jwt_identity()
|
||||||
user = User.get_by_identifier(current_user_id)
|
user = User.get_by_identifier(current_user_id)
|
||||||
print(user)
|
print(args)
|
||||||
recorder = Recorder.get_by_identifier(args["id"])
|
recorder = Recorder.get_by_identifier(args["id"])
|
||||||
print(recorder)
|
print(recorder)
|
||||||
if recorder is None:
|
if recorder is None:
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ def logout():
|
|||||||
logout_user()
|
logout_user()
|
||||||
|
|
||||||
|
|
||||||
@jwt_extended.additional_claims_loader
|
@jwt_extended.user_claims_loader
|
||||||
def add_claims_to_access_token(user):
|
def add_claims_to_access_token(user):
|
||||||
if isinstance(user, str):
|
if isinstance(user, str):
|
||||||
return {}
|
return {}
|
||||||
@@ -66,13 +66,13 @@ def user_identity_loader(user):
|
|||||||
return user.email
|
return user.email
|
||||||
|
|
||||||
|
|
||||||
@jwt_extended.user_lookup_loader
|
@jwt_extended.user_loader_callback_loader
|
||||||
def user_loader_callback(identity):
|
def user_loader_callback(identity):
|
||||||
print("### user_loader_callback_loader")
|
print("### user_loader_callback_loader")
|
||||||
return User.get_by_identifier(identity)
|
return User.get_by_identifier(identity)
|
||||||
|
|
||||||
|
|
||||||
@jwt_extended.token_in_blocklist_loader
|
@jwt_extended.token_in_blacklist_loader
|
||||||
def check_if_token_in_blacklist(decrypted_token):
|
def check_if_token_in_blacklist(decrypted_token):
|
||||||
jti = decrypted_token['jti']
|
jti = decrypted_token['jti']
|
||||||
return BlacklistToken.get_by_token(jti) is not None
|
return BlacklistToken.get_by_token(jti) is not None
|
||||||
|
|||||||
Binary file not shown.
@@ -1,7 +1,98 @@
|
|||||||
import logging
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
cron_log_handler = logging.FileHandler(CRON_LOG_FILE)
|
import logging
|
||||||
cron_logger = logging.getLogger("mal.cron")
|
import random
|
||||||
|
import signal
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
from logging.handlers import TimedRotatingFileHandler
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
from backend import app, main_logger
|
||||||
|
|
||||||
|
from apscheduler.schedulers.background import BackgroundScheduler
|
||||||
|
|
||||||
|
from backend.cron.cron_state_checker import async_cron_recorder_checker
|
||||||
|
from backend.websocket.handlers import send_state_update_to_recorders
|
||||||
|
|
||||||
|
cron_log_handler = TimedRotatingFileHandler(app.config.get('CRON_LOG_FILE'), interval=1, when='d', backupCount=3)
|
||||||
|
cron_log_handler.setFormatter(logging.Formatter('[%(asctime)s] - %(funcName)20s() %(message)s'))
|
||||||
|
cron_logger = logging.getLogger("lrc.cron")
|
||||||
cron_logger.addHandler(cron_log_handler)
|
cron_logger.addHandler(cron_log_handler)
|
||||||
logging.getLogger("apscheduler.scheduler").addHandler(cron_log_handler)
|
logging.getLogger("apscheduler.scheduler").addHandler(cron_log_handler)
|
||||||
logging.getLogger("apscheduler.executors.default").addHandler(cron_log_handler)
|
logging.getLogger("apscheduler.executors.default").addHandler(cron_log_handler)
|
||||||
|
|
||||||
|
scheduler = None
|
||||||
|
|
||||||
|
|
||||||
|
def get_default_scheduler():
|
||||||
|
cron_logger.debug("creating scheduler!")
|
||||||
|
global scheduler
|
||||||
|
scheduler = BackgroundScheduler(timezone='utc')
|
||||||
|
scheduler.daemonic = False
|
||||||
|
|
||||||
|
return scheduler
|
||||||
|
|
||||||
|
|
||||||
|
def add_default_jobs(sched=None, testing=False):
|
||||||
|
global scheduler
|
||||||
|
if sched is None:
|
||||||
|
sched = scheduler
|
||||||
|
|
||||||
|
if testing:
|
||||||
|
check_recorder_state_job = sched.add_job(async_cron_recorder_checker.check_object_state, 'interval', seconds=40,
|
||||||
|
id="check_recorder_state_job")
|
||||||
|
|
||||||
|
else:
|
||||||
|
check_recorder_state_job = sched.add_job(async_cron_recorder_checker.check_object_state, 'interval', minutes=2,
|
||||||
|
id="check_recorder_state_job")
|
||||||
|
|
||||||
|
"""
|
||||||
|
Job regularly sending the state to "frontend recorders" through websocket
|
||||||
|
"""
|
||||||
|
send_update_state_to_recorder_job = sched.add_job(
|
||||||
|
lambda: send_state_update_to_recorders(async_cron_recorder_checker.get_current_state()), 'interval', minutes=1,
|
||||||
|
id="send_update_state_to_recorder_job")
|
||||||
|
|
||||||
|
return [check_recorder_state_job, send_update_state_to_recorder_job]
|
||||||
|
|
||||||
|
|
||||||
|
def signal_handler(sig, frame):
|
||||||
|
print('You pressed Ctrl+C -> shutting down scheduler!')
|
||||||
|
if scheduler is not None:
|
||||||
|
scheduler.shutdown()
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
# check_for_ingestibles_and_ingest()
|
||||||
|
# remove_obsolete_media_files_objects()
|
||||||
|
stream_handler = logging.StreamHandler()
|
||||||
|
stream_handler.setFormatter(
|
||||||
|
logging.Formatter('[%(asctime)s] {%(threadName)s} %(levelname)s in %(module)s, line %(lineno)d: %(message)s'))
|
||||||
|
cron_logger.addHandler(stream_handler)
|
||||||
|
cron_logger.setLevel(logging.INFO)
|
||||||
|
|
||||||
|
signal.signal(signal.SIGINT, signal_handler)
|
||||||
|
get_default_scheduler()
|
||||||
|
add_default_jobs(testing=True)
|
||||||
|
cron_logger.info("Starting internal scheduler")
|
||||||
|
scheduler.start()
|
||||||
|
|
||||||
|
c = 0
|
||||||
|
while c < 10:
|
||||||
|
sleep_time = random.randint(10, 20)
|
||||||
|
cron_logger.info("Sleeping for {}s".format(sleep_time))
|
||||||
|
time.sleep(sleep_time)
|
||||||
|
recorder_id = random.randint(0, 15)
|
||||||
|
cron_logger.info("Using recorder id {}".format(recorder_id))
|
||||||
|
async_cron_recorder_checker.add_object_to_state_check(recorder_id)
|
||||||
|
async_cron_recorder_checker.add_object_to_state_check(recorder_id + 1)
|
||||||
|
pprint(async_cron_recorder_checker.get_current_state())
|
||||||
|
|
||||||
|
while True:
|
||||||
|
user_in = input("Type >exit< to quit.")
|
||||||
|
if user_in == "exit" or user_in == ">exit<":
|
||||||
|
break
|
||||||
|
|
||||||
|
scheduler.shutdown()
|
||||||
|
|||||||
165
backend/cron/cron_state_checker.py
Normal file
165
backend/cron/cron_state_checker.py
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import copy
|
||||||
|
import datetime
|
||||||
|
import logging
|
||||||
|
from multiprocessing.context import TimeoutError
|
||||||
|
from multiprocessing.pool import ThreadPool
|
||||||
|
from pprint import pprint
|
||||||
|
from threading import Lock
|
||||||
|
from typing import Union, Callable, TypeVar, Generic, Set, List
|
||||||
|
|
||||||
|
from backend.models import Recorder
|
||||||
|
from backend.tools.recorder_state_checker import check_capture_agent_state, ping_capture_agent
|
||||||
|
|
||||||
|
logger = logging.getLogger("lrc.cron.recorder_state")
|
||||||
|
|
||||||
|
recorder_jobs_lock = Lock()
|
||||||
|
recorder_jobs = set()
|
||||||
|
|
||||||
|
NUM_THREADS = 8
|
||||||
|
|
||||||
|
T = TypeVar('T')
|
||||||
|
|
||||||
|
|
||||||
|
class StateChecker(Generic[T]):
|
||||||
|
"""
|
||||||
|
This class is designed generically to regularly check the state of objects with given function(s).
|
||||||
|
The determined state is stored "locally" in the state checker object and NOT reflected back to the checked objects!
|
||||||
|
It can be retrieved by calling get_current_state.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, state_checker_func: Union[Callable, List[Callable]], type_to_check: T, type_name=None,
|
||||||
|
threads=NUM_THREADS):
|
||||||
|
self.num_threads = threads
|
||||||
|
self.lock = Lock()
|
||||||
|
self.jobs: Set[T] = set()
|
||||||
|
self.checker_func = state_checker_func
|
||||||
|
self.checker_type = type_to_check
|
||||||
|
self.update_state_lock = Lock()
|
||||||
|
self.state_results = {}
|
||||||
|
self.type_name = type_name if type_name is not None else self.checker_type.__name__
|
||||||
|
|
||||||
|
def add_object_to_state_check(self, object_to_check: Union[int, T]):
|
||||||
|
if isinstance(object_to_check, int):
|
||||||
|
if not hasattr(self.checker_type, 'get_by_identifier'):
|
||||||
|
logger.error(
|
||||||
|
'Can\'t add object to state check, as >get_by_identifier< not defined on checker_type ({})!'.format(
|
||||||
|
str(self.checker_type)))
|
||||||
|
return
|
||||||
|
object_to_check = self.checker_type.get_by_identifier(object_to_check)
|
||||||
|
if object_to_check is None:
|
||||||
|
logger.warning(
|
||||||
|
"Could not add object ({}) to state check, as specified >id ({})< could not be found / object is None".format(
|
||||||
|
self.type_name, object_to_check))
|
||||||
|
return
|
||||||
|
with self.lock:
|
||||||
|
if hasattr(object_to_check, 'name'):
|
||||||
|
name = object_to_check.name
|
||||||
|
else:
|
||||||
|
name = str(object_to_check)
|
||||||
|
if any([j.id == object_to_check.id for j in self.jobs]):
|
||||||
|
logger.info(
|
||||||
|
"Not adding {} ({}) ({}) to state check (already in job list)".format(object_to_check.id, name,
|
||||||
|
self.type_name))
|
||||||
|
else:
|
||||||
|
logger.debug("Adding {} to object ({}) to state check".format(self.type_name, name))
|
||||||
|
self.jobs.add(object_to_check)
|
||||||
|
|
||||||
|
def remove_recorder_from_state_check(self, object_to_check: Union[int, T]):
|
||||||
|
if isinstance(object_to_check, int):
|
||||||
|
object_to_check = self.checker_type.get_by_identifier(object_to_check)
|
||||||
|
if object_to_check is None:
|
||||||
|
logger.warning(
|
||||||
|
"Could not remove object ({}) from state check, as specified id could not be found / object is None".format(
|
||||||
|
self.type_name))
|
||||||
|
return
|
||||||
|
self.lock.acquire()
|
||||||
|
if hasattr(object_to_check, 'name'):
|
||||||
|
name = object_to_check.name
|
||||||
|
else:
|
||||||
|
name = str(object_to_check)
|
||||||
|
logger.debug("Removing {} from object ({}) to state check".format(self.type_name, name))
|
||||||
|
self.jobs.remove(object_to_check)
|
||||||
|
self.lock.release()
|
||||||
|
|
||||||
|
def execute_checker_func(self, func, jobs: List[T], object_states: dict) -> dict:
|
||||||
|
with ThreadPool(self.num_threads) as pool:
|
||||||
|
results = [pool.apply_async(func, (job,)) for job in jobs]
|
||||||
|
try:
|
||||||
|
state_results = [res.get(timeout=12) for res in results]
|
||||||
|
for r in state_results:
|
||||||
|
if r[0]: # ok :)
|
||||||
|
if object_states[r[2]].get('msg', "") == "unknown state!":
|
||||||
|
del object_states[r[2]]['msg']
|
||||||
|
ok = True
|
||||||
|
else:
|
||||||
|
ok = object_states[r[2]].get('state_ok', False),
|
||||||
|
object_states[r[2]] = {
|
||||||
|
'id': object_states[r[2]].get('id', None),
|
||||||
|
'msg': ", ".join([s for s in [object_states[r[2]].get('msg', None), r[1]] if s]),
|
||||||
|
'state_ok': ok}
|
||||||
|
else:
|
||||||
|
object_states[r[2]] = {'id': object_states[r[2]].get('id', None),
|
||||||
|
'msg': r[1],
|
||||||
|
'state_ok': False}
|
||||||
|
except TimeoutError as e:
|
||||||
|
logger.error("Timeout while performing state check func! {}".format(e))
|
||||||
|
|
||||||
|
return object_states
|
||||||
|
|
||||||
|
def check_object_state(self) -> dict:
|
||||||
|
logger.info("checking object ({}) state...".format(self.type_name))
|
||||||
|
self.lock.acquire()
|
||||||
|
jobs = list(self.jobs)
|
||||||
|
self.lock.release()
|
||||||
|
|
||||||
|
if len(jobs) <= 0:
|
||||||
|
logger.info("No objects ({}) to check... returning".format(self.type_name))
|
||||||
|
return {}
|
||||||
|
logger.info("checking state of {} recorders".format(len(jobs)))
|
||||||
|
|
||||||
|
object_states = {j.name: {'id': j.id, 'state_ok': False, 'msg': 'unknown state!'} for j in jobs}
|
||||||
|
|
||||||
|
if isinstance(self.checker_func, list):
|
||||||
|
for c_f in self.checker_func:
|
||||||
|
self.execute_checker_func(c_f, jobs, object_states)
|
||||||
|
else:
|
||||||
|
self.execute_checker_func(self.checker_func, jobs, object_states)
|
||||||
|
|
||||||
|
self.update_state_dict(object_states)
|
||||||
|
|
||||||
|
return object_states
|
||||||
|
|
||||||
|
def update_state_dict(self, object_states: dict):
|
||||||
|
self.update_state_lock.acquire()
|
||||||
|
for o_s in object_states.keys():
|
||||||
|
if o_s in self.state_results:
|
||||||
|
# update existing state
|
||||||
|
self.state_results[o_s] = {**object_states[o_s],
|
||||||
|
'time_stamp': datetime.datetime.now(datetime.timezone.utc).strftime(
|
||||||
|
"%d.%m.%Y - %H:%M:%S %Z"),
|
||||||
|
'previous': {'state_ok': self.state_results[o_s]['state_ok'],
|
||||||
|
'msg': self.state_results[o_s].get('msg', None),
|
||||||
|
'time_stamp': self.state_results[o_s].get('time_stamp', None)}}
|
||||||
|
else:
|
||||||
|
self.state_results[o_s] = object_states[o_s]
|
||||||
|
|
||||||
|
self.update_state_lock.release()
|
||||||
|
|
||||||
|
def get_current_state(self):
|
||||||
|
with self.update_state_lock:
|
||||||
|
return copy.deepcopy(self.state_results)
|
||||||
|
|
||||||
|
def get_current_state_for_recorder_name(self, recorder_name: str):
|
||||||
|
return self.get_current_state().get(recorder_name, None)
|
||||||
|
|
||||||
|
def get_current_state_for_recorder_id(self, recorder_id: int):
|
||||||
|
states = self.get_current_state()
|
||||||
|
for key in states:
|
||||||
|
state = states[key]
|
||||||
|
if state.get('id', None) == recorder_id: # found!
|
||||||
|
return state
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
async_cron_recorder_checker = StateChecker([check_capture_agent_state, ping_capture_agent], Recorder)
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
"""
|
"""
|
||||||
Import all models...
|
Import all models...
|
||||||
"""
|
"""
|
||||||
|
from backend.models.access_control_model import *
|
||||||
from backend.models.example_model import *
|
from backend.models.example_model import *
|
||||||
from backend.models.user_model import *
|
|
||||||
from backend.models.post_model import *
|
from backend.models.post_model import *
|
||||||
from backend.models.recorder_model import *
|
from backend.models.recorder_model import *
|
||||||
from backend.models.access_control_model import *
|
|
||||||
from backend.models.room_model import *
|
from backend.models.room_model import *
|
||||||
|
from backend.models.user_model import *
|
||||||
from backend.models.virtual_command_model import *
|
from backend.models.virtual_command_model import *
|
||||||
|
|||||||
Binary file not shown.
11
backend/models/model_base.py
Normal file
11
backend/models/model_base.py
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
class ModelBase:
|
||||||
|
def get(self, attribute_name, default_value=None):
|
||||||
|
if hasattr(self, attribute_name):
|
||||||
|
return getattr(self, attribute_name)
|
||||||
|
elif False: # a check for properties?
|
||||||
|
pass
|
||||||
|
elif default_value is not None:
|
||||||
|
return default_value
|
||||||
|
else:
|
||||||
|
raise KeyError("{} not found".format(attribute_name))
|
||||||
@@ -8,8 +8,9 @@ import json
|
|||||||
import pkgutil
|
import pkgutil
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
from typing import Union
|
||||||
|
|
||||||
from sqlalchemy import MetaData
|
from sqlalchemy import MetaData, ForeignKeyConstraint
|
||||||
from sqlalchemy.exc import IntegrityError
|
from sqlalchemy.exc import IntegrityError
|
||||||
from sqlalchemy.ext.hybrid import hybrid_property
|
from sqlalchemy.ext.hybrid import hybrid_property
|
||||||
from sqlalchemy.orm import validates
|
from sqlalchemy.orm import validates
|
||||||
@@ -18,12 +19,48 @@ from backend import db, app, login_manager, LrcException
|
|||||||
from sqlalchemy import or_
|
from sqlalchemy import or_
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
from backend.models.model_base import ModelBase
|
||||||
from backend.models.virtual_command_model import virtual_command_recorder_command_table, virtual_command_recorder_table
|
from backend.models.virtual_command_model import virtual_command_recorder_command_table, virtual_command_recorder_table
|
||||||
|
|
||||||
metadata = MetaData()
|
metadata = MetaData()
|
||||||
|
|
||||||
|
# This is the association table for the many-to-many relationship between
|
||||||
|
# recorders and permissions.
|
||||||
|
recorder_permission_table = db.Table('recorder_permission',
|
||||||
|
db.Column('recorder_id', db.Integer,
|
||||||
|
db.ForeignKey('recorder.id',
|
||||||
|
onupdate="CASCADE",
|
||||||
|
ondelete="CASCADE"),
|
||||||
|
primary_key=True),
|
||||||
|
db.Column('permission_id', db.Integer,
|
||||||
|
db.ForeignKey('permission.id',
|
||||||
|
onupdate="CASCADE",
|
||||||
|
ondelete="CASCADE"),
|
||||||
|
primary_key=True),
|
||||||
|
extend_existing=True)
|
||||||
|
|
||||||
class RecorderModel(db.Model):
|
# This is the association table for the many-to-many relationship between
|
||||||
|
# recorders and recorderCommands and permissions.
|
||||||
|
recorder_rec_commands_permission_table = db.Table('recorder_rec_command_permission',
|
||||||
|
db.Column('recorder_id', db.Integer,
|
||||||
|
db.ForeignKey('recorder.id',
|
||||||
|
onupdate="CASCADE",
|
||||||
|
ondelete="CASCADE"),
|
||||||
|
primary_key=True),
|
||||||
|
db.Column('recorder_command_id', db.Integer,
|
||||||
|
db.ForeignKey('recorder_command.id',
|
||||||
|
onupdate="CASCADE",
|
||||||
|
ondelete="CASCADE"),
|
||||||
|
primary_key=True),
|
||||||
|
db.Column('permission_id', db.Integer,
|
||||||
|
db.ForeignKey('permission.id',
|
||||||
|
onupdate="CASCADE",
|
||||||
|
ondelete="CASCADE"),
|
||||||
|
primary_key=True),
|
||||||
|
extend_existing=True)
|
||||||
|
|
||||||
|
|
||||||
|
class RecorderModel(db.Model, ModelBase):
|
||||||
__table_args__ = {'extend_existing': True}
|
__table_args__ = {'extend_existing': True}
|
||||||
id = db.Column(db.Integer, autoincrement=True, primary_key=True)
|
id = db.Column(db.Integer, autoincrement=True, primary_key=True)
|
||||||
created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow())
|
created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow())
|
||||||
@@ -43,6 +80,10 @@ class RecorderModel(db.Model):
|
|||||||
def get_all():
|
def get_all():
|
||||||
return RecorderModel.query.all()
|
return RecorderModel.query.all()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_by_id(id):
|
||||||
|
return RecorderModel.query.filter(RecorderModel.id == id).first()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_by_name(name):
|
def get_by_name(name):
|
||||||
return RecorderModel.query.filter(RecorderModel.model_name == name).first()
|
return RecorderModel.query.filter(RecorderModel.model_name == name).first()
|
||||||
@@ -79,7 +120,7 @@ class RecorderModel(db.Model):
|
|||||||
return self.model_name + " (record adapter: {})".format(self.record_adapter_id)
|
return self.model_name + " (record adapter: {})".format(self.record_adapter_id)
|
||||||
|
|
||||||
|
|
||||||
class Recorder(db.Model):
|
class Recorder(db.Model, ModelBase):
|
||||||
__table_args__ = {'extend_existing': True}
|
__table_args__ = {'extend_existing': True}
|
||||||
id = db.Column(db.Integer, autoincrement=True, primary_key=True)
|
id = db.Column(db.Integer, autoincrement=True, primary_key=True)
|
||||||
created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow())
|
created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow())
|
||||||
@@ -103,6 +144,9 @@ class Recorder(db.Model):
|
|||||||
_additional_notes_json_string = db.Column(db.UnicodeText, default='')
|
_additional_notes_json_string = db.Column(db.UnicodeText, default='')
|
||||||
additional_camera_connected = db.Column(db.Boolean, default=False)
|
additional_camera_connected = db.Column(db.Boolean, default=False)
|
||||||
firmware_version = db.Column(db.String, nullable=True, default=None)
|
firmware_version = db.Column(db.String, nullable=True, default=None)
|
||||||
|
archive_stream1 = db.Column(db.String, nullable=True, default=None)
|
||||||
|
archive_stream2 = db.Column(db.String, nullable=True, default=None)
|
||||||
|
confidence_stream = db.Column(db.String, nullable=True, default=None)
|
||||||
room_id = db.Column(db.Integer, db.ForeignKey('room.id'))
|
room_id = db.Column(db.Integer, db.ForeignKey('room.id'))
|
||||||
room = db.relationship('Room', uselist=False, back_populates='recorder') # one-to-one relation (uselist=False)
|
room = db.relationship('Room', uselist=False, back_populates='recorder') # one-to-one relation (uselist=False)
|
||||||
recorder_model_id = db.Column(db.Integer, db.ForeignKey('recorder_model.id'))
|
recorder_model_id = db.Column(db.Integer, db.ForeignKey('recorder_model.id'))
|
||||||
@@ -110,6 +154,9 @@ class Recorder(db.Model):
|
|||||||
virtual_commands = db.relationship('VirtualCommand', secondary=virtual_command_recorder_table,
|
virtual_commands = db.relationship('VirtualCommand', secondary=virtual_command_recorder_table,
|
||||||
back_populates='recorders')
|
back_populates='recorders')
|
||||||
|
|
||||||
|
required_read_permissions = db.relationship('Permission', secondary=recorder_permission_table)
|
||||||
|
required_write_permissions = db.relationship('Permission', secondary=recorder_permission_table)
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
super(Recorder, self).__init__(**kwargs)
|
super(Recorder, self).__init__(**kwargs)
|
||||||
|
|
||||||
@@ -209,9 +256,19 @@ class Recorder(db.Model):
|
|||||||
sort_keys=True, indent=4)
|
sort_keys=True, indent=4)
|
||||||
|
|
||||||
|
|
||||||
class RecorderCommand(db.Model):
|
class RecorderCommandPermission(db.Model, ModelBase):
|
||||||
|
__table_args__ = {'extend_existing': True}
|
||||||
|
id = db.Column(db.Integer, autoincrement=True, primary_key=True)
|
||||||
|
recorder = db.relationship('Recorder')
|
||||||
|
recorder_id = db.Column(db.Integer, db.ForeignKey('recorder.id'))
|
||||||
|
recorder_command = db.relationship('RecorderCommand')
|
||||||
|
recorder_command_id = db.Column(db.Integer, db.ForeignKey('recorder_command.id'))
|
||||||
|
permission = db.relationship('Permission')
|
||||||
|
permission_id = db.Column(db.Integer, db.ForeignKey('permission.id'))
|
||||||
|
|
||||||
|
|
||||||
|
class RecorderCommand(db.Model, ModelBase):
|
||||||
__table_args__ = {'extend_existing': True}
|
__table_args__ = {'extend_existing': True}
|
||||||
"""Table containing permissions associated with groups."""
|
|
||||||
id = db.Column(db.Integer, autoincrement=True, primary_key=True)
|
id = db.Column(db.Integer, autoincrement=True, primary_key=True)
|
||||||
created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow())
|
created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow())
|
||||||
last_time_modified = db.Column(db.DateTime, nullable=True, default=datetime.utcnow())
|
last_time_modified = db.Column(db.DateTime, nullable=True, default=datetime.utcnow())
|
||||||
@@ -225,12 +282,19 @@ class RecorderCommand(db.Model):
|
|||||||
virtual_commands = db.relationship('VirtualCommand', secondary=virtual_command_recorder_command_table,
|
virtual_commands = db.relationship('VirtualCommand', secondary=virtual_command_recorder_command_table,
|
||||||
back_populates='recorder_commands')
|
back_populates='recorder_commands')
|
||||||
|
|
||||||
|
required_show_permissions = db.relationship('RecorderCommandPermission')
|
||||||
|
required_execute_permissions = db.relationship('RecorderCommandPermission')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_all():
|
def get_all():
|
||||||
return RecorderCommand.query.all()
|
return RecorderCommand.query.all()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_by_identifier(identifier):
|
||||||
|
return RecorderCommand.query.filter(RecorderCommand.id == identifier).first()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def parameters(self):
|
def parameters(self) -> Union[dict, None]:
|
||||||
if self.parameters_string is None:
|
if self.parameters_string is None:
|
||||||
return None
|
return None
|
||||||
return json.loads(self.parameters_string)
|
return json.loads(self.parameters_string)
|
||||||
@@ -238,3 +302,7 @@ class RecorderCommand(db.Model):
|
|||||||
@parameters.setter
|
@parameters.setter
|
||||||
def parameters(self, parameters_dict: dict):
|
def parameters(self, parameters_dict: dict):
|
||||||
self.parameters_string = json.dumps(parameters_dict)
|
self.parameters_string = json.dumps(parameters_dict)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
Recorder(name="RecTest")
|
||||||
|
|||||||
@@ -8,10 +8,9 @@ import logging
|
|||||||
from sqlalchemy import MetaData, CheckConstraint
|
from sqlalchemy import MetaData, CheckConstraint
|
||||||
from sqlalchemy.exc import IntegrityError
|
from sqlalchemy.exc import IntegrityError
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
from backend import db
|
from backend import db, app, login_manager
|
||||||
from backend.models.recorder_model import Recorder
|
|
||||||
from backend.tools.scrape_rooms import scrape_rooms
|
from backend.tools.scrape_rooms import scrape_rooms
|
||||||
|
|
||||||
logger = logging.getLogger("lrc."+__name__)
|
logger = logging.getLogger("lrc."+__name__)
|
||||||
@@ -29,7 +28,7 @@ class Room(db.Model):
|
|||||||
building_name = db.Column(db.Unicode(63), unique=False, nullable=True)
|
building_name = db.Column(db.Unicode(63), unique=False, nullable=True)
|
||||||
building_number = db.Column(db.Unicode(63), unique=False, nullable=True)
|
building_number = db.Column(db.Unicode(63), unique=False, nullable=True)
|
||||||
|
|
||||||
recorder = db.relationship(Recorder, uselist=False, back_populates='room') # one-to-one relation (uselist=False)
|
recorder = db.relationship('Recorder', uselist=False, back_populates='room') # one-to-one relation (uselist=False)
|
||||||
|
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
CheckConstraint('length(name) > 2',
|
CheckConstraint('length(name) > 2',
|
||||||
@@ -37,7 +36,7 @@ class Room(db.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
db.Model.__init__(self, **kwargs)
|
super(Room, self).__init__(**kwargs)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_by_name(name):
|
def get_by_name(name):
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ Example user model and related models
|
|||||||
"""
|
"""
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
from sqlalchemy.orm import relation
|
||||||
from sqlalchemy import MetaData
|
from sqlalchemy import MetaData
|
||||||
|
|
||||||
from backend import db, app, login_manager
|
from backend import db, app, login_manager
|
||||||
from backend.models.recorder_model import Recorder
|
|
||||||
from backend.config import Config
|
from backend.config import Config
|
||||||
from backend.models.post_model import Post
|
from backend.models.post_model import Post
|
||||||
from backend.models.example_model import ExampleDataItem
|
from backend.models.example_model import ExampleDataItem
|
||||||
@@ -71,6 +71,20 @@ group_permission_table = db.Table('group_permission',
|
|||||||
ondelete="CASCADE"),
|
ondelete="CASCADE"),
|
||||||
primary_key=True))
|
primary_key=True))
|
||||||
|
|
||||||
|
# This is the association table for the many-to-many relationship between
|
||||||
|
# users and permissions.
|
||||||
|
user_permission_table = db.Table('user_permission',
|
||||||
|
db.Column('user_id', db.Integer,
|
||||||
|
db.ForeignKey('user.id',
|
||||||
|
onupdate="CASCADE",
|
||||||
|
ondelete="CASCADE"),
|
||||||
|
primary_key=True),
|
||||||
|
db.Column('permission_id', db.Integer,
|
||||||
|
db.ForeignKey('permission.id',
|
||||||
|
onupdate="CASCADE",
|
||||||
|
ondelete="CASCADE"),
|
||||||
|
primary_key=True))
|
||||||
|
|
||||||
|
|
||||||
class User(UserMixin, db.Model):
|
class User(UserMixin, db.Model):
|
||||||
"""
|
"""
|
||||||
@@ -84,12 +98,13 @@ class User(UserMixin, db.Model):
|
|||||||
email = db.Column(db.String(120), nullable=False, index=True, unique=True)
|
email = db.Column(db.String(120), nullable=False, index=True, unique=True)
|
||||||
lang = db.Column(db.Unicode(32), index=False, unique=False)
|
lang = db.Column(db.Unicode(32), index=False, unique=False)
|
||||||
timezone = db.Column(db.Unicode(63), index=False, unique=False)
|
timezone = db.Column(db.Unicode(63), index=False, unique=False)
|
||||||
posts = db.relationship(Post, backref='author', lazy='dynamic')
|
posts = db.relationship('Post', backref='author', lazy='dynamic')
|
||||||
example_data_item = db.relationship(ExampleDataItem, backref='owner')
|
example_data_item = db.relationship('ExampleDataItem', backref='owner')
|
||||||
example_data_item_id = db.Column(db.ForeignKey(ExampleDataItem.id))
|
example_data_item_id = db.Column(db.ForeignKey(ExampleDataItem.id))
|
||||||
about_me = db.Column(db.Unicode(255))
|
about_me = db.Column(db.Unicode(255))
|
||||||
role = db.Column(db.Unicode(63))
|
role = db.Column(db.Unicode(63))
|
||||||
groups = db.relationship('Group', secondary=user_group_table, back_populates='users')
|
groups = db.relationship('Group', secondary=user_group_table, back_populates='users')
|
||||||
|
permissions = db.relationship('Permission', secondary=user_permission_table, back_populates='users')
|
||||||
password = db.Column(db.String(255), nullable=True)
|
password = db.Column(db.String(255), nullable=True)
|
||||||
registered_on = db.Column(db.DateTime, nullable=False, default=datetime.utcnow())
|
registered_on = db.Column(db.DateTime, nullable=False, default=datetime.utcnow())
|
||||||
external_user = db.Column(db.Boolean, default=False)
|
external_user = db.Column(db.Boolean, default=False)
|
||||||
@@ -109,7 +124,7 @@ class User(UserMixin, db.Model):
|
|||||||
backref=db.backref('followers', lazy='dynamic'),
|
backref=db.backref('followers', lazy='dynamic'),
|
||||||
lazy='dynamic')
|
lazy='dynamic')
|
||||||
|
|
||||||
favorite_recorders = db.relationship(Recorder, secondary=user_favorite_recorders_table)
|
favorite_recorders = db.relationship('Recorder', secondary=user_favorite_recorders_table)
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
super(User, self).__init__(**kwargs)
|
super(User, self).__init__(**kwargs)
|
||||||
@@ -447,13 +462,6 @@ class Group(db.Model):
|
|||||||
permissions = db.relationship('Permission', secondary=group_permission_table, back_populates='groups')
|
permissions = db.relationship('Permission', secondary=group_permission_table, back_populates='groups')
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
#get permissions from kwargs and make Permission objects out of them
|
|
||||||
permissions = kwargs.pop("permissions", [])
|
|
||||||
if permissions is not None:
|
|
||||||
for p in permissions:
|
|
||||||
permission = Permission(name=p)
|
|
||||||
if permission is not None:
|
|
||||||
self.permissions.append(permission)
|
|
||||||
super(Group, self).__init__(**kwargs)
|
super(Group, self).__init__(**kwargs)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@@ -489,11 +497,31 @@ class Permission(db.Model):
|
|||||||
id = db.Column(db.Integer, autoincrement=True, primary_key=True)
|
id = db.Column(db.Integer, autoincrement=True, primary_key=True)
|
||||||
name = db.Column(db.Unicode(63), unique=True, nullable=False)
|
name = db.Column(db.Unicode(63), unique=True, nullable=False)
|
||||||
description = db.Column(db.Unicode(511))
|
description = db.Column(db.Unicode(511))
|
||||||
|
#read_only = db.Column(db.Boolean, default=False)
|
||||||
groups = db.relationship(Group, secondary=group_permission_table,
|
groups = db.relationship(Group, secondary=group_permission_table,
|
||||||
back_populates='permissions')
|
back_populates='permissions')
|
||||||
|
users = db.relationship(User, secondary=user_permission_table,
|
||||||
|
back_populates='permissions')
|
||||||
access_control_entry = db.relationship('AccessControlEntry', back_populates='required_permission')
|
access_control_entry = db.relationship('AccessControlEntry', back_populates='required_permission')
|
||||||
|
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_by_name(name):
|
||||||
|
"""
|
||||||
|
Find permission by name
|
||||||
|
:param name:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
return Permission.query.filter(Permission.name == name).first()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_all():
|
||||||
|
"""
|
||||||
|
Return all permissions
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
return Permission.query.all()
|
||||||
|
|
||||||
@event.listens_for(User.__table__, 'after_create')
|
@event.listens_for(User.__table__, 'after_create')
|
||||||
def insert_initial_users(*args, **kwargs):
|
def insert_initial_users(*args, **kwargs):
|
||||||
for u in app.config.get("USERS", []):
|
for u in app.config.get("USERS", []):
|
||||||
@@ -501,16 +529,15 @@ def insert_initial_users(*args, **kwargs):
|
|||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@event.listens_for(Permission.__table__, 'after_create')
|
|
||||||
def insert_initial_permissions(*args, **kwargs):
|
|
||||||
for p in app.config.get("PERMISSIONS", []):
|
|
||||||
db.session.add(Permission(name=p))
|
|
||||||
db.session.commit()
|
|
||||||
|
|
||||||
@event.listens_for(Group.__table__, 'after_create')
|
@event.listens_for(Group.__table__, 'after_create')
|
||||||
def insert_initial_groups(*args, **kwargs):
|
def insert_initial_groups(*args, **kwargs):
|
||||||
for g in app.config.get("GROUPS", []):
|
for g in app.config.get("GROUPS", []):
|
||||||
db.session.add(Group(**g))
|
db.session.add(Group(**g))
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
|
@event.listens_for(Permission.__table__, 'after_create')
|
||||||
|
def insert_initial_permissions(*args, **kwargs):
|
||||||
|
for p in app.config.get("PERMISSIONS", []):
|
||||||
|
db.session.add(Permission(name=p))
|
||||||
|
db.session.commit()
|
||||||
|
|||||||
@@ -18,12 +18,12 @@ REQUIRES_PW = True
|
|||||||
# HOST = "129.13.51.102" # Audimax SMP 351
|
# HOST = "129.13.51.102" # Audimax SMP 351
|
||||||
# HOST = "129.13.51.106" # Tulla SMP 351
|
# HOST = "129.13.51.106" # Tulla SMP 351
|
||||||
HOST = "172.22.246.207" # Test SMP MZ
|
HOST = "172.22.246.207" # Test SMP MZ
|
||||||
HOST = "129.13.51.109" # Hertz
|
# HOST = "129.13.51.109" # Hertz
|
||||||
|
|
||||||
USER = "admin"
|
USER = "admin"
|
||||||
PW = "123mzsmp"
|
PW = "123mzsmp"
|
||||||
# PW = "audimaxsmp"
|
# PW = "audimaxsmp"
|
||||||
PW = "smphertz"
|
# PW = "smphertz"
|
||||||
|
|
||||||
|
|
||||||
class SMP35x(TelnetAdapter, RecorderAdapter):
|
class SMP35x(TelnetAdapter, RecorderAdapter):
|
||||||
@@ -47,21 +47,19 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
self.tn.write(password + "\n\r")
|
self.tn.write(password + "\n\r")
|
||||||
|
|
||||||
out = self.tn.assert_string_in_output("Login Administrator")
|
out = self.tn.assert_string_in_output("Login Administrator")
|
||||||
print(out)
|
# print(out)
|
||||||
if not out[0]:
|
if not out[0]:
|
||||||
print(out[1])
|
# print(out[1])
|
||||||
if "Password:" in out[1]:
|
if "Password:" in out[1]:
|
||||||
# TODO: loop until logged in...
|
# TODO: loop until logged in...
|
||||||
logger.warning("Could not login (as admin) with given password! {}".format(self.address))
|
logger.warning("Could not login (as admin) with given password! {}".format(self.address))
|
||||||
print("re-enter pw")
|
logger.debug("re-enter password")
|
||||||
self.tn.write(self.password + "\n\r")
|
self.tn.write(self.password + "\n\r")
|
||||||
print(self.tn.assert_string_in_output("Login Administrator"))
|
# print(self.tn.assert_string_in_output("Login Administrator"))
|
||||||
print("WRONG (admin) password!! Exiting!")
|
|
||||||
print(self.password)
|
|
||||||
self.tn = None
|
self.tn = None
|
||||||
logger.error("Could definitely not login (as admin) with given password! {}".format(self.address))
|
logger.error("Could definitely not login (as admin) with given password! {}".format(self.address))
|
||||||
raise Exception("Could not login as administrator with given pw!")
|
raise LrcException("Could not login as administrator with given pw!")
|
||||||
print("OK, we have admin rights!")
|
# print("OK, we have admin rights!")
|
||||||
|
|
||||||
def _get_name(self):
|
def _get_name(self):
|
||||||
return RECORDER_MODEL_NAME
|
return RECORDER_MODEL_NAME
|
||||||
@@ -160,7 +158,7 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if mode not in range(4):
|
if mode not in range(4):
|
||||||
raise Exception("Only values from 0 to 3 are allowed!")
|
raise LrcException("Only values from 0 to 3 are allowed!")
|
||||||
self.tn.write(self.esc_char + str(mode) + "CV\n")
|
self.tn.write(self.esc_char + str(mode) + "CV\n")
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
@@ -177,7 +175,7 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if mode not in [0, 2]:
|
if mode not in [0, 2]:
|
||||||
raise Exception("Only values 0 and 2 are allowed!")
|
raise LrcException("Only values 0 and 2 are allowed!")
|
||||||
self.tn.write(self.esc_char + "1*{}XF\n".format(mode))
|
self.tn.write(self.esc_char + "1*{}XF\n".format(mode))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
@@ -190,7 +188,7 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if mode not in [0, 2]:
|
if mode not in [0, 2]:
|
||||||
raise Exception("Only values 0 and 2 are allowed!")
|
raise LrcException("Only values 0 and 2 are allowed!")
|
||||||
self.tn.write(self.esc_char + "0*{}XF\n".format(mode))
|
self.tn.write(self.esc_char + "0*{}XF\n".format(mode))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
@@ -244,7 +242,7 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if mode not in range(4):
|
if mode not in range(4):
|
||||||
raise Exception("Only values from 0 to 3 are allowed!")
|
raise LrcException("Only values from 0 to 3 are allowed!")
|
||||||
self.tn.write(str(mode) + "X\n")
|
self.tn.write(str(mode) + "X\n")
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
@@ -308,15 +306,15 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if input_num not in range(1, 6):
|
if input_num not in range(1, 6):
|
||||||
raise Exception("input_num must be a value between 1 and 5!")
|
raise LrcException("input_num must be a value between 1 and 5!")
|
||||||
if channel_num not in range(1, 3):
|
if channel_num not in range(1, 3):
|
||||||
raise Exception("input_num must be a value between 1 and 2!")
|
raise LrcException("input_num must be a value between 1 and 2!")
|
||||||
self.tn.write("{}*{}!\n".format(input_num, channel_num))
|
self.tn.write("{}*{}!\n".format(input_num, channel_num))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def get_input(self, channel_num: int):
|
def get_input(self, channel_num: int):
|
||||||
if channel_num not in range(1, 2):
|
if channel_num not in range(1, 2):
|
||||||
raise Exception("input_num must be a value between 1 and 2!")
|
raise LrcException("input_num must be a value between 1 and 2!")
|
||||||
self.tn.write("{}!\n".format(channel_num))
|
self.tn.write("{}!\n".format(channel_num))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
@@ -331,37 +329,37 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if input_num not in range(1, 6):
|
if input_num not in range(1, 6):
|
||||||
raise Exception("input_num must be a value between 1 and 5!")
|
raise LrcException("input_num must be a value between 1 and 5!")
|
||||||
if input_format not in range(1, 4):
|
if input_format not in range(1, 4):
|
||||||
raise Exception("input_num must be a value between 1 and 3!")
|
raise LrcException("input_num must be a value between 1 and 3!")
|
||||||
self.tn.write("{}*{}\\\n".format(input_num, input_format))
|
self.tn.write("{}*{}\\\n".format(input_num, input_format))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def get_input_format(self, input_num: int):
|
def get_input_format(self, input_num: int):
|
||||||
if input_num not in range(1, 6):
|
if input_num not in range(1, 6):
|
||||||
raise Exception("input_num must be a value between 1 and 5!")
|
raise LrcException("input_num must be a value between 1 and 5!")
|
||||||
self.tn.write("{}\\\n".format(input_num))
|
self.tn.write("{}\\\n".format(input_num))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def set_input_name(self, input_num: int, input_name: str):
|
def set_input_name(self, input_num: int, input_name: str):
|
||||||
if input_num not in range(1, 6):
|
if input_num not in range(1, 6):
|
||||||
raise Exception("input_num must be a value between 1 and 5!")
|
raise LrcException("input_num must be a value between 1 and 5!")
|
||||||
if len(input_name) > 16:
|
if len(input_name) > 16:
|
||||||
raise Exception("input_name must be no longer than 16 chars")
|
raise LrcException("input_name must be no longer than 16 chars")
|
||||||
try:
|
try:
|
||||||
input_name.encode('ascii')
|
input_name.encode('ascii')
|
||||||
except UnicodeEncodeError:
|
except UnicodeEncodeError:
|
||||||
raise Exception("input_name must only contain ascii characters")
|
raise LrcException("input_name must only contain ascii characters")
|
||||||
self.tn.write("{}{},{}NI\n".format(self.esc_char, input_num, input_name))
|
self.tn.write("{}{},{}NI\n".format(self.esc_char, input_num, input_name))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def get_input_name(self, input_num: int):
|
def get_input_name(self, input_num: int):
|
||||||
if input_num not in range(1, 6):
|
if input_num not in range(1, 6):
|
||||||
raise Exception("input_num must be a value between 1 and 5!")
|
raise LrcException("input_num must be a value between 1 and 5!")
|
||||||
self.tn.write("{}{}NI\n".format(self.esc_char, input_num))
|
self.tn.write("{}{}NI\n".format(self.esc_char, input_num))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def get_input_selction_per_channel(self):
|
def get_input_selection_per_channel(self):
|
||||||
self.tn.write("32I\n")
|
self.tn.write("32I\n")
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
@@ -403,7 +401,7 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if extension_time not in range(0, 100):
|
if extension_time not in range(0, 100):
|
||||||
raise Exception("extension_time must be a value between 0 and 99!")
|
raise LrcException("extension_time must be a value between 0 and 99!")
|
||||||
self.tn.write("{}E{}RCDR\n".format(self.esc_char, extension_time))
|
self.tn.write("{}E{}RCDR\n".format(self.esc_char, extension_time))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
@@ -437,82 +435,82 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
|
|
||||||
def recall_user_preset(self, channel_number: int, preset_number: int):
|
def recall_user_preset(self, channel_number: int, preset_number: int):
|
||||||
if channel_number not in range(1, 3):
|
if channel_number not in range(1, 3):
|
||||||
raise Exception("channel_number must be a value between 1 and 2!")
|
raise LrcException("channel_number must be a value between 1 and 2!")
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
self.tn.write("1*{}*{}.\n".format(channel_number, preset_number))
|
self.tn.write("1*{}*{}.\n".format(channel_number, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def save_user_preset(self, channel_number: int, preset_number: int):
|
def save_user_preset(self, channel_number: int, preset_number: int):
|
||||||
if channel_number not in range(1, 3):
|
if channel_number not in range(1, 3):
|
||||||
raise Exception("channel_number must be a value between 1 and 2!")
|
raise LrcException("channel_number must be a value between 1 and 2!")
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
self.tn.write("1*{}*{},\n".format(channel_number, preset_number))
|
self.tn.write("1*{}*{},\n".format(channel_number, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def set_user_preset_name(self, preset_number: int, preset_name: str):
|
def set_user_preset_name(self, preset_number: int, preset_name: str):
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
if len(preset_name) > 16:
|
if len(preset_name) > 16:
|
||||||
raise Exception("preset_name must be no longer than 16 chars")
|
raise LrcException("preset_name must be no longer than 16 chars")
|
||||||
try:
|
try:
|
||||||
preset_name.encode('ascii')
|
preset_name.encode('ascii')
|
||||||
except UnicodeEncodeError:
|
except UnicodeEncodeError:
|
||||||
raise Exception("preset_name must only contain ascii characters")
|
raise LrcException("preset_name must only contain ascii characters")
|
||||||
self.tn.write("{}1*{},{}PNAM\n".format(self.esc_char, preset_number, preset_name))
|
self.tn.write("{}1*{},{}PNAM\n".format(self.esc_char, preset_number, preset_name))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def get_user_preset_name(self, preset_number: int):
|
def get_user_preset_name(self, preset_number: int):
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
self.tn.write("{}1*{}PNAM\n".format(self.esc_char, preset_number))
|
self.tn.write("{}1*{}PNAM\n".format(self.esc_char, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def get_user_presets(self, input_number: int):
|
def get_user_presets(self, input_number: int):
|
||||||
if input_number not in range(1, 6):
|
if input_number not in range(1, 6):
|
||||||
raise Exception("input_number must be a value between 1 and 5!")
|
raise LrcException("input_number must be a value between 1 and 5!")
|
||||||
self.tn.write("52*{}#\n".format(input_number))
|
self.tn.write("52*{}#\n".format(input_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
# Input Presets
|
# Input Presets
|
||||||
def recall_input_preset(self, channel_number: int, preset_number: int):
|
def recall_input_preset(self, channel_number: int, preset_number: int):
|
||||||
if channel_number not in range(1, 3):
|
if channel_number not in range(1, 3):
|
||||||
raise Exception("channel_number must be a value between 1 and 2!")
|
raise LrcException("channel_number must be a value between 1 and 2!")
|
||||||
if preset_number not in range(1, 129):
|
if preset_number not in range(1, 129):
|
||||||
raise Exception("preset_number must be a value between 1 and 128!")
|
raise LrcException("preset_number must be a value between 1 and 128!")
|
||||||
self.tn.write("2*{}*{}.\n".format(channel_number, preset_number))
|
self.tn.write("2*{}*{}.\n".format(channel_number, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def save_input_preset(self, channel_number: int, preset_number: int):
|
def save_input_preset(self, channel_number: int, preset_number: int):
|
||||||
if channel_number not in range(1, 3):
|
if channel_number not in range(1, 3):
|
||||||
raise Exception("channel_number must be a value between 1 and 2!")
|
raise LrcException("channel_number must be a value between 1 and 2!")
|
||||||
if preset_number not in range(1, 129):
|
if preset_number not in range(1, 129):
|
||||||
raise Exception("preset_number must be a value between 1 and 128!")
|
raise LrcException("preset_number must be a value between 1 and 128!")
|
||||||
self.tn.write("1*{}*{},\n".format(channel_number, preset_number))
|
self.tn.write("1*{}*{},\n".format(channel_number, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def set_input_preset_name(self, preset_number: int, preset_name: str):
|
def set_input_preset_name(self, preset_number: int, preset_name: str):
|
||||||
if preset_number not in range(1, 129):
|
if preset_number not in range(1, 129):
|
||||||
raise Exception("preset_number must be a value between 1 and 128!")
|
raise LrcException("preset_number must be a value between 1 and 128!")
|
||||||
if len(preset_name) > 16:
|
if len(preset_name) > 16:
|
||||||
raise Exception("preset_name must be no longer than 16 chars")
|
raise LrcException("preset_name must be no longer than 16 chars")
|
||||||
try:
|
try:
|
||||||
preset_name.encode('ascii')
|
preset_name.encode('ascii')
|
||||||
except UnicodeEncodeError:
|
except UnicodeEncodeError:
|
||||||
raise Exception("preset_name must only contain ascii characters")
|
raise LrcException("preset_name must only contain ascii characters")
|
||||||
self.tn.write("{}2*{},{}PNAM\n".format(self.esc_char, preset_number, preset_name))
|
self.tn.write("{}2*{},{}PNAM\n".format(self.esc_char, preset_number, preset_name))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def get_input_preset_name(self, preset_number: int):
|
def get_input_preset_name(self, preset_number: int):
|
||||||
if preset_number not in range(1, 129):
|
if preset_number not in range(1, 129):
|
||||||
raise Exception("preset_number must be a value between 1 and 128!")
|
raise LrcException("preset_number must be a value between 1 and 128!")
|
||||||
self.tn.write("{}2*{}PNAM\n".format(self.esc_char, preset_number))
|
self.tn.write("{}2*{}PNAM\n".format(self.esc_char, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def delete_input_preset(self, preset_number: int):
|
def delete_input_preset(self, preset_number: int):
|
||||||
if preset_number not in range(1, 129):
|
if preset_number not in range(1, 129):
|
||||||
raise Exception("preset_number must be a value between 1 and 128!")
|
raise LrcException("preset_number must be a value between 1 and 128!")
|
||||||
self.tn.write("{}X2*{}PRST\n".format(self.esc_char, preset_number))
|
self.tn.write("{}X2*{}PRST\n".format(self.esc_char, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
@@ -532,9 +530,9 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if output_number not in range(1, 4):
|
if output_number not in range(1, 4):
|
||||||
raise Exception("output_number must be a value between 1 and 3!")
|
raise LrcException("output_number must be a value between 1 and 3!")
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
self.tn.write("3*{}*{}.\n".format(output_number, preset_number))
|
self.tn.write("3*{}*{}.\n".format(output_number, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
@@ -549,33 +547,33 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if output_number not in range(1, 4):
|
if output_number not in range(1, 4):
|
||||||
raise Exception("output_number must be a value between 1 and 3!")
|
raise LrcException("output_number must be a value between 1 and 3!")
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
self.tn.write("3*{}*{},\n".format(output_number, preset_number))
|
self.tn.write("3*{}*{},\n".format(output_number, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def set_streaming_preset_name(self, preset_number: int, preset_name: str):
|
def set_streaming_preset_name(self, preset_number: int, preset_name: str):
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
if len(preset_name) > 16:
|
if len(preset_name) > 16:
|
||||||
raise Exception("preset_name must be no longer than 16 chars")
|
raise LrcException("preset_name must be no longer than 16 chars")
|
||||||
try:
|
try:
|
||||||
preset_name.encode('ascii')
|
preset_name.encode('ascii')
|
||||||
except UnicodeEncodeError:
|
except UnicodeEncodeError:
|
||||||
raise Exception("preset_name must only contain ascii characters")
|
raise LrcException("preset_name must only contain ascii characters")
|
||||||
self.tn.write("{}3*{},{}PNAM\n".format(self.esc_char, preset_number, preset_name))
|
self.tn.write("{}3*{},{}PNAM\n".format(self.esc_char, preset_number, preset_name))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def get_streaming_preset_name(self, preset_number: int):
|
def get_streaming_preset_name(self, preset_number: int):
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
self.tn.write("{}3*{}PNAM\n".format(self.esc_char, preset_number))
|
self.tn.write("{}3*{}PNAM\n".format(self.esc_char, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def reset_streaming_preset_to_default(self, preset_number: int):
|
def reset_streaming_preset_to_default(self, preset_number: int):
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
self.tn.write("{}X3*{}PRST\n".format(self.esc_char, preset_number))
|
self.tn.write("{}X3*{}PRST\n".format(self.esc_char, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
@@ -591,9 +589,9 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if output_number not in range(1, 4):
|
if output_number not in range(1, 4):
|
||||||
raise Exception("output_number must be a value between 1 and 3!")
|
raise LrcException("output_number must be a value between 1 and 3!")
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
self.tn.write("4*{}*{}.\n".format(output_number, preset_number))
|
self.tn.write("4*{}*{}.\n".format(output_number, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
@@ -608,46 +606,46 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if output_number not in range(1, 4):
|
if output_number not in range(1, 4):
|
||||||
raise Exception("output_number must be a value between 1 and 3!")
|
raise LrcException("output_number must be a value between 1 and 3!")
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
self.tn.write("4*{}*{},\n".format(output_number, preset_number))
|
self.tn.write("4*{}*{},\n".format(output_number, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def set_encoder_preset_name(self, preset_number: int, preset_name: str):
|
def set_encoder_preset_name(self, preset_number: int, preset_name: str):
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
if len(preset_name) > 16:
|
if len(preset_name) > 16:
|
||||||
raise Exception("preset_name must be no longer than 16 chars")
|
raise LrcException("preset_name must be no longer than 16 chars")
|
||||||
try:
|
try:
|
||||||
preset_name.encode('ascii')
|
preset_name.encode('ascii')
|
||||||
except UnicodeEncodeError:
|
except UnicodeEncodeError:
|
||||||
raise Exception("preset_name must only contain ascii characters")
|
raise LrcException("preset_name must only contain ascii characters")
|
||||||
self.tn.write("{}4*{},{}PNAM\n".format(self.esc_char, preset_number, preset_name))
|
self.tn.write("{}4*{},{}PNAM\n".format(self.esc_char, preset_number, preset_name))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def get_encoder_preset_name(self, preset_number: int):
|
def get_encoder_preset_name(self, preset_number: int):
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
self.tn.write("{}4*{}PNAM\n".format(self.esc_char, preset_number))
|
self.tn.write("{}4*{}PNAM\n".format(self.esc_char, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def reset_encoder_preset_to_default(self, preset_number: int):
|
def reset_encoder_preset_to_default(self, preset_number: int):
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
self.tn.write("{}X4*{}PRST\n".format(self.esc_char, preset_number))
|
self.tn.write("{}X4*{}PRST\n".format(self.esc_char, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
# Layout Presets
|
# Layout Presets
|
||||||
def save_layout_preset(self, preset_number: int):
|
def save_layout_preset(self, preset_number: int):
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
self.tn.write("7*{},\n".format(preset_number))
|
self.tn.write("7*{},\n".format(preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def recall_layout_preset(self, preset_number: int, include_input_selections: bool = True):
|
def recall_layout_preset(self, preset_number: int, include_input_selections: bool = True):
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
if include_input_selections:
|
if include_input_selections:
|
||||||
self.tn.write("7*{}.\n".format(preset_number))
|
self.tn.write("7*{}.\n".format(preset_number))
|
||||||
else:
|
else:
|
||||||
@@ -656,25 +654,25 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
|
|
||||||
def set_layout_preset_name(self, preset_number: int, preset_name: str):
|
def set_layout_preset_name(self, preset_number: int, preset_name: str):
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
if len(preset_name) > 16:
|
if len(preset_name) > 16:
|
||||||
raise Exception("preset_name must be no longer than 16 chars")
|
raise LrcException("preset_name must be no longer than 16 chars")
|
||||||
try:
|
try:
|
||||||
preset_name.encode('ascii')
|
preset_name.encode('ascii')
|
||||||
except UnicodeEncodeError:
|
except UnicodeEncodeError:
|
||||||
raise Exception("preset_name must only contain ascii characters")
|
raise LrcException("preset_name must only contain ascii characters")
|
||||||
self.tn.write("{}7*{},{}PNAM\n".format(self.esc_char, preset_number, preset_name))
|
self.tn.write("{}7*{},{}PNAM\n".format(self.esc_char, preset_number, preset_name))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def get_layout_preset_name(self, preset_number: int):
|
def get_layout_preset_name(self, preset_number: int):
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
self.tn.write("{}7*{}PNAM\n".format(self.esc_char, preset_number))
|
self.tn.write("{}7*{}PNAM\n".format(self.esc_char, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def reset_layout_preset_to_default(self, preset_number: int):
|
def reset_layout_preset_to_default(self, preset_number: int):
|
||||||
if preset_number not in range(1, 17):
|
if preset_number not in range(1, 17):
|
||||||
raise Exception("preset_number must be a value between 1 and 16!")
|
raise LrcException("preset_number must be a value between 1 and 16!")
|
||||||
self.tn.write("{}X7*{}PRST\n".format(self.esc_char, preset_number))
|
self.tn.write("{}X7*{}PRST\n".format(self.esc_char, preset_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
@@ -692,7 +690,7 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if output_number not in range(1, 3):
|
if output_number not in range(1, 3):
|
||||||
raise Exception("output_number must be a value between 1 and 2!")
|
raise LrcException("output_number must be a value between 1 and 2!")
|
||||||
self.tn.write("{}*1B\n".format(output_number))
|
self.tn.write("{}*1B\n".format(output_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
@@ -705,7 +703,7 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if output_number not in range(1, 3):
|
if output_number not in range(1, 3):
|
||||||
raise Exception("output_number must be a value between 1 and 2!")
|
raise LrcException("output_number must be a value between 1 and 2!")
|
||||||
self.tn.write("{}*0B\n".format(output_number))
|
self.tn.write("{}*0B\n".format(output_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
@@ -718,7 +716,7 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if output_number not in range(1, 3):
|
if output_number not in range(1, 3):
|
||||||
raise Exception("output_number must be a value between 1 and 2!")
|
raise LrcException("output_number must be a value between 1 and 2!")
|
||||||
self.tn.write("{}B\n".format(output_number))
|
self.tn.write("{}B\n".format(output_number))
|
||||||
return int(TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())) > 0
|
return int(TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())) > 0
|
||||||
|
|
||||||
@@ -743,25 +741,25 @@ class SMP35x(TelnetAdapter, RecorderAdapter):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if input_number not in range(1, 6):
|
if input_number not in range(1, 6):
|
||||||
raise Exception("input_number must be a value between 1 and 6!")
|
raise LrcException("input_number must be a value between 1 and 6!")
|
||||||
self.tn.write("{}I{}HDCP\n".format(self.esc_char, input_number))
|
self.tn.write("{}I{}HDCP\n".format(self.esc_char, input_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def set_input_authorization_hdcp_on(self, input_number: int):
|
def set_input_authorization_hdcp_on(self, input_number: int):
|
||||||
if input_number not in range(1, 6):
|
if input_number not in range(1, 6):
|
||||||
raise Exception("input_number must be a value between 1 and 6!")
|
raise LrcException("input_number must be a value between 1 and 6!")
|
||||||
self.tn.write("{}E{}*1HDCP\n".format(self.esc_char, input_number))
|
self.tn.write("{}E{}*1HDCP\n".format(self.esc_char, input_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def set_input_authorization_hdcp_off(self, input_number: int):
|
def set_input_authorization_hdcp_off(self, input_number: int):
|
||||||
if input_number not in range(1, 6):
|
if input_number not in range(1, 6):
|
||||||
raise Exception("input_number must be a value between 1 and 6!")
|
raise LrcException("input_number must be a value between 1 and 6!")
|
||||||
self.tn.write("{}E{}*0HDCP\n".format(self.esc_char, input_number))
|
self.tn.write("{}E{}*0HDCP\n".format(self.esc_char, input_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
def get_input_authorization_hdcp_status(self, input_number: int):
|
def get_input_authorization_hdcp_status(self, input_number: int):
|
||||||
if input_number not in range(1, 6):
|
if input_number not in range(1, 6):
|
||||||
raise Exception("input_number must be a value between 1 and 6!")
|
raise LrcException("input_number must be a value between 1 and 6!")
|
||||||
self.tn.write("{}E{}HDCP\n".format(self.esc_char, input_number))
|
self.tn.write("{}E{}HDCP\n".format(self.esc_char, input_number))
|
||||||
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
return TelnetAdapter._get_response_str(self.tn.read_until_non_empty_line())
|
||||||
|
|
||||||
@@ -797,6 +795,9 @@ def main():
|
|||||||
print(smp)
|
print(smp)
|
||||||
print(smp.get_recording_status())
|
print(smp.get_recording_status())
|
||||||
print(smp.is_recording())
|
print(smp.is_recording())
|
||||||
|
print(smp.get_input_presets())
|
||||||
|
print(smp.get_input_selection_per_channel())
|
||||||
|
print(smp.get_recording_status_text())
|
||||||
|
|
||||||
exit()
|
exit()
|
||||||
smp._login()
|
smp._login()
|
||||||
|
|||||||
61
backend/recorder_adapters/helpers.py
Normal file
61
backend/recorder_adapters/helpers.py
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
import logging
|
||||||
|
from typing import Union
|
||||||
|
|
||||||
|
from backend.models import Recorder, RecorderCommand, LrcException
|
||||||
|
from backend.recorder_adapters import get_recorder_adapter_by_id
|
||||||
|
|
||||||
|
logger = logging.getLogger("lrc.recorder_adapters.helpers")
|
||||||
|
|
||||||
|
|
||||||
|
def validate_recorder_command_params(recorder_command: RecorderCommand, params: dict, fail_on_missing_params=False):
|
||||||
|
if recorder_command.parameters is None or len(recorder_command.parameters) == 0:
|
||||||
|
if len(params) == 0:
|
||||||
|
logger.debug("Number (0) of parameters matching expected number of args of command signature.")
|
||||||
|
return True
|
||||||
|
logger.info("More arguments specified ({}) than expected!".format(len(params)))
|
||||||
|
return False
|
||||||
|
for p_n in recorder_command.parameters:
|
||||||
|
p_t = recorder_command.parameters[p_n]
|
||||||
|
p = params.get(p_n, None)
|
||||||
|
if p is None:
|
||||||
|
if fail_on_missing_params:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
if p_t == 'int':
|
||||||
|
params[p_n] = int(p)
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def get_function_from_recorder_command(recorder: Recorder, recorder_command: RecorderCommand,
|
||||||
|
connect_by_network_name=True):
|
||||||
|
adapter_name, function_name = recorder_command.name.split(':')
|
||||||
|
if connect_by_network_name and recorder.network_name is not None:
|
||||||
|
address = recorder.network_name
|
||||||
|
elif recorder.ip6 is not None:
|
||||||
|
address = recorder.ip6
|
||||||
|
else:
|
||||||
|
address = recorder.ip
|
||||||
|
logger.debug("Using {} to create recorder adapter to connect to {}.".format(address, recorder.name))
|
||||||
|
package_name, class_name = adapter_name.split('.')
|
||||||
|
adapter = get_recorder_adapter_by_id(class_name, address=address, user=recorder.username,
|
||||||
|
password=recorder.password, firmware_version=recorder.firmware_version)
|
||||||
|
logger.debug("Built adapter {}".format(adapter))
|
||||||
|
return getattr(adapter, function_name)
|
||||||
|
|
||||||
|
|
||||||
|
def execute_recorder_command(recorder: Recorder, recorder_command: RecorderCommand, params: Union[dict, None] = None,
|
||||||
|
connect_by_network_name=True):
|
||||||
|
if params is None:
|
||||||
|
params = dict()
|
||||||
|
if validate_recorder_command_params(recorder_command, params):
|
||||||
|
try:
|
||||||
|
func = get_function_from_recorder_command(recorder, recorder_command, connect_by_network_name)
|
||||||
|
logger.debug(
|
||||||
|
"Executing func: {} with params: '{}'".format(func, ", ".join(": ".join(str(_)) for _ in params.items())))
|
||||||
|
out = func(**params)
|
||||||
|
return True, out
|
||||||
|
except LrcException as e:
|
||||||
|
return False, str(e)
|
||||||
|
else:
|
||||||
|
logger.info("Could not validate given parameters!")
|
||||||
|
return False
|
||||||
@@ -67,34 +67,40 @@ def update_recorder_models_database(drop: bool = False):
|
|||||||
db.session.commit()
|
db.session.commit()
|
||||||
r_as = get_defined_recorder_adapters()
|
r_as = get_defined_recorder_adapters()
|
||||||
for r_a in r_as:
|
for r_a in r_as:
|
||||||
|
if r_a.get('class') is None: # skip modules without class (helpers.py, e.g.)
|
||||||
|
continue
|
||||||
|
logger.info("Checking Recorder Adapter {} for possible updates".format(r_a["id"]))
|
||||||
try:
|
try:
|
||||||
r_m = RecorderModel.get_by_adapter_id(r_a["id"])
|
r_m = RecorderModel.get_by_adapter_id(r_a["id"])
|
||||||
model_checksum = calculate_md5_checksum(dumps(r_a["commands"]))
|
model_checksum = calculate_md5_checksum(dumps(r_a["commands"]))
|
||||||
|
logger.debug("Recorder Adapter commands checksum: {}".format(model_checksum))
|
||||||
|
logger.debug(r_m)
|
||||||
if r_m is None:
|
if r_m is None:
|
||||||
r_m = RecorderModel(record_adapter_id=r_a["id"], model_name=r_a["name"], checksum=model_checksum,
|
r_m = RecorderModel(record_adapter_id=r_a["id"], model_name=r_a["name"], checksum=model_checksum,
|
||||||
**r_a.get('class', {}).get_recorder_params())
|
**r_a.get('class').get_recorder_params())
|
||||||
db.session.add(r_m)
|
db.session.add(r_m)
|
||||||
db.session.flush()
|
db.session.flush()
|
||||||
db.session.refresh(r_m)
|
db.session.refresh(r_m)
|
||||||
logger.debug("Creating command definitions for rec mod adapter {}".format(r_m.record_adapter_id))
|
logger.debug("Creating command definitions for rec mod adapter {}".format(r_m.record_adapter_id))
|
||||||
create_recorder_commands_for_recorder_adapter(r_a["commands"], r_m)
|
create_recorder_commands_for_recorder_adapter(r_a["commands"], r_m)
|
||||||
else:
|
else:
|
||||||
|
logger.debug("Model command checksum already in db: {}".format(r_m.checksum))
|
||||||
if r_m.model_name != r_a["name"]:
|
if r_m.model_name != r_a["name"]:
|
||||||
r_m.model_name = r_a["name"]
|
r_m.model_name = r_a["name"]
|
||||||
r_m.last_time_modified = datetime.utcnow()
|
r_m.last_time_modified = datetime.utcnow()
|
||||||
if model_checksum != r_m.checksum:
|
if model_checksum != r_m.checksum:
|
||||||
|
create_recorder_commands_for_recorder_adapter(r_a["commands"], r_m)
|
||||||
r_m.last_time_modified = datetime.utcnow()
|
r_m.last_time_modified = datetime.utcnow()
|
||||||
r_m.checksum = model_checksum
|
r_m.checksum = model_checksum
|
||||||
r_m.last_checksum_change = datetime.utcnow()
|
r_m.last_checksum_change = datetime.utcnow()
|
||||||
logger.debug("Updating command definitions for rec mod adapter {}".format(r_m.record_adapter_id))
|
logger.debug("Updating command definitions for rec mod adapter {}".format(r_m.record_adapter_id))
|
||||||
create_recorder_commands_for_recorder_adapter(r_a["commands"], r_m)
|
|
||||||
except IntegrityError as e:
|
except IntegrityError as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
db.session.rollback()
|
db.session.rollback()
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
def get_recorder_room(rec: dict) -> Room():
|
def get_recorder_room(rec: dict):
|
||||||
rooms = Room.get_by_building_number(rec.get('building', None))
|
rooms = Room.get_by_building_number(rec.get('building', None))
|
||||||
if rooms.count() <= 0:
|
if rooms.count() <= 0:
|
||||||
logger.warning("Building {} unknown! Can not find room for recorder {}.".format(rec['building'], rec['name']))
|
logger.warning("Building {} unknown! Can not find room for recorder {}.".format(rec['building'], rec['name']))
|
||||||
|
|||||||
300
backend/tools/recorder_state_checker.py
Normal file
300
backend/tools/recorder_state_checker.py
Normal file
@@ -0,0 +1,300 @@
|
|||||||
|
import json
|
||||||
|
import os
|
||||||
|
import logging
|
||||||
|
import subprocess
|
||||||
|
import threading
|
||||||
|
import time
|
||||||
|
from io import StringIO
|
||||||
|
from logging.handlers import MemoryHandler
|
||||||
|
from pprint import pprint
|
||||||
|
from typing import Union
|
||||||
|
|
||||||
|
import requests
|
||||||
|
from requests.auth import HTTPBasicAuth
|
||||||
|
from multiprocessing.pool import ThreadPool
|
||||||
|
from multiprocessing.context import TimeoutError
|
||||||
|
|
||||||
|
from ics import Calendar
|
||||||
|
|
||||||
|
from backend import LrcException
|
||||||
|
from backend.config import Config
|
||||||
|
from backend.models import Recorder, RecorderModel
|
||||||
|
from backend.recorder_adapters import RecorderAdapter
|
||||||
|
|
||||||
|
from backend.recorder_adapters.epiphan_base import Epiphan
|
||||||
|
from backend.recorder_adapters.extron_smp import SMP35x
|
||||||
|
from backend.tools.recorder_streams_sanity_checks import check_frame_is_valid, check_if_audio_is_valid
|
||||||
|
from backend.tools.send_mail import send_error_mail, get_smtp_error_handler
|
||||||
|
|
||||||
|
logger = logging.getLogger("lrc.tools.simple_state_checker")
|
||||||
|
|
||||||
|
smtp_error_handler = get_smtp_error_handler(subject="Errors have been detected while checking recorder states!")
|
||||||
|
# mem_handler = MemoryHandler(capacity=100, flushLevel=logging.FATAL, target=smtp_error_handler)
|
||||||
|
# mem_handler.setLevel(logging.WARNING)
|
||||||
|
|
||||||
|
rec_err_state_log_stream = StringIO()
|
||||||
|
rec_err_state_log_stream_handler = logging.StreamHandler(stream=rec_err_state_log_stream)
|
||||||
|
rec_err_state_log_stream_handler.setLevel(logging.WARNING)
|
||||||
|
|
||||||
|
logger.addHandler(rec_err_state_log_stream_handler)
|
||||||
|
# logger.addHandler(mem_handler)
|
||||||
|
|
||||||
|
session = requests.session()
|
||||||
|
session.auth = HTTPBasicAuth(Config.OPENCAST_USER, Config.OPENCAST_PW)
|
||||||
|
|
||||||
|
config = {'service_urls': {}}
|
||||||
|
|
||||||
|
recorders = None
|
||||||
|
|
||||||
|
agent_states_lock = threading.RLock()
|
||||||
|
agent_states = {}
|
||||||
|
|
||||||
|
|
||||||
|
def get_service_url(service_type: str):
|
||||||
|
if service_type in config['service_urls']:
|
||||||
|
return config['service_urls'][service_type]
|
||||||
|
params = {'serviceType': service_type}
|
||||||
|
url = Config.OPENCAST_URL + "/services/available.json"
|
||||||
|
res = session.get(url, params=params)
|
||||||
|
if res.ok:
|
||||||
|
service = res.json()["services"]["service"]
|
||||||
|
config["service_urls"][service_type] = service["host"] + \
|
||||||
|
service["path"]
|
||||||
|
return service["host"] + service["path"]
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def get_calender(rec_id):
|
||||||
|
params = {'agentid': rec_id}
|
||||||
|
url = get_service_url('org.opencastproject.scheduler') + "/calendars"
|
||||||
|
res = session.get(url, params=params)
|
||||||
|
if res.ok:
|
||||||
|
return Calendar(res.text)
|
||||||
|
|
||||||
|
|
||||||
|
def get_capture_agents():
|
||||||
|
url = get_service_url("org.opencastproject.capture.admin") + "/agents.json"
|
||||||
|
res = session.get(url)
|
||||||
|
if res.ok:
|
||||||
|
return res.json()["agents"]["agent"]
|
||||||
|
|
||||||
|
|
||||||
|
def get_recorder_details_old():
|
||||||
|
"""Temporary implementation using initial_recorders.json. Should be replaced by DB layer later!"""
|
||||||
|
global recorders
|
||||||
|
if recorders is None:
|
||||||
|
f = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir, 'models', 'initial_recorders.json'))
|
||||||
|
with open(f, 'r') as json_file:
|
||||||
|
recorders = json.load(json_file)['recorders']
|
||||||
|
return recorders
|
||||||
|
|
||||||
|
|
||||||
|
def get_recorder_details():
|
||||||
|
"""New implementation using DB"""
|
||||||
|
global recorders
|
||||||
|
if recorders is None:
|
||||||
|
recorders = list(Recorder.get_all())
|
||||||
|
return recorders
|
||||||
|
|
||||||
|
|
||||||
|
def get_recorder_by_name(name: str):
|
||||||
|
for r in get_recorder_details():
|
||||||
|
logger.debug("Got recorder {}".format(r.get("name")))
|
||||||
|
if r.get("name") == name or r.get("name") + " Recorder" == name or r.get("name") == name + " Recorder":
|
||||||
|
return r
|
||||||
|
logger.error("Could not find recorder for name {}".format(name))
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def notify_users_of_problem(msg: str):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def get_recorder_adapter(recorder_info: Union[dict, Recorder]) -> RecorderAdapter:
|
||||||
|
if recorder_info is None:
|
||||||
|
raise LrcException("Could not find recorder Adapter as recorder info was NONE!")
|
||||||
|
try:
|
||||||
|
type = recorder_info.get("type")
|
||||||
|
except KeyError:
|
||||||
|
type = RecorderModel.get_by_id(recorder_info.get('recorder_model_id')).model_name
|
||||||
|
if "SMP" in type:
|
||||||
|
rec = SMP35x(recorder_info.get('ip'), recorder_info.get('password'))
|
||||||
|
else:
|
||||||
|
rec = Epiphan(recorder_info.get('ip'), recorder_info.get("username"), recorder_info.get("password"))
|
||||||
|
return rec
|
||||||
|
|
||||||
|
|
||||||
|
def check_stream_sanity(recorder_agent: Union[Recorder, dict], recorder_adapter: RecorderAdapter = None):
|
||||||
|
if recorder_adapter is None:
|
||||||
|
recorder_info = get_recorder_by_name(recorder_agent.get('name'))
|
||||||
|
recorder_adapter = get_recorder_adapter(recorder_info)
|
||||||
|
if not recorder_adapter.is_recording():
|
||||||
|
return True, "not recording, so there is no stream!", recorder_agent.get('name')
|
||||||
|
if recorder_agent.get('archive_stream1') is None and recorder_agent.get(
|
||||||
|
'archive_stream2') is None: # fall back to default names and rtsp
|
||||||
|
archive_stream_1_url = "rtsp://{}/{}".format(recorder_adapter.address, Config.DEFAULT_ARCHIVE_STREAM_1_NAME)
|
||||||
|
archive_stream_2_url = "rtsp://{}/{}".format(recorder_adapter.address, Config.DEFAULT_ARCHIVE_STREAM_2_NAME)
|
||||||
|
else:
|
||||||
|
archive_stream_1_url = recorder_agent.get('archive_stream1')
|
||||||
|
archive_stream_2_url = recorder_agent.get('archive_stream2')
|
||||||
|
|
||||||
|
frame_msg = frame_msg2 = sound_msg = sound_msg2 = "unknown"
|
||||||
|
for i in range(0, Config.STREAM_SANITY_CHECK_RETRIES):
|
||||||
|
frame_ok, frame_msg = check_frame_is_valid(archive_stream_1_url, raise_errors=False)
|
||||||
|
if not frame_ok:
|
||||||
|
logger.warning(
|
||||||
|
"Archive stream 1 ({}) of {} is not ok (frame): {}".format(archive_stream_1_url,
|
||||||
|
recorder_agent.get('name'),
|
||||||
|
frame_msg))
|
||||||
|
frame_ok, frame_msg2 = check_frame_is_valid(archive_stream_2_url, raise_errors=False)
|
||||||
|
if not frame_ok:
|
||||||
|
logger.warning(
|
||||||
|
"Archive stream 2 {} of ({}) is not ok: {} (frame)".format(archive_stream_2_url,
|
||||||
|
recorder_agent.get('name'),
|
||||||
|
frame_msg2))
|
||||||
|
|
||||||
|
sound_ok, sound_msg = check_if_audio_is_valid(archive_stream_1_url, raise_errors=False)
|
||||||
|
if not sound_ok:
|
||||||
|
logger.warning(
|
||||||
|
"Archive stream 1 {} of ({}) is not ok (audio): {}".format(archive_stream_1_url,
|
||||||
|
recorder_agent.get('name'),
|
||||||
|
sound_msg))
|
||||||
|
sound_ok, sound_msg2 = check_if_audio_is_valid(archive_stream_2_url, raise_errors=False)
|
||||||
|
if not sound_ok:
|
||||||
|
logger.warning(
|
||||||
|
"Archive stream 2 {} of ({}) is not ok (audio): {}".format(archive_stream_2_url,
|
||||||
|
recorder_agent.get('name'),
|
||||||
|
sound_msg2))
|
||||||
|
|
||||||
|
if frame_ok and sound_ok:
|
||||||
|
return True, "At least one archive stream is fine (audio and image)! " \
|
||||||
|
"(s1: a: {}, v: {}, s2: a: {}, v: {})".format(sound_msg, frame_msg, sound_msg2,
|
||||||
|
frame_msg2), recorder_agent.get('name')
|
||||||
|
|
||||||
|
else:
|
||||||
|
time.sleep(Config.STREAM_SANITY_CHECK_INTERVAL_SEC)
|
||||||
|
error_msg = "After {} retries, stream checks failed and returned: archive_stream1: audio:{}, frame:{}, " \
|
||||||
|
"archive_stream2: audio:{}, frame:{}".format(Config.STREAM_SANITY_CHECK_RETRIES, sound_msg,
|
||||||
|
frame_msg, sound_msg2, frame_msg2)
|
||||||
|
logger.error(error_msg)
|
||||||
|
return False, error_msg, recorder_agent.get('name') # stream sanity check failed!
|
||||||
|
|
||||||
|
|
||||||
|
def check_capture_agent_state(recorder_agent: Union[Recorder, dict]):
|
||||||
|
if recorder_agent.get('offline', False):
|
||||||
|
logger.info("OK - Recorder {} is in offline / maintenance mode".format(recorder_agent.get('name')))
|
||||||
|
return True, "Recorder is in offline / maintenance mode", recorder_agent.get('name')
|
||||||
|
agent_state_error_msg = None
|
||||||
|
logger.debug("Checking Agent {}".format(recorder_agent.get('name')))
|
||||||
|
c = get_calender(recorder_agent.get('name'))
|
||||||
|
is_recording_in_calendar = len(list(c.timeline.now())) >= 1
|
||||||
|
if is_recording_in_calendar:
|
||||||
|
logger.info("{} has entry in Calender and should therefore be recording... checking now!".format(
|
||||||
|
recorder_agent.get('name')))
|
||||||
|
if recorder_agent['state'] == "capturing":
|
||||||
|
recorder_info = get_recorder_by_name(recorder_agent.get('name'))
|
||||||
|
try:
|
||||||
|
rec = get_recorder_adapter(recorder_info)
|
||||||
|
if rec.is_recording():
|
||||||
|
logger.info("OK – recorder {} is recording :)".format(recorder_agent.get('name')))
|
||||||
|
with agent_states_lock:
|
||||||
|
agent_states[recorder_agent.get('name')] = 'OK - recorder is recording'
|
||||||
|
else:
|
||||||
|
logger.info(rec.get_recording_status())
|
||||||
|
logger.error(
|
||||||
|
"FATAL - recorder {} must be recording but is not!!!!".format(recorder_agent.get('name')))
|
||||||
|
agent_state_error_msg = "FATAL - recorder must be recording but is not!"
|
||||||
|
with agent_states_lock:
|
||||||
|
agent_states[recorder_agent['name']] = 'FATAL - recorder is NOT recording, but should!'
|
||||||
|
except LrcException as e:
|
||||||
|
logger.fatal("Exception occurred: {}".format(str(e)))
|
||||||
|
logger.error("Could not check state of recorder {}, Address: {}".format(recorder_agent.get('name'),
|
||||||
|
recorder_info.get('ip')))
|
||||||
|
else:
|
||||||
|
logger.error("FATAL: {} is not in capturing state...but should be!!".format(recorder_agent.get('name')))
|
||||||
|
agent_state_error_msg = "FATAL - is not in capturing state...but should be!"
|
||||||
|
else:
|
||||||
|
recorder_info = get_recorder_by_name(recorder_agent.get('name'))
|
||||||
|
try:
|
||||||
|
rec = get_recorder_adapter(recorder_info)
|
||||||
|
if rec.is_recording():
|
||||||
|
logger.error("FATAL - recorder must not be recording!!!!")
|
||||||
|
agent_state_error_msg = "FATAL - is not in capturing state...but should be!"
|
||||||
|
with agent_states_lock:
|
||||||
|
agent_states[recorder_agent.get('name')] = 'FATAL - recorder IS recording, but should NOT!'
|
||||||
|
else:
|
||||||
|
logger.info("OK – recorder is not recording :)")
|
||||||
|
with agent_states_lock:
|
||||||
|
agent_states[recorder_agent.get('name')] = 'OK - recorder is NOT recording'
|
||||||
|
except LrcException as e:
|
||||||
|
logger.fatal("Exception occurred: {}".format(str(e)))
|
||||||
|
logger.error("Could not check state of recorder {}, Address: {}".format(recorder_agent.get('name'),
|
||||||
|
recorder_info.get('ip')))
|
||||||
|
agent_state_error_msg = "FATAL - Could not check state of recorder! Address: {}".format(
|
||||||
|
recorder_info.get('ip'))
|
||||||
|
|
||||||
|
if agent_state_error_msg is None:
|
||||||
|
return True, agent_states[recorder_agent.get('name')], recorder_agent.get('name')
|
||||||
|
return False, agent_state_error_msg, recorder_agent.get('name')
|
||||||
|
|
||||||
|
|
||||||
|
def ping_capture_agent(recorder_agent: Union[Recorder, dict]):
|
||||||
|
if recorder_agent.get('offline', False):
|
||||||
|
print("is offline!")
|
||||||
|
logger.info("OK - Ping skipped, recorder {} is in offline mode.".format(recorder_agent.get('name')))
|
||||||
|
return True, "Recorder is in offline / maintenance mode", recorder_agent.get('name')
|
||||||
|
recorder_ip = get_recorder_by_name(recorder_agent.get('name')).get('ip')
|
||||||
|
try:
|
||||||
|
subprocess.check_call(
|
||||||
|
['ping', '-W', '10', '-c', '2', recorder_ip],
|
||||||
|
# stderr=subprocess.STDOUT, # get all output
|
||||||
|
stdout=subprocess.DEVNULL, # suppress output
|
||||||
|
stderr=subprocess.DEVNULL,
|
||||||
|
universal_newlines=True # return string not bytes
|
||||||
|
)
|
||||||
|
logger.info("Successfully pinged {} ({}). :-)".format(recorder_agent.get('name'), recorder_ip))
|
||||||
|
return True, "Successfully pinged {}. :-)".format(recorder_agent.get('name')), recorder_agent.get('name')
|
||||||
|
except subprocess.CalledProcessError:
|
||||||
|
logger.error("Can not ping {} ({})!!".format(recorder_agent.get('name'), recorder_ip))
|
||||||
|
return False, "Unable to ping {} ({})".format(recorder_agent.get('name'), recorder_ip), recorder_agent.get(
|
||||||
|
'name')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
agents = get_capture_agents()
|
||||||
|
logger.info("Got {} capture agents that will be checked...".format(len(agents)))
|
||||||
|
|
||||||
|
for a in agents:
|
||||||
|
agent_states[a.get('name')] = 'PROBLEMATIC - unknown'
|
||||||
|
|
||||||
|
# pool = ThreadPool(5)
|
||||||
|
# pool.map(check_capture_agent_state, agents)
|
||||||
|
|
||||||
|
NUM_THREADS = 8
|
||||||
|
|
||||||
|
recorders = get_recorder_details()
|
||||||
|
with ThreadPool(NUM_THREADS) as pool:
|
||||||
|
# results = [pool.apply_async(ping_capture_agent, (agent,)) for agent in agents]
|
||||||
|
results = [pool.apply_async(ping_capture_agent, (agent,)) for agent in recorders]
|
||||||
|
try:
|
||||||
|
[res.get(timeout=12) for res in results]
|
||||||
|
except TimeoutError as e:
|
||||||
|
logger.error("Timeout while pinging capture agent! {}".format(e))
|
||||||
|
|
||||||
|
with ThreadPool(NUM_THREADS) as pool:
|
||||||
|
results = [pool.apply_async(check_capture_agent_state, (agent,)) for agent in agents]
|
||||||
|
try:
|
||||||
|
[res.get(timeout=12) for res in results]
|
||||||
|
except TimeoutError as e:
|
||||||
|
logger.error("Timeout while getting capture agent state! {}".format(e))
|
||||||
|
|
||||||
|
logger.info("DONE checking capture agents / recorders!")
|
||||||
|
|
||||||
|
logged_events = rec_err_state_log_stream.getvalue()
|
||||||
|
if len(logged_events) > 0:
|
||||||
|
logged_events += "\n\n=============\nAgent States:\n\n{}".format(''.join(
|
||||||
|
"{:<48}: {}\n".format(a, agent_states[a]) for a in agent_states
|
||||||
|
))
|
||||||
|
send_error_mail(logged_events, "Errors have been detected while checking recorder states!")
|
||||||
|
|
||||||
|
# mem_handler.close()
|
||||||
119
backend/tools/recorder_streams_sanity_checks.py
Normal file
119
backend/tools/recorder_streams_sanity_checks.py
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
import io
|
||||||
|
import logging
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import ffmpeg
|
||||||
|
import os
|
||||||
|
import tempfile
|
||||||
|
from PIL import Image
|
||||||
|
from pydub import AudioSegment
|
||||||
|
from pydub.playback import play
|
||||||
|
|
||||||
|
logger = logging.getLogger("lrc.tools.recorder_streams_sanity_checks")
|
||||||
|
|
||||||
|
|
||||||
|
def is_single_color_image(image):
|
||||||
|
single_color_image = True
|
||||||
|
color = {}
|
||||||
|
count = 0
|
||||||
|
color_channels = image.split()
|
||||||
|
for c in color_channels: # r, g, b
|
||||||
|
hist = c.histogram()
|
||||||
|
num_of_non_zero_values = len([v for v in hist if v != 0])
|
||||||
|
logger.debug("color_channel: {}, num_of_non_zero_values (NON-BLACK): {}".format(c, num_of_non_zero_values))
|
||||||
|
if num_of_non_zero_values > 1:
|
||||||
|
single_color_image = False
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
color[count] = [i for i in enumerate(hist) if i[1] != 0][0][0]
|
||||||
|
count += 1
|
||||||
|
return single_color_image, color
|
||||||
|
|
||||||
|
|
||||||
|
def check_frame_is_valid(stream_url, raise_errors=True):
|
||||||
|
try:
|
||||||
|
frame, _ = (
|
||||||
|
ffmpeg
|
||||||
|
.input(stream_url)
|
||||||
|
.output('pipe:', vframes=1, format='image2', vcodec='mjpeg')
|
||||||
|
.run(capture_stdout=True, capture_stderr=True)
|
||||||
|
)
|
||||||
|
image = Image.open(io.BytesIO(frame))
|
||||||
|
single_color_image, color = is_single_color_image(image)
|
||||||
|
if not single_color_image:
|
||||||
|
image.show()
|
||||||
|
return True, "all good :-)"
|
||||||
|
else:
|
||||||
|
if all(map(lambda x: x == 0, color.values())):
|
||||||
|
return False, "Image is entirely black! (color: {} (RGB))".format(
|
||||||
|
':'.join([str(x) for x in color.values()]))
|
||||||
|
return False, "Image has only one single color! (color: {} (RGB))".format(
|
||||||
|
':'.join([str(x) for x in color.values()]))
|
||||||
|
except ffmpeg.Error as e:
|
||||||
|
msg = "Could not connect to stream URL or other error!"
|
||||||
|
logger.error(msg)
|
||||||
|
try:
|
||||||
|
msg += " ({})".format(e.stderr.decode('utf-8').strip().split("\n")[-1])
|
||||||
|
except IndexError:
|
||||||
|
pass
|
||||||
|
if raise_errors:
|
||||||
|
raise Exception(msg)
|
||||||
|
else:
|
||||||
|
return False, msg
|
||||||
|
|
||||||
|
|
||||||
|
def check_if_audio_is_valid(stream_url, sample_length_sec=3, lower_alert_limit_dBFS=-40.0, raise_errors=True):
|
||||||
|
file_name = tempfile.NamedTemporaryFile(suffix='.aac').name
|
||||||
|
if os.path.exists(file_name):
|
||||||
|
os.remove(file_name)
|
||||||
|
try:
|
||||||
|
frame, _ = (
|
||||||
|
ffmpeg
|
||||||
|
.input(stream_url, t=sample_length_sec)
|
||||||
|
.output(file_name)
|
||||||
|
.run(capture_stdout=True, capture_stderr=True)
|
||||||
|
)
|
||||||
|
|
||||||
|
sound = AudioSegment.from_file(file_name, "aac")
|
||||||
|
# print(sound.dBFS)
|
||||||
|
# play(sound)
|
||||||
|
if sound.max_dBFS == -float('inf'):
|
||||||
|
return False, "No active audio signal detected!"
|
||||||
|
elif sound.max_dBFS < lower_alert_limit_dBFS:
|
||||||
|
return False, "Very low volume (< {} dBFS) detected! ({})".format(lower_alert_limit_dBFS, sound.max_dBFS)
|
||||||
|
|
||||||
|
return True, "good audio signal detected! ({} max dBFS in {}s sample)".format(sound.max_dBFS, sample_length_sec)
|
||||||
|
except ffmpeg.Error as e:
|
||||||
|
msg = "Could not connect to stream URL or other error!"
|
||||||
|
logger.error(msg)
|
||||||
|
try:
|
||||||
|
msg += " ({})".format(e.stderr.decode('utf-8').strip().split("\n")[-1])
|
||||||
|
except IndexError:
|
||||||
|
pass
|
||||||
|
if raise_errors:
|
||||||
|
raise Exception(msg)
|
||||||
|
else:
|
||||||
|
return False, msg
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
Following code is not working correctly - ffmpeg parameters are wrong.
|
||||||
|
"""
|
||||||
|
"""
|
||||||
|
def check_if_audio_is_valid_stream(stream_url, raise_errors=True):
|
||||||
|
audio, _ = (
|
||||||
|
ffmpeg
|
||||||
|
.input(stream_url, t=2)
|
||||||
|
.output('pipe:', f="adts", acodec='copy')
|
||||||
|
.run(capture_stdout=False, capture_stderr=False)
|
||||||
|
)
|
||||||
|
audio = io.BytesIO(audio)
|
||||||
|
sound = AudioSegment.from_file(audio, "aac")
|
||||||
|
play(sound)
|
||||||
|
|
||||||
|
# check_if_audio_is_valid('rtsp://172.22.246.207/extron1')
|
||||||
|
"""
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
# print(check_frame_is_valid('rtsp://172.22.246.207/extron2'))
|
||||||
|
print(check_if_audio_is_valid('rtsp://172.22.246.207/extron1'))
|
||||||
@@ -1,200 +0,0 @@
|
|||||||
import json
|
|
||||||
import os
|
|
||||||
import logging
|
|
||||||
import subprocess
|
|
||||||
import threading
|
|
||||||
from io import StringIO
|
|
||||||
from logging.handlers import MemoryHandler
|
|
||||||
|
|
||||||
import requests
|
|
||||||
from requests.auth import HTTPBasicAuth
|
|
||||||
from multiprocessing.pool import ThreadPool
|
|
||||||
from multiprocessing.context import TimeoutError
|
|
||||||
|
|
||||||
from ics import Calendar
|
|
||||||
|
|
||||||
from backend import LrcException
|
|
||||||
from backend.config import Config
|
|
||||||
from backend.recorder_adapters import RecorderAdapter
|
|
||||||
|
|
||||||
from backend.recorder_adapters.epiphan_base import Epiphan
|
|
||||||
from backend.recorder_adapters.extron_smp import SMP35x
|
|
||||||
from backend.tools.send_mail import send_error_mail, get_smtp_error_handler
|
|
||||||
|
|
||||||
logger = logging.getLogger("lrc.tools.simple_state_checker")
|
|
||||||
|
|
||||||
smtp_error_handler = get_smtp_error_handler(subject="Errors have been detected while checking recorder states!")
|
|
||||||
#mem_handler = MemoryHandler(capacity=100, flushLevel=logging.FATAL, target=smtp_error_handler)
|
|
||||||
#mem_handler.setLevel(logging.WARNING)
|
|
||||||
|
|
||||||
rec_err_state_log_stream = StringIO()
|
|
||||||
rec_err_state_log_stream_handler = logging.StreamHandler(stream=rec_err_state_log_stream)
|
|
||||||
rec_err_state_log_stream_handler.setLevel(logging.WARNING)
|
|
||||||
|
|
||||||
logger.addHandler(rec_err_state_log_stream_handler)
|
|
||||||
#logger.addHandler(mem_handler)
|
|
||||||
|
|
||||||
base_url = "https://opencast.bibliothek.kit.edu"
|
|
||||||
|
|
||||||
session = requests.session()
|
|
||||||
session.auth = HTTPBasicAuth(Config.OPENCAST_USER, Config.OPENCAST_PW)
|
|
||||||
|
|
||||||
config = {'service_urls': {}}
|
|
||||||
|
|
||||||
recorders = None
|
|
||||||
|
|
||||||
agent_states_lock = threading.RLock()
|
|
||||||
agent_states = {}
|
|
||||||
|
|
||||||
|
|
||||||
def get_service_url(service_type: str):
|
|
||||||
if service_type in config['service_urls']:
|
|
||||||
return config['service_urls'][service_type]
|
|
||||||
params = {'serviceType': service_type}
|
|
||||||
url = base_url + "/services/available.json"
|
|
||||||
res = session.get(url, params=params)
|
|
||||||
if res.ok:
|
|
||||||
service = res.json()["services"]["service"]
|
|
||||||
config["service_urls"][service_type] = service["host"] + \
|
|
||||||
service["path"]
|
|
||||||
return service["host"] + service["path"]
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def get_calender(rec_id):
|
|
||||||
params = {'agentid': rec_id}
|
|
||||||
url = get_service_url('org.opencastproject.scheduler') + "/calendars"
|
|
||||||
res = session.get(url, params=params)
|
|
||||||
if res.ok:
|
|
||||||
return Calendar(res.text)
|
|
||||||
|
|
||||||
|
|
||||||
def get_capture_agents():
|
|
||||||
url = get_service_url("org.opencastproject.capture.admin") + "/agents.json"
|
|
||||||
res = session.get(url)
|
|
||||||
if res.ok:
|
|
||||||
return res.json()["agents"]["agent"]
|
|
||||||
|
|
||||||
|
|
||||||
def get_recorder_details():
|
|
||||||
"""Temporary implementation using initial_recorders.json. Should be replaced by DB layer later!"""
|
|
||||||
global recorders
|
|
||||||
if recorders is None:
|
|
||||||
f = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir, 'models', 'initial_recorders.json'))
|
|
||||||
with open(f, 'r') as json_file:
|
|
||||||
recorders = json.load(json_file)['recorders']
|
|
||||||
return recorders
|
|
||||||
|
|
||||||
|
|
||||||
def get_recorder_by_name(name: str):
|
|
||||||
for r in get_recorder_details():
|
|
||||||
if r["name"] == name:
|
|
||||||
return r
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def notify_users_of_problem(msg: str):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def get_recorder_adapter(recorder_info: dict) -> RecorderAdapter:
|
|
||||||
if "SMP" in recorder_info["type"]:
|
|
||||||
rec = SMP35x(recorder_info['ip'], recorder_info['password'])
|
|
||||||
else:
|
|
||||||
rec = Epiphan(recorder_info['ip'], recorder_info["username"], recorder_info["password"])
|
|
||||||
return rec
|
|
||||||
|
|
||||||
|
|
||||||
def check_capture_agent_state(a: dict):
|
|
||||||
logger.debug("Checking Agent {}".format(a['name']))
|
|
||||||
c = get_calender(a['name'])
|
|
||||||
is_recording_in_calendar = len(list(c.timeline.now())) >= 1
|
|
||||||
if is_recording_in_calendar:
|
|
||||||
logger.info("{} has entry in Calender and should therefore be recording... checking now!".format(a['name']))
|
|
||||||
if a['state'] == "capturing":
|
|
||||||
recorder_info = get_recorder_by_name(a['name'])
|
|
||||||
try:
|
|
||||||
rec = get_recorder_adapter(recorder_info)
|
|
||||||
if rec.is_recording():
|
|
||||||
logger.info("OK – recorder {} is recording :)".format(a['name']))
|
|
||||||
with agent_states_lock:
|
|
||||||
agent_states[a['name']] = 'OK - recorder is recording'
|
|
||||||
else:
|
|
||||||
logger.info(rec.get_recording_status())
|
|
||||||
logger.error("FATAL - recorder {} must be recording but is not!!!!".format(a['name']))
|
|
||||||
with agent_states_lock:
|
|
||||||
agent_states[a['name']] = 'FATAL - recorder is NOT recording, but should!'
|
|
||||||
except LrcException as e:
|
|
||||||
logger.fatal("Exception occurred: {}".format(str(e)))
|
|
||||||
logger.error("Could not check state of recorder {}, Address: {}".format(a['name'], recorder_info['ip']))
|
|
||||||
else:
|
|
||||||
logger.error("FATAL: {} is not in capturing state...but should be!!".format(a['name']))
|
|
||||||
else:
|
|
||||||
recorder_info = get_recorder_by_name(a['name'])
|
|
||||||
try:
|
|
||||||
rec = get_recorder_adapter(recorder_info)
|
|
||||||
if rec.is_recording():
|
|
||||||
logger.error("FATAL - recorder must not be recording!!!!")
|
|
||||||
with agent_states_lock:
|
|
||||||
agent_states[a['name']] = 'FATAL - recorder IS recording, but should NOT!'
|
|
||||||
else:
|
|
||||||
logger.info("OK – recorder is not recording :)")
|
|
||||||
with agent_states_lock:
|
|
||||||
agent_states[a['name']] = 'OK - recorder is NOT recording'
|
|
||||||
except LrcException as e:
|
|
||||||
logger.fatal("Exception occurred: {}".format(str(e)))
|
|
||||||
logger.error("Could not check state of recorder {}, Address: {}".format(a['name'], recorder_info['ip']))
|
|
||||||
|
|
||||||
|
|
||||||
def ping_capture_agent(a: dict):
|
|
||||||
recorder_ip = get_recorder_by_name(a['name'])['ip']
|
|
||||||
try:
|
|
||||||
response = subprocess.check_call(
|
|
||||||
['ping', '-W', '10', '-c', '2', recorder_ip],
|
|
||||||
# stderr=subprocess.STDOUT, # get all output
|
|
||||||
stdout=subprocess.DEVNULL, # suppress output
|
|
||||||
stderr=subprocess.DEVNULL,
|
|
||||||
universal_newlines=True # return string not bytes
|
|
||||||
)
|
|
||||||
logger.info("Successfully pinged {} ({}). :-)".format(a['name'], recorder_ip))
|
|
||||||
except subprocess.CalledProcessError:
|
|
||||||
logger.error("Can not ping {} ({})!!".format(a['name'], recorder_ip))
|
|
||||||
|
|
||||||
|
|
||||||
agents = get_capture_agents()
|
|
||||||
logger.info("Got {} capture agents that will be checked...".format(len(agents)))
|
|
||||||
|
|
||||||
for a in agents:
|
|
||||||
agent_states[a['name']] = 'PROBLEMATIC - unknown'
|
|
||||||
|
|
||||||
|
|
||||||
# pool = ThreadPool(5)
|
|
||||||
# pool.map(check_capture_agent_state, agents)
|
|
||||||
|
|
||||||
NUM_THREADS = 8
|
|
||||||
|
|
||||||
with ThreadPool(NUM_THREADS) as pool:
|
|
||||||
results = [pool.apply_async(ping_capture_agent, (agent,)) for agent in agents]
|
|
||||||
try:
|
|
||||||
[res.get(timeout=12) for res in results]
|
|
||||||
except TimeoutError as e:
|
|
||||||
logger.error("Timeout while pinging capture agent! {}".format(e))
|
|
||||||
|
|
||||||
|
|
||||||
with ThreadPool(NUM_THREADS) as pool:
|
|
||||||
results = [pool.apply_async(check_capture_agent_state, (agent,)) for agent in agents]
|
|
||||||
try:
|
|
||||||
[res.get(timeout=12) for res in results]
|
|
||||||
except TimeoutError as e:
|
|
||||||
logger.error("Timeout while getting capture agent state! {}".format(e))
|
|
||||||
|
|
||||||
logger.info("DONE checking capture agents / recorders!")
|
|
||||||
|
|
||||||
logged_events = rec_err_state_log_stream.getvalue()
|
|
||||||
if len(logged_events) > 0:
|
|
||||||
logged_events += "\n\n=============\nAgent States:\n\n{}".format(''.join(
|
|
||||||
"{:<48}: {}\n".format(a, agent_states[a]) for a in agent_states
|
|
||||||
))
|
|
||||||
send_error_mail(logged_events, "Errors have been detected while checking recorder states!")
|
|
||||||
|
|
||||||
#mem_handler.close()
|
|
||||||
@@ -1,2 +1,4 @@
|
|||||||
# Copyright (c) 2019. Tobias Kurze
|
# Copyright (c) 2019. Tobias Kurze
|
||||||
|
|
||||||
|
import backend.websocket.handlers
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
import logging
|
import logging
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
|
from flask_jwt_extended import verify_jwt_in_request, get_current_user, jwt_required, get_jwt_claims, get_jwt_identity
|
||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
from flask_socketio import SocketIO, emit
|
from flask_socketio import SocketIO, emit
|
||||||
|
from jwt import ExpiredSignatureError
|
||||||
|
|
||||||
from backend import app
|
from backend import app
|
||||||
|
|
||||||
@@ -31,24 +33,55 @@ class WebSocketBase:
|
|||||||
debug = self.flask_app_context.debug
|
debug = self.flask_app_context.debug
|
||||||
socketio.run(self.flask_app_context, host=host, port=port, debug=debug)
|
socketio.run(self.flask_app_context, host=host, port=port, debug=debug)
|
||||||
|
|
||||||
|
def send_test_msg(self):
|
||||||
|
socketio.emit('test', "tolle nachricht")
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@socketio.on('connect')
|
@socketio.on('connect')
|
||||||
def connect_handler():
|
def connect_handler():
|
||||||
logger.debug("new connection...")
|
logger.debug("new connection...")
|
||||||
print(current_user)
|
try:
|
||||||
if current_user.is_authenticated:
|
print(verify_jwt_in_request())
|
||||||
logger.debug("user is authenticated")
|
print(get_jwt_identity())
|
||||||
print("allowed!")
|
except ExpiredSignatureError:
|
||||||
emit('my response',
|
logger.info("user is not authenticated! Signature expired.")
|
||||||
{'message': '{0} has joined'.format(current_user.name)},
|
except Exception as e:
|
||||||
broadcast=True)
|
|
||||||
else:
|
|
||||||
logger.info("user is not authenticated!")
|
logger.info("user is not authenticated!")
|
||||||
|
print(str(e))
|
||||||
|
print(type(e))
|
||||||
print("not allowed!!")
|
print("not allowed!!")
|
||||||
return False # not allowed here
|
return False # not allowed here
|
||||||
|
logger.debug("user is authenticated")
|
||||||
|
print("allowed!")
|
||||||
|
return True
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
@socketio.on('message')
|
||||||
|
def handle_message(message):
|
||||||
|
print('received message: ' + message)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
@socketio.on('json')
|
||||||
|
def handle_json(json):
|
||||||
|
print('received json: ' + str(json))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _request_request_recorder_status_update():
|
||||||
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _test_on_msg_func():
|
||||||
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
@socketio.on('update_message_test_blabla')
|
||||||
|
def handle_msg(msg=None):
|
||||||
|
print('received msg: ' + str(msg))
|
||||||
|
socketio.on_event('my event', WebSocketBase._test_on_msg_func, namespace='/')
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
@socketio.on_error()
|
@socketio.on_error()
|
||||||
def handle_error(self, error):
|
def handle_error(error):
|
||||||
logger.error(error)
|
logger.error(error)
|
||||||
print(error)
|
print(error)
|
||||||
|
|
||||||
|
|||||||
50
backend/websocket/handlers.py
Normal file
50
backend/websocket/handlers.py
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
import json
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from backend.cron import async_cron_recorder_checker
|
||||||
|
from backend.websocket.base import socketio
|
||||||
|
|
||||||
|
logger = logging.getLogger("lrc.websocket.handlers")
|
||||||
|
|
||||||
|
recorder_state_checker = async_cron_recorder_checker
|
||||||
|
|
||||||
|
|
||||||
|
@socketio.on('request_recorder_state_updates')
|
||||||
|
def handle_request_recorder_state_updates_msg(recorder_id=None):
|
||||||
|
if recorder_id is None:
|
||||||
|
logger.warning("No recorder_id communicated, ignoring!")
|
||||||
|
return
|
||||||
|
logger.info("Adding recorder {} to state checker".format(recorder_id))
|
||||||
|
recorder_state_checker.add_object_to_state_check(recorder_id)
|
||||||
|
|
||||||
|
|
||||||
|
@socketio.on('force_recorder_state_update')
|
||||||
|
def handle_force_recorder_state_update_msg(recorder_id=None):
|
||||||
|
if recorder_id is None:
|
||||||
|
logger.warning("No recorder_id communicated, ignoring!")
|
||||||
|
return
|
||||||
|
|
||||||
|
current_states = recorder_state_checker.get_current_state()
|
||||||
|
for key in current_states:
|
||||||
|
state = current_states[key]
|
||||||
|
if state.get('id', None) == recorder_id:
|
||||||
|
logger.debug("Sending state to: {}".format(
|
||||||
|
'recorder_state_update_{}'.format(recorder_id)))
|
||||||
|
socketio.emit('recorder_state_update_{}'.format(recorder_id),
|
||||||
|
json.dumps(state))
|
||||||
|
return
|
||||||
|
logger.warning("Can't force update, no state found for recorder id {}.".format(recorder_id))
|
||||||
|
|
||||||
|
|
||||||
|
def send_state_update_to_recorders(recorder_results_dict: dict):
|
||||||
|
if len(recorder_results_dict) <= 0:
|
||||||
|
logger.debug("Sending state of recorders via web socket... => nothing to send!")
|
||||||
|
return
|
||||||
|
|
||||||
|
logger.debug("Sending state of recorders via web socket...")
|
||||||
|
for recorder_id in recorder_results_dict:
|
||||||
|
print(recorder_results_dict[recorder_id])
|
||||||
|
logger.debug("Sending state to: {}".format(
|
||||||
|
'recorder_state_update_{}'.format(recorder_results_dict[recorder_id].get('id'))))
|
||||||
|
socketio.emit('recorder_state_update_{}'.format(recorder_results_dict[recorder_id].get('id')),
|
||||||
|
json.dumps(recorder_results_dict[recorder_id]))
|
||||||
@@ -3,19 +3,23 @@
|
|||||||
import logging
|
import logging
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
|
from socketIO_client import SocketIO, LoggingNamespace
|
||||||
from flask import Flask
|
|
||||||
from flask_socketio import SocketIO, emit
|
|
||||||
|
|
||||||
from backend import app
|
|
||||||
|
|
||||||
app = Flask(__name__)
|
|
||||||
app.config['SECRET_KEY'] = 'secret!'
|
|
||||||
|
|
||||||
logging.basicConfig()
|
logging.basicConfig()
|
||||||
|
|
||||||
|
|
||||||
|
token = "# replace with: JWT Access Token"
|
||||||
|
#print(token)
|
||||||
|
|
||||||
|
print("params")
|
||||||
|
#socketIO = SocketIO('127.0.0.1', 5443, params={'jwt': '{}'.format(token)})
|
||||||
|
print("headers")
|
||||||
|
#socketIO = SocketIO('127.0.0.1', 5443, headers={'Authorization': 'Bearer {}'.format(token)})
|
||||||
|
print("cookies")
|
||||||
|
socketIO = SocketIO('127.0.0.1', 5443, cookies={'access_token_cookie': '{}'.format(token)})
|
||||||
|
|
||||||
#socketio = SocketIO(message_queue="redis://")
|
#socketio = SocketIO(message_queue="redis://")
|
||||||
socketio = SocketIO(app, port=5443, debug=True)
|
socketio = SocketIO('127.0.0.1', 5443)
|
||||||
|
|
||||||
#socketio.run(app, host="localhost", port=5000)
|
#socketio.run(app, host="localhost", port=5000)
|
||||||
#socketio.init_app(app, host="localhost", port=5000, cors_allowed_origins="*", )
|
#socketio.init_app(app, host="localhost", port=5000, cors_allowed_origins="*", )
|
||||||
|
|||||||
@@ -1,620 +0,0 @@
|
|||||||
[2019-11-14 14:16:53,247] {MainThread} INFO in simple_state_checker, line 136: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 14:16:53,255] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 14:16:53,255] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 14:16:53,256] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 14:16:53,261] {Thread-4} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 14:16:53,261] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 14:16:53,386] {Thread-4} INFO in extron_smp, line 32: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 14:16:54,344] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:54,355] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 14:16:54,811] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:54,827] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 14:16:55,195] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:55,206] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 14:16:55,988] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:56,019] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 14:16:56,265] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:56,276] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 14:16:56,323] {Thread-1} INFO in simple_state_checker, line 103: CS 10.11 Hertz-Hoersaal has entry in Calender and should therfor be recording... checking now!
|
|
||||||
[2019-11-14 14:16:56,365] {Thread-1} INFO in simple_state_checker, line 107: CS 10.11 Hertz-Hoersaal is in capturing state, so there should be an entry in the calendar of the recorder, right? -> True
|
|
||||||
[2019-11-14 14:16:56,380] {Thread-1} INFO in extron_smp, line 32: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:16:57,008] {Thread-2} INFO in extron_smp, line 32: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 14:16:57,095] {Thread-5} INFO in extron_smp, line 32: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 14:16:57,272] {Thread-1} INFO in simple_state_checker, line 115: 1
|
|
||||||
[2019-11-14 14:16:57,283] {Thread-1} ERROR in simple_state_checker, line 116: FATAL - recorder CS 10.11 Hertz-Hoersaal must be recording but is not!!!!
|
|
||||||
[2019-11-14 14:16:57,321] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 14:16:57,530] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:57,541] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 14:16:57,744] {Thread-1} INFO in extron_smp, line 32: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 14:16:57,936] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:57,952] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 14:16:57,954] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:57,965] {Thread-3} INFO in extron_smp, line 32: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 14:16:57,966] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 14:16:58,634] {Thread-1} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:58,655] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 14:16:58,902] {Thread-2} INFO in extron_smp, line 32: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 14:16:58,904] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:58,904] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 14:16:59,563] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:59,579] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 14:16:59,668] {Thread-3} INFO in extron_smp, line 32: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 14:16:59,797] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:59,818] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 14:17:00,764] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:17:00,780] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 14:17:00,983] {Thread-3} INFO in extron_smp, line 32: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 14:17:01,618] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:17:01,670] {Thread-1} INFO in extron_smp, line 32: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 14:17:01,960] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:19:03,660] {Thread-4} CRITICAL in simple_state_checker, line 131: Exception occurred: LRC Exception: "[Errno 110] Connection timed out"
|
|
||||||
[2019-11-14 14:19:03,661] {Thread-4} ERROR in simple_state_checker, line 132: Could not check state of recorder CS 10.50 Bauingenieure Grosser Hoersaal, Address: 129.13.51.101
|
|
||||||
[2019-11-14 14:23:51,783] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:25:33,337] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:27:00,957] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:27:14,952] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:28:15,602] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:29:24,029] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:29:58,640] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:32:30,592] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:34:08,425] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:36:35,216] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:38:11,521] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:39:43,884] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:39:53,493] {MainThread} INFO in simple_state_checker, line 136: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 14:39:53,497] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 14:39:53,497] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 14:39:53,497] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 14:39:53,500] {Thread-4} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 14:39:53,500] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 14:39:53,619] {Thread-4} INFO in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 14:39:54,913] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:54,942] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 14:39:55,178] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:55,220] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 14:39:55,395] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:55,416] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 14:39:56,048] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:56,092] {Thread-1} INFO in simple_state_checker, line 103: CS 10.11 Hertz-Hoersaal has entry in Calender and should therfor be recording... checking now!
|
|
||||||
[2019-11-14 14:39:56,098] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 14:39:56,108] {Thread-1} INFO in simple_state_checker, line 107: CS 10.11 Hertz-Hoersaal is in capturing state, so there should be an entry in the calendar of the recorder, right? -> True
|
|
||||||
[2019-11-14 14:39:56,127] {Thread-1} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:39:56,248] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:56,269] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 14:39:56,761] {Thread-2} INFO in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 14:39:57,066] {Thread-1} INFO in simple_state_checker, line 113: OK – recorder CS 10.11 Hertz-Hoersaal is recording :)
|
|
||||||
[2019-11-14 14:39:57,087] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 14:39:57,545] {Thread-3} INFO in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 14:39:57,770] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:57,817] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 14:39:58,182] {Thread-1} INFO in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 14:39:58,362] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:58,378] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 14:39:58,425] {Thread-2} INFO in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 14:39:58,599] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:58,610] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 14:39:58,950] {Thread-1} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:58,951] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 14:39:59,487] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:59,513] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 14:39:59,604] {Thread-3} INFO in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 14:39:59,908] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:59,918] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 14:40:00,356] {Thread-2} INFO in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 14:40:00,436] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:40:00,451] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 14:40:01,582] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:40:01,608] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 14:40:01,789] {Thread-2} INFO in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 14:40:02,326] {Thread-1} INFO in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 14:40:02,497] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:40:02,648] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:57:02,691] {MainThread} INFO in simple_state_checker, line 132: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 14:57:50,259] {MainThread} INFO in simple_state_checker, line 132: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 14:57:50,261] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 14:57:51,265] {Thread-1} INFO in simple_state_checker, line 103: CS 10.11 Hertz-Hoersaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 14:57:51,266] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:57:52,257] {Thread-1} INFO in simple_state_checker, line 109: OK – recorder CS 10.11 Hertz-Hoersaal is recording :)
|
|
||||||
[2019-11-14 14:57:52,259] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 14:57:53,279] {Thread-3} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:57:53,279] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 14:57:53,873] {Thread-5} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:57:53,873] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 14:57:53,892] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 15:02:35,956] {MainThread} INFO in simple_state_checker, line 132: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 15:02:35,961] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 15:02:35,961] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 15:02:35,961] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 15:02:35,962] {Thread-4} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 15:02:35,966] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 15:02:36,101] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 15:02:36,867] {Thread-5} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:36,878] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 15:02:37,586] {Thread-3} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:37,616] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 15:02:38,200] {Thread-2} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:38,232] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 15:02:38,487] {Thread-5} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:38,503] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 15:02:38,698] {Thread-3} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:38,710] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 15:02:38,856] {Thread-1} INFO in simple_state_checker, line 103: CS 10.11 Hertz-Hoersaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:02:38,908] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 15:02:39,323] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 15:02:39,609] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 15:02:39,673] {Thread-1} INFO in simple_state_checker, line 109: OK – recorder CS 10.11 Hertz-Hoersaal is recording :)
|
|
||||||
[2019-11-14 15:02:39,693] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 15:02:40,001] {Thread-3} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:40,011] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 15:02:40,115] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 15:02:40,400] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 15:02:40,409] {Thread-5} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:40,410] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 15:02:40,604] {Thread-2} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:40,621] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 15:02:40,828] {Thread-1} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:40,828] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 15:02:41,529] {Thread-3} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:41,549] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 15:02:41,621] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 15:02:41,849] {Thread-5} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:41,850] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 15:02:42,655] {Thread-2} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:42,687] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 15:02:43,620] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 15:02:44,782] {Thread-3} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:44,876] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 15:02:45,342] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 15:02:45,550] {Thread-2} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:45,716] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 15:02:46,265] {Thread-3} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:15,774] {MainThread} INFO in simple_state_checker, line 133: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 15:05:15,776] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 15:05:15,776] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 15:05:15,778] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 15:05:15,778] {Thread-4} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 15:05:15,780] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 15:05:15,840] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 15:05:17,298] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:17,314] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 15:05:17,677] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:17,694] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 15:05:17,842] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:17,853] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 15:05:18,841] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:18,887] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 15:05:19,101] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:19,137] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 15:05:19,149] {Thread-1} INFO in simple_state_checker, line 104: CS 10.11 Hertz-Hoersaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:05:19,210] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 15:05:19,575] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 15:05:19,886] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 15:05:20,281] {Thread-1} INFO in simple_state_checker, line 110: OK – recorder CS 10.11 Hertz-Hoersaal is recording :)
|
|
||||||
[2019-11-14 15:05:20,282] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 15:05:20,333] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:20,333] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 15:05:20,383] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:20,383] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 15:05:20,616] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:20,632] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 15:05:21,026] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 15:05:21,456] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 15:05:21,827] {Thread-1} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:21,848] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 15:05:22,128] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 15:05:22,566] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:22,567] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 15:05:22,813] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:22,819] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 15:05:23,169] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:23,205] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 15:05:23,731] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 15:05:24,776] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 15:05:24,963] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:24,963] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 15:05:25,042] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:25,131] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 15:05:25,828] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:32,282] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:07:35,727] {MainThread} INFO in simple_state_checker, line 133: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 15:07:35,729] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 15:07:35,729] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 15:07:35,729] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 15:07:35,730] {Thread-4} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 15:07:35,730] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 15:07:35,863] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 15:07:37,438] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:37,453] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 15:07:37,481] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:37,497] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 15:07:37,744] {Thread-1} INFO in simple_state_checker, line 104: CS 10.11 Hertz-Hoersaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:07:37,760] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 15:07:37,996] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:38,011] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 15:07:38,259] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:38,259] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 15:07:38,503] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:38,519] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 15:07:38,612] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 15:07:38,612] {Thread-1} INFO in simple_state_checker, line 110: OK – recorder CS 10.11 Hertz-Hoersaal is recording :)
|
|
||||||
[2019-11-14 15:07:38,633] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 15:07:38,813] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 15:07:39,478] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:39,504] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 15:07:39,592] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 15:07:39,602] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:39,625] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 15:07:39,837] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:39,871] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 15:07:39,886] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 15:07:40,494] {Thread-1} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:40,520] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 15:07:40,903] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 15:07:41,107] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:41,108] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 15:07:41,186] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:41,186] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 15:07:41,731] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:41,747] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 15:07:41,869] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 15:07:42,952] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:42,973] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 15:07:43,268] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 15:07:44,224] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:44,634] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 15:07:44,636] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:50,654] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:07:50,706] {MainThread} INFO in simple_state_checker, line 147: DONE checking capture agents / recorders!
|
|
||||||
[2019-11-14 15:20:07,570] {MainThread} INFO in simple_state_checker, line 133: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 15:20:07,572] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 15:20:07,572] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 15:20:07,572] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 15:20:07,575] {Thread-4} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 15:20:07,576] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 15:20:07,702] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 15:20:09,335] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:09,341] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 15:20:09,527] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:09,543] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 15:20:10,343] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:10,375] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 15:20:11,090] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:11,106] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 15:20:11,158] {Thread-1} INFO in simple_state_checker, line 104: CS 10.11 Hertz-Hoersaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:20:11,164] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 15:20:11,194] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:11,215] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 15:20:11,464] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 15:20:11,990] {Thread-1} INFO in simple_state_checker, line 110: OK – recorder CS 10.11 Hertz-Hoersaal is recording :)
|
|
||||||
[2019-11-14 15:20:12,017] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 15:20:12,028] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 15:20:12,376] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:12,387] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 15:20:12,399] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 15:20:12,400] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:12,401] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 15:20:12,906] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:12,922] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 15:20:13,086] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 15:20:13,264] {Thread-1} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:13,264] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 15:20:13,943] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 15:20:13,999] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:13,999] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 15:20:14,191] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:14,192] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 15:20:14,849] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:14,938] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 15:20:16,840] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 15:20:18,101] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:18,112] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 15:20:18,197] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 15:20:18,231] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:18,279] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 15:20:18,965] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:20,327] {Thread-1} WARNING in extron_smp, line 52: Could not login (as admin) with given password! 129.13.51.102
|
|
||||||
[2019-11-14 15:20:22,329] {Thread-1} ERROR in extron_smp, line 59: Could definitely not login (as admin) with given password! 129.13.51.102
|
|
||||||
[2019-11-14 15:20:24,046] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:20:24,118] {MainThread} INFO in simple_state_checker, line 147: DONE checking capture agents / recorders!
|
|
||||||
[2019-11-14 15:41:07,178] {MainThread} INFO in simple_state_checker, line 133: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 15:41:07,180] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 15:41:07,180] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 15:41:07,180] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 15:41:07,180] {Thread-4} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 15:41:07,180] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 15:41:07,312] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 15:41:08,619] {Thread-2} INFO in simple_state_checker, line 104: CS 10.21 Carl-Benz-Hörsaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:41:08,634] {Thread-2} ERROR in simple_state_checker, line 118: FATAL: CS 10.21 Carl-Benz-Hörsaal is not in capturing state...but should be!!
|
|
||||||
[2019-11-14 15:41:08,640] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 15:41:08,822] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:08,864] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 15:41:08,864] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:08,919] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 15:41:10,309] {Thread-1} INFO in simple_state_checker, line 104: CS 10.11 Hertz-Hoersaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:41:10,319] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 15:41:10,595] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:10,610] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 15:41:10,683] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:10,706] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 15:41:10,708] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 15:41:11,243] {Thread-1} INFO in simple_state_checker, line 110: OK – recorder CS 10.11 Hertz-Hoersaal is recording :)
|
|
||||||
[2019-11-14 15:41:11,253] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 15:41:11,261] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 15:41:11,594] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:11,594] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 15:41:11,606] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 15:41:11,624] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:11,624] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 15:41:12,061] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:12,092] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 15:41:12,311] {Thread-1} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:12,327] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 15:41:12,600] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 15:41:13,130] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 15:41:13,666] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:13,677] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 15:41:13,757] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:13,777] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 15:41:14,070] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:14,096] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 15:41:15,923] {Thread-1} INFO in simple_state_checker, line 104: CS 30.95 Forum Hoersaal Audimax has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:41:15,944] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 15:41:16,093] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 15:41:16,804] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:16,805] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 15:41:16,964] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 15:41:17,043] {Thread-1} INFO in simple_state_checker, line 110: OK – recorder CS 30.95 Forum Hoersaal Audimax is recording :)
|
|
||||||
[2019-11-14 15:41:17,168] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:17,905] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:23,261] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:41:23,280] {MainThread} INFO in simple_state_checker, line 147: DONE checking capture agents / recorders!
|
|
||||||
[2019-11-14 15:45:17,132] {MainThread} INFO in simple_state_checker, line 133: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 15:45:17,136] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 15:45:17,136] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 15:45:17,136] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 15:45:17,138] {Thread-4} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 15:45:17,140] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 15:45:17,246] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 15:45:18,711] {Thread-2} INFO in simple_state_checker, line 104: CS 10.21 Carl-Benz-Hörsaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:45:18,727] {Thread-2} ERROR in simple_state_checker, line 118: FATAL: CS 10.21 Carl-Benz-Hörsaal is not in capturing state...but should be!!
|
|
||||||
[2019-11-14 15:45:18,763] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 15:45:18,861] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:18,872] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 15:45:18,931] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:18,941] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 15:45:19,971] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 15:45:20,433] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:20,448] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 15:45:20,537] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:20,547] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 15:45:20,571] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 15:45:21,177] {Thread-1} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:21,197] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 15:45:21,408] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 15:45:21,543] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:21,564] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 15:45:22,149] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:22,165] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 15:45:22,247] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 15:45:22,247] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:22,268] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 15:45:22,378] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 15:45:22,958] {Thread-1} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:22,978] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 15:45:23,300] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 15:45:23,351] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:23,351] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 15:45:23,400] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:23,400] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 15:45:24,216] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 15:45:24,306] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:24,337] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 15:45:25,245] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:25,266] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 15:45:25,600] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 15:45:26,328] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:26,923] {Thread-1} INFO in simple_state_checker, line 104: CS 30.95 Forum Hoersaal Audimax has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:45:26,923] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 15:45:27,178] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:27,986] {Thread-1} INFO in simple_state_checker, line 110: OK – recorder CS 30.95 Forum Hoersaal Audimax is recording :)
|
|
||||||
[2019-11-14 15:45:33,213] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:45:33,239] {MainThread} INFO in simple_state_checker, line 147: DONE checking capture agents / recorders!
|
|
||||||
[2019-11-15 09:00:02,960] {MainThread} INFO in simple_state_checker, line 139: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-15 09:00:02,962] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-15 09:00:02,962] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-15 09:00:02,963] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-15 09:00:02,963] {Thread-4} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-15 09:00:02,963] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-15 09:00:03,163] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-15 09:00:04,443] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:04,454] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-15 09:00:04,925] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:04,941] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-15 09:00:05,486] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:05,507] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-15 09:00:05,732] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:05,753] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-15 09:00:05,807] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-15 09:00:06,018] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:06,028] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-15 09:00:06,443] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-15 09:00:06,557] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:06,583] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-15 09:00:06,654] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-15 09:00:07,016] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-15 09:00:07,028] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:07,028] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-15 09:00:07,313] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:07,333] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-15 09:00:07,435] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-15 09:00:07,681] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:07,696] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-15 09:00:07,847] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:07,848] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-15 09:00:08,514] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:08,514] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-15 09:00:08,955] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:08,970] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-15 09:00:09,158] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-15 09:00:09,479] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-15 09:00:10,422] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:10,443] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-15 09:00:10,679] {Thread-1} INFO in simple_state_checker, line 110: CS 30.95 Forum Hoersaal Audimax has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-15 09:00:10,679] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-15 09:00:10,756] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:10,757] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-15 09:00:10,870] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-15 09:00:11,648] {Thread-1} INFO in simple_state_checker, line 116: OK – recorder CS 30.95 Forum Hoersaal Audimax is recording :)
|
|
||||||
[2019-11-15 09:00:11,726] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:11,959] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:18,601] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 09:00:18,945] {MainThread} INFO in simple_state_checker, line 153: DONE checking capture agents / recorders!
|
|
||||||
[2019-11-15 09:01:48,428] {MainThread} INFO in simple_state_checker, line 139: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-15 09:01:48,431] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-15 09:01:48,431] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-15 09:01:48,431] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-15 09:01:48,432] {Thread-4} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-15 09:01:48,432] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-15 09:01:48,538] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-15 09:01:49,684] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:49,690] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:49,705] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-15 09:01:49,716] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-15 09:01:50,134] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-15 09:01:50,252] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:50,268] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-15 09:01:50,800] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:50,806] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-15 09:01:50,914] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-15 09:01:50,915] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:50,915] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-15 09:01:51,069] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:51,080] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-15 09:01:51,673] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:51,720] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-15 09:01:51,726] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-15 09:01:51,893] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-15 09:01:52,152] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-15 09:01:52,231] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:52,232] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-15 09:01:52,598] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:52,618] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:52,623] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-15 09:01:52,637] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-15 09:01:52,956] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:52,956] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-15 09:01:53,679] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:53,721] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-15 09:01:54,025] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-15 09:01:54,184] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-15 09:01:54,998] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:55,019] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-15 09:01:55,087] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:55,108] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-15 09:01:55,254] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-15 09:01:55,445] {Thread-3} INFO in simple_state_checker, line 110: CS 30.95 Forum Hoersaal Audimax has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-15 09:01:55,445] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-15 09:01:55,943] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:56,200] {Thread-3} INFO in simple_state_checker, line 116: OK – recorder CS 30.95 Forum Hoersaal Audimax is recording :)
|
|
||||||
[2019-11-15 09:01:56,274] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:02:02,915] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 09:02:03,114] {MainThread} INFO in simple_state_checker, line 153: DONE checking capture agents / recorders!
|
|
||||||
[2019-11-15 09:03:16,872] {MainThread} INFO in simple_state_checker, line 139: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-15 09:03:16,875] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-15 09:03:16,875] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-15 09:03:16,875] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-15 09:03:16,875] {Thread-4} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-15 09:03:16,875] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-15 09:03:16,991] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-15 09:03:17,901] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:17,917] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:17,917] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-15 09:03:17,933] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-15 09:03:18,497] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-15 09:03:18,639] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:18,655] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-15 09:03:19,037] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:19,047] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-15 09:03:19,189] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:19,210] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-15 09:03:19,310] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:19,329] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-15 09:03:19,329] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-15 09:03:19,638] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-15 09:03:20,151] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-15 09:03:20,331] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:20,331] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-15 09:03:20,462] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:20,462] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-15 09:03:20,494] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:20,510] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-15 09:03:20,633] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-15 09:03:21,032] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:21,053] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-15 09:03:21,466] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-15 09:03:21,730] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:21,731] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-15 09:03:22,061] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:22,072] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-15 09:03:22,445] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:22,492] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-15 09:03:23,370] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-15 09:03:24,285] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:24,306] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-15 09:03:24,454] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-15 09:03:24,681] {Thread-3} INFO in simple_state_checker, line 110: CS 30.95 Forum Hoersaal Audimax has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-15 09:03:24,682] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-15 09:03:24,682] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:25,308] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:25,616] {Thread-3} INFO in simple_state_checker, line 116: OK – recorder CS 30.95 Forum Hoersaal Audimax is recording :)
|
|
||||||
[2019-11-15 09:03:31,225] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 09:03:31,461] {MainThread} INFO in simple_state_checker, line 153: DONE checking capture agents / recorders!
|
|
||||||
[2019-11-15 15:56:02,776] {MainThread} INFO in simple_state_checker, line 139: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-15 15:56:02,783] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-15 15:56:02,783] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-15 15:56:02,784] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-15 15:56:02,787] {Thread-4} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-15 15:56:02,787] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-15 15:56:02,903] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-15 15:56:04,320] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:04,331] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-15 15:56:04,366] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:04,377] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-15 15:56:04,654] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:04,741] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-15 15:56:04,779] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-15 15:56:05,377] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:05,388] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-15 15:56:05,479] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:05,492] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-15 15:56:05,698] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-15 15:56:06,048] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:06,105] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-15 15:56:06,320] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-15 15:56:06,752] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-15 15:56:06,834] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:06,834] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-15 15:56:06,844] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:06,845] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-15 15:56:07,320] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:07,336] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-15 15:56:07,555] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-15 15:56:07,567] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:07,568] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-15 15:56:08,323] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:08,324] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-15 15:56:08,638] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:08,655] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-15 15:56:08,687] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-15 15:56:09,544] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-15 15:56:09,757] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:09,773] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-15 15:56:10,425] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:10,441] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-15 15:56:10,740] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-15 15:56:11,549] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:11,664] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-15 15:56:12,063] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:12,450] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:18,121] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 15:56:18,512] {MainThread} INFO in simple_state_checker, line 153: DONE checking capture agents / recorders!
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[2019-11-12 16:17:10,872] {Thread-3} ERROR in simple_state_checker, line 104: FATAL - recorder CS 30.46 Chemie Neuer Hoersaal must be recording!!!!
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
[2019-11-14 14:16:57,283] {Thread-1} ERROR in simple_state_checker, line 116: FATAL - recorder CS 10.11 Hertz-Hoersaal must be recording but is not!!!!
|
|
||||||
[2019-11-14 14:16:57,283] {Thread-1} ERROR in simple_state_checker, line 116: FATAL - recorder CS 10.11 Hertz-Hoersaal must be recording but is not!!!!
|
|
||||||
[2019-11-14 14:19:03,660] {Thread-4} CRITICAL in simple_state_checker, line 131: Exception occurred: LRC Exception: "[Errno 110] Connection timed out"
|
|
||||||
[2019-11-14 14:19:03,660] {Thread-4} CRITICAL in simple_state_checker, line 131: Exception occurred: LRC Exception: "[Errno 110] Connection timed out"
|
|
||||||
[2019-11-14 14:19:03,661] {Thread-4} ERROR in simple_state_checker, line 132: Could not check state of recorder CS 10.50 Bauingenieure Grosser Hoersaal, Address: 129.13.51.101
|
|
||||||
[2019-11-14 14:19:03,661] {Thread-4} ERROR in simple_state_checker, line 132: Could not check state of recorder CS 10.50 Bauingenieure Grosser Hoersaal, Address: 129.13.51.101
|
|
||||||
[2019-11-14 15:05:32,282] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:05:32,282] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:07:50,654] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:07:50,654] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:20:22,329] {Thread-1} ERROR in extron_smp, line 59: Could definitely not login (as admin) with given password! 129.13.51.102
|
|
||||||
[2019-11-14 15:20:22,329] {Thread-1} ERROR in extron_smp, line 59: Could definitely not login (as admin) with given password! 129.13.51.102
|
|
||||||
[2019-11-14 15:20:24,046] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:20:24,046] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:41:08,634] {Thread-2} ERROR in simple_state_checker, line 118: FATAL: CS 10.21 Carl-Benz-Hörsaal is not in capturing state...but should be!!
|
|
||||||
[2019-11-14 15:41:08,634] {Thread-2} ERROR in simple_state_checker, line 118: FATAL: CS 10.21 Carl-Benz-Hörsaal is not in capturing state...but should be!!
|
|
||||||
[2019-11-14 15:41:23,261] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:41:23,261] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:45:18,727] {Thread-2} ERROR in simple_state_checker, line 118: FATAL: CS 10.21 Carl-Benz-Hörsaal is not in capturing state...but should be!!
|
|
||||||
[2019-11-14 15:45:18,727] {Thread-2} ERROR in simple_state_checker, line 118: FATAL: CS 10.21 Carl-Benz-Hörsaal is not in capturing state...but should be!!
|
|
||||||
[2019-11-14 15:45:33,213] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:45:33,213] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 09:00:18,601] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 09:00:18,601] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 09:02:02,915] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 09:02:02,915] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 09:03:31,225] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 09:03:31,225] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 15:56:18,121] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 15:56:18,121] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
[2019-11-12 16:13:10,529] {MainThread} INFO in simple_state_checker, line 83: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-12 16:15:41,995] {MainThread} INFO in simple_state_checker, line 121: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-12 16:15:41,998] {Thread-1} DEBUG in simple_state_checker, line 84: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-12 16:15:41,998] {Thread-2} DEBUG in simple_state_checker, line 84: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-12 16:15:41,998] {Thread-3} DEBUG in simple_state_checker, line 84: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-12 16:15:42,000] {Thread-4} DEBUG in simple_state_checker, line 84: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-12 16:15:42,001] {Thread-5} DEBUG in simple_state_checker, line 84: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-12 16:15:42,963] {Thread-3} DEBUG in simple_state_checker, line 84: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-12 16:15:42,996] {Thread-2} DEBUG in simple_state_checker, line 84: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-12 16:15:43,018] {Thread-5} DEBUG in simple_state_checker, line 84: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-12 16:15:44,138] {Thread-1} DEBUG in simple_state_checker, line 84: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-12 16:15:46,348] {Thread-3} DEBUG in simple_state_checker, line 84: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-12 16:15:46,405] {Thread-2} DEBUG in simple_state_checker, line 84: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-12 16:15:47,356] {Thread-1} DEBUG in simple_state_checker, line 84: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-12 16:15:50,079] {Thread-3} DEBUG in simple_state_checker, line 84: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-12 16:15:50,510] {Thread-2} DEBUG in simple_state_checker, line 84: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-12 16:15:50,692] {Thread-1} DEBUG in simple_state_checker, line 84: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-12 16:15:50,850] {Thread-5} DEBUG in simple_state_checker, line 84: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-12 16:15:51,893] {Thread-3} DEBUG in simple_state_checker, line 84: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-12 16:15:52,190] {Thread-3} DEBUG in simple_state_checker, line 84: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-12 16:15:52,980] {Thread-5} DEBUG in simple_state_checker, line 84: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-12 16:16:59,911] {MainThread} INFO in simple_state_checker, line 121: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-12 16:16:59,914] {Thread-1} DEBUG in simple_state_checker, line 84: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-12 16:16:59,914] {Thread-2} DEBUG in simple_state_checker, line 84: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-12 16:16:59,914] {Thread-3} DEBUG in simple_state_checker, line 84: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-12 16:16:59,915] {Thread-4} DEBUG in simple_state_checker, line 84: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-12 16:16:59,917] {Thread-5} DEBUG in simple_state_checker, line 84: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-12 16:17:00,018] {Thread-4} DEBUG in simple_state_checker, line 110: using SMP adapter
|
|
||||||
[2019-11-12 16:17:01,983] {Thread-3} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:01,983] {Thread-3} DEBUG in simple_state_checker, line 84: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-12 16:17:02,078] {Thread-5} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:02,078] {Thread-5} DEBUG in simple_state_checker, line 84: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-12 16:17:02,414] {Thread-2} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:02,414] {Thread-2} DEBUG in simple_state_checker, line 84: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-12 16:17:04,596] {Thread-3} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:04,616] {Thread-3} DEBUG in simple_state_checker, line 84: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-12 16:17:04,784] {Thread-5} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:04,789] {Thread-5} DEBUG in simple_state_checker, line 84: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-12 16:17:05,311] {Thread-2} DEBUG in simple_state_checker, line 110: using SMP adapter
|
|
||||||
[2019-11-12 16:17:05,765] {Thread-1} DEBUG in simple_state_checker, line 110: using SMP adapter
|
|
||||||
[2019-11-12 16:17:05,780] {Thread-3} DEBUG in simple_state_checker, line 110: using SMP adapter
|
|
||||||
[2019-11-12 16:17:06,242] {Thread-2} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:06,257] {Thread-2} DEBUG in simple_state_checker, line 84: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-12 16:17:06,429] {Thread-1} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:06,430] {Thread-1} DEBUG in simple_state_checker, line 84: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-12 16:17:06,631] {Thread-5} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:06,631] {Thread-5} DEBUG in simple_state_checker, line 84: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-12 16:17:06,657] {Thread-3} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:06,658] {Thread-3} DEBUG in simple_state_checker, line 84: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-12 16:17:08,598] {Thread-2} DEBUG in simple_state_checker, line 110: using SMP adapter
|
|
||||||
[2019-11-12 16:17:08,714] {Thread-1} DEBUG in simple_state_checker, line 110: using SMP adapter
|
|
||||||
[2019-11-12 16:17:09,251] {Thread-2} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:09,266] {Thread-2} DEBUG in simple_state_checker, line 84: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-12 16:17:09,386] {Thread-5} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:09,397] {Thread-5} DEBUG in simple_state_checker, line 84: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-12 16:17:09,520] {Thread-1} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:09,536] {Thread-1} DEBUG in simple_state_checker, line 84: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-12 16:17:09,795] {Thread-1} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:09,795] {Thread-1} DEBUG in simple_state_checker, line 84: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-12 16:17:10,460] {Thread-5} DEBUG in simple_state_checker, line 110: using SMP adapter
|
|
||||||
[2019-11-12 16:17:10,851] {Thread-3} INFO in simple_state_checker, line 103: 1
|
|
||||||
[2019-11-12 16:17:10,872] {Thread-3} ERROR in simple_state_checker, line 104: FATAL - recorder CS 30.46 Chemie Neuer Hoersaal must be recording!!!!
|
|
||||||
[2019-11-12 16:17:10,873] {Thread-3} DEBUG in simple_state_checker, line 84: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-12 16:17:11,002] {Thread-3} DEBUG in simple_state_checker, line 110: using SMP adapter
|
|
||||||
[2019-11-12 16:17:11,588] {Thread-5} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:11,594] {Thread-1} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:11,829] {Thread-3} INFO in simple_state_checker, line 117: OK – recorder is not recording :)
|
|
||||||
[2019-11-12 16:17:12,075] {Thread-2} DEBUG in simple_state_checker, line 110: using SMP adapter
|
|
||||||
@@ -1,620 +0,0 @@
|
|||||||
[2019-11-14 14:16:53,247] {MainThread} INFO in simple_state_checker, line 136: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 14:16:53,255] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 14:16:53,255] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 14:16:53,256] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 14:16:53,261] {Thread-4} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 14:16:53,261] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 14:16:53,386] {Thread-4} INFO in extron_smp, line 32: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 14:16:54,344] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:54,355] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 14:16:54,811] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:54,827] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 14:16:55,195] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:55,206] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 14:16:55,988] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:56,019] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 14:16:56,265] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:56,276] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 14:16:56,323] {Thread-1} INFO in simple_state_checker, line 103: CS 10.11 Hertz-Hoersaal has entry in Calender and should therfor be recording... checking now!
|
|
||||||
[2019-11-14 14:16:56,365] {Thread-1} INFO in simple_state_checker, line 107: CS 10.11 Hertz-Hoersaal is in capturing state, so there should be an entry in the calendar of the recorder, right? -> True
|
|
||||||
[2019-11-14 14:16:56,380] {Thread-1} INFO in extron_smp, line 32: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:16:57,008] {Thread-2} INFO in extron_smp, line 32: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 14:16:57,095] {Thread-5} INFO in extron_smp, line 32: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 14:16:57,272] {Thread-1} INFO in simple_state_checker, line 115: 1
|
|
||||||
[2019-11-14 14:16:57,283] {Thread-1} ERROR in simple_state_checker, line 116: FATAL - recorder CS 10.11 Hertz-Hoersaal must be recording but is not!!!!
|
|
||||||
[2019-11-14 14:16:57,321] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 14:16:57,530] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:57,541] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 14:16:57,744] {Thread-1} INFO in extron_smp, line 32: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 14:16:57,936] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:57,952] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 14:16:57,954] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:57,965] {Thread-3} INFO in extron_smp, line 32: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 14:16:57,966] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 14:16:58,634] {Thread-1} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:58,655] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 14:16:58,902] {Thread-2} INFO in extron_smp, line 32: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 14:16:58,904] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:58,904] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 14:16:59,563] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:59,579] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 14:16:59,668] {Thread-3} INFO in extron_smp, line 32: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 14:16:59,797] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:16:59,818] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 14:17:00,764] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:17:00,780] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 14:17:00,983] {Thread-3} INFO in extron_smp, line 32: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 14:17:01,618] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:17:01,670] {Thread-1} INFO in extron_smp, line 32: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 14:17:01,960] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:19:03,660] {Thread-4} CRITICAL in simple_state_checker, line 131: Exception occurred: LRC Exception: "[Errno 110] Connection timed out"
|
|
||||||
[2019-11-14 14:19:03,661] {Thread-4} ERROR in simple_state_checker, line 132: Could not check state of recorder CS 10.50 Bauingenieure Grosser Hoersaal, Address: 129.13.51.101
|
|
||||||
[2019-11-14 14:23:51,783] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:25:33,337] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:27:00,957] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:27:14,952] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:28:15,602] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:29:24,029] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:29:58,640] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:32:30,592] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:34:08,425] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:36:35,216] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:38:11,521] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:39:43,884] {MainThread} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:39:53,493] {MainThread} INFO in simple_state_checker, line 136: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 14:39:53,497] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 14:39:53,497] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 14:39:53,497] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 14:39:53,500] {Thread-4} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 14:39:53,500] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 14:39:53,619] {Thread-4} INFO in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 14:39:54,913] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:54,942] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 14:39:55,178] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:55,220] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 14:39:55,395] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:55,416] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 14:39:56,048] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:56,092] {Thread-1} INFO in simple_state_checker, line 103: CS 10.11 Hertz-Hoersaal has entry in Calender and should therfor be recording... checking now!
|
|
||||||
[2019-11-14 14:39:56,098] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 14:39:56,108] {Thread-1} INFO in simple_state_checker, line 107: CS 10.11 Hertz-Hoersaal is in capturing state, so there should be an entry in the calendar of the recorder, right? -> True
|
|
||||||
[2019-11-14 14:39:56,127] {Thread-1} INFO in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:39:56,248] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:56,269] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 14:39:56,761] {Thread-2} INFO in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 14:39:57,066] {Thread-1} INFO in simple_state_checker, line 113: OK – recorder CS 10.11 Hertz-Hoersaal is recording :)
|
|
||||||
[2019-11-14 14:39:57,087] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 14:39:57,545] {Thread-3} INFO in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 14:39:57,770] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:57,817] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 14:39:58,182] {Thread-1} INFO in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 14:39:58,362] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:58,378] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 14:39:58,425] {Thread-2} INFO in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 14:39:58,599] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:58,610] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 14:39:58,950] {Thread-1} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:58,951] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 14:39:59,487] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:59,513] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 14:39:59,604] {Thread-3} INFO in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 14:39:59,908] {Thread-5} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:39:59,918] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 14:40:00,356] {Thread-2} INFO in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 14:40:00,436] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:40:00,451] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 14:40:01,582] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:40:01,608] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 14:40:01,789] {Thread-2} INFO in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 14:40:02,326] {Thread-1} INFO in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 14:40:02,497] {Thread-3} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:40:02,648] {Thread-2} INFO in simple_state_checker, line 129: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:57:02,691] {MainThread} INFO in simple_state_checker, line 132: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 14:57:50,259] {MainThread} INFO in simple_state_checker, line 132: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 14:57:50,261] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 14:57:51,265] {Thread-1} INFO in simple_state_checker, line 103: CS 10.11 Hertz-Hoersaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 14:57:51,266] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 14:57:52,257] {Thread-1} INFO in simple_state_checker, line 109: OK – recorder CS 10.11 Hertz-Hoersaal is recording :)
|
|
||||||
[2019-11-14 14:57:52,259] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 14:57:53,279] {Thread-3} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:57:53,279] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 14:57:53,873] {Thread-5} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 14:57:53,873] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 14:57:53,892] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 15:02:35,956] {MainThread} INFO in simple_state_checker, line 132: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 15:02:35,961] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 15:02:35,961] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 15:02:35,961] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 15:02:35,962] {Thread-4} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 15:02:35,966] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 15:02:36,101] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 15:02:36,867] {Thread-5} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:36,878] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 15:02:37,586] {Thread-3} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:37,616] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 15:02:38,200] {Thread-2} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:38,232] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 15:02:38,487] {Thread-5} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:38,503] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 15:02:38,698] {Thread-3} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:38,710] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 15:02:38,856] {Thread-1} INFO in simple_state_checker, line 103: CS 10.11 Hertz-Hoersaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:02:38,908] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 15:02:39,323] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 15:02:39,609] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 15:02:39,673] {Thread-1} INFO in simple_state_checker, line 109: OK – recorder CS 10.11 Hertz-Hoersaal is recording :)
|
|
||||||
[2019-11-14 15:02:39,693] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 15:02:40,001] {Thread-3} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:40,011] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 15:02:40,115] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 15:02:40,400] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 15:02:40,409] {Thread-5} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:40,410] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 15:02:40,604] {Thread-2} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:40,621] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 15:02:40,828] {Thread-1} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:40,828] {Thread-1} DEBUG in simple_state_checker, line 99: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 15:02:41,529] {Thread-3} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:41,549] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 15:02:41,621] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 15:02:41,849] {Thread-5} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:41,850] {Thread-5} DEBUG in simple_state_checker, line 99: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 15:02:42,655] {Thread-2} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:42,687] {Thread-2} DEBUG in simple_state_checker, line 99: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 15:02:43,620] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 15:02:44,782] {Thread-3} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:44,876] {Thread-3} DEBUG in simple_state_checker, line 99: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 15:02:45,342] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 15:02:45,550] {Thread-2} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:02:45,716] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 15:02:46,265] {Thread-3} INFO in simple_state_checker, line 125: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:15,774] {MainThread} INFO in simple_state_checker, line 133: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 15:05:15,776] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 15:05:15,776] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 15:05:15,778] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 15:05:15,778] {Thread-4} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 15:05:15,780] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 15:05:15,840] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 15:05:17,298] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:17,314] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 15:05:17,677] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:17,694] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 15:05:17,842] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:17,853] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 15:05:18,841] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:18,887] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 15:05:19,101] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:19,137] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 15:05:19,149] {Thread-1} INFO in simple_state_checker, line 104: CS 10.11 Hertz-Hoersaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:05:19,210] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 15:05:19,575] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 15:05:19,886] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 15:05:20,281] {Thread-1} INFO in simple_state_checker, line 110: OK – recorder CS 10.11 Hertz-Hoersaal is recording :)
|
|
||||||
[2019-11-14 15:05:20,282] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 15:05:20,333] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:20,333] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 15:05:20,383] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:20,383] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 15:05:20,616] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:20,632] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 15:05:21,026] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 15:05:21,456] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 15:05:21,827] {Thread-1} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:21,848] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 15:05:22,128] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 15:05:22,566] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:22,567] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 15:05:22,813] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:22,819] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 15:05:23,169] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:23,205] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 15:05:23,731] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 15:05:24,776] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 15:05:24,963] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:24,963] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 15:05:25,042] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:25,131] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 15:05:25,828] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:05:32,282] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:07:35,727] {MainThread} INFO in simple_state_checker, line 133: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 15:07:35,729] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 15:07:35,729] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 15:07:35,729] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 15:07:35,730] {Thread-4} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 15:07:35,730] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 15:07:35,863] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 15:07:37,438] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:37,453] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 15:07:37,481] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:37,497] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 15:07:37,744] {Thread-1} INFO in simple_state_checker, line 104: CS 10.11 Hertz-Hoersaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:07:37,760] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 15:07:37,996] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:38,011] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 15:07:38,259] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:38,259] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 15:07:38,503] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:38,519] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 15:07:38,612] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 15:07:38,612] {Thread-1} INFO in simple_state_checker, line 110: OK – recorder CS 10.11 Hertz-Hoersaal is recording :)
|
|
||||||
[2019-11-14 15:07:38,633] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 15:07:38,813] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 15:07:39,478] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:39,504] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 15:07:39,592] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 15:07:39,602] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:39,625] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 15:07:39,837] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:39,871] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 15:07:39,886] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 15:07:40,494] {Thread-1} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:40,520] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 15:07:40,903] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 15:07:41,107] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:41,108] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 15:07:41,186] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:41,186] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 15:07:41,731] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:41,747] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 15:07:41,869] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 15:07:42,952] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:42,973] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 15:07:43,268] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 15:07:44,224] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:44,634] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 15:07:44,636] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:07:50,654] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:07:50,706] {MainThread} INFO in simple_state_checker, line 147: DONE checking capture agents / recorders!
|
|
||||||
[2019-11-14 15:20:07,570] {MainThread} INFO in simple_state_checker, line 133: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 15:20:07,572] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 15:20:07,572] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 15:20:07,572] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 15:20:07,575] {Thread-4} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 15:20:07,576] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 15:20:07,702] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 15:20:09,335] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:09,341] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 15:20:09,527] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:09,543] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 15:20:10,343] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:10,375] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 15:20:11,090] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:11,106] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 15:20:11,158] {Thread-1} INFO in simple_state_checker, line 104: CS 10.11 Hertz-Hoersaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:20:11,164] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 15:20:11,194] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:11,215] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 15:20:11,464] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 15:20:11,990] {Thread-1} INFO in simple_state_checker, line 110: OK – recorder CS 10.11 Hertz-Hoersaal is recording :)
|
|
||||||
[2019-11-14 15:20:12,017] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 15:20:12,028] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 15:20:12,376] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:12,387] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 15:20:12,399] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 15:20:12,400] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:12,401] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 15:20:12,906] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:12,922] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 15:20:13,086] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 15:20:13,264] {Thread-1} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:13,264] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 15:20:13,943] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 15:20:13,999] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:13,999] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 15:20:14,191] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:14,192] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 15:20:14,849] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:14,938] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 15:20:16,840] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 15:20:18,101] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:18,112] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 15:20:18,197] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 15:20:18,231] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:18,279] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 15:20:18,965] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:20:20,327] {Thread-1} WARNING in extron_smp, line 52: Could not login (as admin) with given password! 129.13.51.102
|
|
||||||
[2019-11-14 15:20:22,329] {Thread-1} ERROR in extron_smp, line 59: Could definitely not login (as admin) with given password! 129.13.51.102
|
|
||||||
[2019-11-14 15:20:24,046] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:20:24,118] {MainThread} INFO in simple_state_checker, line 147: DONE checking capture agents / recorders!
|
|
||||||
[2019-11-14 15:41:07,178] {MainThread} INFO in simple_state_checker, line 133: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 15:41:07,180] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 15:41:07,180] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 15:41:07,180] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 15:41:07,180] {Thread-4} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 15:41:07,180] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 15:41:07,312] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 15:41:08,619] {Thread-2} INFO in simple_state_checker, line 104: CS 10.21 Carl-Benz-Hörsaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:41:08,634] {Thread-2} ERROR in simple_state_checker, line 118: FATAL: CS 10.21 Carl-Benz-Hörsaal is not in capturing state...but should be!!
|
|
||||||
[2019-11-14 15:41:08,640] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 15:41:08,822] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:08,864] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 15:41:08,864] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:08,919] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 15:41:10,309] {Thread-1} INFO in simple_state_checker, line 104: CS 10.11 Hertz-Hoersaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:41:10,319] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 15:41:10,595] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:10,610] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 15:41:10,683] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:10,706] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 15:41:10,708] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 15:41:11,243] {Thread-1} INFO in simple_state_checker, line 110: OK – recorder CS 10.11 Hertz-Hoersaal is recording :)
|
|
||||||
[2019-11-14 15:41:11,253] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 15:41:11,261] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 15:41:11,594] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:11,594] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 15:41:11,606] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 15:41:11,624] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:11,624] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 15:41:12,061] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:12,092] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 15:41:12,311] {Thread-1} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:12,327] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 15:41:12,600] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 15:41:13,130] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 15:41:13,666] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:13,677] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 15:41:13,757] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:13,777] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 15:41:14,070] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:14,096] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 15:41:15,923] {Thread-1} INFO in simple_state_checker, line 104: CS 30.95 Forum Hoersaal Audimax has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:41:15,944] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 15:41:16,093] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 15:41:16,804] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:16,805] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 15:41:16,964] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 15:41:17,043] {Thread-1} INFO in simple_state_checker, line 110: OK – recorder CS 30.95 Forum Hoersaal Audimax is recording :)
|
|
||||||
[2019-11-14 15:41:17,168] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:17,905] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:41:23,261] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:41:23,280] {MainThread} INFO in simple_state_checker, line 147: DONE checking capture agents / recorders!
|
|
||||||
[2019-11-14 15:45:17,132] {MainThread} INFO in simple_state_checker, line 133: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-14 15:45:17,136] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-14 15:45:17,136] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-14 15:45:17,136] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-14 15:45:17,138] {Thread-4} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-14 15:45:17,140] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-14 15:45:17,246] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-14 15:45:18,711] {Thread-2} INFO in simple_state_checker, line 104: CS 10.21 Carl-Benz-Hörsaal has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:45:18,727] {Thread-2} ERROR in simple_state_checker, line 118: FATAL: CS 10.21 Carl-Benz-Hörsaal is not in capturing state...but should be!!
|
|
||||||
[2019-11-14 15:45:18,763] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-14 15:45:18,861] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:18,872] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-14 15:45:18,931] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:18,941] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-14 15:45:19,971] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-14 15:45:20,433] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:20,448] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-14 15:45:20,537] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:20,547] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-14 15:45:20,571] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-14 15:45:21,177] {Thread-1} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:21,197] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-14 15:45:21,408] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-14 15:45:21,543] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:21,564] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-14 15:45:22,149] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:22,165] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-14 15:45:22,247] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-14 15:45:22,247] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:22,268] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-14 15:45:22,378] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-14 15:45:22,958] {Thread-1} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:22,978] {Thread-1} DEBUG in simple_state_checker, line 100: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-14 15:45:23,300] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-14 15:45:23,351] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:23,351] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-14 15:45:23,400] {Thread-5} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:23,400] {Thread-5} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-14 15:45:24,216] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-14 15:45:24,306] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:24,337] {Thread-2} DEBUG in simple_state_checker, line 100: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-14 15:45:25,245] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:25,266] {Thread-3} DEBUG in simple_state_checker, line 100: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-14 15:45:25,600] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-14 15:45:26,328] {Thread-3} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:26,923] {Thread-1} INFO in simple_state_checker, line 104: CS 30.95 Forum Hoersaal Audimax has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-14 15:45:26,923] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-14 15:45:27,178] {Thread-2} INFO in simple_state_checker, line 126: OK – recorder is not recording :)
|
|
||||||
[2019-11-14 15:45:27,986] {Thread-1} INFO in simple_state_checker, line 110: OK – recorder CS 30.95 Forum Hoersaal Audimax is recording :)
|
|
||||||
[2019-11-14 15:45:33,213] {MainThread} ERROR in simple_state_checker, line 145: Timeout while getting capture agent state!
|
|
||||||
[2019-11-14 15:45:33,239] {MainThread} INFO in simple_state_checker, line 147: DONE checking capture agents / recorders!
|
|
||||||
[2019-11-15 09:00:02,960] {MainThread} INFO in simple_state_checker, line 139: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-15 09:00:02,962] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-15 09:00:02,962] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-15 09:00:02,963] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-15 09:00:02,963] {Thread-4} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-15 09:00:02,963] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-15 09:00:03,163] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-15 09:00:04,443] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:04,454] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-15 09:00:04,925] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:04,941] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-15 09:00:05,486] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:05,507] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-15 09:00:05,732] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:05,753] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-15 09:00:05,807] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-15 09:00:06,018] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:06,028] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-15 09:00:06,443] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-15 09:00:06,557] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:06,583] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-15 09:00:06,654] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-15 09:00:07,016] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-15 09:00:07,028] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:07,028] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-15 09:00:07,313] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:07,333] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-15 09:00:07,435] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-15 09:00:07,681] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:07,696] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-15 09:00:07,847] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:07,848] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-15 09:00:08,514] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:08,514] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-15 09:00:08,955] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:08,970] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-15 09:00:09,158] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-15 09:00:09,479] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-15 09:00:10,422] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:10,443] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-15 09:00:10,679] {Thread-1} INFO in simple_state_checker, line 110: CS 30.95 Forum Hoersaal Audimax has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-15 09:00:10,679] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-15 09:00:10,756] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:10,757] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-15 09:00:10,870] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-15 09:00:11,648] {Thread-1} INFO in simple_state_checker, line 116: OK – recorder CS 30.95 Forum Hoersaal Audimax is recording :)
|
|
||||||
[2019-11-15 09:00:11,726] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:11,959] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:00:18,601] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 09:00:18,945] {MainThread} INFO in simple_state_checker, line 153: DONE checking capture agents / recorders!
|
|
||||||
[2019-11-15 09:01:48,428] {MainThread} INFO in simple_state_checker, line 139: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-15 09:01:48,431] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-15 09:01:48,431] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-15 09:01:48,431] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-15 09:01:48,432] {Thread-4} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-15 09:01:48,432] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-15 09:01:48,538] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-15 09:01:49,684] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:49,690] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:49,705] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-15 09:01:49,716] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-15 09:01:50,134] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-15 09:01:50,252] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:50,268] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-15 09:01:50,800] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:50,806] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-15 09:01:50,914] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-15 09:01:50,915] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:50,915] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-15 09:01:51,069] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:51,080] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-15 09:01:51,673] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:51,720] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-15 09:01:51,726] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-15 09:01:51,893] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-15 09:01:52,152] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-15 09:01:52,231] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:52,232] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-15 09:01:52,598] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:52,618] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:52,623] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-15 09:01:52,637] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-15 09:01:52,956] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:52,956] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-15 09:01:53,679] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:53,721] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-15 09:01:54,025] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-15 09:01:54,184] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-15 09:01:54,998] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:55,019] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-15 09:01:55,087] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:55,108] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-15 09:01:55,254] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-15 09:01:55,445] {Thread-3} INFO in simple_state_checker, line 110: CS 30.95 Forum Hoersaal Audimax has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-15 09:01:55,445] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-15 09:01:55,943] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:01:56,200] {Thread-3} INFO in simple_state_checker, line 116: OK – recorder CS 30.95 Forum Hoersaal Audimax is recording :)
|
|
||||||
[2019-11-15 09:01:56,274] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:02:02,915] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 09:02:03,114] {MainThread} INFO in simple_state_checker, line 153: DONE checking capture agents / recorders!
|
|
||||||
[2019-11-15 09:03:16,872] {MainThread} INFO in simple_state_checker, line 139: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-15 09:03:16,875] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-15 09:03:16,875] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-15 09:03:16,875] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-15 09:03:16,875] {Thread-4} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-15 09:03:16,875] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-15 09:03:16,991] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-15 09:03:17,901] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:17,917] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:17,917] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-15 09:03:17,933] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-15 09:03:18,497] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-15 09:03:18,639] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:18,655] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-15 09:03:19,037] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:19,047] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-15 09:03:19,189] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:19,210] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-15 09:03:19,310] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:19,329] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-15 09:03:19,329] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-15 09:03:19,638] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-15 09:03:20,151] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-15 09:03:20,331] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:20,331] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-15 09:03:20,462] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:20,462] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-15 09:03:20,494] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:20,510] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-15 09:03:20,633] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-15 09:03:21,032] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:21,053] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-15 09:03:21,466] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-15 09:03:21,730] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:21,731] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-15 09:03:22,061] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:22,072] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-15 09:03:22,445] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:22,492] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-15 09:03:23,370] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-15 09:03:24,285] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:24,306] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-15 09:03:24,454] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-15 09:03:24,681] {Thread-3} INFO in simple_state_checker, line 110: CS 30.95 Forum Hoersaal Audimax has entry in Calender and should therefore be recording... checking now!
|
|
||||||
[2019-11-15 09:03:24,682] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-15 09:03:24,682] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:25,308] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 09:03:25,616] {Thread-3} INFO in simple_state_checker, line 116: OK – recorder CS 30.95 Forum Hoersaal Audimax is recording :)
|
|
||||||
[2019-11-15 09:03:31,225] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 09:03:31,461] {MainThread} INFO in simple_state_checker, line 153: DONE checking capture agents / recorders!
|
|
||||||
[2019-11-15 15:56:02,776] {MainThread} INFO in simple_state_checker, line 139: Got 19 capture agents that will be checked...
|
|
||||||
[2019-11-15 15:56:02,783] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.11 Hertz-Hoersaal
|
|
||||||
[2019-11-15 15:56:02,783] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Carl-Benz-Hörsaal
|
|
||||||
[2019-11-15 15:56:02,784] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.21 Gottlieb-Daimler-Hörsaal
|
|
||||||
[2019-11-15 15:56:02,787] {Thread-4} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure Grosser Hoersaal
|
|
||||||
[2019-11-15 15:56:02,787] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.50 Bauingenieure, Kleiner Hörsaal
|
|
||||||
[2019-11-15 15:56:02,903] {Thread-4} DEBUG in extron_smp, line 34: Connecting to 129.13.51.101 ...
|
|
||||||
[2019-11-15 15:56:04,320] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:04,331] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Grashof-Hörsaal
|
|
||||||
[2019-11-15 15:56:04,366] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:04,377] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 10.91 Redtenbacher-Hörsaal
|
|
||||||
[2019-11-15 15:56:04,654] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:04,741] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 11.40 Johann-Gottfried-Tulla-Hoersaal
|
|
||||||
[2019-11-15 15:56:04,779] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.109 ...
|
|
||||||
[2019-11-15 15:56:05,377] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:05,388] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.10 Nachrichtentechnik-Hoersaal NTI
|
|
||||||
[2019-11-15 15:56:05,479] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:05,492] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.21 Gerthsen-Hörsaal
|
|
||||||
[2019-11-15 15:56:05,698] {Thread-2} DEBUG in extron_smp, line 34: Connecting to 129.13.51.106 ...
|
|
||||||
[2019-11-15 15:56:06,048] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:06,105] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Gaede-Hoersaal
|
|
||||||
[2019-11-15 15:56:06,320] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.104 ...
|
|
||||||
[2019-11-15 15:56:06,752] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.108 ...
|
|
||||||
[2019-11-15 15:56:06,834] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:06,834] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.22 Otto-Lehmann-Hoersaal - Mittl. HS
|
|
||||||
[2019-11-15 15:56:06,844] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:06,845] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.41 Chemie-Hörsaal Nr.3
|
|
||||||
[2019-11-15 15:56:07,320] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:07,336] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.46 Chemie Neuer Hoersaal
|
|
||||||
[2019-11-15 15:56:07,555] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.107 ...
|
|
||||||
[2019-11-15 15:56:07,567] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:07,568] {Thread-1} DEBUG in simple_state_checker, line 106: Checking Agent CS 30.95 Forum Hoersaal Audimax
|
|
||||||
[2019-11-15 15:56:08,323] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:08,324] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent CS 40.50 EBI Hoersaal
|
|
||||||
[2019-11-15 15:56:08,638] {Thread-2} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:08,655] {Thread-2} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.24 Hörsaal-101
|
|
||||||
[2019-11-15 15:56:08,687] {Thread-3} DEBUG in extron_smp, line 34: Connecting to 129.13.51.103 ...
|
|
||||||
[2019-11-15 15:56:09,544] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.105 ...
|
|
||||||
[2019-11-15 15:56:09,757] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:09,773] {Thread-3} DEBUG in simple_state_checker, line 106: Checking Agent CS 50.35 Fasansengarten-Hörsaal (Hs a.F.)
|
|
||||||
[2019-11-15 15:56:10,425] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:10,441] {Thread-5} DEBUG in simple_state_checker, line 106: Checking Agent Campus Ost 70.04 SR219
|
|
||||||
[2019-11-15 15:56:10,740] {Thread-5} DEBUG in extron_smp, line 34: Connecting to 129.13.51.110 ...
|
|
||||||
[2019-11-15 15:56:11,549] {Thread-5} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:11,664] {Thread-1} DEBUG in extron_smp, line 34: Connecting to 129.13.51.102 ...
|
|
||||||
[2019-11-15 15:56:12,063] {Thread-3} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:12,450] {Thread-1} INFO in simple_state_checker, line 132: OK – recorder is not recording :)
|
|
||||||
[2019-11-15 15:56:18,121] {MainThread} ERROR in simple_state_checker, line 151: Timeout while getting capture agent state!
|
|
||||||
[2019-11-15 15:56:18,512] {MainThread} INFO in simple_state_checker, line 153: DONE checking capture agents / recorders!
|
|
||||||
1978
poetry.lock
generated
1978
poetry.lock
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user