def analysisThread(self,server): try: domainData = self.domainAnalysisCache.pop() if domainData: if domainData.connect: domainConfig.config.domainConnectTimes(domainData.domain,domainData.connect) domain = getDomainName(domainData.domain) data = self.domainAnalysis[domainData.timeMark][domainData.fromIp][domain if domain else domainData.domain] if not "connect" in data: data["connect"] = 0 data["incoming"] = 0 data["outgoing"] = 0 data["connect"] += domainData.connect data["incoming"] += domainData.incoming data["outgoing"] += domainData.outgoing dataExpireTime = time.time()-86400*7 #删除7天之前的数据 for (k,d) in self.domainAnalysis.items(): if(k < dataExpireTime): del self.domainAnalysis[k] break domainAnalysisJson = json.dumps(self.domainAnalysis) open(domainAnalysisConfig, "wt").write(domainAnalysisJson) except: log.log(3,"analysis error!") server.addDelay(10, analysis.analysisThread,server)
def analysisThread(self,server): try: domainData = self.domainAnalysisCache.pop() if domainData: if domainData.connect: domainConfig.config.domainConnectTimes(domainData.domain,domainData.connect) domain = getDomainName(domainData.domain) data = self.domainAnalysis[domainData.timeMark][domainData.fromIp][domain if domain else domainData.domain] if not "connect" in data: data["connect"] = 0 data["incoming"] = 0 data["outgoing"] = 0 data["connect"] += domainData.connect data["incoming"] += domainData.incoming data["outgoing"] += domainData.outgoing dataExpireTime = time.time()-86400*7 #删除7天之前的数据 for (k,d) in self.domainAnalysis.items(): if(k < dataExpireTime): del self.domainAnalysis[k] break domainAnalysisJson = json.dumps(self.domainAnalysis) open(domainAnalysisConfig, "wt").write(domainAnalysisJson) except: log.log(3,"analysis error!") server.addDelay(5, analysis.analysisThread,server)
def domainConnectTimes(self, domain, times): if domain in self.setting: data = self.setting[domain] data["connectTimes"] += times self.save() else: _domain = getDomainName(domain) if _domain and not _domain == domain: self.domainConnectTimes(_domain, times)
def domainConnectTimes(self,domain,times): if domain in self.setting: data = self.setting[domain] data["connectTimes"] += times self.save() else: _domain = getDomainName(domain) if not _domain == domain: self.domainConnectTimes(_domain, times)
def get(self,fromIp,domain,timeMark): try: url = urlparse.urlparse(domain) domain = url.netloc if len(url.netloc)>0 else domain except: pass domain = hostParser.getDomainName(domain) for s in self.siteList: if domain == s.domain and fromIp == s.fromIp and timeMark == s.timeMark: return s site = analysisSite(domain,fromIp,timeMark) self.siteList.append(site) return site
def get(self): opt = self.get_argument('opt',"").encode('utf8') if opt == "": self.render("admin_temp.html") else: if opt == "puturl": addr,port = parserUrlAddrPort(self.get_argument("url").encode('utf8')) if addr: domain = getDomainName(addr) if domainConfig.config.addDomain(domain): domainConfig.config.save() self.redirect("/admin", False) else: domain = self.get_argument("domain",default="").encode('utf8') ok = False if opt == "delete": ok = domainConfig.config.removeDomain(domain) elif opt == "close": ok = domainConfig.config.closeDomain(domain) elif opt == "open": ok = domainConfig.config.openDomain(domain) if ok: domainConfig.config.save() self.redirect("/admin", False)
def onHTTP(self, header, method, path, query, post): # log.log(1,self,header,method,path,query,post) if method == "POST": postJson = json.loads(post) opt = postJson["opt"] respons = {} if(opt == "status"): respons = self.server.dumpConnects() elif(opt == "serverList"): respons["pac"] = "http://" + self.messageParse.getHeader("host") + "/pac" respons["list"] = settingConfig.setting(settingConfig.remoteServerList) elif opt == "setServerList": settingConfig.setting(settingConfig.remoteServerList, postJson["data"]) respons["status"] = "ok" # elif opt == "testRemoteProxy": # respons["status"] = "" elif opt == "domainList": if "action" in postJson: action = postJson["action"] domain = postJson["domain"] respons={"status":"ok"} if action == "delete": domainConfig.config.removeDomain(domain) elif action == "open": domainConfig.config.openDomain(domain) elif action == "close": domainConfig.config.closeDomain(domain) else: respons={"status":"no found action"} else: respons["domainList"] = domainConfig.config.getDomainListWithAnalysis() elif opt == "analysisData": respons["analysisData"] = analysis.getAnalysisData( selectDomain=postJson["domain"], startTime=postJson["startTime"], todayStartTime=postJson["todayStartTime"] ) elif opt == "addDomain": url = postJson["url"] host = parserUrlAddrPort(url)[0] if host: host = getDomainName(host) else: host = url if getDomainName(url) else "" respons["status"] = "ok" if domainConfig.config.addDomain(host) else "error" self.reseponse(respons,connection=self.messageParse.connection()) elif path == "/pac": content = self.getFileContent("/pac.js") domainList = domainConfig.config.getDomainOpenedList() domainListJs = "" for domain in domainList: domainListJs += "A(\"" + domain + "\")||" content = content.replace("{{domainList}}", domainListJs) content = content.replace("{{proxy_ddr}}", self.messageParse.getHeader("host")) self.reseponse(content,connection=self.messageParse.connection()) else: if path == "/": path = "/index.html" content = self.getFileContent(path) if content: self.reseponse(content,ContentType=get_mime_type(path),connection=self.messageParse.connection()) else: self.reseponse("\"" + path + "\" not found", code=404,connection=self.messageParse.connection())