import os
import tornado.gen
import tornado.httpclient
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options,OptionParser
from model.common.file_pid import PID
from urls import urls
from model.log import logger
import requests
import time
import sys
log = logger()


iTime = 300


define("port", default=sys.argv[1], help="run on the given port", type=int)


class HttpServerWrapper(tornado.web.Application):
    def __init__(self, port=80,debug=True):
        self.port = port
        handlers = urls
        #  默认为开发环境,只有当dev输入时为生产环境
        auth = True if 'pro' in OptionParser().parse_command_line() and sys.argv[1] == '8008' else False
        if auth:
            print('生产环境,启动')
        else:
            print('测试环境,启动')
        settings = {
            "port" : sys.argv[1],
            "auth": auth,
            "cookie_secret": "",
            "login_url": "",
            "autoreload": True,
            "debug": False,
            "allow_remote_access": True,
            "template_path": os.path.join(os.path.dirname(__file__), "templates"),
            "static_path": os.path.join(os.path.dirname(__file__), "templates")
        }
        super(HttpServerWrapper, self).__init__(handlers, **settings)

    def get_ip(self):
        for i in range(30):
            time.sleep(1)
            try:
                r = requests.get("http://jsonip.com").json()['ip']
                print(r)
                return r
            except:
                print('获取ip,出错')
                pass
        raise


def main():
    #TODO:日志这部分需要设置一下,有问题
    PID.write()
    tornado.options.parse_command_line()
    http_server = tornado.httpserver.HTTPServer(HttpServerWrapper())
    http_server.listen(options.port)
    log.info("server start, listening on port %s" % options.port)
    tornado.ioloop.IOLoop.current().start()


if __name__ == '__main__':

    main()