- adding netmask to network setup
[vuplus_dvbapp] / lib / python / Components / Network.py
1 from config import *
2
3 import os
4
5 class Network:
6         def __init__(self):
7                 pass
8                 
9         def updateNetworkConfig(self):
10                 # fixme restarting and updating the network too often. possible fix: check current config and execute only if changed :/
11                 # fixme using interfaces.tmp instead of interfaces for now
12                 fp = file('/etc/network/interfaces.tmp', 'w')
13                 fp.write("auto eth0\n")
14                 if (config.network.dhcp.value == "yes"):
15                         fp.write("iface eth0 inet dhcp\n")
16                 else:
17                         fp.write("iface eth0 inet static\n")
18                         fp.write("      address %d.%d.%d.%d\n" % tuple(config.network.ip.value))
19                         fp.write("      netmask %d.%d.%d.%d\n" % tuple(config.network.netmask.value))
20                         fp.write("      gateway %d.%d.%d.%d\n" % tuple(config.network.gateway.value))
21                 fp.close()
22
23                 import os
24                 os.system("/etc/init.d/networking restart")
25                 
26         def setDHCP(self, useDHCP):
27                 if (useDHCP):
28                         print "Using DHCP"
29                         config.network.ip.enabled = False
30                         config.network.netmask.enabled = False
31                         config.network.gateway.enabled = False
32                         config.network.dns.enabled = False
33                 else:
34                         print "NOT using DHCP"
35                         config.network.ip.enabled = True
36                         config.network.netmask.enabled = True
37                         config.network.gateway.enabled = True
38                         config.network.dns.enabled = True
39                                         
40         def setIPNameserver(self, ip):
41                 resolvconf = file('/etc/resolv.conf', 'w')
42                 resolvconf.write("nameserver %d.%d.%d.%d" % tuple(ip))
43                 resolvconf.close()
44                 
45         def setMACAddress(self, mac):
46                 os.system("echo ifconfig eth0 ether %02x:%02x:%02x:%02x:%02x:%02x" % tuple(mac))
47                 
48 def InitNetwork():
49         config.network = ConfigSubsection()
50         config.network.dhcp = configElement("config.network.dhcp", configSelection, 0, ("no", "yes"))
51         config.network.ip = configElement("config.network.ip", configSequence, [192,168,1,45], (("."), 3))
52         config.network.netmask = configElement("config.network.netmask", configSequence, [255,255,255,0], (("."), 3))   
53         config.network.gateway = configElement("config.network.gateway", configSequence, [192,168,1,3], (("."), 3))
54         config.network.dns = configElement("config.network.dns", configSequence, [192,168,1,3], (("."), 3))
55         config.network.mac = configElement("config.network.mac", configSequence, [00,11,22,33,44,55], ((":"), 2))
56
57         iNetwork = Network()
58
59         def updateNetworkConfig(configElement):
60                 iNetwork.updateNetworkConfig()
61
62         def setDHCP(configElement):
63                 iNetwork.setDHCP(configElement.value)
64
65         def setIPNameserver(configElement):
66                 iNetwork.setIPNameserver(configElement.value)
67
68         def setMACAddress(configElement):
69                 iNetwork.setMACAddress(configElement.value)
70
71         # this will call the "setup-val" initial
72         config.network.dhcp.addNotifier(setDHCP)
73         config.network.ip.addNotifier(updateNetworkConfig)
74         config.network.netmask.addNotifier(updateNetworkConfig) 
75         config.network.gateway.addNotifier(updateNetworkConfig)
76         config.network.dns.addNotifier(setIPNameserver)
77         config.network.mac.addNotifier(setMACAddress)