diff --git a/SysLogServer.py b/SysLogServer.py index b7ccc87..aac10c2 100644 --- a/SysLogServer.py +++ b/SysLogServer.py @@ -8,57 +8,53 @@ HOST, PORT = "0.0.0.0", 514 OracleUser = '' OraclePasswd = '' OracleServerSid = "localhost/orclpdb1" - -# -# NO USER SERVICEABLE PARTS BELOW HERE... # import sys import cx_Oracle -import config -import SocketServer +import socketserver import json +import threading -connection = cx_Oracle.connect(OracleUser, OraclePasswd, OracleServerSid) - +connection = cx_Oracle.connect(OracleUser, OraclePasswd, OracleServerSid, threaded = True) cursor = connection.cursor() def insert_logging(IP,PRIO,STAMP,HOST,APP,PID,MESS): - """ - Insert a row to the SYSLOG table - :param IP: + """ + Insert a row to the SYSLOG table + :param IP: :param APP: - :param STAMP: - :param HOST: - :param PID: + :param STAMP: + :param HOST: + :param PID: :param PRIO: - :param MESS: - :return: - """ - sql = ('insert into SYSLOG(REMOTEIP,APPNAME,ZEIT,HOSTNAME,PID,PRIORITY,MESSAGE) ' - 'values(:IP,:APP,:STAMP,:HOST,:PID,:PRIO,:MESS)') - - try: - cursor.execute(sql, [IP, APP, STAMP, HOST, PRIO, PID, MESS]) - connection.commit() - except cx_Oracle.Error as error: - print('Error occurred:') - print(error) + :param MESS: + :return: + """ + # construct an insert statement that add a new row to the billing_headers table + sql = ('insert into SYSLOG(REMOTEIP,APPNAME,ZEIT,HOSTNAME,PID,PRIORITY,MESSAGE) values (:IP,:APP,:STAMP,:HOST,:PID,:PRIO,:MESS)') + try: + cursor.execute(sql, [IP, APP, STAMP, HOST, PRIO, PID, MESS]) + connection.commit() + except cx_Oracle.Error as error: + print('Error occurred:') + print(error) -class SyslogUDPHandler(SocketServer.BaseRequestHandler): - +class SyslogUDPHandler(socketserver.BaseRequestHandler): def handle(self): data = bytes.decode(self.request[0].strip()) socket = self.request[1] - print( "%s : " % self.client_address[0], str(data)) fields = json.loads(str(data)) insert_logging("%s" % self.client_address[0],fields["PRIO"].strip(),fields["TIME"],fields["HOST"],fields["APP"],fields["PID"].strip(),fields["MSG"]) + print("Recieved one request from {}".format(self.client_address[0])) + print("Thread Name:{}".format(threading.current_thread().name)) + if __name__ == "__main__": try: - server = SocketServer.UDPServer((HOST,PORT), SyslogUDPHandler) - server.serve_forever(poll_interval=0.5) + server = socketserver.ThreadingUDPServer((HOST,PORT), SyslogUDPHandler) + server.serve_forever() except (IOError, SystemExit): raise except KeyboardInterrupt: