Etwas aufgeräumt und vereinfacht

This commit is contained in:
Reik Kaps 2020-06-18 18:45:11 +02:00
parent c19d102648
commit c0e8299d34
1 changed files with 47 additions and 62 deletions

View File

@ -4,20 +4,12 @@
import re import re
import sys import sys
import threading import threading
import time
from time import sleep from time import sleep
from os.path import basename from os.path import basename
from datetime import datetime from datetime import datetime
from argparse import ArgumentParser from argparse import ArgumentParser
from http.server import BaseHTTPRequestHandler, HTTPServer from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib.parse import urlparse
try:
from pygtail import Pygtail
except ImportError as e:
print('[Error] Please install pygtail via pip! {}'.format(e))
sys.exit(1)
try: try:
from sh import tail from sh import tail
@ -27,6 +19,32 @@ except ImportError as e:
sys.exit(1) sys.exit(1)
# active room dictionary
roomList = {}
# @see https://regex101.com/r/R1B1OL/1
regex = r"(Jicofo)\s(\d+-\d+-\d+)\s(\d+\:\d+\:\d+\.\d+)\s(\w+):\s\[(\d+)\]\s(.*)\(\)\s(.*)"
prog = re.compile(regex)
##
# new jitsi room
room_regex = r"(^Joining\sthe\sroom):(.*)"
room = re.compile(room_regex)
# disposed room
disposed_regex = r"^Disposed\sconference\sfor\sroom\:\s(.*)@(.*)\sconference\scount:\s(\d+)"
disposed = re.compile(disposed_regex)
##
# get the room owner
owner_regex = r"Granted\sowner\sto\s([a-z0-9-]+)\@(.*)\/(.*)"
owner = re.compile(owner_regex)
# get member for room
member_regex = r"^Member\s(.*)@(.*)\/(.*)\sjoined."
member = re.compile(member_regex)
class MeetingRoom(): class MeetingRoom():
""" """
represent a Jitsi Meetingroom represent a Jitsi Meetingroom
@ -74,23 +92,22 @@ class logThread(threading.Thread):
class MyServer(BaseHTTPRequestHandler): class MyServer(BaseHTTPRequestHandler):
def do_GET(self): def do_GET(self):
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write(bytes("<html><head><title>Jitsi Stats</title></head>", "utf-8"))
self.wfile.write(bytes("<p>Request: %s</p>" % self.path, "utf-8"))
self.wfile.write(bytes("<body>", "utf-8"))
self.wfile.write(bytes("<p>This is an example web server.</p>", "utf-8"))
if basename(self.path) in roomList: if basename(self.path) in roomList:
self.wfile.write(bytes("<p>"+basename(self.path)+": "+str(roomList[basename(self.path)].ctime)+"</p>", "utf-8")) self.send_response(200)
self.wfile.write(bytes("<p> Participants: "+str(len(roomList[basename(self.path)].members))+"</p>", "utf-8")) self.send_header("Content-type", "text/plain")
self.end_headers()
response_string = bytes(basename(self.path)
+ '|'
+ str(roomList[basename(self.path)].ctime)
+ '|'
+ str(len(roomList[basename(self.path)].members))
+ '|', "utf-8")
self.wfile.write(response_string)
else: else:
for key, value in roomList.items(): self.send_response(404)
link = '<p><a href="{}">{}</a></p>'.format(value.jid, key) self.send_header("Content-type", "text/plain")
self.wfile.write(bytes(link, "utf-8")) self.end_headers()
self.wfile.write(bytes("</body></html>", "utf-8"))
def getRoomName(jid): def getRoomName(jid):
@ -101,36 +118,6 @@ def mkDatetime(str_date, str_time):
return datetime.fromisoformat('{} {}'.format(str_date, str_time)) return datetime.fromisoformat('{} {}'.format(str_date, str_time))
# active room dictionary
roomList = {}
testList = {
'test': 'Nichts wichtiges',
'lounge': 'lounge@meet.leinelab.de'
}
# @see https://regex101.com/r/R1B1OL/1
regex = r"(Jicofo)\s(\d+-\d+-\d+)\s(\d+\:\d+\:\d+\.\d+)\s(\w+):\s\[(\d+)\]\s(.*)\(\)\s(.*)"
prog = re.compile(regex)
##
# new jitsi room
room_regex = r"(^Joining\sthe\sroom):(.*)"
room = re.compile(room_regex)
# disposed room
disposed_regex = r"^Disposed\sconference\sfor\sroom\:\s(.*)@(.*)\sconference\scount:\s(\d+)"
disposed = re.compile(disposed_regex)
##
# get the room owner
owner_regex = r"Granted\sowner\sto\s([a-z0-9-]+)\@(.*)\/(.*)"
owner = re.compile(owner_regex)
# get member for room
member_regex = r"^Member\s(.*)@(.*)\/(.*)\sjoined."
member = re.compile(member_regex)
def process_line(line): def process_line(line):
""" """
process a logfile line, using global object and vars process a logfile line, using global object and vars
@ -187,15 +174,19 @@ def getLogMsg(logfile):
for line in tail("-f", logfile, _iter=True): for line in tail("-f", logfile, _iter=True):
process_line(line) process_line(line)
if __name__ == '__main__': if __name__ == '__main__':
# start cmdline processing # start cmdline processing
parser = ArgumentParser(description='Jitsi Meet Conference Stats') parser = ArgumentParser(description='Jitsi Meet Conference Stats')
parser.add_argument('--log', '-l', parser.add_argument('--log', '-l',
help='full path to jicofo logfile eg. /var/log/jitsi/jicofo.log') help='full path to jicofo logfile eg.' +
' /var/log/jitsi/jicofo.log')
parser.add_argument('--verbose', '-v', parser.add_argument('--verbose', '-v',
help='be verbose eg. for debugging', action='store_true') help='be verbose eg. for debugging',
action='store_true')
parser.add_argument('--logwatch', '-w', parser.add_argument('--logwatch', '-w',
help='run as logwatch module, dont start the webserver and only run once') help='run as logwatch module, ' +
' dont start the webserver and only run once')
args = parser.parse_args() args = parser.parse_args()
@ -215,9 +206,3 @@ if __name__ == '__main__':
webServer.serve_forever() webServer.serve_forever()
except: except:
pass pass
# for key in roomList:
# print('Room : {}'.format(roomList[key].jid))
# print(' Created: {}'.format(roomList[key].ctime))
# print(' Owner : {}'.format(roomList[key].getOwner()))
# print(' Members: {}'.format(roomList[key].getMembers()))