同步操作将从 小飞/proxygateway 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
local cjson = require "cjson"local api_model = require "model.api"local service_model = require "model.module"local server_model = require "model.server"local domain_model = require "model.domain"local cache = ngx.shared.cachelocal log = ngx.loglocal ERR = ngx.ERRlocal DEBUG = ngx.DEBUGlocal agw_service = {}function check_state(ip, port)local sock = ngx.socket.tcp()sock:settimeout(5000)local ok, err = sock:connect(ip, port)sock:close()if not ok thenlog(ERR, "server connect err:", err)return falseendreturn trueendfunction set_domain_api_info(domainId, domainName)local services, err = service_model.getServices(domainId)local service_api_uri_map = {}local service_api_uri_array = {}for k, service in pairs(services) dolocal servers=server_model.getServiceServersWithState(service["id"], 1)local apis=api_model.getServiceApis(service["id"])for k, api in pairs(apis) doapi["servers"] = serversapi["host"] = service["host"]if service["host"] == "" thenapi["host"] = domainNameendlocal original_uri, index=string.gsub(api["original_uri"], "%$([0-9]+)", "%%%1")api["original_uri"] = original_uriservice_api_uri_map[api["request_uri"]] = apitable.insert(service_api_uri_array, api["request_uri"])endendtable.sort(service_api_uri_array, function(a,b) return string.len(a) > string.len(b) end)local config = {api_uri_map = service_api_uri_map, api_uri_array = service_api_uri_array}cache:set(domainName, cjson.encode(config))endfunction agw_service.syncApiInfo()local domains, err = domain_model.getDomains()for k, domain in pairs(domains) doset_domain_api_info(domain["id"], domain["name"])endendfunction agw_service.checkState()local servers = server_model.getAllServers()for k, server in pairs(servers) doif check_state(server["ip"], server["port"]) == false thenlog(ERR, "server down:", server["ip"]..":"..server["port"])server_model.updateState(server["id"], 0)elseserver_model.updateState(server["id"], 1)endendendfunction agw_service.getServices(domainId)local services, err = service_model.getServices(domainId)for k, service in pairs(services) dolocal up_servers_count = table.getn(server_model.getServiceServersWithState(service["id"], 1))local down_servers_count = table.getn(server_model.getServiceServersWithState(service["id"], 0))local status = "no backend servers"if up_servers_count ~= 0 or down_servers_count ~= 0 thenstatus = "up "..up_servers_count..",down "..down_servers_countendservice["status"] = statusendreturn services, errendfunction agw_service.deleteDomain(domainId)domain_model.delete(domainId)local services = service_model.getServices(domainId)for k, service in pairs(services) doapi_model.deleteByServiceId(service["id"])server_model.deleteByServiceId(service["id"])endservice_model.deleteByDomainId(domainId)endfunction agw_service.deleteService(serviceId)api_model.deleteByServiceId(serviceId)server_model.deleteByServiceId(serviceId)service_model.delete(serviceId)endreturn agw_service
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。