using System; using LitJson; using ProtoCSStruct; using SimpleHttpServer; using Sog; namespace Operation; [MenuMapping(refc = typeof(ServerMonitor))] public static class Limit { [RequestMapping("白名单管理", PermissionCode.LIMIT_IP, true)] public static int OnSelectLimitIpHttpReq(string httpApiCmd, JsonData jsonData, HttpResponse rsp, HttpRequest request, HttpQueryParams query, uint httpContextId) { SSGetLimitReq req = new SSGetLimitReq(); req.Id = (int)httpContextId; var opType = query.GetValue("op_type").Toint32(0); var args = query.GetValue("args"); if (opType == 0) { FindLimit(jsonData); rsp.IsWaitFor = false; return 0; } req.Op_type = opType; req.Args.SetString(args); OperationServerUtils.GetPacketSender().SendToRealmlistServer((int)SSGameMsgID.OperationLimitReq, ref req, 0); rsp.IsWaitFor = true; return -1; } private static void FindLimit(JsonData jsonData) { jsonData["code"] = 0; jsonData["ret"] = 0; JsonData data = new JsonData(); var whiteList = LimitIpDevice.GetWhiteList(); if (whiteList != null) { JsonData json = new JsonData(); foreach (var item in whiteList) { json.Add(item); } data["ip"] = json; } var whiteDeviceIdList = LimitIpDevice.GetWhiteDeviceList(); if (whiteDeviceIdList != null) { JsonData json = new JsonData(); foreach (var item in whiteDeviceIdList) { json.Add(item); } data["device"] = json; } var blackList = LimitIpDevice.GetBlackList(); if (blackList != null) { JsonData json = new JsonData(); foreach (var item in blackList) { json.Add(item); } data["bip"] = json; } var blackDeviceIdList = LimitIpDevice.GetBlackDeviceList(); if (blackDeviceIdList != null) { JsonData json = new JsonData(); foreach (var item in blackDeviceIdList) { json.Add(item); } data["bdevice"] = json; } jsonData["data"] = data; } public static void OnSelectLimitIpRes(uint serverId, StructPacket packet) { HttpRequestInfo m_request = null; try { ref var res = ref packet.GetMessage(); var id = res.Id; TraceLog.Debug("Limit.OnSelectLimitIpRes uid {0} ", id); m_request = OperationServer.m_httpService.m_requestList.Find(f => f.Http.id == id); LitJson.JsonData builder = new LitJson.JsonData(); builder["code"] = 0; builder["ret"] = 0; switch (res.Op_type) { case 0: break; } m_request.Http.httpResponse.ContentAsUTF8 = builder.ToJson(); } catch (Exception ex) { TraceLog.Error("Limit.OnSelectLimitIpRes Error Msg {0}", ex.Message); } finally { if (m_request != null) { m_request.ProcessEnd = true; } } } }