# -*- 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")