diff options
Diffstat (limited to 'module/plugins/hooks/MultiHome.py')
| -rw-r--r-- | module/plugins/hooks/MultiHome.py | 87 | 
1 files changed, 0 insertions, 87 deletions
diff --git a/module/plugins/hooks/MultiHome.py b/module/plugins/hooks/MultiHome.py deleted file mode 100644 index c9f6fc30c..000000000 --- a/module/plugins/hooks/MultiHome.py +++ /dev/null @@ -1,87 +0,0 @@ -# -*- coding: utf-8 -*- - -from time import time - -from module.plugins.Hook import Hook - - -class MultiHome(Hook): -    __name__    = "MultiHome" -    __type__    = "hook" -    __version__ = "0.12" - -    __config__ = [("interfaces", "str", "Interfaces", "None")] - -    __description__ = """Ip address changer""" -    __license__     = "GPLv3" -    __authors__     = [("mkaay", "mkaay@mkaay.de")] - - -    #@TODO: Remove in 0.4.10 -    def initPeriodical(self): -        pass - - -    def setup(self): -        self.register = {} -        self.interfaces = [] -        self.parseInterfaces(self.getConfig("interfaces").split(";")) -        if not self.interfaces: -            self.parseInterfaces([self.config['download']['interface']]) -            self.setConfig("interfaces", self.toConfig()) - - -    def toConfig(self): -        return ";".join(i.adress for i in self.interfaces) - - -    def parseInterfaces(self, interfaces): -        for interface in interfaces: -            if not interface or str(interface).lower() == "none": -                continue -            self.interfaces.append(Interface(interface)) - - -    def coreReady(self): -        requestFactory = self.core.requestFactory -        oldGetRequest = requestFactory.getRequest - - -        def getRequest(pluginName, account=None): -            iface = self.bestInterface(pluginName, account) -            if iface: -                iface.useFor(pluginName, account) -                requestFactory.iface = lambda: iface.adress -                self.logDebug("Using address", iface.adress) -            return oldGetRequest(pluginName, account) - -        requestFactory.getRequest = getRequest - - -    def bestInterface(self, pluginName, account): -        best = None -        for interface in self.interfaces: -            if not best or interface.lastPluginAccess(pluginName, account) < best.lastPluginAccess(pluginName, account): -                best = interface -        return best - - -class Interface(object): - -    def __init__(self, adress): -        self.adress = adress -        self.history = {} - - -    def lastPluginAccess(self, pluginName, account): -        if (pluginName, account) in self.history: -            return self.history[(pluginName, account)] -        return 0 - - -    def useFor(self, pluginName, account): -        self.history[(pluginName, account)] = time() - - -    def __repr__(self): -        return "<Interface - %s>" % self.adress  | 
