# -*- coding: utf-8 -*-
from Plugins.Plugin import PluginDescriptor
from Screens.Screen import Screen
from Screens.MessageBox import MessageBox
from Components.Button import Button
from Components.ActionMap import ActionMap
from Components.ConfigList import ConfigListScreen
#from Components.config import config, ConfigSubsection, ConfigDateTime, ConfigClock, ConfigText, getConfigListEntry, ConfigInteger, ConfigSequence, ConfigSelection, ConfigYesNo, configfile
from Components.config import config, ConfigSubsection, ConfigDateTime, ConfigClock, ConfigText, getConfigListEntry, ConfigInteger, ConfigSequence, ConfigSelection, ConfigYesNo
import enigma
from enigma import eTimer, iServiceInformation, eDVBLocalTimeHandler
from datetime import datetime, time as dt_time
from os import system
import gettext
import time, httplib
from Screens.Console import Console
import os
from os import popen
from Tools.Directories import fileExists
try:
from Tools.StbHardware import setRTCtime
except:
from Tools.DreamboxHardware import setRTCtime
config.plugins.SetClock = ConfigSubsection()
config.plugins.SetClock.HostName = ConfigText(default='vniiftri.ru', fixed_size=False)
#config.plugins.SetClock.NTPName01 = ConfigText(default='vniiftri2.khv.ru', fixed_size=False)
#config.plugins.SetClock.NTPName02 = ConfigText(default='vniiftri.khv.ru', fixed_size=False)
#config.plugins.SetClock.NTPName03 = ConfigText(default='ntp2.niiftri.irkutsk.ru', fixed_size=False)
#config.plugins.SetClock.NTPName04 = ConfigText(default='ntp1.niiftri.irkutsk.ru', fixed_size=False)
#config.plugins.SetClock.NTPName05 = ConfigText(default='ntp21.vniiftri.ru', fixed_size=False)
#config.plugins.SetClock.NTPName06 = ConfigText(default='ntp4.vniiftri.ru', fixed_size=False)
#config.plugins.SetClock.NTPName07 = ConfigText(default='ntp3.vniiftri.ru', fixed_size=False)
#config.plugins.SetClock.NTPName08 = ConfigText(default='ntp1.vniiftri.ru', fixed_size=False)
#config.plugins.SetClock.NTPName09 = ConfigText(default='ntp2.vniiftri.ru', fixed_size=False)
config.plugins.SetClock.NTPName01 = ConfigText(default='ntp2.vniiftri.ru', fixed_size=False)
config.plugins.SetClock.timeout = ConfigInteger(default = 1, limits = (1,120))
config.plugins.SetClock.choiceSystemTime = ConfigSelection([("0", _("Transponder Time")),("1", _("Internet Time"))], default="1")
#config.plugins.SetClock.choiceSystemTime = ConfigSelection([("1", _("Internet Time"))], default="1")
config.plugins.SetClock.useNTPminutes = ConfigSelection(default = "5", choices = [("0", _("ВЫКЛ")),("5", _("5 мин")),("15", _("15 мин")),("30", _("30 мин")), ("60", _("1 час")), ("120", _("2 часа")),("240", _("4 часа")), ("720", _("12 часов")), ("1440", _("24 часа")), ("2880", _("48 часов"))])
#config.plugins.SetClock.useNTPminutes = ConfigSelection(default = "5", choices = [("0", _("ВЫКЛ")), ("5", _("5 минут")), ("15", _("15 минут")), ("30", _("30 минут")), ("45", _("45 минут")), ("60", _("01 час")), ("120", _("02 часа")), ("240", _("04 часа")), ("360", _("06 часов")), ("480", _("08 часов")), ("600", _("10 часов")), ("720", _("12 часов")), ("1440", _("24 часа")), ("2880", _("48 часов"))])
config.plugins.SetClock.syncNTPcoldstart = ConfigYesNo(default = False)
config.plugins.SetClock.useRTCstart = ConfigYesNo(default = False)
config.plugins.SetClock.wifi_delay = ConfigInteger(0, limits=(0,120))
#config.plugins.SetClock.wifi_delay = ConfigInteger(default = 0, limits = (0,120))
config.plugins.SetClock.syncDVBtime = ConfigSelection(default = "1", choices = [("1", _('Нажмите кнопку "OK"'))])
#config.plugins.SetClock.ip = ConfigText(default="ntp2.vniiftri.ru", fixed_size = False) # Set the IP address of the preferred NTP server. Default is pool.ntp.org.
config.plugins.SetClock.ip = ConfigText(default="pool.ntp.org", fixed_size = False) # Set the IP address of the preferred NTP server. Default is pool.ntp.org.
ver = '1.1'
from NTPSyncPoller import NTPSyncPoller
ntpsyncpoller = None
def Plugins(path, **kwargs):
global plugin_path
plugin_path = path
return [PluginDescriptor(name='SetClock', description='SetClock plug-in v.' + ver + ' (c)2011 by SatCat', where=PluginDescriptor.WHERE_PLUGINMENU, icon='plugin.png', fnc=main), PluginDescriptor(name='SetClock', description='SetClock plug-in v.' + ver + '(c)2011 by SatCat', where=[PluginDescriptor.WHERE_SESSIONSTART, PluginDescriptor.WHERE_AUTOSTART], fnc=autostart)]
def main(session, servicereference = None, **kwargs):
session.open(SetClockMain)
#def autostart(reason, **kwargs):
#global session
#if reason == 0 and kwargs.has_key('session'):
#session = kwargs['session']
#session.open(AutoCorrTime)
def autostart(reason=0, **kwargs):
if reason == 0:
global ntpsyncpoller
if ntpsyncpoller is None:
ntpsyncpoller = NTPSyncPoller()
ntpsyncpoller.start()
removeNetworkStart()
elif reason == 1:
nowTime = time.time()
if nowTime > 1388534400:
setRTCtime(nowTime)
def get_time_str(res_time):
replace_months = {
'Jan': '1',
'Feb': '2',
'Mar': '3',
'Apr': '4',
'May': '5',
'June': '6',
'Jun': '6',
'July': '7',
'Jul': '7',
'Aug': '8',
'Sept': '9',
'Sep': '9',
'Oct': '10',
'Nov': '11',
'Dec': '12'
}
gmts = [
'UTC',
'GMT'
]
_res_time = res_time
try:
time_tuple = time.strptime(res_time, '%a, %d %b %Y %H:%M:%S %Z')
except ValueError:
for m1, m2 in replace_months.items():
res_time = res_time.replace(m1, m2)
for gmt in gmts:
res_time = res_time.replace(gmt, '')
res_time = res_time.split(', ')[1].strip()
try:
time_tuple = time.strptime(res_time, '%d %m %Y %H:%M:%S')
#open('/usr/lib/enigma2/python/Plugins/Extensions/SetClock/log.txt', 'a').write(_res_time)
except ValueError:
open('/usr/lib/enigma2/python/Plugins/Extensions/SetClock/log.txt', 'a').write(_res_time)
raise
t = time.localtime(time.mktime(time_tuple) - time.timezone)
return time.strftime('%Y%m%d%H%M.%S', t)
class AutoCorrTime(Screen):
skin = '''
'''
def __init__(self, session):
Screen.__init__(self, session)
self.session = session
if time.localtime().tm_year == 2000:
self.limit = 0
self.cursorTimer = eTimer()
self.cursorTimer.callback.append(self.timer)
self.cursorTimer.start(75, False)
def timer(self):
if time.localtime().tm_year > 2000:
refstr = dtt = 'n/a'
try:
service = self.session.nav.getCurrentService()
if service:
info = service.info()
if info:
refstr = info.getInfoString(iServiceInformation.sServiceref)
except:
refstr = 'ref error'
if refstr == '1:0:1:1:65:64:3840000:0:0:0:':
tc = time.time() - 189391980
dtt = datetime.fromtimestamp(tc).strftime('%Y%m%d%H%M')
enigma.eDVBLocalTimeHandler.getInstance().setUseDVBTime(False)
try:
system('/bin/date -s %s' % dtt)
print '[SetClock] Set clock!'
except:
pass
self.cursorTimer.stop()
self.limit = self.limit + 1
if self.limit > 1200:
self.cursorTimer.stop()
print '[SetClock] Stop timer (limit).'
class SetClockMain(ConfigListScreen, Screen):
skin = '''
'''
def __init__(self, session, servicelist = None, args = None):
self.servicelist = servicelist
self.skin = SetClockMain.skin
self.session = session
Screen.__init__(self, session)
self.list = []
self.date_en = ConfigDate(default=time.time())
self.entryDate = getConfigListEntry(_('Дата :'), self.date_en)
self.time_en = ConfigClock(default=time.time())
self.entryTime = getConfigListEntry(_('Время :'), self.time_en)
self.list.append(self.entryDate)
self.list.append(self.entryTime)
self.list.append(getConfigListEntry('HTTP хост :', config.plugins.SetClock.HostName))
#self.list.append(getConfigListEntry('NTP сервер № 01 :', config.plugins.SetClock.NTPName01))
#self.list.append(getConfigListEntry('NTP сервер № 02 :', config.plugins.SetClock.NTPName02))
#self.list.append(getConfigListEntry('NTP сервер № 03 :', config.plugins.SetClock.NTPName03))
#self.list.append(getConfigListEntry('NTP сервер № 04 :', config.plugins.SetClock.NTPName04))
#self.list.append(getConfigListEntry('NTP сервер № 05 :', config.plugins.SetClock.NTPName05))
#self.list.append(getConfigListEntry('NTP сервер № 06 :', config.plugins.SetClock.NTPName06))
#self.list.append(getConfigListEntry('NTP сервер № 07 :', config.plugins.SetClock.NTPName07))
#self.list.append(getConfigListEntry('NTP сервер № 08 :', config.plugins.SetClock.NTPName08))
#self.list.append(getConfigListEntry('NTP сервер № 09 :', config.plugins.SetClock.NTPName09))
self.list.append(getConfigListEntry('NTP сервер № 01 :', config.plugins.SetClock.NTPName01))
self.list.append(getConfigListEntry(_('NTP сервер таймаут [сек] :'), config.plugins.SetClock.timeout))
self.list.append(getConfigListEntry(_('Синхронизировать с NTP каждые :'), config.plugins.SetClock.useNTPminutes, _("Set how often the receiver will connect to the NTP server to sync time.")))
self.list.append(getConfigListEntry(_('Синхронизировать с NTP при старте ресивера :'), config.plugins.SetClock.syncNTPcoldstart, _("On receiver 'cold start', allow any required time adjustments to be 'stepped'.")))
self.list.append(getConfigListEntry(_('Задержка [сек] при использовании сети Wi-Fi :'), config.plugins.SetClock.wifi_delay, _("After receiver's boot, wait for the specified delay before connecting to the NTP server. This allows the Wi-Fi connection to be fully established.")))
#self.list.append(getConfigListEntry(_('Синхронизировать сейчас с текущего транспондера'), config.plugins.SetClock.syncDVBtime))
#self.list.append(getConfigListEntry(_('Синхронизация сейчас с текущего транспондера'), config.plugins.SetClock.syncDVBtime))
#self.list.append(getConfigListEntry(_('Синхронизация с транспондера :'), config.plugins.SetClock.syncDVBtime))
#self.list.append(getConfigListEntry(_('Синхронизация с текущего транспондера :'), config.plugins.SetClock.syncDVBtime))
self.list.append(getConfigListEntry(_('Синхронизировать с транспондера :'), config.plugins.SetClock.syncDVBtime, _("Get current time from the specified DVB transponder.")))
self.list.append(getConfigListEntry(_('Использовать время RTC при старте ресивера :'), config.plugins.SetClock.useRTCstart, _("When the receiver starts from deep standby, use the time provided by the Real Time Clock, if it appears to be valid.")))
self['key_red'] = Button(_('Отмена'))
self['key_green'] = Button(_('HTTP SET'))
self['key_yellow'] = Button(_('NTP SET'))
self['key_blue'] = Button(_('Установить!'))
ConfigListScreen.__init__(self, self.list, session=session)
if config.plugins.SetClock.syncNTPcoldstart.value and not fileExists("/etc/init.d/ntpdate"):
config.plugins.SetClock.syncNTPcoldstart.value = False
config.plugins.SetClock.syncNTPcoldstart.save()
if config.plugins.SetClock.useRTCstart.value and not fileExists("/etc/init.d/set-rtctime"):
config.plugins.SetClock.useRTCstart.value = False
config.plugins.SetClock.useRTCstart.save()
self['setupActions'] = ActionMap(['OkCancelActions', 'ColorActions'], {'red': self.exit,
'green': self.inet_set,
'yellow': self.NTP_set,
#'blue': self.set,
'blue': self.keyBlue,
'cancel': self.exit,
#'ok': self.pressed_ok,
'ok': self.keyGo}, -2)
self['config'].list = self.list
self['config'].l.setList(self.list)
self["config"].onSelectionChanged.append(self.configPosition)
def set(self, dtt = 0):
if self.date_en.value[2] >= 2038 and self.date_en.value[1] >= 1 and self.date_en.value[0] >= 19 and self.time_en.value[0] >= 6 and self.time_en.value[1] >= 14 and self.time_en.value[2] > 5:
self.date_en.value[2] = 2038
self.date_en.value[1] = 1
self.date_en.value[0] = 19
self.time_en.value[0] = 6
self.time_en.value[1] = 14
self.time_en.value[2] = 5
dtt = '%d%02d%02d%02d%02d.%02d' % (self.date_en.value[2],
self.date_en.value[1],
self.date_en.value[0],
self.time_en.value[0],
self.time_en.value[1],
self.time_en.value[2])
enigma.eDVBLocalTimeHandler.getInstance().setUseDVBTime(False)
try:
system('/bin/date -s %s' % dtt)
except:
pass
self.close()
#print '[SetClock] SET! ** %s' % time.strftime('%X %x (%Y) %Z')
def inet_set(self):
config.plugins.SetClock.HostName.save()
conn = httplib.HTTPConnection(config.plugins.SetClock.HostName.value)
try:
conn.request('HEAD', '/favicon.ico')
t_rtt = time.clock()
res_time = conn.getresponse().getheader('date')
except:
#self.session.open(MessageBox, 'Error: No server responce: ' + config.plugins.SetClock.HostName.value, MessageBox.TYPE_ERROR, timeout=3)
self.session.open(MessageBox, 'No server responce: ' + config.plugins.SetClock.HostName.value, MessageBox.TYPE_ERROR)
return
enigma.eDVBLocalTimeHandler.getInstance().setUseDVBTime(False)
try:
system('/bin/date -s %s' % get_time_str(res_time))
except:
pass
self.close()
#print '[SetClock] inet SET! ** %s' % time.strftime('%X %x (%Y) %Z')
#def cancel(self):
#self.close()
def save(self):
for x in self['config'].list:
x[1].save()
self.close()
def exit(self):
for x in self['config'].list:
x[1].cancel()
self.close()
def NTP_set(self):
#if (config.plugins.SetClock.NTPName01.value == "" and config.plugins.SetClock.NTPName02.value == "" and config.plugins.SetClock.NTPName03.value == "" and config.plugins.SetClock.NTPName04.value == "" and config.plugins.SetClock.NTPName05.value == "" and config.plugins.SetClock.NTPName06.value == "" and config.plugins.SetClock.NTPName07.value == "" and config.plugins.SetClock.NTPName08.value == "" and config.plugins.SetClock.NTPName09.value == ""):
#self.session.open(MessageBox, _("no timeserver configured!"), MessageBox.TYPE_INFO)
#else:
#log_file = open('/usr/lib/enigma2/python/Plugins/Extensions/SetClock/log_NTP.txt', 'a')
def execute_cmd(cmd):
#log_file.write("Начинаю выполнять команду: %s\n" % cmd)
fo = popen(cmd)
output = fo.read()
exit_code = fo.close()
#log_file.write("Результат выполнения команды: %s; вывод: `%s`; код-завершения: %i\n" % (cmd, output, 0 if exit_code is None else exit_code))
return output
if os.path.exists(os.path.join(plugin_path, "ntpdate")):
#log_file.write("Программа существует по указанному пути\n")
#Lite_OutPut_In_Console_1_stroke
#cmd = '/usr/bin/ntpdate -b -t %s %s && echo "\n"' % (config.plugins.SetClock.timeout.value, config.plugins.SetClock.NTPName.value)
#cmd = '%s%s %s %s && echo "\n"' % (plugin_path, "/ntpdate -b -t ", config.plugins.SetClock.timeout.value, config.plugins.SetClock.NTPName01.value)
#cmd = '%s%s %s %s %s %s %s %s %s %s %s %s && echo "\n"' % (plugin_path, "/ntpdate -b -t ", config.plugins.SetClock.timeout.value, config.plugins.SetClock.NTPName01.value, config.plugins.SetClock.NTPName02.value, config.plugins.SetClock.NTPName03.value, config.plugins.SetClock.NTPName04.value, config.plugins.SetClock.NTPName05.value, config.plugins.SetClock.NTPName06.value, config.plugins.SetClock.NTPName07.value, config.plugins.SetClock.NTPName08.value, config.plugins.SetClock.NTPName09.value)
#Extended_OutPut_In_Console_2_stroke
#cmd = '/usr/bin/ntpdate -v -u %s %s && echo "\n"' % (config.plugins.SetClock.timeout.value, config.plugins.SetClock.NTPName.value)
#cmd = '%s%s %s %s && echo "\n"' % (plugin_path, "/ntpdate -v -u ", config.plugins.SetClock.timeout.value, config.plugins.SetClock.NTPName01.value)
cmd = '%s%s %s %s && echo "\n"' % (plugin_path, "/ntpdate -v -u", config.plugins.SetClock.timeout.value, config.plugins.SetClock.NTPName01.value)
#cmd = '%s%s %s %s %s %s %s %s %s %s %s %s && echo "\n"' % (plugin_path, "/ntpdate -v -u ", config.plugins.SetClock.timeout.value, config.plugins.SetClock.NTPName01.value, config.plugins.SetClock.NTPName02.value, config.plugins.SetClock.NTPName03.value, config.plugins.SetClock.NTPName04.value, config.plugins.SetClock.NTPName05.value, config.plugins.SetClock.NTPName06.value, config.plugins.SetClock.NTPName07.value, config.plugins.SetClock.NTPName08.value, config.plugins.SetClock.NTPName09.value)
res = execute_cmd(cmd)
pipe = popen(cmd)
res = pipe.read()
exit_code = pipe.close()
if exit_code == 256:
self.session.open(MessageBox, _("ntpdate problem: Internet connection ok? Time server ok?"), MessageBox.TYPE_INFO)
elif res == "":
cmd = "ls -l %s%s" % (plugin_path, "/ntpdate")
res = execute_cmd(cmd)
if res[3]!="x":
cmd = "chmod 755 %s%s" % (plugin_path, "/ntpdate")
res = execute_cmd(cmd)
self.session.open(MessageBox, _("ntpdate problem: attributes for 'ntpdate' have not been correct! Fixed now! Try again!\n%s" % res), MessageBox.TYPE_INFO)
else:
self.session.open(MessageBox, _("ntpdate problem: Internet connection ok? Time server ok?"), MessageBox.TYPE_INFO)
else:
self.session.open(MyConsole, _("Системное время с NTP ..."), [cmd])
self.close()
self.close()
else:
#log_file.write("Программа не существует по указанному пути")
self.session.open(MessageBox, _("'ntpdate' не установлен !"), MessageBox.TYPE_ERROR)
#log_file.close()
#self.close()
#print '[SetClock] NTP SET! ** %s' % time.strftime('%X %x (%Y) %Z')
#self.close()
#print '[SetClock] NTP SET! ** %s' % time.strftime('%X %x (%Y) %Z')
def addNTPcoldstart(self):
if os.path.exists("/usr/sbin/ntpdate") or os.path.exists("/usr/sbin/ntpd"):
if os.path.exists("/usr/sbin/ntpdate"):
cmd = "echo -e '#!/bin/sh\n\nsleep %s\n\n[ -x /usr/sbin/ntpdate ] && /usr/sbin/ntpdate -s -u %s\n\nexit 0' >> /etc/init.d/ntpdate" % (str(config.plugins.SetClock.wifi_delay.value), config.plugins.SetClock.ip.value)
elif os.path.exists("/usr/sbin/ntpd"):
cmd = "echo -e '#!/bin/sh\n\nsleep %s\n\n[ -x usr/sbin/ntpd ] && /usr/sbin/ntpd -dnqp %s\n\nexit 0' >> /etc/init.d/ntpdate" % (str(config.plugins.SetClock.wifi_delay.value), config.plugins.SetClock.ip.value)
if fileExists("/etc/init.d/ntpdate"):
os.chmod("/etc/init.d/ntpdate", 0755)
os.system("update-rc.d ntpdate defaults 99")
else:
os.system(cmd)
if fileExists("/etc/init.d/ntpdate"):
os.chmod("/etc/init.d/ntpdate", 0755)
os.system("update-rc.d ntpdate defaults 99")
else:
config.plugins.SetClock.syncNTPcoldstart.value = False
else:
self.session.open(MessageBox,"'ntpd' / " + _("'ntpdate' not installed !"), MessageBox.TYPE_ERROR, timeout=3)
config.plugins.SetClock.syncNTPcoldstart.value = False
def removeNTPcoldstart(self):
os.system("update-rc.d -f ntpdate remove")
if fileExists("/etc/init.d/ntpdate"):
os.system("rm -rf /etc/init.d/ntpdate")
def addUseRTC(self):
if fileExists("/etc/init.d/set-rtctime"):
os.chmod("/etc/init.d/set-rtctime", 0755)
os.system("update-rc.d set-rtctime defaults 40")
else:
#os.system("cp /usr/lib/enigma2/python/Plugins/SystemPlugins/SystemTime/set-rtctime /etc/init.d/set-rtctime")
os.system("cp /usr/lib/enigma2/python/Plugins/Extensions/SetClock/set-rtctime /etc/init.d/set-rtctime")
if fileExists("/etc/init.d/set-rtctime"):
os.chmod("/etc/init.d/set-rtctime", 0755)
os.system("update-rc.d set-rtctime defaults 40")
else:
#self.session.open(MessageBox,_("Script 'set-rtctime' not found !"), MessageBox.TYPE_ERROR, timeout=3)
self.session.open(MessageBox,_("Script 'set-rtctime' not found !"), MessageBox.TYPE_ERROR)
config.plugins.SetClock.useRTCstart.value = False
def removeUseRTC(self):
os.system("update-rc.d -f set-rtctime remove")
def keyGo(self):
sel = self["config"].getCurrent() and self["config"].getCurrent()[0]
if sel == _("Синхронизация с текущего транспондера :"):
#log_file = open('/usr/lib/enigma2/python/Plugins/Extensions/SetClock/log_DVB.txt', 'a')
def execute_cmd(cmd):
#log_file.write("Начинаю выполнять команду: %s\n" % cmd)
fo = popen(cmd)
output = fo.read()
exit_code = fo.close()
#log_file.write("Результат выполнения команды: %s; вывод: `%s`; код-завершения: %i\n" % (cmd, output, 0 if exit_code is None else exit_code))
return output
#if os.path.exists("/usr/bin/dvbdate"):
if os.path.exists(os.path.join(plugin_path, "dvbdate")):
#log_file.write("Программа существует по указанному пути\n")
#cmd = '/usr/bin/dvbdate -p -s -f && echo "\n"'
cmd = '%s%s && echo "\n"' % (plugin_path, "/dvbdate -p -s -f")
res = execute_cmd(cmd)
pipe = popen(cmd)
res = pipe.read()
exit_code = pipe.close()
if exit_code == 256:
self.session.open(MessageBox, _("dvbdate problem: Satellite connection ok?"), MessageBox.TYPE_INFO)
elif res == "":
cmd = "ls -l %s%s" % (plugin_path, "/dvbdate")
res = execute_cmd(cmd)
if res[3]!="x":
cmd = "chmod 755 %s%s" % (plugin_path, "/dvbdate")
res = execute_cmd(cmd)
self.session.open(MessageBox, _("dvbdate problem: attributes for 'dvbdate' have not been correct! Fixed now! Try again!\n%s" % res), MessageBox.TYPE_INFO)
else:
self.session.open(MessageBox, _("dvbdate problem: Satellite connection ok?"), MessageBox.TYPE_INFO)
else:
self.session.open(MyConsole, _("Системное время с DVB ..."), [cmd])
self.close()
self.close()
else:
#log_file.write("Программа не существует по указанному пути")
self.session.open(MessageBox, _("'dvbdate' не установлен !"), MessageBox.TYPE_ERROR)
#log_file.close()
if (sel == _("Дата :") or sel == _("Время :")):
self.set()
if (sel == _("HTTP хост :") or sel == _("NTP сервер № 01 :") or sel == _("NTP сервер таймаут [сек] :") or sel == _("Синхронизировать с NTP каждые :") or sel == _("Синхронизировать с NTP при старте ресивера :") or sel == _("Использовать время RTC при старте ресивера :") or sel == _("Задержка [сек] при использовании сети Wi-Fi :")):
if (sel == _("HTTP хост :") or sel == _("NTP сервер № 01 :") or sel == _("NTP сервер таймаут [сек] :") or sel == _("Синхронизировать с NTP каждые :")):
if sel == _("HTTP хост :"):
config.plugins.SetClock.HostName.save()
if sel == _("NTP сервер № 01 :"):
config.plugins.SetClock.NTPName01.save()
if sel == _("NTP сервер таймаут [сек] :"):
config.plugins.SetClock.timeout.save()
if sel == _("Синхронизировать с NTP каждые :"):
config.plugins.SetClock.useNTPminutes.save()
if (sel == _("Синхронизировать с NTP при старте ресивера :") or sel == _("Использовать время RTC при старте ресивера :") or sel == _("Задержка [сек] при использовании сети Wi-Fi :")):
if config.plugins.SetClock.syncNTPcoldstart.value:
if config.plugins.SetClock.ip.value or config.plugins.SetClock.wifi_delay.value:
self.removeNTPcoldstart()
self.addNTPcoldstart()
else:
self.removeNTPcoldstart()
if config.plugins.SetClock.useRTCstart.value:
self.addUseRTC()
else:
self.removeUseRTC()
if config.plugins.SetClock.choiceSystemTime.value == "0":
eDVBLocalTimeHandler.getInstance().setUseDVBTime(True)
#config.misc.useTransponderTime.value = True
#config.misc.useTransponderTime.save()
else:
eDVBLocalTimeHandler.getInstance().setUseDVBTime(False)
#config.misc.useTransponderTime.value = False
#config.misc.useTransponderTime.save()
removeNetworkStart()
config.plugins.SetClock.save()
#configfile.save()
#self.close()
self.session.open(MessageBox, _("Настройки сохранены !"), MessageBox.TYPE_INFO)
self.exit()
def configPosition(self):
self["key_blue"].setText("")
sel = self["config"].getCurrent() and self["config"].getCurrent()[0]
if (sel == _("Дата :") or sel == _("Время :")):
self["key_blue"].setText(_("Установить!"))
if (sel == _("HTTP хост :") or sel == _("NTP сервер № 01 :") or sel == _("NTP сервер таймаут [сек] :") or sel == _("Синхронизировать с NTP каждые :") or sel == _("Синхронизировать с NTP при старте ресивера :") or sel == _("Использовать время RTC при старте ресивера :") or sel == _("Задержка [сек] при использовании сети Wi-Fi :")):
self["key_blue"].setText(_("Сохранить"))
if sel == _("Синхронизация с текущего транспондера :"):
self["key_blue"].setText(_("Выбор транспондера"))
def keyBlue(self):
if self["key_blue"].getText() == _("Выбор транспондера"):
if self.servicelist is None:
for (dlg,flag) in self.session.dialog_stack:
if dlg.__class__.__name__ == "InfoBar":
self.servicelist = dlg.servicelist
break
if not self.servicelist is None:
self.session.execDialog(self.servicelist)
else:
self.keyGo()
class MyConsole(Console):
skin = '''
'''
def __init__(self, session, title = "My Console...", cmdlist = None):
Console.__init__(self, session, title, cmdlist)
date_limits = [(1, 31), (1, 12), (1970, 2090)]
class ConfigDate(ConfigSequence):
def __init__(self, default):
d = time.localtime(default)
ConfigSequence.__init__(self, seperator=".", limits=date_limits, default=[d.tm_mday, d.tm_mon, d.tm_year])
time_limits = [(0, 23), (0, 59), (0, 59)]
class ConfigClock(ConfigSequence):
def __init__(self, default):
d = time.localtime(default)
ConfigSequence.__init__(self, seperator=":", limits=time_limits, default=[d.tm_hour, d.tm_min, d.tm_sec])
def removeNetworkStart():
if os.path.exists("/usr/bin/ntpdate-sync"):
os.system("rm -rf /usr/bin/ntpdate-sync && rm -rf /etc/network/if-up.d/ntpdate-sync")