# -*- coding: utf-8 -*-
from enigma import eTimer
from Components.config import config
from Components.Console import Console
from enigma import eTimer, eDVBLocalTimeHandler, eEPGCache
try:
from Tools.StbHardware import setRTCtime
except:
from Tools.DreamboxHardware import setRTCtime
from time import time
from Tools import Notifications
from Screens.MessageBox import MessageBox
import os.path
from os import popen
import datetime
class NTPSyncPoller:
"""Automatically Poll NTP"""
run_num=0
def __init__(self):
self.timer = eTimer()
self.Console = Console()
def start(self):
if not self.timer.callback:
self.timer.callback.append(self.NTPStart)
self.timer.startLongTimer(0)
def stop(self):
if self.timer.callback:
self.timer.callback.remove(self.NTPStart)
self.timer.stop()
def NTPStart(self):
NTPSyncPoller.run_num+=1
dt=datetime.datetime.now()
open('/usr/lib/enigma2/python/Plugins/Extensions/SetClock/log.txt', 'a').write(str(dt)+' Run# '+str(NTPSyncPoller.run_num)+'\n')
if os.path.exists("/usr/lib/enigma2/python/Plugins/Extensions/SetClock/ntpdate"):
if NTPSyncPoller.run_num==1: #1
open('/usr/lib/enigma2/python/Plugins/Extensions/SetClock/log.txt', 'a').write(str(dt)+' First run!\n')
#pass
self.timer.startLongTimer(int(config.plugins.SetClock.useNTPminutes.value) * 60)
else:#2
open('/usr/lib/enigma2/python/Plugins/Extensions/SetClock/log.txt', 'a').write(str(dt)+' NextRun# '+str(NTPSyncPoller.run_num)+'\n')
if config.plugins.SetClock.choiceSystemTime.value == "1":
if not config.plugins.SetClock.useNTPminutes.value == "0":
cmd = '/usr/lib/enigma2/python/Plugins/Extensions/SetClock/ntpdate -s -u %s' % config.plugins.SetClock.ip.value
res = popen(cmd).read()
if res == "":
cmd = "ls -l %s" % ("/usr/lib/enigma2/python/Plugins/Extensions/SetClock/ntpdate")
res = popen(cmd).read()
if res[3]!="x":
cmd = "chmod 755 %s" % ("/usr/lib/enigma2/python/Plugins/Extensions/SetClock/ntpdate")
res = popen(cmd).read()
Notifications.AddPopup(text=_('"ntpdate" problem: attributes for "ntpdate" have not been correct! Fixed now! Try again!%s' % res), type=MessageBox.TYPE_INFO, timeout=10, id='NTPSyncPoller')
else:
#if not res == "":
self.Console.ePopen(cmd, self.update_schedule)
self.timer.startLongTimer(int(config.plugins.SetClock.useNTPminutes.value) * 60)
else:
Notifications.AddPopup(text=_('"ntpdate" не установлен !'), type=MessageBox.TYPE_INFO, timeout=10, id='NTPSyncPoller')
def update_schedule(self, result = None, retval = None, extra_args = None):
if eDVBLocalTimeHandler.getInstance().ready():
nowTime = time()
if nowTime > 1388534400:
setRTCtime(nowTime)
if config.plugins.SetClock.choiceSystemTime.value == "0":
eDVBLocalTimeHandler.getInstance().setUseDVBTime(True)
else:
eDVBLocalTimeHandler.getInstance().setUseDVBTime(False)
try:
eEPGCache.getInstance().timeUpdated()
except:
pass
Comments