def UpdateInfo(self, forceClear=False): gidx = self.groupPageIdx * 5 + self.groupFocusIdx self.catList = os.listdir(self.pCTX.replayDataPath + "/" + self.groupList[gidx]) cidx = self.catPageIdx * 5 + self.catFocusIdx targetPath = self.pCTX.replayDataPath + "/" + self.groupList[ gidx] + "/" + self.catList[cidx] datList = os.listdir(targetPath) self.datNr = len(datList) mtime = os.path.getmtime(targetPath) t = datetime.datetime.fromtimestamp(mtime) datMtime = t.strftime("%Y/%m/%d") if forceClear: self.pRender.fb.putstr(388, 100 + 30 * 0, "* Data Nr", self.pRender.W, 1) self.pRender.fb.putstr(388, 100 + 30 * 2 - 10, "* Last Update", self.pRender.W, 1) # Clear c = self.pRender.ConvRgb(0, 0, 0) self.pRender.fb.draw.rect(c, Rect(388, 100 + 30 * 1 - 10, 90, 30), 0) self.pRender.fb.draw.rect(c, Rect(388, 100 + 30 * 3 - 20, 90, 30), 0) self.pRender.fb.putstr(388, 100 + 30 * 1 - 10, "%13d" % self.datNr, self.pRender.W, 1) self.pRender.fb.putstr(388, 100 + 30 * 3 - 20, "%13s" % datMtime, self.pRender.W, 1) print targetPath self.pCTX.currentReplayData = targetPath
def RenderParamOnly(self, idx, isToggle, up, down): if isToggle == 0: c = self.pRender.ConvRgb(0.32, 0.1, 1) self.pRender.fb.draw.rect( c, Rect(20 + 102 + 106 + 12, 86 + 22 + idx * 58, 50, 16), 0) self.pRender.fb.draw.rect( c, Rect(20 + 102 + 12, 86 + 22 + idx * 58, 50, 16), 0) c = self.pRender.ConvRgb(0.32, 0.4, 0.4) self.pRender.fb.putstr(20 + 102 + 12, 86 + 22 + idx * 58, "%04d" % up, c, 2) self.pRender.fb.putstr(20 + 102 + 106 + 12, 86 + 22 + idx * 58, "%04d" % down, c, 2) else: if up == 0: c = self.pRender.ConvRgb(0.32, 0.1, 1) else: c = self.pRender.ConvRgb(0.92, 0.8, 1) self.pRender.fb.draw.rect( c, Rect(20 + 102 + 12, 86 + 22 + idx * 58, 50, 16), 0) if down == 0: c = self.pRender.ConvRgb(0.32, 0.1, 1) else: c = self.pRender.ConvRgb(0.92, 0.8, 1) self.pRender.fb.draw.rect( c, Rect(20 + 102 + 106 + 12, 86 + 22 + idx * 58, 50, 16), 0) return
def ClearFocus(self, idx): c = self.pRender.ConvRgb(0, 0, 0) self.pRender.fb.draw.rect(c, Rect(48 + 128 * idx, 84 - 4, 128, 4), 0) self.pRender.fb.draw.rect( c, Rect(48 + 128 * idx, 84 - 4 + 90 + 4, 128, 4), 0) self.pRender.fb.draw.rect(c, Rect(48 + 128 * idx, 84, 4, 90), 0) self.pRender.fb.draw.rect(c, Rect(48 + 128 * idx + 124, 84, 4, 90), 0)
def RenderParamRowBt(self, idx, isActive=False): if isActive == False: c = self.pRender.ConvRgb(0.14, 0.8, 0.7) #self.pRender.fb.draw.rect(c, Rect(238 + 2 , 84 + 50 * idx + 2, 60, 43), 0) self.pRender.fb.draw.rect(c, Rect(238 + 3, 84 + 50 * idx + 4, 2, 40), 0) self.pRender.fb.draw.rect( c, Rect(238 + 2 + 55, 84 + 50 * idx + 4, 2, 40), 0) self.pRender.fb.draw.rect( c, Rect(238 + 3, 84 + 50 * idx + 4 + 38, 56, 2), 0) if isActive == True: c = self.pRender.ConvRgb(0.9, 1.0, 1.0) self.pRender.fb.draw.rect(c, Rect(241, 88 + 50 * idx, 56, 2), 0) self.pRender.fb.draw.rect(c, Rect(241, 88 + 50 * idx + 38, 56, 2), 0) self.pRender.fb.draw.rect(c, Rect(241, 88 + 50 * idx, 2, 40), 0) self.pRender.fb.draw.rect(c, Rect(241 + 54, 88 + 50 * idx, 2, 40), 0) c = self.pRender.ConvRgb(0.51, 0.3, 0.2) self.pRender.fb.draw.rect(c, Rect(243, 90 + 50 * idx + 32, 52, 4), 0) c = self.pRender.ConvRgb(0.51, 0.6, 0.79) if isActive == True: self.pRender.fb.draw.rect(c, Rect(243, 90 + 50 * idx, 52, 35), 0) self.pRender.fb.putstr(243 + 3, 90 + 50 * idx + 11, "LINK", self.pRender.N, 2) else: self.pRender.fb.draw.rect(c, Rect(243, 90 + 50 * idx - 2, 52, 35), 0) self.pRender.fb.putstr(243 + 3, 90 + 50 * idx + 11 - 2, "EDIT", self.pRender.N, 2)
def RenderParamBar(self, idx, isToggle, label, up=0, down=0, unit=""): c = self.pRender.ConvRgb(0.32, 0.4, 0.8) self.pRender.fb.draw.rect(c, Rect(12, 86 + idx * 58, 320, 48), 0) c = self.pRender.ConvRgb(0.32, 0.1, 1) self.pRender.fb.draw.rect(c, Rect(20 + 102, 86 + 12 + idx * 58, 100, 32), 0) self.pRender.fb.draw.rect( c, Rect(20 + 102 + 106, 86 + 12 + idx * 58, 100, 32), 0) self.pRender.fb.putstr(20 + 102, 86 + 2 + idx * 58, "UP", c, 1) self.pRender.fb.putstr(20 + 102 + 106, 86 + 2 + idx * 58, "DOWN", c, 1) self.pRender.fb.putstr(20 + 2, 86 + 22 + idx * 58, label + "> ", c, 2) c = self.pRender.ConvRgb(0.32, 0.3, 1) self.pRender.fb.draw.rect(c, Rect(20 + 2, 86 + 7 + idx * 58, 84, 6), 0) if isToggle == 0: c = self.pRender.ConvRgb(0.32, 0.4, 0.4) self.pRender.fb.putstr(20 + 102 + 70, 86 + 30 + idx * 58, unit, c, 1) self.pRender.fb.putstr(20 + 102 + 12, 86 + 22 + idx * 58, "%04d" % up, c, 2) self.pRender.fb.putstr(20 + 102 + 106 + 70, 86 + 30 + idx * 58, unit, c, 1) self.pRender.fb.putstr(20 + 102 + 106 + 12, 86 + 22 + idx * 58, "%04d" % down, c, 2)
def Start(self): super(ScRemoteApi, self).Start() ##[ PARAM ]################################################################ self.upBand = 8096 self.dwBand = 8096 self.upDelay = 0 self.dwDelay = 0 self.upLoss = 0 self.dwLoss = 0 self.upDiscon = 0 self.dwDiscon = 0 self.rBufSize = 4096 self.bindPort = 10393 ##[ RENDER ]################################################################ self.pRender.UpdateTitle("WAN Emulation - API Control") self.pRender.UpdateSubTitle("") c = yellow = self.pRender.fb.rgb(255, 255, 0) self.pRender.fb.draw.rect(c, Rect(0, 54, self.pRender.xres, 1), 0) self.pRender.fb.draw.rect(c, Rect(0, 74, self.pRender.xres, 1), 0) self.pRender.fb.draw.rect(c, Rect(0, 54, 10 + 60, 20), 0) self.pRender.fb.draw.rect(c, Rect(480 - 10, 54, 10, 20), 0) self.pRender.fb.draw.rect(c, Rect(342, 74, 1, self.pRender.yres - 74), 0) self.pRender.fb.putstr(26, 54 + 7, ">>>", self.pRender.N, 1) self.RenderBackBt(True) self.CreateApiSocket() ifreq = struct.pack('16s16x', 'eth1') SIOCGIFADDR = 0x8915 # oh... not defined... orz ifaddr = ioctl(self.sock.fileno(), SIOCGIFADDR, ifreq) _, sa_family, port, in_addr = struct.unpack('16sHH4s8x', ifaddr) #print socket.inet_ntoa(in_addr) self.pRender.UpdateSubTitle("API Endpoint >> " + socket.inet_ntoa(in_addr) + ":" + str(self.bindPort)) self.RenderParamBar(0, 0, "Band", self.upBand, self.dwBand, "kbps") self.RenderParamBar(1, 0, "Delay", self.upDelay, self.dwDelay, "msec") self.RenderParamBar(2, 0, "Loss", self.upLoss, self.upLoss, " %") self.RenderParamBar(3, 1, "Discon") #self.RenderParamOnly(0, 0, 1024, 1024) #self.RenderParamOnly(1, 0, 100, 300) #self.RenderParamOnly(2, 0, 5, 5) #c = self.pRender.ConvRgb(0.32,0.4,0.2) #self.pRender.fb.putstr(80, 96, " Coinfig Param List ", c, 2) self.pWanem.ClearEx2() self.pWanem.DirectApplyEx2(self.upBand, self.dwBand, self.upDelay, self.dwDelay, self.upLoss, self.dwLoss) self.RenderTrafficInfo() return
def RenderClientInfo(self, idx, total, ip, mac, clientHostname, isSended): if idx % 2 == 0: baseY = 128 else: baseY = 128 + 24 * 2 + 16 self.pRender.fb.putstr( 120, baseY, "Client " + str(idx + 1) + "/" + str(total) + " : " + clientHostname, self.pRender.W, 1) self.pRender.fb.putstr(120, baseY + 24 * 0 + 14, "IP :" + ip, self.pRender.W, 2) self.pRender.fb.putstr(120, baseY + 24 * 1 + 14, "MAC:" + mac, self.pRender.W, 2) if self.pCTX.apiStatus == 0: if isSended == 0: c = self.pRender.ConvRgb(0.26, 0.1, 0.9) self.pRender.fb.draw.rect(c, Rect(382, baseY + 10, 38, 44), 0) c = self.pRender.ConvRgb(0.46, 0.3, 0.9) self.pRender.fb.draw.rect(c, Rect(382 + 40, baseY + 10, 38, 44), 0) c = self.pRender.ConvRgb(0.26, 0, 0.5) self.pRender.fb.draw.rect(c, Rect(382, baseY + 54, 38, 4), 0) self.pRender.fb.putstr(384, baseY + 29, 'REGIST', 0, 1) c = self.pRender.ConvRgb(0.46, 0, 0.5) self.pRender.fb.draw.rect(c, Rect(382 + 40, baseY + 54, 38, 4), 0) self.pRender.fb.putstr(384 + 39, baseY + 29, 'TMPADD', 0, 1) else: c = self.pRender.ConvRgb(0.96, 0.4, 0.9) self.pRender.fb.draw.rect( c, Rect(382, baseY + 10, 38 * 2 + 2, 48), 0) c = self.pRender.ConvRgb(0.96, 0, 0.5) self.pRender.fb.putstr(384 + 18, baseY + 30, 'SENDED', 0, 1)
def SendDhcpClientInfo(self, odd, isTmp): # add BtEffect block = self.currentClientTotal if (block % 2) == 1: block += 1 target = self.currentClientIdx + odd info = self.dhcpClientInfo[target] if info[4] != 0: return else: info[4] = 1 baseY = 128 + 64 * odd c = self.pRender.ConvRgb(0.56, 0.4, 0.5) self.pRender.fb.draw.rect(c, Rect(382, baseY + 10, 38 * 2 + 2, 48), 0) c = self.pRender.ConvRgb(0.26, 0.8, 0.5) self.pRender.fb.putstr(384 + 18, baseY + 30, 'SENDING', 0, 1) LogReporter.ReportDhcpClientInfo(self.pCTX, info, "wanem-" + self.GetSelfId(), isTmp) c = self.pRender.ConvRgb(0.96, 0.4, 0.9) self.pRender.fb.draw.rect(c, Rect(382, baseY + 10, 38 * 2 + 2, 48), 0) c = self.pRender.ConvRgb(0.96, 0, 0.5) self.pRender.fb.putstr(384 + 18, baseY + 30, 'SENDED', 0, 1)
def RenderBackBt(self, enabled): if enabled: c = self.pRender.ConvRgb(0.10, 0.2, 0.8) else: c = self.pRender.ConvRgb(0.10, 0.2, 0.3) self.pRender.fb.draw.rect(c, Rect(7, 7, 62, 38), 0) c = self.pRender.ConvRgb(0.10, 0.2, 0.2) self.pRender.fb.draw.rect(c, Rect(7, 7 + 38, 62, 4), 0) self.pRender.fb.putstr(7 + 8, 7 + 12, "Back", c, 2)
def RenderCurrentInfo(self, state="", delay=-1): if state != "": self.pRender.fb.draw.rect(self.pRender.N, Rect(12, 268, 84, 16), 0) self.pRender.fb.putstr(12, 268, state, self.pRender.W, 2) if delay >= 0: self.pRender.fb.draw.rect(self.pRender.N, Rect(12, 268 + 24, 50, 16), 0) self.pRender.fb.putstr(12, 268 + 24, "%04d" % delay, self.pRender.W, 2)
def RenderHeaderLabelTwin(self, baseY, label1, label2): c = self.pRender.ConvRgb(0.32, 0.4, 0.8) self.pRender.fb.draw.rect(c, Rect(120, baseY, 165, 32), 0) c = self.pRender.ConvRgb(0.32, 0.4, 0.2) self.pRender.fb.putstr(140, baseY + 10, label1, c, 2) c = self.pRender.ConvRgb(0.32, 0.4, 0.8) self.pRender.fb.draw.rect(c, Rect(120 + 175, baseY, 165, 32), 0) c = self.pRender.ConvRgb(0.32, 0.4, 0.2) self.pRender.fb.putstr(140 + 175, baseY + 10, label2, c, 2)
def ApplyDirectParam(self): self.pRender.fb.draw.rect(self.pRender.N, Rect(116*0+20, 112, 60, 18), 0) self.pRender.fb.draw.rect(self.pRender.N, Rect(116*1+20, 112, 60, 18), 0) self.pRender.fb.draw.rect(self.pRender.N, Rect(116*2+20, 112, 60, 18), 0) self.pRender.fb.draw.rect(self.pRender.N, Rect(116*3+20, 112, 60, 18), 0) self.pRender.fb.putstr(116*0 + 16*1+10, 114, "%04d" % self.upBand, self.pRender.W, 2) self.pRender.fb.putstr(116*1 + 16*1+10, 114, "%04d" % self.dwBand, self.pRender.W, 2) self.pRender.fb.putstr(116*2 + 16*1+10, 114, "%04d" % self.upDelay, self.pRender.W, 2) self.pRender.fb.putstr(116*3 + 16*1+10, 114, "%04d" % self.dwDelay, self.pRender.W, 2) self.pWanem.DirectApplyEx(self.upBand, self.dwBand, self.upDelay, self.dwDelay)
def RenderApplyBt(self): c = self.pRender.ConvRgb(0.18,0.6,0.6) self.pRender.fb.draw.rect(c, Rect(350, 80*3 + 8, 110, 44), 0) self.pRender.fb.putstr(350, 80*3+64, "Wan Setting", c, 1) c = self.pRender.ConvRgb(0.18,0.3,0.3) self.pRender.fb.draw.rect(c, Rect(350, 80*3 + 8 + 44, 110, 4), 0) if self.isApply == 0: self.pRender.fb.putstr(350 + 24, 80*3 + 22, "Apply", 0, 2) else: self.pRender.fb.putstr(350 + 12, 80*3 + 22, "Release", 0, 2)
def test_border(fb, c): print " Border" fb.fill(0) fb.draw.rect(c, Rect(0, 0, fb.xres - 1, fb.yres - 1), 1) fb.draw.rect(c, Rect(2, 2, 4, 4), 0) fb.draw.rect(c, Rect(2, fb.yres - 6, 4, 4), 0) fb.draw.rect(c, Rect(fb.xres - 6, 2, 4, 4), 0) fb.draw.rect(c, Rect(fb.xres - 6, fb.yres - 6, 4, 4), 0) pause(2)
def ReleaseDirectParam(self): c = self.pRender.ConvRgb(0.94,0.8,0.9); self.pRender.fb.draw.rect(self.pRender.N, Rect(116*0+20, 112, 60, 18), 0) self.pRender.fb.draw.rect(self.pRender.N, Rect(116*1+20, 112, 60, 18), 0) self.pRender.fb.draw.rect(self.pRender.N, Rect(116*2+20, 112, 60, 18), 0) self.pRender.fb.draw.rect(self.pRender.N, Rect(116*3+20, 112, 60, 18), 0) self.pRender.fb.putstr(116*0 + 16*1+10, 114, "%04d" % self.upBand, c, 2) self.pRender.fb.putstr(116*1 + 16*1+10, 114, "%04d" % self.dwBand, c, 2) self.pRender.fb.putstr(116*2 + 16*1+10, 114, "%04d" % self.upDelay, c, 2) self.pRender.fb.putstr(116*3 + 16*1+10, 114, "%04d" % self.dwDelay, c, 2) self.pWanem.ClearEx()
def RenderGraph(self, graphDat): c = self.pRender.ConvRgb(0, 0, 0) self.pRender.fb.draw.rect(c, Rect(20, 186, 440, 30), 0) for idx in range(0, 440): xoffset = idx + 20 h = graphDat[idx] #c = self.pRender.ConvRgb(1.0/440.0*idx,0.8,0.8) c = self.pRender.ConvRgb(1.0 / 30.0 * h, 0.8, 0.8) self.pRender.fb.draw.rect(c, Rect(xoffset, 216 - h, 1, h), 0)
def RenderUpdateParamRow(self, idx, value, isUp=True): #c = self.pRender.ConvRgb(0.44,0.4,0.7); if isUp == True: c = self.pRender.N self.pRender.fb.draw.rect(c, Rect(306, 110 + 50 * idx, 46, 14), 0) c = self.pRender.ConvRgb(0.44, 0.3, 0.9) self.pRender.fb.putstr(306, 110 + 50 * idx, value, c, 2) else: c = self.pRender.N self.pRender.fb.draw.rect(c, Rect(386, 110 + 50 * idx, 46, 14), 0) c = self.pRender.ConvRgb(0.44, 0.3, 0.9) self.pRender.fb.putstr(306 + 80, 110 + 50 * idx, value, c, 2)
def RenderTab4(self): self.RenderHeaderLabel(85, " Wanem Mode") c = self.pRender.ConvRgb(0.26, 0.1, 0.9) self.pRender.fb.draw.rect(c, Rect(120, 140 + 95 - 105, 80, 44), 0) self.pRender.fb.draw.rect(c, Rect(380, 140 + 95 - 105, 80, 44), 0) self.UpdateWanemMode(0) c = self.pRender.ConvRgb(0.26, 0, 0.5) self.pRender.fb.draw.rect(c, Rect(120, 140 + 44 + 95 - 105, 80, 4), 0) self.pRender.fb.draw.rect(c, Rect(380, 140 + 44 + 95 - 105, 80, 4), 0) self.pRender.fb.putstr(120 + 20, 140 + 6 + 95 - 105, '<', 0, 5) self.pRender.fb.putstr(382 + 20 + 5, 140 + 6 + 95 - 105, '>', 0, 5) self.SetTouchActive("BtWanemL", True) self.SetTouchActive("BtWanemR", True) self.RenderHeaderLabel(194, " Hardware Control") c = self.pRender.ConvRgb(0.26, 0.1, 0.9) self.pRender.fb.draw.rect(c, Rect(240 - 70, 240, 100, 40), 0) self.pRender.fb.draw.rect(c, Rect(240 + 70, 240, 100, 40), 0) c = self.pRender.ConvRgb(0.26, 0, 0.5) self.pRender.fb.draw.rect(c, Rect(240 - 70, 240 + 40, 100, 4), 0) self.pRender.fb.putstr(254 - 70, 240 + 12, 'Reboot', 0, 2) self.pRender.fb.draw.rect(c, Rect(240 + 70, 240 + 40, 100, 4), 0) self.pRender.fb.putstr(243 + 70, 240 + 12, 'Shutdown', 0, 2) self.SetTouchActive("BtReboot", True) self.SetTouchActive("BtShutdown", True) self.pRender.fb.putstr(130 + 80, 300, self.pCTX.copyright, self.pRender.W, 1) return
def test_rgb(fb): if (fb.bits_per_pixel == 1): return print " RGB" fb.fill(0) width = (fb.xres - 1) / 3 fb.draw.rect(fb.rgb(255, 0, 0), Rect(0, 0, width, fb.yres), 0) fb.putstr(5, fb.yres / 2, 'RED', 0, 1) fb.draw.rect(fb.rgb(0, 255, 0), Rect(width, 0, width, fb.yres), 0) fb.putstr(5 + width, fb.yres / 2, 'GREEN', 0, 1) fb.draw.rect(fb.rgb(0, 0, 255), Rect(2 * width, 0, width, fb.yres), 0) fb.putstr(5 + 2 * width, fb.yres / 2, 'BLUE', 0, 1) pause(2)
def UpdateNatpMode(self, vec): self.currentNaptMode = (self.currentNaptMode + vec + len(self.naptModeLabels)) % 2 c = self.pRender.N self.pRender.fb.draw.rect(c, Rect(210, 140 + 95 + 10 - 105, 160, 24), c) c = self.pRender.ConvRgb(0.26, 0.1, 0.9) self.pRender.fb.putstr(225, 154 + 95 - 105, self.naptModeLabels[self.currentNaptMode], c, 2) self.pRender.fb.putstr( 144, 294 - 105, 'NAPT Setting change will be applied after reboot.', self.pRender.R, 1) if vec != 0: if self.currentNaptMode == 0: cmd = "cp /etc/iptables.ipv4.nat.type2 /etc/iptables.ipv4.nat" elif self.currentNaptMode == 1: cmd = "cp /etc/iptables.ipv4.nat.type3 /etc/iptables.ipv4.nat" try: subprocess.check_call(cmd.strip().split(" ")) print("Update Napt Mode Success") except subprocess.CalledProcessError: print("Update Napt Mode Fail")
def UpdateDhcpList(self, vec, isCleanup=True): if isCleanup == True: self.pRender.fb.draw.rect(self.pRender.N, Rect(120, 124, 340, 128), 0) if self.currentClientTotal > 1: block = self.currentClientTotal if (block % 2) == 1: block += 1 self.currentClientIdx = (self.currentClientIdx + vec + block) % block if self.currentClientIdx < self.currentClientTotal: info = self.dhcpClientInfo[self.currentClientIdx] self.RenderClientInfo(info[0], self.currentClientTotal, info[1], info[2], info[3], info[4]) self.SetTouchActive("BtMacReport0", True) self.SetTouchActive("BtMacTmpReport0", True) else: self.SetTouchActive("BtMacReport0", False) self.SetTouchActive("BtMacTmpReport0", False) if (self.currentClientIdx + 1) < self.currentClientTotal: info = self.dhcpClientInfo[self.currentClientIdx + 1] self.RenderClientInfo(info[0], self.currentClientTotal, info[1], info[2], info[3], info[4]) self.SetTouchActive("BtMacReport1", True) self.SetTouchActive("BtMacTmpReport1", True) else: self.SetTouchActive("BtMacReport1", False) self.SetTouchActive("BtMacTmpReport1", False)
def RenderTab1(self): self.RenderHeaderLabel(85, " NAPT Setting ") c = self.pRender.ConvRgb(0.26, 0.1, 0.9) self.pRender.fb.draw.rect(c, Rect(120, 140 + 95 - 105, 80, 44), 0) self.pRender.fb.draw.rect(c, Rect(380, 140 + 95 - 105, 80, 44), 0) self.UpdateNatpMode(0) c = self.pRender.ConvRgb(0.26, 0, 0.5) self.pRender.fb.draw.rect(c, Rect(120, 140 + 44 + 95 - 105, 80, 4), 0) self.pRender.fb.draw.rect(c, Rect(380, 140 + 44 + 95 - 105, 80, 4), 0) self.pRender.fb.putstr(120 + 20, 140 + 6 + 95 - 105, '<', 0, 5) self.pRender.fb.putstr(382 + 20 + 5, 140 + 6 + 95 - 105, '>', 0, 5) self.SetTouchActive("BtNaptL", True) self.SetTouchActive("BtNaptR", True)
def UpdateApChannel(self, vec, forceUpdate=False): if self.currentApMode == 0: channelsLen = len(self.apChannelLabelsG) else: channelsLen = len(self.apChannelLabelsA) self.currentChannel = (self.currentChannel + vec + channelsLen) % channelsLen c = self.pRender.N self.pRender.fb.draw.rect(c, Rect(166 + 175, 236, 74, 44), 0) c = self.pRender.ConvRgb(0.26, 0.1, 0.9) if self.currentApMode == 0: self.pRender.fb.putstr(168 + 175 - 18, 154 + 92, self.apChannelLabelsG[self.currentChannel], c, 3) else: self.pRender.fb.putstr(168 + 175 - 18, 154 + 92, self.apChannelLabelsA[self.currentChannel], c, 3) if vec != 0 or forceUpdate: cmd = "cp /etc/wanem/tpl/" + str( self.currentChannel) + ".prop /etc/wanem/apchannel.prop" try: subprocess.check_call(cmd.strip().split(" ")) print("Update Ap Channel Success") except subprocess.CalledProcessError: print("Update Ap Channel Fail") return
def RenderTrafficInfo(self, isUpdate=False): tcpNr = 0 udpNr = 0 c = self.pRender.ConvRgb(0.1, 0.1, 0.9) if isUpdate == False: self.pRender.fb.putstr(350, 88, "NAT SESS", c, 2) self.pRender.fb.putstr(350, 110, "TCP", c, 1) self.pRender.fb.putstr(414, 110, "UDP", c, 1) else: c = self.pRender.ConvRgb(0.0, 0.0, 0.0) self.pRender.fb.draw.rect(c, Rect(344, 120, 128, 18), 0) cmd = "cat /proc/net/nf_conntrack" conntrack = subprocess.check_output( cmd.strip().split(" ")).splitlines() for line in conntrack: elm = map(str, line.split()) if elm[2] == 'tcp': tcpNr += 1 if elm[2] == 'udp': udpNr += 1 c = self.pRender.ConvRgb(0.1, 0.1, 0.9) self.pRender.fb.putstr(350, 120, "%5d" % tcpNr, c, 2) self.pRender.fb.putstr(414, 120, "%5d" % udpNr, c, 2) return
def RenderFootBt(self, idx, label, h): if idx == 0: x = 10 - 1 elif idx == 1: x = 10 + 80 + 1 elif idx == 2: x = 198 elif idx == 3: x = 198 + 80 + 2 elif idx == 4: x = 389 c = self.pRender.ConvRgb(h, 0.6, 0.6) self.pRender.fb.draw.rect(c, Rect(x, 264, 80, 44), 0) c = self.pRender.ConvRgb(h, 0.6, 0.2) self.pRender.fb.draw.rect(c, Rect(x, 264 + 44, 80, 6), 0) self.pRender.fb.putstr(x + 4, 278, label, c, 2)
def RenderToggleFocus(self, idx, isActivey): if idx == 3: xoffset = 0 elif idx == 4: xoffset = 90 else: return if isActivey: c = self.pRender.ConvRgb(1.00, 0.9, 0.8) else: c = self.pRender.N self.pRender.fb.draw.rect(c, Rect(288 + xoffset, 264 - 2, 84, 2), 0) self.pRender.fb.draw.rect(c, Rect(288 + xoffset, 264 - 2 + 50 + 2, 84, 2), 0) self.pRender.fb.draw.rect(c, Rect(288 + xoffset, 264, 2, 50), 0) self.pRender.fb.draw.rect(c, Rect(288 + xoffset + 82, 264, 2, 50), 0)
def RenderParamRow(self, idx, UpLabel, UpValue, UpUnit, DwLabel, DwValue, DwUnit, isActive, opt = ""): c = self.pRender.ConvRgb(0.44,0.3,0.9); self.pRender.fb.putstr( 306, 110 + 50 * idx, UpValue, c, 2) self.pRender.fb.putstr( 306 + 80, 110 + 50 * idx, DwValue, c, 2) c = self.pRender.ConvRgb(0.14,0.8,0.7); self.pRender.fb.draw.rect(c, Rect(238, 84 + 50 * idx, 229, 2), 0) self.pRender.fb.draw.rect(c, Rect(238, 84 + 50 * idx + 45, 229, 2), 0) self.pRender.fb.draw.rect(c, Rect(238, 84 + 50 * idx, 2, 47), 0) self.pRender.fb.draw.rect(c, Rect(238 + 207 + 20 , 84 + 50 * idx, 2, 47), 0) self.pRender.fb.draw.rect(c, Rect(238 + 2 , 84 + 50 * idx + 2, 60, 43), 0) if opt != "": c = self.pRender.ConvRgb(0.96,0.9,0.7); self.pRender.fb.draw.rect(c, Rect(446 , 87 + 50 * idx, 18, 12), 0) c = self.pRender.ConvRgb(0, 0, 0.5); self.pRender.fb.putstr( 452, 86 + 50 * idx + 4, opt, self.pRender.W, 1) self.pRender.fb.putstr( 306 + 50, 116 + 50 * idx, UpUnit, self.pRender.W, 1) self.pRender.fb.putstr( 306 + 130, 116 + 50 * idx, DwUnit, self.pRender.W, 1) c = self.pRender.ConvRgb(0, 0, 0.5); self.pRender.fb.draw.rect(c, Rect(304, 102 + 50 * idx, 157, 1), 0) self.pRender.fb.putstr( 306, 88 + 50 * idx + 4, UpLabel, self.pRender.W, 1) self.pRender.fb.putstr( 306 + 80, 88 + 50 * idx + 4, DwLabel, self.pRender.W, 1) self.RenderParamRowBt(idx, isActive) return
def RenderParamForm(self, idx, label, value, unit, isParamOnly=False): if isParamOnly == True: self.pRender.fb.draw.rect(self.pRender.N, Rect(116 * idx + 12, 112, 60, 18), 0) else: #self.pRender.fb.draw.rect(self.pRender.N, Rect(116*idx+8, 84, 102, 150), 0) #self.pRender.fb.draw.rect(self.pRender.W, Rect(116*idx+8, 84, 102, 58), 0) self.pRender.fb.draw.rect(self.pRender.N, Rect(116 * idx + 8 + 34, 84, 62, 16), 0) self.pRender.fb.draw.rect(self.pRender.N, Rect(116 * idx + 18, 114, 82, 16), 0) c = self.pRender.ConvRgb(0.94, 0.8, 0.9) self.pRender.fb.putstr(116 * idx + 8 + 10, 114, value, c, 2) if isParamOnly == True: return c = self.pRender.ConvRgb(0.44, 0.3, 0.9) self.pRender.fb.putstr(116 * idx + 8, 85, label, c, 2) self.pRender.fb.putstr(116 * idx + 8 + 10 + 58, 120, unit, self.pRender.W, 1) c = self.pRender.ConvRgb(0.4, 0.6, 0.4) self.pRender.fb.draw.rect(c, Rect(116 * idx + 8, 100, 100, 2), 0) self.pRender.fb.draw.rect(c, Rect(116 * idx + 8, 100 + 40, 100, 2), 0) self.pRender.fb.draw.rect(c, Rect(116 * idx + 8, 100, 2, 40), 0) self.pRender.fb.draw.rect(c, Rect(116 * idx + 8 + 100, 100, 2, 42), 0)
def RenderPanel(self, panelIdx, isActive, isFocus=False, datPath=""): offsetX = 128 * panelIdx if isActive == False: c = self.pRender.ConvRgb(0.31, 0.2, 0.2) self.pRender.fb.draw.rect(c, Rect(52 + offsetX, 84, 120, 90), 0) return targetPath = self.pCTX.currentReplayData + "/" + datPath file = open(targetPath) dat = json.load(file) file.close() mtime = os.path.getmtime(targetPath) t = datetime.datetime.fromtimestamp(mtime) datMtime = t.strftime("%y/%m/%d") c = self.pRender.ConvRgb(0.31, 0.2, 0.8) self.pRender.fb.draw.rect(c, Rect(52 + offsetX, 84, 120, 90), 0) c = self.pRender.ConvRgb(0.31, 0.2, 0.1) self.pRender.fb.putstr(52 + 10 + offsetX, 84 + 10, datPath[0:8], c, 2) c = self.pRender.ConvRgb(0.31, 0.2, 0.1) self.pRender.fb.putstr(52 + 10 + offsetX, 84 + 10 + 12 * 2, "Modify", c, 1) self.pRender.fb.putstr(52 + 10 + 70 + offsetX, 84 + 10 + 12 * 2, "Time", c, 1) self.pRender.fb.putstr(52 + 10 + offsetX, 84 + 10 + 12 * 3, datMtime, c, 1) self.pRender.fb.putstr( 52 + 10 + 70 + offsetX, 84 + 10 + 12 * 3, self.seekManager.Conv2FormatedTime(dat["dps"], dat["duration"]), c, 1) self.pRender.fb.putstr(52 + 10 + offsetX, 84 + 10 + 12 * 4, "Memo", c, 1) self.pRender.fb.putstr(52 + 10 + offsetX, 84 + 10 + 12 * 5, dat["memo"][0:17], c, 1) if isFocus: self.RenderGraph(dat["graph"]) self.seekManager.Setup(dat["dps"], dat["duration"]) self.RenderSeekInfo() self.dat = dat["dat"]
def RenderDot(self, idx, isFlush): w = 10 h = 10 if isFlush: c = self.pRender.ConvRgb(0.4, 1, 1) else: c = self.pRender.ConvRgb(0.4, 0.3, 0.3) xoffset = 11 * idx + 20 self.pRender.fb.draw.rect(c, Rect(xoffset, 238, w, h), 0)