From ae29a663f51f8438c547d73f44ef3049b7bb9216 Mon Sep 17 00:00:00 2001 From: "Chang.H.S" Date: Fri, 23 Dec 2011 10:20:39 +0900 Subject: [PATCH] add genuine vuplus plugin --- configure.ac | 2 + .../Plugins/Extensions/GenuineVuplus/Makefile.am | 9 + .../Plugins/Extensions/GenuineVuplus/__init__.py | 0 .../Extensions/GenuineVuplus/_genuinevuplus.so | Bin 0 -> 57772 bytes .../Extensions/GenuineVuplus/genuinevuplus.py | 74 ++++++++ .../Extensions/GenuineVuplus/meta/Makefile.am | 3 + .../GenuineVuplus/meta/plugin_genuinevuplus.xml | 16 ++ .../Plugins/Extensions/GenuineVuplus/plugin.py | 204 +++++++++++++++++++++ lib/python/Plugins/Extensions/Makefile.am | 3 +- 9 files changed, 310 insertions(+), 1 deletion(-) create mode 100644 lib/python/Plugins/Extensions/GenuineVuplus/Makefile.am create mode 100755 lib/python/Plugins/Extensions/GenuineVuplus/__init__.py create mode 100755 lib/python/Plugins/Extensions/GenuineVuplus/_genuinevuplus.so create mode 100644 lib/python/Plugins/Extensions/GenuineVuplus/genuinevuplus.py create mode 100755 lib/python/Plugins/Extensions/GenuineVuplus/meta/Makefile.am create mode 100755 lib/python/Plugins/Extensions/GenuineVuplus/meta/plugin_genuinevuplus.xml create mode 100755 lib/python/Plugins/Extensions/GenuineVuplus/plugin.py diff --git a/configure.ac b/configure.ac index 9044359..f74c765 100644 --- a/configure.ac +++ b/configure.ac @@ -183,6 +183,8 @@ lib/python/Plugins/Extensions/TuxboxPlugins/meta/Makefile lib/python/Plugins/Extensions/WebBrowser/Makefile lib/python/Plugins/Extensions/WebBrowser/meta/Makefile lib/python/Plugins/Extensions/WebBrowser/keymap/Makefile +lib/python/Plugins/Extensions/GenuineVuplus/Makefile +lib/python/Plugins/Extensions/GenuineVuplus/meta/Makefile lib/python/Plugins/SystemPlugins/CleanupWizard/Makefile lib/python/Plugins/SystemPlugins/CleanupWizard/meta/Makefile lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/Makefile diff --git a/lib/python/Plugins/Extensions/GenuineVuplus/Makefile.am b/lib/python/Plugins/Extensions/GenuineVuplus/Makefile.am new file mode 100644 index 0000000..377bf3d --- /dev/null +++ b/lib/python/Plugins/Extensions/GenuineVuplus/Makefile.am @@ -0,0 +1,9 @@ +installdir = $(pkglibdir)/python/Plugins/Extensions/GenuineVuplus + +SUBDIRS = meta + +install_PYTHON = \ + __init__.py \ + plugin.py \ + _genuinevuplus.so \ + genuinevuplus.py diff --git a/lib/python/Plugins/Extensions/GenuineVuplus/__init__.py b/lib/python/Plugins/Extensions/GenuineVuplus/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/lib/python/Plugins/Extensions/GenuineVuplus/_genuinevuplus.so b/lib/python/Plugins/Extensions/GenuineVuplus/_genuinevuplus.so new file mode 100755 index 0000000000000000000000000000000000000000..63b35a6152845f7abc15a73bdc6424c0a7ed0fab GIT binary patch literal 57772 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 LTV^w>i2uI;FTqF7 literal 0 HcmV?d00001 diff --git a/lib/python/Plugins/Extensions/GenuineVuplus/genuinevuplus.py b/lib/python/Plugins/Extensions/GenuineVuplus/genuinevuplus.py new file mode 100644 index 0000000..3295e28 --- /dev/null +++ b/lib/python/Plugins/Extensions/GenuineVuplus/genuinevuplus.py @@ -0,0 +1,74 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 1.3.39 +# +# Do not make changes to this file unless you know what you are doing--modify +# the SWIG interface file instead. +# This file is compatible with both classic and new-style classes. + +from sys import version_info +if version_info >= (2,6,0): + def swig_import_helper(): + from os.path import dirname + import imp + fp = None + try: + fp, pathname, description = imp.find_module('_genuinevuplus', [dirname(__file__)]) + except ImportError: + import _genuinevuplus + return _genuinevuplus + if fp is not None: + try: + _mod = imp.load_module('_genuinevuplus', fp, pathname, description) + finally: + fp.close() + return _mod + _genuinevuplus = swig_import_helper() + del swig_import_helper +else: + import _genuinevuplus +del version_info +try: + _swig_property = property +except NameError: + pass # Python < 2.2 doesn't have 'property'. +def _swig_setattr_nondynamic(self,class_type,name,value,static=1): + if (name == "thisown"): return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'SwigPyObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name,None) + if method: return method(self,value) + if (not static) or hasattr(self,name): + self.__dict__[name] = value + else: + raise AttributeError("You cannot add attributes to %s" % self) + +def _swig_setattr(self,class_type,name,value): + return _swig_setattr_nondynamic(self,class_type,name,value,0) + +def _swig_getattr(self,class_type,name): + if (name == "thisown"): return self.this.own() + method = class_type.__swig_getmethods__.get(name,None) + if method: return method(self) + raise AttributeError(name) + +def _swig_repr(self): + try: strthis = "proxy of " + self.this.__repr__() + except: strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +try: + _object = object + _newclass = 1 +except AttributeError: + class _object : pass + _newclass = 0 + + + +def requestauth(): + return _genuinevuplus.requestauth() +requestauth = _genuinevuplus.requestauth + + diff --git a/lib/python/Plugins/Extensions/GenuineVuplus/meta/Makefile.am b/lib/python/Plugins/Extensions/GenuineVuplus/meta/Makefile.am new file mode 100755 index 0000000..cacae45 --- /dev/null +++ b/lib/python/Plugins/Extensions/GenuineVuplus/meta/Makefile.am @@ -0,0 +1,3 @@ +installdir = $(datadir)/meta + +dist_install_DATA = plugin_genuinevuplus.xml diff --git a/lib/python/Plugins/Extensions/GenuineVuplus/meta/plugin_genuinevuplus.xml b/lib/python/Plugins/Extensions/GenuineVuplus/meta/plugin_genuinevuplus.xml new file mode 100755 index 0000000..c0f05ab --- /dev/null +++ b/lib/python/Plugins/Extensions/GenuineVuplus/meta/plugin_genuinevuplus.xml @@ -0,0 +1,16 @@ + + + + + + hschang + Genuine Vuplus + enigma2-plugin-systemplugins-genuinevuplus + Genuine Vuplus verification + Support for verifying the authenticity of your Vu+. + + + + + + diff --git a/lib/python/Plugins/Extensions/GenuineVuplus/plugin.py b/lib/python/Plugins/Extensions/GenuineVuplus/plugin.py new file mode 100755 index 0000000..0ee8bd1 --- /dev/null +++ b/lib/python/Plugins/Extensions/GenuineVuplus/plugin.py @@ -0,0 +1,204 @@ +from Screens.Screen import Screen +from Components.ActionMap import ActionMap +from Components.ConfigList import ConfigListScreen +from Components.config import config, getConfigListEntry, ConfigSubsection, ConfigSelection, ConfigText, ConfigInteger,NoSave +from Components.Sources.StaticText import StaticText +from Components.Label import Label +from Plugins.Plugin import PluginDescriptor +from Tools.Directories import resolveFilename, SCOPE_PLUGINS, fileExists +from Screens.MessageBox import MessageBox +from enigma import eTimer +import genuinevuplus +import os +import socket +import urllib2 + +default_email_address = "Please input your E-mail address" +config.plugins.genuinevuplus = ConfigSubsection() +config.plugins.genuinevuplus.sn_a = NoSave(ConfigSelection(default = "MA", choices = [ ("MA", _("MA")), ("MB", _("MB")), ("MC", _("MC")), ("MD", _("MD")), ("ME", _("ME")), ("MF", _("MF")), ("MG", _("MG")), ("MH", _("MH"))] )) +config.plugins.genuinevuplus.sn_b = NoSave(ConfigInteger(default = 0, limits = (1, 999999999))) +config.plugins.genuinevuplus.email = NoSave(ConfigText(default = default_email_address, visible_width = 50, fixed_size = False)) + +GENUINE_MESSAGES={ + -6 : "The server responded with an error message.", + -5 : " Connect to server failed, \nplease check your network configuration and retry.", + -4 : "UNEXPECTED ERROR.", + -3 : "INVALID SERIAL NUMBER.", + -2 : "DEVICE OPEN ERROR.", + -1 : "AUTHENTICATION FAILED.", + 0 : "AUTHENTICATION SUCESS." +} + +class GenuineVuplus(Screen, ConfigListScreen): + def __init__(self,session): + if session.desktop.size().width() > 720: + self.skin = """ + + + + + + + + + """ + + else: + self.skin=""" + + + + + + + + """ + Screen.__init__(self,session) + self.session = session + self["shortcuts"] = ActionMap(["ShortcutActions", "SetupActions" ], + { + "ok": self.Start, + "cancel": self.keyExit, + "red": self.keyExit, + "green": self.Start, + }, -2) + self.genuine = None + self.list = [] + ConfigListScreen.__init__(self, self.list, session = self.session) + self["key_red"] = StaticText(_("Exit")) + self["key_green"] = StaticText(_("Start")) + self["text1"]=Label("Press green button to start") + self["text2"]=Label("With this plugin you can verify the authenticity of your Vu+.\nFor more information, please visit our website \nhttp://vuplus.com") + self.createSetup() + self.onLayoutFinish.append(self.checkKernelVer) + self.checkTimer = eTimer() + self.checkTimer.callback.append(self.invalidKVer) + self.connectToServerTimer = eTimer() + self.connectToServerTimer.callback.append(self.connectToServer) + + def checkKernelVer(self): + KVer = os.uname()[2] + if float(KVer[:3]) < 3.1: + self.checkTimer.start(0,True) + + def invalidKVer(self): + self.session.openWithCallback(self.close, MessageBox, _("For use this plugin, you must update the kernel version to 3.1 or later"), MessageBox.TYPE_ERROR) + + def createSetup(self): + self.list = [] + self.sn_aEntry = getConfigListEntry(_("1-1. Serial Number (The first two letters of SN)"), config.plugins.genuinevuplus.sn_a) + self.sn_bEntry = getConfigListEntry(_("1-2. Serial Number (The remaining numbers of SN)"), config.plugins.genuinevuplus.sn_b) + self.emailEntry = getConfigListEntry(_("2. Contact"), config.plugins.genuinevuplus.email) + self.list.append( self.sn_aEntry ) + self.list.append( self.sn_bEntry ) + self.list.append( self.emailEntry ) + self["config"].list = self.list + self["config"].l.setList(self.list) + + def confirmValidSN(self): + sn = str(config.plugins.genuinevuplus.sn_b.value) + if len(sn) > 9: + return False + elif sn == '0': + return False + else: + while(len(sn)<9): + sn = '0'+sn + if int(sn[:2]) not in range(28): + return False + elif int(sn[2:4]) not in range(1,53): + return False + elif int(sn[-5:]) == 0: + return False + else: + return True + + def displayResult(self, ret = -5): + global GENUINE_MESSAGES + self["text1"].setText(GENUINE_MESSAGES[ret]) + self["key_green"].text = _("Restart") + + def Start(self): + self["text1"].setText("WAITING......") + if(not self.confirmValidSN()): + self.displayResult(-3) + else: + try: + ret=genuinevuplus.requestauth() + except : + self.displayResult(-4) + if ret == 0 or ret == -1: +# self.connectToServer(ret) + self.genuine = ret + self.connectToServerTimer.start(0,True) + elif ret == -2: + self.displayResult(-2) + + def getModel(self): + if fileExists("/proc/stb/info/vumodel"): + vumodel = open("/proc/stb/info/vumodel") + info=vumodel.read().strip() + vumodel.close() + return info + else: + return "unknown" + + def connectToServer(self): + sn_b = str(config.plugins.genuinevuplus.sn_b.value) + for n in range(9-len(sn_b)): + sn_b = '0'+sn_b + serial_number = config.plugins.genuinevuplus.sn_a.value + sn_b + + model =self.getModel() + + email = config.plugins.genuinevuplus.email.value + if len(email) == 0 or email == default_email_address: + email = 'none' + + URL = "http://code.vuplus.com/genuine.php?serial=%s&yn=%s&model=%s&email=%s"%(serial_number, self.genuine == 0 and 'y' or self.genuine == -1 and 'n' or 'n' ,model, email) +# print URL + response = None + retry = 0 + while 1: + try: + timeout = 10 + socket.setdefaulttimeout(timeout) + response = urllib2.urlopen(URL) + break + except urllib2.URLError, e: + if hasattr(e, 'reason'): + print '[Genuine vuplus] Failed to reach a server.' + print '[Genuine vuplus] Reason : ', e.reason + elif hasattr(e, 'code'): + print '[Genuine vuplus] The server could not fullfill the request.' + print '[Genuine vuplus] Error code: ', e.code + if retry == 0: + print "[Genuine vuplus] retry..." + retry = 1 + else: + break + except socket.timeout: + print "[Genuine vuplus] Socket time out." + if retry == 0: + print "[Genuine vuplus] retry..." + retry = 1 + else: + break + + if response is not None: + if response.read() == 'YES': + self.displayResult(self.genuine) + else: + self.displayResult(-6) + else: + self.displayResult(-5) + + def keyExit(self): + self.close() + +def main(session, **kwargs): + session.open(GenuineVuplus) + +def Plugins(**kwargs): + return [PluginDescriptor(name=_("Genuine Vuplus"), description="Support for verifying the authenticity of your Vu+.", where = PluginDescriptor.WHERE_PLUGINMENU, needsRestart = False, fnc=main)] + diff --git a/lib/python/Plugins/Extensions/Makefile.am b/lib/python/Plugins/Extensions/Makefile.am index 85d3872..a238529 100755 --- a/lib/python/Plugins/Extensions/Makefile.am +++ b/lib/python/Plugins/Extensions/Makefile.am @@ -1,6 +1,7 @@ installdir = $(pkglibdir)/python/Plugins/Extensions -SUBDIRS = TuxboxPlugins CutListEditor PicturePlayer MediaScanner MediaPlayer GraphMultiEPG SocketMMI DVDBurn Modem WebBrowser +SUBDIRS = TuxboxPlugins CutListEditor PicturePlayer MediaScanner MediaPlayer GraphMultiEPG SocketMMI DVDBurn Modem WebBrowser \ + GenuineVuplus if HAVE_LIBDDVD SUBDIRS += DVDPlayer -- 2.7.4