def send_heart_beat_package(): infoDB = serviceInfo() trafficDB = serviceTraffic() HB = redisHeartBeatPacket() idfs = infoDB.checkExpiredService() exceed = trafficDB.getExceedTrafficService() # update traffic of all services update_traffic() if idfs["status"] == "success": idfs_info = idfs["info"] for item in idfs_info: revoke(item) HB.updateExpireIdfs(idfs_info) if exceed["status"] == 'success': exceed_info = exceed["info"] for item in exceed_info: revoke(item) HB.updateTrafficExceedIdfs(exceed_info) # send heart_beat package pack_json = HB.generatePakcetContent() if config["CONTROL_SERVER_IP"] != "": #and config["SEND_HEARTBEAT_PACK"] == True: send_socket_request( config["CONTROL_SERVER_IP"], config["CONTROL_SERVER_UDP_PORT"], json.dumps(pack_json), type="UDP" )
def handle_UDP(serv,data): try: HB = redisHeartBeatPacket() jdata = json.loads(data) if jdata["info"]["command"] == "hb_back": tag = jdata["info"]["tag"] # unlock the pack, to represent that the host server has received HB.clearPacketTag(tag) except TypeError: serv.sendSocket("error",400) pass
def update_traffic(): servDB = serviceInfo() trafficDB = serviceTraffic() HB = redisHeartBeatPacket() item_result = servDB.getItems() if item_result == None: return None elif item_result["status"] == "error": return None else: # get all items items = item_result["info"] for item in items: serv_type = item["service_type"] serv_idf = item["service_idf"] # TODO 暂时只对使用shadowsocks-obfs的服务进行流量更新 if serv_type == "shadowsocks-obfs": from model.db_ss_obfs_server import ssOBFSServerDatabase from proc.proc_ss import ssOBFS_Process ssProc = ssOBFS_Process() ssDB = ssOBFSServerDatabase() # get service listen port port_result = ssDB.getItem(serv_idf) if port_result != None: if port_result["status"] == "success": port = int(port_result["info"]["server_port"]) # get traffic t_info = ssProc.getTraffic(port) # change to MBs X.YYY MB u_t = round(float(t_info["upload"]) / (1000 * 1000),3) d_t = round(float(t_info["download"]) / (1000 * 1000),3) trafficDB.updateTraffic(serv_idf,u_t,d_t) HB.updateTraffic(serv_idf,u_t,d_t)