예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
 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)
예제 #4
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)
예제 #5
0
    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)
예제 #6
0
    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
예제 #7
0
    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)
예제 #8
0
    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)
예제 #9
0
 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)
예제 #10
0
 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)
예제 #11
0
    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)
예제 #12
0
	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)
예제 #13
0
	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)
예제 #14
0
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)
예제 #15
0
	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()
예제 #16
0
    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)
예제 #17
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)
예제 #18
0
    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
예제 #19
0
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)
예제 #20
0
    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")
예제 #21
0
    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)
예제 #22
0
    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)
예제 #23
0
    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
예제 #24
0
    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
예제 #25
0
    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)
예제 #26
0
 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)
예제 #27
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
예제 #28
0
    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)
예제 #29
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"]
예제 #30
0
 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)