#!/usr/bin/env python
# -*- coding: utf-8 -*-
from Plugins.Plugin import PluginDescriptor
from Screens.Screen import Screen
from Components.Label import Label
from Components.Button import Button
from Components.ActionMap import ActionMap
from enigma import eTimer
import os
try:
    from urllib.request import urlopen
except ImportError:
    from urllib2 import urlopen

class IcamPanel(Screen):
    skin = "<screen position=\"center,center\" size=\"400,200\" title=\"iCAM\"><widget name=\"t\" position=\"10,10\" size=\"380,180\" font=\"Console;14\"/></screen>"
    
    def __init__(self, session):
        Screen.__init__(self, session)
        self.mac = "N/A"
        for iface in ["eth0", "wlan0", "eth1"]:
            try:
                with open("/sys/class/net/%s/address" % iface) as f:
                    m = f.read().strip().upper()
                    if len(m) == 17 and m != "00:00:00:00:00:00":
                        self.mac = m
                        break
            except: pass
        self.server = "https://share1-cs.dyndns.org/icam"
        self.hb_url = self.server + "/admin/api.php?action=heartbeat&mac="
        self.timer = eTimer()
        self.timer.callback.append(self.heartbeat)
        self["t"] = Label("iCAM Panel\nMAC: %s\nHeartbeat attivo ogni 2min" % self.mac)
        self.onLayoutFinish.append(self.start)
    
    def start(self):
        self.heartbeat()
        self.timer.start(120000, True)
    
    def get_channel(self):
        try:
            if os.path.exists("/proc/stb/lcd/servicename"):
                with open("/proc/stb/lcd/servicename") as f:
                    ch = f.read().strip()
                    if ch and ch != "None": return ch[:30]
        except: pass
        return "Idle"
    
    def heartbeat(self):
        if self.mac != "N/A":
            try:
                ch = self.get_channel()
                os.system("wget -q --no-check-certificate -O /dev/null \"%s&channel=%s\" &" % (self.hb_url + self.mac, ch))
            except: pass
            finally: self.timer.start(120000, True)

def main(session, **kwargs): session.open(IcamPanel)
def Plugins(**kwargs): return PluginDescriptor(name="iCAM Panel", description="Client", where=PluginDescriptor.WHERE_PLUGINMENU, fnc=main)

