#!/usr/bin/env python
# -*- coding: utf-8
import os
import torndb.torndb
import tornado.httpserver
import tornado.ioloop
import tornado.web
import logging
from tornado.options import define, options
from tornado import locale
# REST support
from classes import support as ppSupportHandler
from classes import support_page as ppSupportPageHandler
from classes import support_ticket as ppSupportUserHandler
from classes import support_ticket_action as ppSupportTicketActionHandler
# End REST support
define("port", default=8111, help="run on the given port", type=int)
define("mysql_host", default="", help="database host")
define("mysql_database", default="", help="database name")
define("mysql_user", default="", help="database user")
define("mysql_password", default="", help="database password")
class Application(tornado.web.Application):
def __init__(self):
import logging
logging.getLogger().setLevel(logging.DEBUG)
static_dir = os.path.join(os.path.dirname(__file__), "web")
static_dir_dict = dict(path=static_dir)
tornado.locale.load_translations(os.path.join(os.path.dirname(__file__), "web/lang"))
settings = dict(
debug = True, # TODO Change this!!!
autoescape = None,
gzip = True,
template_path = os.path.join(os.path.dirname(__file__), "web/templates"),
static_path = os.path.join(os.path.dirname(__file__), "web"),
xsrf_cookies = True,
secret_key = "" ,
cookie_secret = "",
login_url = "/",
quotagb = ,
encookie_secret = '',
)
ppMyHandlers = [
(r"/register/go", ppRegisterGoHandler.RegisterGoHandler),
# REST support user
(r"/support/ticket/([0-9]+)", ppSupportUserHandler.SupportUserHandler),
(r"/support/ticket/(?P<ticket>[0-9]+)/?(?P<action>[^\/]+)?", ppSupportTicketActionHandler.SupportTicketActionHandler),
(r"/support/page/([0-9]+)", ppSupportPageHandler.SupportPageHandler),
(r"/support", ppSupportHandler.SupportHandler),
(r"/support/(.*)", ppSupportHandler.SupportHandler ),
# End REST support user
(r"/(robots\.txt)", tornado.web.StaticFileHandler, static_dir_dict),
(r"/(.*)", ppIndexAllHandler.IndexAllHandler )
]
# 2. Create Tornado application
tornado.web.Application.__init__(self, ppMyHandlers, **settings)
# Have one global connection to the blog DB across all handlers
self.db = torndb.torndb.Connection(
host=options.mysql_host, database=options.mysql_database,
user=options.mysql_user, password=options.mysql_password)
def startServerProcess():
# Have one global var where all ports are
global ports_run_on
i=0
# define server variable dynamic
server = {}
try:
while i < len(ports_run_on):
tornado.options.parse_command_line()
port = ports_run_on[i]
server[port] = tornado.httpserver.HTTPServer(Application(), xheaders = True)
server[port].listen(int(port))
logging.info("Server thread quied and is starting on: " + str(port))
i=i+1
# if ok start all threads
tornado.ioloop.IOLoop.instance().start()
except Exception as inst:
tornado.ioloop.IOLoop.instance().stop()
logging.info("Server port is busy, passing. Error: "+ str(inst) )
return
if __name__ == '__main__':
startServerProcess()
#!/bin/bash
DAEMON_DIR=/var/www/support
DAEMON=$DAEMON_DIR/support.py
NAME="support"
DESC="support daemon"
test -f $DAEMON || exit 0
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --pidfile /var/run/$NAME.pid \
--chdir $DAEMON_DIR \
--make-pidfile --background -c nobody --startas $DAEMON
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --oknodo \
--pidfile /var/run/$NAME.pid
rm -f /var/run/$NAME.pid
echo "$NAME."
;;
restart)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --oknodo \
--pidfile /var/run/$NAME.pid
rm -f /var/run/$NAME.pid
start-stop-daemon --start --pidfile /var/run/$NAME.pid \
--chdir $DAEMON_DIR \
--make-pidfile --background -c nobody --startas $DAEMON
echo "$NAME."
esac
exit 0