1 from Tools.Directories import resolveFilename, SCOPE_SYSETC
2 from enigma import getEnigmaVersionString
9 def getVersionString(self):
10 return self.getImageVersionString()
12 def getImageVersionString(self):
14 file = open(resolveFilename(SCOPE_SYSETC, 'image-version'), 'r')
15 lines = file.readlines()
17 splitted = x.split('=')
18 if splitted[0] == "version":
20 #0120 2005 11 29 01 16
21 #0123 4567 89 01 23 45
23 image_type = version[0] # 0 = release, 1 = experimental
30 date = '-'.join((year, month, day))
32 image_type = "Release"
33 version = '.'.join((major, minor, revision))
34 return ' '.join((image_type, version, date))
36 image_type = "Experimental"
37 return ' '.join((image_type, date))
44 def getEnigmaVersionString(self):
45 return getEnigmaVersionString()
47 def getKernelVersionString(self):
49 result = popen("uname -r","r").read().strip("\n").split('-')
50 kernel_version = result[0]
58 import socket, fcntl, struct, array, sys
59 SIOCGIFCONF = 0x8912 # sockios.h
60 is_64bits = sys.maxsize > 2**32
61 struct_size = 40 if is_64bits else 32
62 max_possible = 8 # initial value
63 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
67 # int ifc_len; /* size of buffer */
69 # char *ifc_buf; /* buffer address */
70 # struct ifreq *ifc_req; /* array of structures */
77 # char ifr_name[IFNAMSIZ]; /* Interface name */
79 # struct sockaddr ifr_addr;
85 bytes = max_possible * struct_size
86 names = array.array('B')
87 for i in range(0, bytes):
90 input_buffer = struct.pack( 'iL', bytes, names.buffer_info()[0] )
91 output_buffer = fcntl.ioctl( sock.fileno(), SIOCGIFCONF, input_buffer )
92 output_size = struct.unpack('iL', output_buffer)[0]
94 if output_size == bytes:
99 namestr = names.tostring()
101 for i in range(0, output_size, struct_size):
102 iface_name = namestr[i:i+16].split('\0', 1)[0]
103 iface_addr = socket.inet_ntoa(namestr[i+20:i+24])
104 if iface_name != 'lo':
105 ifaces.append((iface_name, iface_addr))
109 def getNetworkInfo(self):
111 for x in self.getIfaces():
112 data += "%s : %s\n" % (x[0], x[1])
113 return data or "\tnot connected"