# -*- coding: utf-8 -*- # myops 通用接口 # python web.py --port=6013 import tornado.ioloop import tornado.web import tornado.options from tornado import gen from myops.mylog import define_logger import logging from config.config import * import pdb from data_channel.gamelog_external import Build_Gamelog_Config from data_channel.mp2shushu import Mp2shushu from deploy.deploy_keys import DeployKeys from deploy.deploy_git import DeployGit from deploy.clear_service_data import ClearService from online.online_data import OnlineData2mysql import json define_logger("ops_interface.log") log = logging.getLogger(__name__) tornado.options.define("port", default=interface_port, type=int, help="run server on the given port.") class DispatchHandler(tornado.web.RequestHandler): @gen.coroutine def get(self): log.info(f"get args {self.get_arguments()}") if self.get_query_argument('c') == 'Ops' and self.get_query_argument('a') == 'sync_log_conf': print("start sync_log_conf! ") self._selfgamelogexternal() elif self.get_query_argument('c') == 'Ops' and self.get_query_argument('a') == 'mp2ss': yield self._selfmp2ss() elif self.get_query_argument('c') == 'Ops' and self.get_query_argument('a') == 'user_online': # print(f"get user_online get") yield self._user_online() elif self.get_query_argument('c') == 'Ops' and self.get_query_argument('a') == 'clear_redis': yield self._selfclear_redis() elif self.get_query_argument('c') == 'Deploy' and self.get_query_argument('a') == 'keys': yield self._selfdeploykeys() else: self.write("pls check args!") @gen.coroutine def post(self): data = json.loads(self.request.body) print(data) if data.get('event_name', None) == 'tag_push': yield self._git_webhook() else: self.write("pls check args!") def _git_webhook(self): token = self.request.headers.get('X-Gitlab-Token', None) if token == "kingsome_devops_937711": name = json.loads(self.request.body).get('project', None).get('name', None) branch = json.loads(self.request.body).get('project', None).get('default_branch', None) if branch == "master": print("stat deploy git with {name}!".format(name=name)) d = DeployGit(name) d.run() else: self.write("pls check args {name} {branch}!".format(name=name, branch=branch)) else: self.write("{token} not in define!".format(token=token)) def _user_online(self): post_data = {} post_data['zone_id'] = self.get_query_argument('zone_id') post_data['number'] = self.get_query_argument('number') post_data['channel_id'] = self.get_query_argument('channel_id') post_data['game_id'] = self.get_query_argument('game_id') post_data['gamename'] = 'wjtx' aa = OnlineData2mysql(post_data) log.info(f"get {post_data}") aa.run() def _selfdeploykeys(self): try: project = self.get_query_argument('project') dk = DeployKeys(project) dk.run() except Exception: log.error(f"deploy keys with {project} failed", exc_info=True) def _selfclear_redis(self): try: accountid = self.get_query_argument('accountid') cc = ClearService(accountid) cc.clear_rediskey() except Exception: log.error(f"clear keys with {accountid} failed", exc_info=True) def _selfgamelogexternal(self): try: cc = Build_Gamelog_Config() cc.run() except Exception: return self.write({'errcode': 2, "errmsg": 'Failed'}) return self.write({'errcode': 0, "errmsg": ''}) def _selfmp2ss(self): log.info("start mp2ss") try: ss = Mp2shushu(2001, 6001) ss.run() except Exception: return self.write({'errcode': 2, "errmsg": 'Failed'}) return self.write({'errcode': 0, "errmsg": ''}) def make_app(): return tornado.web.Application([(r"/webapp/index[\.]php", DispatchHandler)]) if __name__ == "__main__": print('start!') tornado.options.parse_command_line() app = make_app() app.listen(tornado.options.options.port) tornado.ioloop.IOLoop.current().start()