Merge new Webinterface to HEAD
[vuplus_dvbapp-plugin] / webinterface / src / __init__.py
1 import Plugins.Plugin
2 from Components.config import config
3 from Components.config import ConfigSubsection
4 from Components.config import ConfigSelection
5 from Components.config import ConfigInteger
6 from Components.config import ConfigSubList
7 from Components.config import ConfigSubDict
8 from Components.config import ConfigText
9 from Components.config import configfile
10 from Components.config import ConfigYesNo
11 from Components.Network import iNetwork
12
13 __version__ = "1.5beta"
14
15 config.plugins.Webinterface = ConfigSubsection()
16 config.plugins.Webinterface.enable = ConfigYesNo(default = True)
17 config.plugins.Webinterface.allowzapping = ConfigYesNo(default = True)
18 config.plugins.Webinterface.includehdd = ConfigYesNo(default = False)
19 config.plugins.Webinterface.autowritetimer = ConfigYesNo(default = False)
20 config.plugins.Webinterface.loadmovielength = ConfigYesNo(default = False)
21 config.plugins.Webinterface.version = ConfigText(__version__) # used to make the versioninfo accessible enigma2-wide, not confgurable in GUI. 
22 config.plugins.Webinterface.interfacecount = ConfigInteger(0)
23 config.plugins.Webinterface.interfaces = ConfigSubList()
24 config.plugins.Webinterface.warningsslsend = ConfigYesNo(default = False)
25
26
27 def addInterfaceConfig():
28     choices = getCofiguredAndSpecialNetworkinterfaces()
29     i = len(config.plugins.Webinterface.interfaces)
30     config.plugins.Webinterface.interfaces.append(ConfigSubsection())
31     config.plugins.Webinterface.interfaces[i].disabled = ConfigYesNo(default = False)
32     config.plugins.Webinterface.interfaces[i].adress = ConfigSelection(choices,default=choices[0])
33     config.plugins.Webinterface.interfaces[i].port = ConfigInteger(80, (0,65535))
34     config.plugins.Webinterface.interfaces[i].useauth = ConfigYesNo(default = False)
35     config.plugins.Webinterface.interfaces[i].usessl = ConfigYesNo(default = False)
36     config.plugins.Webinterface.interfacecount.value = i+1
37     return i
38
39 def getCofiguredAndSpecialNetworkinterfaces():
40     nw = iNetwork
41     choices = []
42     choices.append('0.0.0.0')
43     choices.append('127.0.0.1')
44     for adaptername in nw.ifaces:
45         extip = nw.ifaces[adaptername]['ip']
46         if nw.ifaces[adaptername]['up'] is True:
47             extip = "%i.%i.%i.%i"%(extip[0],extip[1],extip[2],extip[3])
48             choices.append(extip)
49     return choices
50
51 if config.plugins.Webinterface.interfacecount.value == 0:
52     # setting default interface
53     # 0.0.0.0:80 auth=False
54     config.plugins.Webinterface.interfaces.append(ConfigSubsection())
55     config.plugins.Webinterface.interfaces[0].disabled = ConfigYesNo(default = False)
56     
57     #needs to be refreshed before each call, because ifaces can be changed since e2 boot 
58     config.plugins.Webinterface.interfaces[0].adress = ConfigSelection(getCofiguredAndSpecialNetworkinterfaces(),default='0.0.0.0')
59     
60     config.plugins.Webinterface.interfaces[0].port = ConfigInteger(80, (0,65535))
61     config.plugins.Webinterface.interfaces[0].useauth = ConfigYesNo(default = False)
62     config.plugins.Webinterface.interfaces[0].usessl = ConfigYesNo(default = False)
63     config.plugins.Webinterface.interfacecount.value = 1
64     config.plugins.Webinterface.interfacecount.save()
65     config.plugins.Webinterface.interfaces[0].save()
66 else:    
67     for i in range(0, config.plugins.Webinterface.interfacecount.value):
68         addInterfaceConfig()
69