blob: 057c7b7487ec5e9c181289d9ee088bf8a868cc09 [file] [log] [blame]
from twisted.web.server import Site
from twisted.web.static import File
from twisted.internet import reactor
from twisted.web.resource import Resource
from twisted.application import service, internet
import logging
import os
from logging import config
import logging.handlers
import simplejson
KIBANA = '/home/vagrant/kibana-3.1.2'
ALLOW_ORIGIN = 'http://192.168.1.10'
if not os.path.exists('/var/log/xdata'):
os.makedirs('/var/log/xdata')
# logging configuration
LOG_SETTINGS = {
'version': 1,
'handlers': {
'xdata-v2': {
'class': 'logging.handlers.RotatingFileHandler',
'level': 'INFO',
'formatter': 'xdata',
'filename': '/var/log/xdata/xdata-v2.log',
'mode': 'a',
'maxBytes': 100e6,
'backupCount': 10,
},
'xdata-v3': {
'class': 'logging.handlers.RotatingFileHandler',
'level': 'INFO',
'formatter': 'xdata',
'filename': '/var/log/xdata/xdata-v3.log',
'mode': 'a',
'maxBytes': 100e6,
'backupCount': 10,
},
'file2': {
'class': 'logging.handlers.RotatingFileHandler',
'level': 'INFO',
'formatter': 'detailed',
'filename': '/var/log/xdata/xdata-error.log',
'mode': 'a',
'maxBytes': 100e6,
'backupCount': 10,
},
},
'formatters': {
'xdata': {
'format': '%(message)s',
},
'detailed': {
'format': '%(asctime)s %(module)-17s line:%(lineno)-4d ' \
'%(levelname)-8s %(message)s',
},
'email': {
'format': 'Timestamp: %(asctime)s\nModule: %(module)s\n' \
'Line: %(lineno)d\nMessage: %(message)s',
},
},
'loggers': {
'xdata-v2': {
'level':'DEBUG',
'handlers': ['xdata-v2',]
},
'xdata-v3': {
'level':'DEBUG',
'handlers': ['xdata-v3',]
},
'error': {
'level':'DEBUG',
'handlers': ['file2',]
},
}
}
config.dictConfig(LOG_SETTINGS)
logger = logging.getLogger('xdata-v2')
loggerv3 = logging.getLogger('xdata-v3')
logger_err = logging.getLogger('error')
kibana = File(KIBANA)
wf_dict = {
0: "WF_OTHER",
1: "WF_DEFINE",
2: "WF_GETDATA",
3: "WF_EXPLORE",
4: "WF_CREATE",
5: "WF_ENRICH",
6: "WF_TRANSFORM"
}
class Logger(Resource):
def render_OPTIONS(self, request):
request.setHeader('Access-Control-Allow-Origin', ALLOW_ORIGIN)
request.setHeader('Access-Control-Allow-Methods', 'POST')
request.setHeader('Access-Control-Allow-Headers', 'x-prototype-version,x-requested-with,Content-Type')
request.setHeader('Access-Control-Max-Age', 2520) # 42 hours
return ''
def render_POST(self, request):
newdata = request.content.getvalue()
newdata = simplejson.loads(newdata)
request.setHeader('Access-Control-Allow-Origin', ALLOW_ORIGIN)
request.setHeader('Access-Control-Allow-Methods', 'POST')
request.setHeader('Access-Control-Allow-Headers', 'x-prototype-version,x-requested-with,Content-Type')
request.setHeader('Access-Control-Max-Age', 2520) # 42 hours
try:
for a in newdata:
if 'useraleVersion' in a:
if a['useraleVersion'].split('.')[0] == '3':
loggerv3.info(simplejson.dumps(a))
elif ('parms' in a) and ('wf_state' in a['parms']):
a['wf_state_longname'] = wf_dict[a['parms']['wf_state']]
logger.info(simplejson.dumps(a))
except e:
logger_err.error(e)
return ''
root = Resource()
root.putChild("kibana", kibana)
root.putChild("send_log", Logger())
# create a resource to serve static files
tmp_service = internet.TCPServer(80, Site(root))
application = service.Application("User-ALE")
# attach the service to its parent application
tmp_service.setServiceParent(application)