mirror of
https://github.com/Pardus-LiderAhenk/ahenk
synced 2024-11-22 09:42:15 +03:00
handling events with parameters while running main ahenk process.Sending login-logout messages according to handled events
This commit is contained in:
parent
91b752d97e
commit
104530c62b
2 changed files with 98 additions and 43 deletions
131
opt/ahenk/ahenkd.py
Normal file → Executable file
131
opt/ahenk/ahenkd.py
Normal file → Executable file
|
@ -16,18 +16,20 @@ from base.event.EventManager import EventManager
|
|||
from base.plugin.PluginManager import PluginManager
|
||||
from base.task.TaskManager import TaskManager
|
||||
from base.database.AhenkDbService import AhenkDbService
|
||||
import threading,time,sys
|
||||
import threading, time, sys, os, signal, configparser
|
||||
|
||||
pidfilePath = '/var/run/ahenk.pid'
|
||||
|
||||
class AhenkDeamon(BaseDaemon):
|
||||
"""docstring for AhenkDeamon"""
|
||||
|
||||
|
||||
def reload(self,msg):
|
||||
# reload service here
|
||||
pass
|
||||
|
||||
def run(self):
|
||||
print ("Ahenk running...")
|
||||
print('Ahenk running...')
|
||||
|
||||
globalscope = Scope()
|
||||
globalscope.setInstance(globalscope)
|
||||
|
@ -42,47 +44,47 @@ class AhenkDeamon(BaseDaemon):
|
|||
|
||||
# Logger must be second
|
||||
logger = Logger()
|
||||
logger.info("[AhenkDeamon] Log was set")
|
||||
logger.info('[AhenkDeamon] Log was set')
|
||||
globalscope.setLogger(logger)
|
||||
|
||||
eventManager = EventManager()
|
||||
globalscope.setEventManager(eventManager)
|
||||
logger.info("[AhenkDeamon] Event Manager was set")
|
||||
logger.info('[AhenkDeamon] Event Manager was set')
|
||||
|
||||
db_service=AhenkDbService()
|
||||
db_service.connect()
|
||||
db_service.initialize_table()
|
||||
globalscope.setDbService(db_service)
|
||||
logger.info("[AhenkDeamon] Data Base Service was set")
|
||||
logger.info('[AhenkDeamon] Data Base Service was set')
|
||||
|
||||
messageManager = Messaging()
|
||||
globalscope.setMessageManager(messageManager)
|
||||
logger.info("[AhenkDeamon] Message Manager was set")
|
||||
logger.info('[AhenkDeamon] Message Manager was set')
|
||||
|
||||
pluginManager = PluginManager()
|
||||
pluginManager.loadPlugins()
|
||||
globalscope.setPluginManager(pluginManager)
|
||||
logger.info("[AhenkDeamon] Plugin Manager was set")
|
||||
logger.info('[AhenkDeamon] Plugin Manager was set')
|
||||
|
||||
taskManger = TaskManager()
|
||||
globalscope.setTaskManager(taskManger)
|
||||
logger.info("[AhenkDeamon] Task Manager was set")
|
||||
taskManager = TaskManager()
|
||||
globalscope.setTaskManager(taskManager)
|
||||
logger.info('[AhenkDeamon] Task Manager was set')
|
||||
|
||||
registration=Registration()
|
||||
globalscope.setRegistration(registration)
|
||||
logger.info("[AhenkDeamon] Registration was set")
|
||||
logger.info('[AhenkDeamon] Registration was set')
|
||||
|
||||
execution_manager=ExecutionManager()
|
||||
globalscope.setExecutionManager(execution_manager)
|
||||
logger.info("[AhenkDeamon] Execution Manager was set")
|
||||
logger.info('[AhenkDeamon] Execution Manager was set')
|
||||
|
||||
|
||||
#TODO restrict number of attemption
|
||||
while registration.is_registered() is False:
|
||||
logger.debug("[AhenkDeamon] Attempting to register")
|
||||
logger.debug('[AhenkDeamon] Attempting to register')
|
||||
registration.registration_request()
|
||||
|
||||
logger.info("[AhenkDeamon] Ahenk is registered")
|
||||
logger.info('[AhenkDeamon] Ahenk is registered')
|
||||
|
||||
messager = Messager()
|
||||
messanger_thread = threading.Thread(target=messager.connect_to_server)
|
||||
|
@ -92,27 +94,37 @@ class AhenkDeamon(BaseDaemon):
|
|||
time.sleep(1)
|
||||
|
||||
globalscope.setMessager(messager)
|
||||
logger.info("[AhenkDeamon] Messager was set")
|
||||
logger.info('[AhenkDeamon] Messager was set')
|
||||
|
||||
if registration.is_ldap_registered() is False:
|
||||
logger.debug("[AhenkDeamon] Attempting to registering ldap")
|
||||
logger.debug('[AhenkDeamon] Attempting to registering ldap')
|
||||
registration.ldap_registration_request() #TODO work on message
|
||||
|
||||
logger.info("[AhenkDeamon] LDAP registration of Ahenk is completed")
|
||||
logger.info('[AhenkDeamon] LDAP registration of Ahenk is completed')
|
||||
|
||||
#TODO###############
|
||||
cnfg = configparser.ConfigParser()
|
||||
cnfg.add_section('PID')
|
||||
cnfg.set('PID','pid_number',str(os.getpid()))
|
||||
|
||||
#login
|
||||
logger.info("[AhenkDeamon] Logining...")
|
||||
messager.send_direct_message(messageManager.login_msg())
|
||||
with open(pidfilePath, 'w') as config_file:
|
||||
cnfg.write(config_file)
|
||||
#TODO##############
|
||||
|
||||
try:
|
||||
signal.signal(signal.SIGALRM, self.signal_handler)
|
||||
logger.info('[AhenkDeamon] Signal handler is set up')
|
||||
except Exception as e:
|
||||
logger.error('[AhenkDeamon] Signal handler could not set up :'+e.errno+'-'+e.strerror)
|
||||
|
||||
#messager.send_direct_message('test')
|
||||
|
||||
while True:
|
||||
time.sleep(1)
|
||||
|
||||
#request policies
|
||||
logger.info("[AhenkDeamon] Requesting policies...")
|
||||
messager.send_direct_message(messageManager.policy_request_msg())
|
||||
|
||||
#logout
|
||||
#logger.info("[AhenkDeamon] Logouting...")
|
||||
#messager.send_direct_message(messageManager.logout_msg())
|
||||
|
||||
#logger.info('[AhenkDeamon] Requesting policies...')
|
||||
#messager.send_direct_message(messageManager.policy_request_msg())
|
||||
|
||||
"""
|
||||
this is must be created after message services
|
||||
|
@ -123,31 +135,74 @@ class AhenkDeamon(BaseDaemon):
|
|||
globalscope.setResponseQueue(responseQueue)
|
||||
"""
|
||||
|
||||
def signal_handler (self, num, stack):
|
||||
|
||||
#TODO######
|
||||
config = configparser.ConfigParser()
|
||||
config._interpolation = configparser.ExtendedInterpolation()
|
||||
config.read(pidfilePath)
|
||||
event=config.get('PID', 'event')
|
||||
#TODO######
|
||||
|
||||
params = event.split()
|
||||
scope = Scope().getInstance()
|
||||
logger = scope.getLogger()
|
||||
|
||||
if 'login' == str(params[0]):
|
||||
message = scope.getMessageManager().login_msg(params[1])
|
||||
scope.getMessager().send_direct_message(message)
|
||||
logger.debug('[AhenkDeamon] login event is handled for user:'+params[1])
|
||||
elif 'logout' == str(params[0]):
|
||||
message = scope.getMessageManager().logout_msg(params[1])
|
||||
scope.getMessager().send_direct_message(message)
|
||||
logger.debug('[AhenkDeamon] logout event is handled for user:'+params[1])
|
||||
else:
|
||||
logger.error('[AhenkDeamon] Unknown command error. Command:'+params[0])
|
||||
|
||||
logger.debug('[AhenkDeamon] Processing of handled event is completed')
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
pidfilePath='/var/run/ahenk.pid'
|
||||
|
||||
ahenkdaemon = AhenkDeamon(pidfilePath)
|
||||
|
||||
print (sys.argv)
|
||||
|
||||
if len(sys.argv) == 2:
|
||||
if sys.argv[1] == "start":
|
||||
print ("starting")
|
||||
if sys.argv[1] == 'start':
|
||||
print('starting')
|
||||
ahenkdaemon.run()
|
||||
#print (ahenkdaemon.get_pid())
|
||||
elif sys.argv[1] == 'stop':
|
||||
ahenkdaemon.stop()
|
||||
elif sys.argv[1] == 'restart':
|
||||
ahenkdaemon.restart()
|
||||
elif sys.argv[1] == 'status':
|
||||
# print (status)
|
||||
pass
|
||||
print('status')
|
||||
else:
|
||||
print ('Unknown command. Usage : %s start|stop|restart|status' % sys.argv[0])
|
||||
print('Unknown command. Usage : %s start|stop|restart|status' % sys.argv[0])
|
||||
sys.exit(2)
|
||||
|
||||
elif len(sys.argv) == 3:
|
||||
if sys.argv[1] == 'login' or sys.argv[1] == 'logout':
|
||||
print('event:'+str(sys.argv[1]))
|
||||
|
||||
#TODO##############
|
||||
config = configparser.ConfigParser()
|
||||
config._interpolation = configparser.ExtendedInterpolation()
|
||||
config.read(pidfilePath)
|
||||
pid_number = config.get('PID','pid_number')
|
||||
config.set('PID', 'event', str(sys.argv[1])+' '+sys.argv[2])
|
||||
#TODO##############
|
||||
|
||||
with open(pidfilePath, 'w') as config_file:
|
||||
config.write(config_file)
|
||||
|
||||
os.kill(int(pid_number), signal.SIGALRM)
|
||||
else:
|
||||
print('Unknown command. Usage : %s start|stop|restart|status' % sys.argv[0])
|
||||
sys.exit(2)
|
||||
sys.exit(0)
|
||||
else:
|
||||
print ('Usage : %s start|stop|restart|status' % sys.argv[0])
|
||||
print('Usage : %s start|stop|restart|status' % sys.argv[0])
|
||||
sys.exit(2)
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ sys.path.append('../..')
|
|||
from base.Scope import Scope
|
||||
import configparser
|
||||
|
||||
|
||||
#TODO Message Factory
|
||||
class Messaging(object):
|
||||
def __init__(self):
|
||||
scope = Scope().getInstance()
|
||||
|
@ -45,19 +45,19 @@ class Messaging(object):
|
|||
|
||||
|
||||
|
||||
def login_msg(self):
|
||||
def login_msg(self,username):
|
||||
data = {}
|
||||
data['type'] = 'LOGIN'
|
||||
data['username'] = str(pwd.getpwuid(os.getuid())[0])
|
||||
data['username'] = username
|
||||
data['timestamp'] = str(datetime.datetime.now().strftime("%d-%m-%Y %I:%M"))
|
||||
json_data = json.dumps(data)
|
||||
self.logger.debug('[Messaging] Login message was created')
|
||||
return json_data
|
||||
|
||||
def logout_msg(self):
|
||||
def logout_msg(self,username):
|
||||
data = {}
|
||||
data['type'] = 'LOGOUT'
|
||||
data['username'] = str(pwd.getpwuid(os.getuid())[0])
|
||||
data['username'] = str(username)
|
||||
data['timestamp'] = str(datetime.datetime.now().strftime("%d-%m-%Y %I:%M"))
|
||||
json_data = json.dumps(data)
|
||||
self.logger.debug('[Messaging] Logout message was created')
|
||||
|
|
Loading…
Reference in a new issue