|
@@ -19,7 +19,6 @@ import re
|
|
|
from monitor import ProcessCounter
|
|
|
from utils.transport import QueueListener, QueueWriter, QueueReader
|
|
|
from utils.params import PARAMS
|
|
|
-from ngram import NGram as ng
|
|
|
import smtplib
|
|
|
from email.mime.multipart import MIMEMultipart
|
|
|
from email.mime.text import MIMEText
|
|
@@ -80,6 +79,7 @@ class Apps(Actor) :
|
|
|
def isValid(self,**args):
|
|
|
"""
|
|
|
We insure that the provided application exists and that the payload is correct
|
|
|
+ The class will only respond to reboot,kill,start actions
|
|
|
p validate the payload
|
|
|
q validate the app can be restarted
|
|
|
|
|
@@ -100,27 +100,11 @@ class Apps(Actor) :
|
|
|
"""
|
|
|
self.action = action
|
|
|
self.params = params
|
|
|
- # self.ng = ng(self.config.keys())
|
|
|
-
|
|
|
-
|
|
|
- # def can_start(self,name):
|
|
|
- # """
|
|
|
- # This function is intended to determine if it is possible to boot an application
|
|
|
-
|
|
|
- # """
|
|
|
- # items = self.ng.search(name) if self.ng is not None else []
|
|
|
- # if len(items) == 0 :
|
|
|
- # return False
|
|
|
- # else:
|
|
|
- # return items[0][1] > 0.01
|
|
|
|
|
|
def startup(self,cmd) :
|
|
|
"""
|
|
|
This function is intended to start a program given the configuration
|
|
|
"""
|
|
|
- # items = self.ng.search(name)[0]
|
|
|
- # app = items[0]
|
|
|
- # args = self.config[app]
|
|
|
try:
|
|
|
os.system(cmd +" &")
|
|
|
except Exception, e:
|
|
@@ -132,36 +116,42 @@ class Apps(Actor) :
|
|
|
@NOTE: Make sure the reference to the app is not ambiguous
|
|
|
"""
|
|
|
try:
|
|
|
- args = "".join(['ps -eo pid,command|grep -E -i "',name.lower(),'"|grep -E "^ {0,}[0-9]+" -o|xargs kill -9'])
|
|
|
+ args = "".join(['ps -eo pid,command|grep -Ei "',name.lower(),'"|grep -E "^ {0,}[0-9]+" -o|xargs kill -9'])
|
|
|
+
|
|
|
#self.execute([args])
|
|
|
subprocess.call([args],shell=True)
|
|
|
except Exception,e:
|
|
|
print e
|
|
|
+
|
|
|
def run(self):
|
|
|
- __action = str(self.action)
|
|
|
- __params = dict(self.params)
|
|
|
- if self.action == 'reboot' :
|
|
|
+ __action = str(self.action).strip()
|
|
|
+ __params = dict(self.params)
|
|
|
+ pointer = None
|
|
|
+ if __action == 'reboot' :
|
|
|
def pointer():
|
|
|
self.kill(__params['label'])
|
|
|
self.startup(__params['cmd'])
|
|
|
- else:
|
|
|
+ elif __action == 'kill':
|
|
|
+ def pointer():
|
|
|
+ self.kill(__params['label'])
|
|
|
+ elif __action =='start':
|
|
|
def pointer() :
|
|
|
self.startup(__params['cmd'])
|
|
|
- print __action,__params
|
|
|
- print pointer
|
|
|
- pointer()
|
|
|
- # thread = Thread(target=pointer)
|
|
|
- # thread.start()
|
|
|
+ if pointer :
|
|
|
+ thread = Thread(target=pointer)
|
|
|
+ thread.start()
|
|
|
+ # pointer()
|
|
|
def analyze(self,logs) :
|
|
|
"""
|
|
|
This function is designed to analyze a few logs and take appropriate action
|
|
|
@param logs logs of application/process data; folder analysis or sandbox analysis
|
|
|
"""
|
|
|
- for item in logs :
|
|
|
- name = item['label']
|
|
|
- if self.can_start(name) :
|
|
|
- self.startup(name)
|
|
|
- #
|
|
|
+ pass
|
|
|
+ # for item in logs :
|
|
|
+ # name = item['label']
|
|
|
+ # if self.can_start(name) :
|
|
|
+ # self.startup(name)
|
|
|
+ # #
|
|
|
|
|
|
|
|
|
class Mailer (Actor):
|
|
@@ -297,8 +287,8 @@ class Folders(Actor):
|
|
|
def analyze(self,logs):
|
|
|
r = {'clean':self.clean,'archive':self.archive}
|
|
|
self.lfolders = [ folder['label'] for folder in logs]
|
|
|
- for item in logs :
|
|
|
+ #for item in logs :
|
|
|
|
|
|
- if self.can_clean(item) :
|
|
|
- self.archive(item)
|
|
|
- #self.clean(item)
|
|
|
+ # if self.can_clean(item) :
|
|
|
+ # self.archive(item)
|
|
|
+ # self.clean(item)
|