diff --git a/NeoBoot/.info b/NeoBoot/.info
new file mode 100644
index 0000000..8ec50ee
--- /dev/null
+++ b/NeoBoot/.info
@@ -0,0 +1,40 @@
+#!/bin/sh
+#Wspierane tunery satelitarne:
+#Machine BCM - getCPUSoC():
+
+#cat /proc/stb/info/chipset:
+Ultimo4k : 7444s
+Solo4k : 7376
+Zero 4K : 72604
+Duo4k : 7278 #BCM7278
+Uno 4K : 7252s
+Uno4kSE : 7252s
+Ultimo : 7405(with 3D)
+Uno : 7405(with 3D)
+Duo : 7335
+Duo2 : 7424
+Zero : 7362
+Solo : 7325
+Solose : 7241
+Solose-v2 : 7241
+Solo2 : 7356
+
+Formuler F1 : bcm7356
+Formuler F3 : 7362
+
+Miraclebox MBmini : bcm7358
+Miraclebox Micro : bcm7362
+Miraclebox Ultra : bcm7424
+
+Octagon Sf8008 : 3798mv200
+Octagon SF4008 : bcm7251
+
+Zgemma h7S : bcm7251s
+Zgemma H9S :
+
+AX HD60 4K : hi3798mv200 root@ax60:~# cat /etc/hostname : ax60
+
+OSmini : BCM7362
+
+atemio6000 : bcm7362
+
diff --git a/NeoBoot/__init__.py b/NeoBoot/__init__.py
new file mode 100644
index 0000000..05c47ff
--- /dev/null
+++ b/NeoBoot/__init__.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+
+from Components.Language import language
+from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_LANGUAGE
+import os, gettext
+PluginLanguageDomain = 'NeoBoot'
+PluginLanguagePath = 'Extensions/NeoBoot/locale'
+
+def localeInit():
+ lang = language.getLanguage()[:2]
+ os.environ['LANGUAGE'] = lang
+ print '[NeoBoot] set language to ', lang
+ gettext.bindtextdomain(PluginLanguageDomain, resolveFilename(SCOPE_PLUGINS, PluginLanguagePath))
+
+
+def _(txt):
+ t = gettext.dgettext(PluginLanguageDomain, txt)
+ if t == txt:
+ #print '[NeoBoot] fallback to default translation for', txt
+ t = gettext.dgettext('enigma2', txt)
+ return t
+
+
+localeInit()
+language.addCallback(localeInit)
diff --git a/NeoBoot/neo.png b/NeoBoot/neo.png
new file mode 100644
index 0000000..7d924c2
Binary files /dev/null and b/NeoBoot/neo.png differ
diff --git a/NeoBoot/neologo.mvi b/NeoBoot/neologo.mvi
new file mode 100644
index 0000000..773c5cd
Binary files /dev/null and b/NeoBoot/neologo.mvi differ
diff --git a/NeoBoot/plugin.py b/NeoBoot/plugin.py
new file mode 100644
index 0000000..c483660
--- /dev/null
+++ b/NeoBoot/plugin.py
@@ -0,0 +1,1492 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+from __init__ import _
+from Plugins.Extensions.NeoBoot.files import Harddisk
+from Plugins.Extensions.NeoBoot.files.stbbranding import getKernelVersionString, getKernelImageVersion, getCPUtype, getCPUSoC, getImageNeoBoot, getBoxVuModel, getBoxHostName, getTunerModel
+from enigma import getDesktop
+from enigma import eTimer
+from Screens.Screen import Screen
+from Screens.Console import Console
+from Screens.MessageBox import MessageBox
+from Screens.ChoiceBox import ChoiceBox
+from Screens.VirtualKeyBoard import VirtualKeyBoard
+from Screens.Standby import TryQuitMainloop
+from Components.About import about
+from Components.Sources.List import List
+from Components.Button import Button
+from Components.ActionMap import ActionMap, NumberActionMap
+from Components.GUIComponent import *
+from Components.MenuList import MenuList
+from Components.Input import Input
+from Components.Label import Label
+from Components.ProgressBar import ProgressBar
+from Components.ScrollLabel import ScrollLabel
+from Components.Pixmap import Pixmap, MultiPixmap
+from Components.config import *
+from Components.ConfigList import ConfigListScreen
+from Tools.LoadPixmap import LoadPixmap
+from Tools.Directories import fileExists, pathExists, createDir, resolveFilename, SCOPE_PLUGINS
+from os import system, listdir, mkdir, chdir, getcwd, rename as os_rename, remove as os_remove, popen
+from os.path import dirname, isdir, isdir as os_isdir
+import os
+import time
+# Copyright (c) , gutosie license
+#
+# Redystrybucja wersji programu i dokonywania modyfikacji JEST DOZWOLONE, pod warunkiem zachowania niniejszej informacji o prawach autorskich.
+# Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użtkowania tego programu oraz za wykorzystanie zawartych tu informacji.
+# Modyfikacje przeprowadzasz na wlasne ryzyko!!!
+# O wszelkich zmianach prosze poinformowac na http://all-forum.cba.pl w temacie pod nazwa -#[NEOBOOT]#-
+
+# This text/program is free document/software. Redistribution and use in
+# source and binary forms, with or without modification, ARE PERMITTED provided
+# save this copyright notice. This document/program is distributed WITHOUT any
+# warranty, use at YOUR own risk.
+
+PLUGINVERSION = '7.00 '
+UPDATEVERSION = '7.15'
+
+class MyUpgrade(Screen):
+ screenwidth = getDesktop(0).size().width()
+ if screenwidth and screenwidth == 1920:
+ skin = """
+
+
+ \
+ {"template": [MultiContentEntryText(pos = (90, 1), size = (920, 66), flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 0),
+ MultiContentEntryPixmapAlphaTest(pos = (8, 4), size = (66, 66), png = 1),
+ ],
+ "fonts": [gFont("Regular", 40)],
+ "itemHeight": 66
+ }
+
+
+
+
+ """
+ else:
+ skin = """
+
+
+
+ {"template": [MultiContentEntryText(pos = (90, 1), size = (920, 66), flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 0),
+ MultiContentEntryPixmapAlphaTest(pos = (8, 4), size = (66, 66), png = 1),
+ ],
+ "fonts": [gFont("Regular", 40)],
+ "itemHeight": 66
+ }
+
+
+
+
+ """
+ __module__ = __name__
+
+ def __init__(self, session):
+ Screen.__init__(self, session)
+ self.list = []
+ self['list'] = List(self.list)
+ self.wybierz()
+ self['actions'] = ActionMap(['WizardActions', 'ColorActions'], {'ok': self.KeyOk,
+ 'back': self.changever})
+
+ def changever(self):
+ ImageChoose = self.session.open(NeoBootImageChoose)
+ if fileExists('/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location'):
+ out = open('/media/neoboot/ImageBoot/.version', 'w')
+ out.write(PLUGINVERSION)
+ out.close()
+ self.close()
+ else:
+ self.close(self.session.open(MessageBox, _('No file location NeoBot, do re-install the plugin.'), MessageBox.TYPE_INFO, 10))
+ self.close()
+ return ImageChoose
+
+ def wybierz(self):
+ self.list = []
+ mypath = '/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot'
+ if not fileExists(mypath + 'icons'):
+ mypixmap = '/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/images/ok.png'
+ png = LoadPixmap(mypixmap)
+ res = (_('Update neoboot in all images ?'), png, 0)
+ self.list.append(res)
+ self['list'].list = self.list
+
+ def KeyOk(self):
+ self.sel = self['list'].getCurrent()
+ if self.sel:
+ self.sel = self.sel[2]
+ if self.sel == 0 and self.session.open(MyUpgrade2):
+ pass
+ self.close()
+
+
+class MyUpgrade2(Screen):
+ screenwidth = getDesktop(0).size().width()
+ if screenwidth and screenwidth == 1920:
+ skin = ''
+ else:
+ skin = ''
+
+ def __init__(self, session):
+ Screen.__init__(self, session)
+ self['lab1'] = Label(_('NeoBoot: Upgrading in progress\nPlease wait...'))
+ self.activityTimer = eTimer()
+ self.activityTimer.timeout.get().append(self.updateInfo)
+ self.onShow.append(self.startShow)
+
+ def startShow(self):
+ self.activityTimer.start(10)
+
+ def updateInfo(self):
+ self.activityTimer.stop()
+ f2 = open('/media/neoboot/ImageBoot/.neonextboot', 'r')
+ mypath2 = f2.readline().strip()
+ f2.close()
+ if fileExists('/.multinfo'):
+ self.myClose(_('Sorry, NeoBoot can installed or upgraded only when booted from Flash.'))
+ self.close()
+ elif mypath2 != 'Flash':
+ self.myClose(_('Sorry, NeoBoot can installed or upgraded only when booted from Flash.'))
+ self.close()
+ else:
+ for fn in listdir('/media/neoboot/ImageBoot'):
+ dirfile = '/media/neoboot/ImageBoot/' + fn
+ if isdir(dirfile):
+ target = dirfile + '/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot'
+ cmd = 'rm -r ' + target + ' > /dev/null 2>&1'
+ system(cmd)
+ cmd = 'cp -r /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot ' + target
+ system(cmd)
+
+ out = open('/media/neoboot/ImageBoot/.version', 'w')
+ out.write(PLUGINVERSION)
+ out.close()
+ self.myClose(_('NeoBoot successfully updated. You can restart the plugin now.\nHave fun !!!'))
+
+
+ def myClose(self, message):
+ ImageChoose = self.session.open(NeoBootImageChoose)
+ self.session.open(MessageBox, message, MessageBox.TYPE_INFO)
+ self.close(ImageChoose)
+
+
+class MyHelp(Screen):
+ screenwidth = getDesktop(0).size().width()
+ if screenwidth and screenwidth == 1920:
+ skin = """
+
+
+ """
+ else:
+ skin = """
+
+ """
+ __module__ = __name__
+
+ def __init__(self, session):
+ Screen.__init__(self, session)
+ self['lab1'] = ScrollLabel('')
+ self['actions'] = ActionMap(['WizardActions', 'ColorActions', 'DirectionActions'], {'back': self.close,
+ 'ok': self.close,
+ 'up': self['lab1'].pageUp,
+ 'left': self['lab1'].pageUp,
+ 'down': self['lab1'].pageDown,
+ 'right': self['lab1'].pageDown})
+ self['lab1'].hide()
+ self.updatetext()
+
+ def updatetext(self):
+ message = _('NeoBoot Ver. ' + PLUGINVERSION + ' Enigma2\n\nDuring the entire installation process does not restart the receiver !!!\n\n')
+ message += _('NeoBoot Ver. updates ' + UPDATEVERSION + ' \n\n')
+ message = _('For proper operation NeoBota type device is required USB stick or HDD, formatted on your system files Linux ext3 or ext4..\n\n')
+ message += _('1. If you do not have a media formatted with the ext3 or ext4 is open to the Device Manager , select the drive and format it.\n\n')
+ message += _('2. Go to the device manager and install correctly hdd and usb ...\n\n')
+ message += _('3. Install NeoBota on the selected device.\n\n')
+ message += _('4. Install the needed packages...\n\n')
+ message += _('5. For proper installation XenoBota receiver must be connected to the Internet.\n\n')
+ message += _('6. In the event of a problem with the installation cancel and inform the author of the plug of a problem.\n\n')
+ message += _('Have fun !!!')
+ self['lab1'].show()
+ self['lab1'].setText(message)
+
+
+class Opis(Screen):
+ screenwidth = getDesktop(0).size().width()
+ if screenwidth and screenwidth == 1920:
+ skin = """
+
+
+
+
+
+
+
+
+ """
+ else:
+ skin = """
+
+
+
+
+
+
+
+
+ """
+ __module__ = __name__
+
+ def __init__(self, session):
+ Screen.__init__(self, session)
+ self['key_red'] = Label(_('Remove NeoBoot of STB'))
+ self['lab1'] = ScrollLabel('')
+ self['actions'] = ActionMap(['WizardActions', 'ColorActions', 'DirectionActions'], {'back': self.close,
+ 'red': self.delete,
+ 'ok': self.close,
+ 'up': self['lab1'].pageUp,
+ 'left': self['lab1'].pageUp,
+ 'down': self['lab1'].pageDown,
+ 'right': self['lab1'].pageDown})
+ self['lab1'].hide()
+ self.updatetext()
+
+ def updatetext(self):
+ message = _('NeoBoot Ver. ' + PLUGINVERSION + '\n\n')
+ message += _('NeoBoot Ver. updates ' + UPDATEVERSION + '\n\n')
+ message += _('1. Requirements: For proper operation of the device NeoBota are required USB stick or HDD.\n\n')
+ message += _('2. NeoBot is fully automated\n\n')
+ message += _('3. To install a new image in MultiBocie should be sent by FTP software file compressed in ZIP or NIF to the folder: \n/media/neoboot/ImagesUpload and remote control plugin NeoBoot use the green button \n\n')
+ message += _('4. For proper installation and operation of additional image multiboot, use only the image intended for your receiver. !!!\n\n')
+ message += _('5. By installing the multiboot images of a different type than for your model STB DOING THIS AT YOUR OWN RISK !!!\n\n')
+ message += _('6. The installed to multiboot images, it is not indicated update to a newer version.\n\n')
+ message += _('The authors plug NeoBot not liable for damage a receiver, NeoBoota incorrect use or installation of unauthorized additions or images.!!!\n\n')
+ message += _('Have fun !!!')
+ message += _('\nCompletely uninstall NeoBota: \nIf you think NeoBot not you need it, you can uninstall it.\nTo uninstall now press the red button on the remote control.\n\n')
+ self['lab1'].show()
+ self['lab1'].setText(message)
+
+ def delete(self):
+ message = _('Are you sure you want to completely remove NeoBoota of your image?\n\nIf you choose so all directories NeoBoota will be removed.\nA restore the original image settings Flash.')
+ ybox = self.session.openWithCallback(self.mbdelete, MessageBox, message, MessageBox.TYPE_YESNO)
+ ybox.setTitle(_('Removed successfully.'))
+
+ def mbdelete(self, answer):
+ if answer is True:
+ cmd = "echo -e '\n\n%s '" % _('Recovering setting....\n')
+ cmd1 = 'rm -R /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot; rm -R /media/neoboot/ImageBoot/.Flash; rm -R /media/neoboot/ImageBoot/.neonextboot; rm -R /media/neoboot/ImageBoot/.version'
+ cmd2 = 'rm -R /sbin/neoinit*'
+ cmd3 = 'ln -sfn /sbin/init.sysvinit /sbin/init'
+ cmd4 = 'cp -rf /etc/fstab.org /etc/fstab; rm /etc/fstab.org '
+ cmd5 = 'cp -rf /etc/init.d/volatile-media.sh.org /etc/init.d/volatile-media.sh; rm /etc/init.d/volatile-media.sh.org '
+ cmd6 = 'opkg install volatile-media; sleep 2; killall -9 enigma2'
+ self.session.open(Console, _('NeoBot was removed !!! \nThe changes will be visible only after complete restart of the receiver.'), [cmd,
+ cmd1,
+ cmd2,
+ cmd3,
+ cmd4,
+ cmd5,
+ cmd6])
+ self.close()
+
+class Montowanie(Screen):
+ skin = """
+
+
+ {"template": [MultiContentEntryText(pos = (50, 1), size = (520, 36), flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 0),
+ MultiContentEntryPixmapAlphaTest(pos = (4, 2), size = (36, 36), png = 1),
+ ],
+ "fonts": [gFont("Regular", 22)],
+ "itemHeight": 36
+ }
+
+
+ """
+ __module__ = __name__
+
+ def __init__(self, session):
+ Screen.__init__(self, session)
+ self.list = []
+ self['list'] = List(self.list)
+ self.downList()
+ self['actions'] = ActionMap(['WizardActions', 'ColorActions'], {'ok': self.KeyOk,
+ 'back': self.close})
+
+ def downList(self):
+ self.list = []
+ mypixmap = '/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/images/ok.png'
+ png = LoadPixmap(mypixmap)
+ res = (_('Start the device manager ?'), png, 0)
+ self.list.append(res)
+ self['list'].list = self.list
+
+ def KeyOk(self):
+ self.sel = self['list'].getCurrent()
+ if self.sel:
+ self.sel = self.sel[2]
+ if self.sel == 0:
+ if fileExists('/usr/lib/enigma2/python/Plugins/SystemPlugins/DeviceManager*/devicemanager.cfg'):
+ system('rm -f /usr/lib/enigma2/python/Plugins/SystemPlugins/DeviceManager*/devicemanager.cfg; touch /usr/lib/enigma2/python/Plugins/SystemPlugins/DeviceManager*/devicemanager.cfg')
+ if fileExists('/etc/devicemanager.cfg'):
+ system(' rm -f /etc/devicemanager.cfg; touch /etc/devicemanager.cfg ')
+ cmd = '/media/neoboot/ImageBoot/Backup_NeoBoot.sh '
+ os.system('opkg install util-linux-sfdisk')
+ from Plugins.Extensions.NeoBoot.files.devices import ManagerDevice
+ self.session.open(ManagerDevice)
+ else:
+ self.session.open(MessageBox, _('The operation has been canceled or meoboot is not running in stb VuPlus'), MessageBox.TYPE_INFO, 7)
+
+
+class NeoBootInstallation(Screen):
+ screenwidth = getDesktop(0).size().width()
+ if screenwidth and screenwidth == 1920:
+ skin = """
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ """
+ else:
+ skin = """
+
+
+ \n
+
+
+ \n
+ \n
+ \n
+ \n
+ \n
+ \n
+ \n
+ \n
+ """
+
+ def __init__(self, session):
+ Screen.__init__(self, session)
+ self.list = []
+ self['config'] = MenuList(self.list)
+ self['key_red'] = Label(_('Instruction'))
+ self['key_green'] = Label(_('Installation'))
+ self['key_yellow'] = Label(_('Info disc'))
+ self['key_blue'] = Label(_('Device Manager'))
+ self['label1'] = Label(_('Welcome to NeoBoot %s Plugin installation.') % PLUGINVERSION)
+ self['label3'] = Label(_('WARNING !!! First, mount the device.'))
+ self['label2'] = Label(_('Here is the list of mounted devices in Your STB\nPlease choose a device where You would like to install NeoBoot'))
+ self['actions'] = ActionMap(['WizardActions', 'ColorActions', 'DirectionActions'], {'red': self.Instrukcja,
+ 'green': self.install,
+ 'yellow': self.datadrive,
+ 'blue': self.devices,
+ 'back': self.close})
+ self.updateList()
+
+ def Instrukcja(self):
+ self.session.open(MyHelp)
+
+ def datadrive(self):
+ try:
+ message = "echo -e '\n"
+ message += _('NeoBot checks the connected media.\nWAIT ...\n\nDISCS:')
+ message += "'"
+ cmd = '/sbin/blkid'
+ system(cmd)
+ print '[MULTI-BOOT]: ', cmd
+ self.session.open(Console, _(' NeoBot - Available media:'), [message, cmd])
+ except:
+ pass
+
+ def updateList(self):
+ if fileExists('/proc/mounts'):
+ with open('/proc/mounts', 'r') as f:
+ for line in f.readlines():
+ if line.startswith('/dev/sd') and line.find('/media/neoboot') == -1 and (line.find('ext4') != -1 or line.find('ext3') != -1):
+ try: self.list.append(line.split(' ')[1] + '/')
+ except Exception: pass # nie powinno sie zdarzyc, ale w razie czego
+ if len(self.list) == 0:
+ self['label2'].setText(_('Sorry it seems that there are not Linux formatted devices mounted on your STB. To install NeoBoot you need a Linux formatted part1 device. Click on the blue button to open Devices Panel'))
+ self['config'].setList(self.list)
+
+ def checkReadWriteDir(self, configele):
+ from Plugins.Extensions.NeoBoot.files import Harddisk
+ import os.path
+ import Plugins.Extensions.NeoBoot.files.Harddisk
+ supported_filesystems = frozenset(('ext4', 'ext3', 'ext2', 'ntfs', 'nfs', ))
+ candidates = []
+ mounts = Harddisk.getProcMounts()
+ for partition in Harddisk.harddiskmanager.getMountedPartitions(False, mounts):
+ if partition.filesystem(mounts) in supported_filesystems:
+ candidates.append((partition.description, partition.mountpoint))
+
+ if candidates:
+ locations = []
+ for validdevice in candidates:
+ locations.append(validdevice[1])
+
+ if Harddisk.findMountPoint(os.path.realpath(configele)) + '/' in locations or Harddisk.findMountPoint(os.path.realpath(configele)) in locations:
+ if fileExists(configele, 'w'):
+ return True
+ else:
+ dir = configele
+ self.session.open(MessageBox, _('The directory %s is not writable.\nMake sure you select a writable directory instead.') % dir, type=MessageBox.TYPE_ERROR)
+ return False
+ else:
+ dir = configele
+ self.session.open(MessageBox, _('The directory %s is not a EXT2, EXT3, EXT4 or NFS partition.\nMake sure you select a valid partition type.') % dir, type=MessageBox.TYPE_ERROR)
+ return False
+ else:
+ dir = configele
+ self.session.open(MessageBox, _('The directory %s is not a EXT2, EXT3, EXT4 or NFS partition.\nMake sure you select a valid partition type.') % dir, type=MessageBox.TYPE_ERROR)
+ return False
+
+ def devices(self):
+ check = False
+ if check == False:
+ message = _('After selecting OK start Mounting Manager, option Mount - green\n')
+ message += _('Do you want to run the manager to mount the drives correctly ?\n')
+ ybox = self.session.openWithCallback(self.device2, MessageBox, message, MessageBox.TYPE_YESNO)
+ ybox.setTitle(_('Device Manager'))
+
+ def device2(self, yesno):
+ if yesno:
+ if fileExists('/usr/lib/enigma2/python/Plugins/SystemPlugins/DeviceManager*/devicemanager.cfg'):
+ system('rm -f /usr/lib/enigma2/python/Plugins/SystemPlugins/DeviceManager*/devicemanager.cfg; touch /usr/lib/enigma2/python/Plugins/SystemPlugins/DeviceManager*/devicemanager.cfg')
+ if fileExists('/etc/devicemanager.cfg'):
+ system(' rm -f /etc/devicemanager.cfg; touch /etc/devicemanager.cfg ')
+ from Plugins.Extensions.NeoBoot.files.devices import ManagerDevice
+ self.session.open(ManagerDevice)
+ else:
+ self.close()
+
+ def install(self):
+ if not os.path.isfile('/etc/fstab.org'):
+ self.session.open(MessageBox, _('NeoBot - First use the Device Manager and mount the drives correctly !!!'), MessageBox.TYPE_INFO, 7)
+ self.close()
+ if fileExists('/.multinfo'):
+ self.session.open(MessageBox, _('Sorry, NeoBoot can installed or upgraded only when booted from Flash.'), MessageBox.TYPE_INFO, 7)
+ self.close()
+ else:
+ self.first_installation()
+
+ def first_installation(self):
+ check = False
+ if fileExists('/proc/mounts'):
+ with open('/proc/mounts', 'r') as f:
+ for line in f.readlines():
+ if line.startswith('/dev/sd') and line.find('/media/neoboot') == -1 and (line.find('ext4') != -1 or line.find('ext3') != -1):
+ check = True
+ break
+
+ if check == False:
+ self.session.open(MessageBox, _('Sorry, there is not any connected devices in your STB.\nPlease connect HDD or USB to install NeoBoot!'), MessageBox.TYPE_INFO)
+ else:
+ if not fileExists('/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/fstab'):
+ self.session.open(MessageBox, _('Device Manager encountered an error, disk drives not installed correctly !!!'), MessageBox.TYPE_INFO)
+ self.close()
+ self.mysel = self['config'].getCurrent()
+ if self.checkReadWriteDir(self.mysel):
+ message = _('Do You really want to install NeoBoot in:\n ') + self.mysel + '?'
+ ybox = self.session.openWithCallback(self.install2, MessageBox, message, MessageBox.TYPE_YESNO)
+ ybox.setTitle(_('Install Confirmation'))
+ else:
+ self.close()
+
+ def install2(self, yesno):
+ if yesno:
+ system('cd /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/; chmod 0755 ./bin/neoini*; chmod 0755 ./ex_init.py; chmod 0755 ./files/targetimage.sh; chmod 0755 ./files/NeoBoot.sh; chmod 0755 ./files/S50fat.sh; cd;')
+ cmd = 'mkdir /media/neoboot;mount ' + self.mysel + ' /media/neoboot'
+ system(cmd)
+ cmd2 = 'mkdir ' + self.mysel + 'ImageBoot;mkdir ' + self.mysel + 'ImagesUpload'
+ system(cmd2)
+ cmd3 = 'mkdir ' + self.mysel + 'ImageBoot;mkdir ' + self.mysel + 'ImagesUpload/.kernel'
+ system(cmd3)
+
+ if fileExists('/proc/mounts'):
+ fileExists('/proc/mounts')
+ f = open('/proc/mounts', 'r')
+ for line in f.readlines():
+ if line.find(self.mysel):
+ mntdev = line.split(' ')[0]
+
+ f.close()
+ mntid = os.system('blkid -s UUID -o value ' + mntdev + '>/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/install')
+ os.system('blkid -s UUID -o value ' + mntdev + '>/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/install')
+
+ fstabuuid = os.popen('blkid -s UUID -o value ' + mntdev).read()
+ fstabuuidwrite = 'UUID=' + fstabuuid.strip() + ' /media/neoboot auto defaults\t 1 1'
+ fileHandle = open('/etc/fstab', 'a')
+ fileHandle.write(fstabuuidwrite)
+ fileHandle.close()
+ os.system('blkid -c /dev/null /dev/sd* > /tmp/blkidlist')
+ os.system('blkid -c /dev/null ' + mntdev + ' > /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/install2')
+ system('chmod 755 /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/install; chmod 755 /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/install2')
+
+
+ #if not fileExists('/usr/lib/enigma2/python/Plugins/PLi'):
+ #os.system('mv /etc/init.d/volatile-media.sh /etc/init.d/volatile-media.sh.org')
+
+ #if os.path.isfile('/etc/init.d/volatile-media.sh'):
+ #os.system('mv /etc/init.d/volatile-media.sh /etc/init.d/volatile-media.sh.org')
+
+ if os.path.isfile('/media/neoboot/ImageBoot/.neonextboot'):
+ os.system('rm -f /media/neoboot/ImageBoot/.neonextboot; rm -f /media/neoboot/ImageBoot/.version; rm -f /media/neoboot/ImageBoot/.Flash; rm -f /media/neoboot/ImagesUpload/.kernel/zImage*.ipk; rm -f /media/neoboot/ImagesUpload/.kernel/zImage*.bin')
+
+ out1 = open('/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location', 'w')
+ out1.write(self.mysel)
+ out1.close()
+ out2 = open('/media/neoboot/ImageBoot/.neonextboot', 'w')
+ out2.write('Flash ')
+ out2.close()
+
+ if fileExists('/etc/issue.net'):
+ try:
+ lines = open('/etc/hostname', 'r').readlines()
+ imagename = lines[0][:-1]
+ image = imagename
+ open('/media/neoboot/ImageBoot/.Flash', 'w').write(image)
+ except:
+ False
+
+ out = open('/media/neoboot/ImageBoot/.version', 'w')
+ out.write(PLUGINVERSION)
+ out.close()
+
+ self.installpakiet()
+
+ else:
+ self.session.open(MessageBox, _('Installation aborted !'), MessageBox.TYPE_INFO)
+
+ def installpakiet(self):
+ check = False
+ if check == False:
+ self.mysel = self['config'].getCurrent()
+ if fileExists('/proc/stb/info'): #vumodel'): ogranicza tylko dla vu+
+ message = _('\n ... q(-_-)p ...\nNeoBot to function properly need additional packages.\nSelect Yes and wait ...\nProces installation may take a few moments ...\nInstall ?')
+ ybox = self.session.openWithCallback(self.pakiet2, MessageBox, message, MessageBox.TYPE_YESNO)
+ ybox.setTitle(_('Installing packages ...'))
+ else:
+ self.session.open(MessageBox, _('Installation operation canceled. This is not a vuplus box !!!'), MessageBox.TYPE_INFO, 10)
+
+ def pakiet2(self, yesno):
+ if yesno:
+ try:
+ system('opkg update;opkg configure;sleep 3')
+
+ if os.system('opkg list-installed | grep python-subprocess') != 0:
+ os.system('opkg install python-subprocess')
+ if os.system('opkg list-installed | grep python-argparse') != 0:
+ os.system('opkg install python-argparse')
+ if os.system('opkg list-installed | grep curl') != 0:
+ os.system('opkg install curl')
+ if os.system('opkg list-installed | grep packagegroup-base-nfs') != 0:
+ os.system('opkg install packagegroup-base-nfs')
+ if os.system('opkg list-installed | grep ofgwrite') != 0:
+ os.system('opkg install ofgwrite')
+ if os.system('opkg list-installed | grep bzip2') != 0:
+ os.system('opkg install bzip2')
+ if os.system('opkg list-installed | grep mtd-utils') != 0:
+ os.system('opkg install mtd-utils')
+ if os.system('opkg list-installed | grep mtd-utils-ubifs') != 0:
+ os.system('opkg install mtd-utils-ubifs')
+ if os.system('opkg list-installed | grep mtd-utils-jffs2') != 0:
+ os.system('opkg install mtd-utils-jffs2')
+ if os.system('opkg list-installed | grep kernel-module-nandsim') != 0:
+ os.system('opkg install kernel-module-nandsim')
+ if os.system('opkg list-installed | grep packagegroup-base-nfs') != 0:
+ os.system('opkg install packagegroup-base-nfs')
+ if os.system('opkg list-installed | grep lzo') != 0:
+ os.system('opkg install lzo')
+ if os.system('opkg list-installed | grep python-setuptools') != 0:
+ os.system('opkg install python-setuptools')
+
+ cmd = 'opkg install --force-maintainer --force-reinstall --force-overwrite --force-downgrade kernel-image'
+ system(cmd)
+ os.system('opkg configure update-modules; sleep 3')
+
+ #VUPLUS ARM
+ if getCPUSoC() == '7444s' or getCPUSoC() == '7252s' or getCPUSoC() == '7376' or getBoxHostName() == 'vuultimo4k' or getBoxHostName() == 'vuuno4k' or getBoxHostName() == 'vusolo4k' or getBoxHostName() == 'vuuno4kse' :
+ os.system('cd /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/' )
+ os.system('cp -Rf /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitarm /sbin/neoinitarm')
+ os.system('cp -Rf /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitarmvu /sbin/neoinitarmvu; cd')
+ os.system('chmod 755 /sbin/neoinitarm; chmod 755 /sbin/neoinitarmvu')
+ os.system('opkg download kernel-image')
+ os.system('mv /home/root/*.ipk /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % getBoxVuModel())
+ os.system('dd if=/dev/mmcblk0p1 of=/media/neoboot/ImagesUpload/.kernel/flash-kernel-%s.bin' % getBoxVuModel())
+
+ elif getCPUSoC() == '72604' or getBoxHostName() == 'vuzero4k':
+ os.system('cd /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/' )
+ os.system('cp -Rf /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitarm /sbin/neoinitarm')
+ os.system('cp -Rf /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitarmvu /sbin/neoinitarmvu; cd')
+ os.system('chmod 755 /sbin/neoinitarm; chmod 755 /sbin/neoinitarmvu')
+ os.system('opkg download kernel-image')
+ os.system('mv /home/root/*.ipk /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % getBoxVuModel())
+ os.system('dd if=/dev/mmcblk0p4 of=/media/neoboot/ImagesUpload/.kernel/flash-kernel-%s.bin' % getBoxVuModel())
+
+ elif getCPUSoC() == '7278' or getBoxHostName() == 'vuduo4k':
+ os.system('cd /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/' )
+ os.system('cp -Rf /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitarm /sbin/neoinitarm')
+ os.system('cp -Rf /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitarmvu /sbin/neoinitarmvu; cd')
+ os.system('chmod 755 /sbin/neoinitarm; chmod 755 /sbin/neoinitarmvu')
+ os.system('opkg download kernel-image')
+ os.system('mv /home/root/*.ipk /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % getBoxVuModel())
+ os.system('dd if=/dev/mmcblk0p6 of=/media/neoboot/ImagesUpload/.kernel/flash-kernel-%s.bin' % getBoxVuModel())
+
+
+ #Octagon SF4008
+ elif getCPUSoC() == 'bcm7251' or getBoxHostName() == 'sf4008':
+ os.system('cd /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/' )
+ os.system('cp -Rf /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitarm /sbin/neoinitarm')
+ os.system('cp -Rf /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitarmvu /sbin/neoinitarm; cd')
+ os.system('chmod 755 /sbin/neoinitarm; chmod 755 /sbin/neoinitarm')
+ os.system('opkg download kernel-image')
+ os.system('mv /home/root/*.ipk /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % getBoxHostName())
+ os.system('dd if=/dev/mmcblk0p3 of=/media/neoboot/ImagesUpload/.kernel/flash-kernel-%s.bin' % getBoxHostName())
+
+ #Zgemma h7S arm
+ elif getCPUSoC() == 'bcm7251s' or getBoxHostName() == 'h7':
+ os.system('cd /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/' )
+ os.system('cp -Rf /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitarm /sbin/neoinitarm')
+ os.system('cp -Rf /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitarmvu /sbin/neoinitarm; cd')
+ os.system('chmod 755 /sbin/neoinitarm; chmod 755 /sbin/neoinitarm')
+ os.system('opkg download kernel-image')
+ os.system('mv /home/root/*.ipk /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % getBoxHostName())
+ os.system('dd if=/dev/kernel of=/media/neoboot/ImagesUpload/.kernel/flash-kernel-%s.bin' % getBoxHostName())
+
+ #VUPLUS MIPS
+ elif getCPUSoC() == '7335' or getCPUSoC() == '7413' or getCPUSoC() == '7325' or getCPUSoC() == '7356' or getCPUSoC() == 'bcm7356' or getCPUSoC() == '7429' or getCPUSoC() == '7424' or getCPUSoC() == '7241' or getCPUSoC() == '7405' or getCPUSoC() == '7405(with 3D)' or getCPUSoC() == '7362' or getCPUSoC() == 'bcm7362' or getCPUSoC() == 'BCM7362' or getCPUSoC() == 'bcm7358' or getCPUSoC() == 'bcm7424' or getBoxHostName() == 'bm750' or getBoxHostName() == 'vuduo' or getBoxHostName() == 'vusolo' or getBoxHostName() == 'vuuno' or getBoxHostName() == 'vuultimo' or getBoxHostName() == 'vuultimo' or getBoxHostName() == 'vusolo2' or getBoxHostName() == 'vuduo2' or getBoxHostName() == 'vusolose' or getBoxHostName() == 'vuzero' or getBoxHostName() == 'mbmini' or getBoxHostName() == 'mbultra' or getBoxHostName() == 'osmini' or getBoxHostName() == 'h3':
+ if not fileExists('/usr/lib/enigma2/python/Tools/HardwareInfoVu.pyo'):
+ os.system('ln -sfn /usr/lib/enigma2/python/Tools/HardwareInfo.pyo /usr/lib/enigma2/python/Tools/HardwareInfoVu.pyo')
+ if not fileExists('/usr/lib/enigma2/python/Tools/DreamboxHardware.pyo'):
+ os.system('ln -sfn /usr/lib/enigma2/python/Tools/StbHardware.pyo /usr/lib/enigma2/python/Tools/DreamboxHardware.pyo')
+ if not fileExists('/usr/lib/enigma2/python/Tools/DreamboxInfoHandler.pyo'):
+ os.system('ln -sfn /usr/lib/enigma2/python/Components/PackageInfo.pyo /usr/lib/enigma2/python/Tools/DreamboxInfoHandler.pyo')
+
+ os.system('cp -Rf /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitmips /sbin/neoinitmips; cp -Rf /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitmipsvu /sbin/neoinitmipsvu')
+ os.system('chmod 755 /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/nfidump; chmod 0755 /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/nanddump_mips; rm -r /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitar*; cd')
+ os.system('chmod 755 /sbin/neoinitmips; chmod 0755 /sbin/neoinitmipsvu')
+
+ if getCPUSoC() == 'bcm7358' or getCPUSoC() == 'bcm7362' or getCPUSoC() == 'BCM7362' or getCPUSoC() == 'bcm7356' or getCPUSoC() == 'bcm7241' or getCPUSoC() == 'bcm7362' or getBoxHostName() == 'mbmini' or getBoxHostName() == 'osmini' or getTunerModel() == 'ini-1000sv' or getTunerModel() == 'h3':
+ os.system('cd /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/; mv ./bin/fontforneoboot.ttf /usr/share/fonts; mv ./bin/libpngneo /usr/lib; cp -f ./bin/neoinitmips /sbin/neoinitmips; chmod 0755 ./bin/neobm; chmod 0755 /usr/lib/libpngneo; cd; chmod 0755 /sbin/neoinitmips; ln -sf /media/neoboot/ImageBoot/.neonextboot /etc/neoimage')
+
+ elif getBoxHostName() == 'bm750' or getBoxHostName() == 'vuduo' or getBoxHostName() == 'vusolo' or getBoxHostName() == 'vuuno' or getBoxHostName() == 'vuultimo':
+ #os.system('cd /media/neoboot/ImagesUpload/.kernel/; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/nanddump_mips /dev/mtd1 -f > vmlinux.gz; mv /home/root/vmlinux.gz /media/neoboot/ImagesUpload/.kernel/')
+ if fileExists ('/usr/sbin/nanddump'):
+ os.system('cd; cd /media/neoboot/ImagesUpload/.kernel; /usr/sbin/nanddump /dev/mtd0 -o > vmlinux.gz; mv /home/root/vmlinux.gz /media/neoboot/ImagesUpload/.kernel/')
+ elif not fileExists ('/usr/sbin/nanddump'):
+ os.system('cd /media/neoboot/ImagesUpload/.kernel/; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/nanddump_mips /dev/mtd0 -f > vmlinux.gz; mv /home/root/vmlinux.gz /media/neoboot/ImagesUpload/.kernel/')
+ os.system('cd /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/; rm ./bin/neobm; rm ./neologo.mvi; rm ./bin/fontforneoboot.ttf; rm ./bin/libpngneo; cd')
+
+ elif getBoxHostName() == 'vusolo2' or getBoxHostName() == 'vuduo2' or getBoxHostName() == 'vusolose' or getBoxHostName() == 'vuzero':
+ #os.system('cd /media/neoboot/ImagesUpload/.kernel/; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/nanddump_mips /dev/mtd2 -f > vmlinux.gz; mv /home/root/vmlinux.gz /media/neoboot/ImagesUpload/.kernel/')
+ if fileExists ('/usr/sbin/nanddump'):
+ os.system('cd; cd /media/neoboot/ImagesUpload/.kernel; /usr/sbin/nanddump /dev/mtd2 -o > vmlinux.gz; mv /home/root/vmlinux.gz /media/neoboot/ImagesUpload/.kernel/')
+ elif not fileExists ('/usr/sbin/nanddump'):
+ os.system('cd /media/neoboot/ImagesUpload/.kernel/; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/nanddump_mips /dev/mtd2 -f > vmlinux.gz; mv /home/root/vmlinux.gz /media/neoboot/ImagesUpload/.kernel/')
+ os.system('cd /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/; rm ./bin/neobm; rm ./neologo.mvi; rm ./bin/fontforneoboot.ttf; rm ./bin/libpngneo; cd')
+
+ if fileExists('/tmp/plik.tar.gz'):
+ cmd = 'mkdir -p ' + self.mysel + 'ImagesUpload/.egami' #private non-public use patch
+ system(cmd)
+ os.system('/bin/tar -xzvf /tmp/plik.tar.gz -C /;rm -fr /tmp/*.tar.gz')
+ os.system('opkg download kernel-image; sleep 2; mv /home/root/*.ipk /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % getBoxVuModel())
+
+ #OctagonSF4008 - DM900 - Zgemma h7S - Octagon sf 8008 - AX HD60 4K
+ elif getCPUSoC() == 'hi3798mv200' or getBoxHostName() == 'ax60' or getCPUSoC() == '3798mv200' or getBoxHostName() == 'sf8008' or getCPUSoC() == 'bcm7251' or getCPUSoC() == 'bcm7251s' or getBoxHostName() == 'h7' or getCPUSoC() == 'BCM97252SSFF' or getBoxHostName() == 'dm900':
+ os.system('cp -f /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitarm /sbin/neoinitarm; chmod 0755 /sbin/neoinitarm; ln -sfn /sbin/neoinitarm /sbin/init')
+
+ else:
+ self.messagebox = self.session.open(MessageBox, _('Canceled ... NeoBoot will not work properly !!! NeoBoot works only on VuPlus box, Ultimo4k, Solo4k, Uno4k !!!'), MessageBox.TYPE_INFO, 20)
+
+
+
+ os.system('touch /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/neobootup.sh')
+ cel = open('/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/neobootup.sh', 'w')
+ cel.write('#!/bin/sh\n#DESCRIPTION=This script by gutosie\n\ntouch /tmp/.init_reboot\n\nif [ -f /etc/init.d/neobootmount.sh ] ; then\n sync; rm -f /etc/init.d/neobootmount.sh; \nfi \n')
+ cel.close()
+ os.system('chmod 755 /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/neobootup.sh; ln -s /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/neobootup.sh /etc/rcS.d/S50neo; touch /etc/name')
+ cel = open('/etc/name', 'w')
+ cel.write('gutosie')
+ cel.close()
+
+ cmd = 'opkg install --force-maintainer --force-reinstall --force-overwrite --force-downgrade kernel-image'
+ system(cmd)
+
+ #MiracleBoxUltra
+ if getBoxHostName() == 'mbultra':
+ os.system('opkg download kernel-image; sleep 2; mv /home/root/*.ipk /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % getBoxHostName())
+ if not fileExists ('/media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % getBoxHostName()):
+ os.system('opkg download kernel-image; sleep 2; mv /home/root/*.ipk /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % getBoxHostName())
+ #os.system('cd /media/neoboot/ImagesUpload/.kernel/; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/nanddump_mips /dev/mtd2 -f > vmlinux.gz')
+ if fileExists ('/usr/sbin/nanddump'):
+ os.system('cd; cd /media/neoboot/ImagesUpload/.kernel; /usr/sbin/nanddump /dev/mtd2 -o > vmlinux.gz; mv /home/root/vmlinux.gz /media/neoboot/ImagesUpload/.kernel/')
+ elif not fileExists ('/usr/sbin/nanddump'):
+ os.system('cd /media/neoboot/ImagesUpload/.kernel/; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/nanddump_mips /dev/mtd2 -f > vmlinux.gz; mv /home/root/vmlinux.gz /media/neoboot/ImagesUpload/.kernel/')
+ os.system('rm /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitmipsvu')
+ os.system('rm /sbin/neoinitmipsvu')
+
+ #Edision OS MINI
+ if getCPUSoC() == 'BCM7362' or getBoxHostName() == 'osmini':
+ os.system('opkg download kernel-image; sleep 2; mv /home/root/*.ipk /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % getBoxHostName())
+ if not fileExists ('/media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % getBoxHostName()):
+ os.system('opkg download kernel-image; sleep 2; mv /home/root/*.ipk /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % getBoxHostName())
+ os.system('opkg download kernel-image; sleep 2; mv /home/root/*.ipk /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % getBoxHostName())
+ if fileExists ('/usr/sbin/nanddump'):
+ os.system('cd; cd /media/neoboot/ImagesUpload/.kernel; /usr/sbin/nanddump /dev/mtd0 -o > vmlinux.gz; mv /home/root/vmlinux.gz /media/neoboot/ImagesUpload/.kernel/')
+ elif not fileExists ('/usr/sbin/nanddump'):
+ os.system('cd /media/neoboot/ImagesUpload/.kernel/; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/nanddump_mips /dev/mtd0 -f > vmlinux.gz; mv /home/root/vmlinux.gz /media/neoboot/ImagesUpload/.kernel/')
+ #os.system('cp -rf /etc/fstab.org /etc/fstab; rm /etc/fstab.org')
+ #os.system('cp -rf /etc/init.d/volatile-media.sh.org /etc/init.d/volatile-media.sh; rm /etc/init.d/volatile-media.sh.org')
+ os.system('opkg install volatile-media')
+ os.system('rm /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitmipsvu')
+ os.system('rm /sbin/neoinitmipsvu')
+
+ if fileExists("/home/root/vmlinux.gz"):
+ os.system('mv -f /home/root/vmlinux.gz /media/neoboot/ImagesUpload/.kernel')
+ os.system('opkg configure update-modules')
+
+ if getCPUtype() == 'ARMv7':
+ os.system('cd /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/; rm ./bin/neoinitmip*; rm -r ./bin/nanddump; rm ./bin/nfidump; rm ./bin/neobm; rm ./neologo.mvi; rm ./bin/fontforneoboot.ttf; rm ./bin/libpngneo; cd')
+ elif getCPUtype() == 'MIPS':
+ os.system('rm /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/neoinitar*; rm /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/rebootbot')
+
+ os.system('chmod 644 /media/neoboot/ImagesUpload/.kernel/*')
+ os.system('chmod 755 /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/*')
+
+ if fileExists("/proc/stb/info/vumodel") and not fileExists("/proc/stb/info/boxtype"):
+ if fileExists('/media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % ( getBoxVuModel()) ):
+ self.myclose2(_('NeoBoot has been installed succesfully !' ))
+ elif not fileExists('/media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % ( getBoxVuModel()) ):
+ self.myclose2(_('Error - nie odnaleziono pliku kernela zImage.%s.ipk ' % ( getBoxVuModel()) ))
+
+ #Ultra
+ if getCPUSoC() == 'bcm7424' or getBoxHostName == 'mbultra' or getTunerModel() == 'ini-8000sv':
+ if fileExists('/media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % ( getBoxHostName()) ):
+ self.myclose2(_('NeoBoot has been installed succesfully !' ))
+ elif not fileExists('/media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % ( getBoxHostName()) ):
+ self.myclose2(_('Error - nie odnaleziono pliku kernela zImage.%s.ipk ' % ( getBoxHostName()) ))
+
+ else:
+ self.myclose2(_('NeoBoot has been installed succesfully !' ))
+
+ #Edision OS MINI
+ if getCPUSoC() == 'BCM7362' or getBoxHostName == 'osmini':
+ if fileExists('/media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % ( getBoxHostName()) ):
+ self.myclose2(_('NeoBoot has been installed succesfully !' ))
+ elif not fileExists('/media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % ( getBoxHostName()) ):
+ self.myclose2(_('Error - nie odnaleziono pliku kernela zImage.%s.ipk ' % ( getBoxHostName()) ))
+
+ else:
+ self.myclose2(_('NeoBoot has been installed succesfully !' ))
+
+ except:
+ pass
+ else:
+ self.messagebox = self.session.open(MessageBox, _('Cancelled ... NeoBot will not work correctly !!!'), MessageBox.TYPE_INFO, 6)
+
+ def myclose2(self, message):
+ self.session.open(MessageBox, message, MessageBox.TYPE_INFO)
+ self.close()
+
+class NeoBootImageChoose(Screen):
+ screenwidth = getDesktop(0).size().width()
+ if screenwidth and screenwidth == 1920:
+
+ skin = """
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ """
+ else:
+ skin = """
+ \n\t\t\t\t\t\t\t
+ \n\t\t\t\t\t\t\t
+ \n\t\t\t\t\t\t\t
+ \n\t\t\t\t\t\t\t
+ \n\t\t\t\t\t\t\t
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Format:%A %e %B %Y
+
+\t\t\t"""
+
+
+ def __init__(self, session):
+ Screen.__init__(self, session)
+ if fileExists('/tmp/.init_reboot'):
+ system('rm /tmp/.init_reboot')
+
+ if fileExists('/.multinfo'):
+ if fileExists('/.control_boot_new_image'):
+ os.system('rm -f /.control_boot_new_image; touch /.control_ok ')
+ if not fileExists('/.control_boot_new_image'):
+ os.system('touch /.control_ok ')
+
+ if fileExists('/.multinfo') and getCPUtype() == 'ARMv7':
+ if os.path.exists('/proc/stb/info/boxtype'):
+ if getCPUSoC() == 'bcm7251' or getBoxHostName == 'sf4008':
+ os.system('mkdir -p /media/mmc; mount /dev/mmcblk0p4 /media/mmc')
+
+ if fileExists('/.multinfo') and getCPUtype() == 'ARMv7':
+ if os.path.exists('/proc/stb/info/boxtype'):
+ if getCPUSoC() == 'bcm7251s' or getBoxHostName() == 'h7':
+ os.system('mkdir -p /media/mmc; mount /dev/mmcblk0p3 /media/mmc')
+
+ if getCPUSoC() == 'bcm7251s' or getBoxHostName == 'h7':
+ os.system('mkdir -p /media/mmc; mount /dev/mmcblk0p3 /media/mmc')
+
+ if getCPUSoC() == '3798mv200' or getBoxHostName == 'sf8008':
+ os.system('mkdir -p /media/mmc; mount /dev/mmcblk0p13 /media/mmc')
+
+ if getCPUSoC() == 'hi3798mv200' or getBoxHostName == 'ax60':
+ os.system('mkdir -p /media/mmc; mount /dev/mmcblk0p21 /media/mmc')
+
+ if os.path.exists('/proc/stb/info/model'):
+ if getTunerModel() == 'dm900' or getCPUSoC() == 'BCM97252SSFF':
+ os.system('mkdir -p /media/mmc; mount /dev/mmcblk0p2 /media/mmc')
+
+ if getBoxVuModel() == 'uno4k' or getBoxVuModel() == 'uno4kse' or getBoxVuModel() == 'ultimo4k' or getBoxVuModel() == 'solo4k':
+ os.system('mkdir -p /media/mmc; mount /dev/mmcblk0p4 /media/mmc')
+
+ if getBoxVuModel() == 'vu_mmcblk0p4':
+ os.system('mkdir -p /media/mmc; mount /dev/mmcblk0p7 /media/mmc')
+
+ if getBoxVuModel() == 'duo4k':
+ os.system('mkdir -p /media/mmc; mount /dev/mmcblk0p9 /media/mmc')
+
+
+ self.list = []
+ self.setTitle(' NeoBoot %s - Menu' % PLUGINVERSION + ' ' + 'Ver. update: %s' % UPDATEVERSION)
+ self['device_icon'] = Pixmap()
+ self['progreso'] = ProgressBar()
+ self['linea'] = ProgressBar()
+ self['config'] = MenuList(self.list)
+ self['key_red'] = Label(_('Boot Image'))
+ self['key_green'] = Label(_('Installation'))
+ self['key_yellow'] = Label(_('Remove Image '))
+ self['key_blue'] = Label(_('Info'))
+ self['key_menu'] = Label(_('More options'))
+ self['key_1'] = Label(_('Update NeoBot'))
+ self['key_2'] = Label(_('Start Flash Image'))
+ self['key_3'] = Label(_('Install Kernel'))
+ self['label1'] = Label(_('Please choose an image to boot'))
+ self['label2'] = Label(_('NeoBoot is running from:'))
+ self['label3'] = Label('')
+ self['label4'] = Label(_('NeoBoot is running image:'))
+ self['label5'] = Label('')
+ self['label6'] = Label('')
+ self['label7'] = Label('')
+ self['label8'] = Label(_('Number of images installed:'))
+ self['label19'] = Label('')
+ self['label9'] = Label('')
+ self['label10'] = Label('')
+ self['label11'] = Label('')
+ self['label12'] = Label('')
+ self['label13'] = Label(_('Version update: '))
+ self['label14'] = Label(_('NeoBoot version: '))
+ self['label15'] = Label(_('Memory disc:'))
+ self['actions'] = ActionMap(['WizardActions',
+ 'ColorActions',
+ 'MenuActions',
+ 'NumberActionMap',
+ 'SetupActions',
+ 'number'], {'ok': self.boot,
+ 'red': self.boot,
+ 'green': self.ImageInstall,
+ 'yellow': self.remove,
+ 'blue': self.pomoc,
+ 'ok': self.boot,
+ 'menu': self.mytools,
+ '1': self.neoboot_update,
+ '2': self.ImageFlash,
+ '3': self.ReinstallKernel,
+ 'back': self.close_exit})
+ if not fileExists('/etc/name'):
+ os.system('touch /etc/name')
+ self.onShow.append(self.updateList)
+
+
+ def pomoc(self):
+ if fileExists('/.multinfo'):
+ mess = _('Information available only when running Flash.')
+ self.session.open(MessageBox, mess, MessageBox.TYPE_INFO)
+ else:
+ self.session.open(Opis)
+
+ def ImageFlash(self):
+ if not fileExists('/.multinfo'):
+ self.session.open(MessageBox, _('Sorry, Opcja dostepna tylko z poziomu image uruchomionego w neoboocie.'), MessageBox.TYPE_INFO, 7)
+ self.close()
+ else:
+ cmd = _("echo -e 'Restart in progress...\n'")
+ cmd1='opkg install --force-reinstall --force-overwrite --force-downgrade /media/neoboot/ImagesUpload/.kernel/*.ipk'
+ cmd2 = 'mount -a ;ln -sf "init.sysvinit" "/sbin/init" ; echo "Flash " > /media/neoboot/ImageBoot/.neonextboot ;sleep 2; reboot -f'
+ self.session.openWithCallback(self.up, Console, _('NeoBoot: Deleting Image'), [cmd, cmd1, cmd2])
+
+
+ def deviceneoboot(self):
+ self.session.open(Montowanie)
+
+ def close_exit(self):
+ if fileExists("/proc/stb/info/vumodel") and not fileExists("/proc/stb/info/boxtype"):
+ if not fileExists('/media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk' % ( getBoxVuModel()) ):
+ mess = _('Error - nie odnaleziono pliku kernela zImage-ipk ')
+ self.session.open(MessageBox, mess, MessageBox.TYPE_INFO)
+
+ if fileExists('/.multinfo'):
+ with open('/media/neoboot/ImageBoot/.neonextboot', 'r') as f:
+ imagefile = f.readline().strip()
+ f.close()
+ out = open('/media/neoboot/ImageBoot/.neonextboot', 'w')
+ out.write(imagefile)
+ out.close()
+ else:
+ system('touch /tmp/.init_reboot')
+ out = open('/media/neoboot/ImageBoot/.neonextboot', 'w')
+ out.write('Flash')
+ out.close()
+ self.close()
+
+ def ReinstallKernel(self):
+ from Plugins.Extensions.NeoBoot.files.tools import ReinstallKernel
+ self.session.open(ReinstallKernel)
+
+ def neoboot_update(self):
+ if fileExists('/.multinfo'):
+ mess = _('Downloading available only from the image Flash.')
+ self.session.open(MessageBox, mess, MessageBox.TYPE_INFO)
+ else:
+ out = open('/media/neoboot/ImageBoot/.neonextboot', 'w')
+ out.write('Flash')
+ out.close()
+ message = _('\n\n\n')
+ message += _('WARNING !: The update brings with it the risk of errors.\n')
+ message += _('Before upgrading it is recommended that you make a backup NeoBoot.\n')
+ message += _('Do you want to run the update now ?\n')
+ message += _('\n')
+ ybox = self.session.openWithCallback(self.chackupdate2, MessageBox, message, MessageBox.TYPE_YESNO)
+ ybox.setTitle(_('The download neoboot update.'))
+
+ def chackupdate2(self, yesno):
+ if yesno:
+ self.chackupdate3()
+ else:
+ self.session.open(MessageBox, _('Canceled update.'), MessageBox.TYPE_INFO, 7)
+
+ def chackupdate3(self):
+ os.system('cd /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot;curl -O --ftp-ssl https://raw.githubusercontent.com/gutosie/neoboot/master/ver.txt;sleep 3;cd /')
+ if not fileExists('/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/ver.txt'):
+ os.system('cd /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot;fullwget --no-check-certificate https://raw.githubusercontent.com/gutosie/neoboot/master/ver.txt; sleep 3;cd /')
+ if not fileExists('/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/ver.txt'):
+ self.session.open(MessageBox, _('Unfortunately, at the moment not found an update, try again later.'), MessageBox.TYPE_INFO, 8)
+ else:
+ mypath = ''
+ version = open('/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/ver.txt', 'r')
+ mypath = float(version.read().strip())
+ version.close()
+ if float(UPDATEVERSION) != mypath:
+ message = _('NeoBoot has detected update.\nDo you want to update NeoBoota now ?')
+ ybox = self.session.openWithCallback(self.aktualizacjamboot, MessageBox, message, MessageBox.TYPE_YESNO)
+ ybox.setTitle(_('Updating ... '))
+ elif fileExists('/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/ver.txt'):
+ os.system('rm /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/ver.txt')
+ self.session.open(MessageBox, _('Updated unnecessary, you have the latest version. Please try again later.'), MessageBox.TYPE_INFO)
+
+ def aktualizacjamboot(self, yesno):
+ if yesno:
+ if fileExists('/tmp/*.zip'):
+ os.system('rm /tmp/*.zip')
+ os.system('cd /tmp; curl -O --ftp-ssl https://codeload.github.com/gutosie/neoboot/zip/master; mv /tmp/master /tmp/neoboot.zip; cd /')
+ if not fileExists('/tmp/neoboot.zip'):
+ os.system('cd /tmp;fullwget --no-check-certificate https://codeload.github.com/gutosie/neoboot/zip/master; mv /tmp/master /tmp/neoboot.zip; sleep 3;cd ')
+ if not fileExists('/tmp/neoboot.zip'):
+ self.session.open(MessageBox, _('Unfortunately, at the moment not found an update, try again later.'), MessageBox.TYPE_INFO, 8)
+ else:
+ os.system('cd /tmp/; unzip -qn ./neoboot.zip; rm -f ./neoboot.zip; cp -rf ./neoboot-master/NeoBoot /usr/lib/enigma2/python/Plugins/Extensions; rm -rf /tmp/neoboot-master; rm /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/ver.txt; cd /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/; chmod 0755 ./bin/neoini*; chmod 0755 ./ex_init.py; chmod 0755 ./target/*; chmod 0755 ./files/NeoBoot.sh; chmod 0755 ./files/S50fat.sh; cd')
+ if getCPUtype() == 'MIPS':
+ os.system('cd /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/; cp -rf ./bin/neoinitmipsvu /sbin; chmod 755 /sbin/neoinitmipsvu; cp -rf ./bin/neoinitmips /sbin; chmod 755 /sbin/neoinitmips; cd')
+ elif getCPUtype() == 'ARMv7':
+ os.system('cd /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/; chmod 755 ./files/neobootup.sh; chmod 0755 ./bin/rebootbot; cp -rf ./bin/neoinitarm /sbin; cp -rf ./bin/neoinitarmvu /sbin; chmod 755 /sbin/neoinitarm; chmod 755 /sbin/neoinitarmvu; cd')
+
+ restartbox = self.session.openWithCallback(self.restartGUI, MessageBox, _('Completed update NeoBoot. You need to restart the E2 !!!\nRestart now ?'), MessageBox.TYPE_YESNO)
+ restartbox.setTitle(_('Restart GUI now ?'))
+
+ else:
+ os.system('rm -f /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/ver.txt')
+ self.session.open(MessageBox, _('The update has been canceled.'), MessageBox.TYPE_INFO, 8)
+
+ def restartGUI(self, answer):
+ if answer is True:
+ self.session.open(TryQuitMainloop, 3)
+ else:
+ self.close()
+
+ def installMedia(self):
+ images = False
+ myimages = os.listdir('/media/neoboot/ImagesUpload')
+ print myimages
+ for fil in myimages:
+ if fil.endswith('.zip'):
+ images = True
+ break
+ if fil.endswith('.tar.xz'):
+ images = True
+ break
+ if fil.endswith('.nfi'):
+ images = True
+ break
+ else:
+ images = False
+
+ if images == True:
+ self.ImageInstall()
+ else:
+ mess = _('[NeoBoot] The /media/neoboot/ImagesUpload directory is EMPTY !!!\nPlease upload the image files in .ZIP or .NFI formats to install.')
+ self.session.open(MessageBox, mess, MessageBox.TYPE_INFO)
+
+ def MBBackup(self):
+ from Plugins.Extensions.NeoBoot.files.tools import MBBackup
+ self.session.open(MBBackup)
+
+ def MBRestore(self):
+ from Plugins.Extensions.NeoBoot.files.tools import MBRestore
+ self.session.open(MBRestore)
+
+ def updateList(self):
+ if not fileExists('/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location'):
+ self.session.open(NeoBootInstallation)
+ else:
+ self.updateListOK()
+
+ def updateListOK(self):
+ self.list = []
+ pluginpath = '/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot'
+ f = open(pluginpath + '/.location', 'r')
+ mypath = f.readline().strip()
+ f.close()
+ icon = 'dev_usb.png'
+ if 'card' in mypath or 'sd' in mypath:
+ icon = 'dev_sd.png'
+ elif 'ntfs' in mypath:
+ icon = 'dev_sd.png'
+ elif 'hdd' in mypath:
+ icon = 'dev_hdd.png'
+ elif 'cf' in mypath:
+ icon = 'dev_cf.png'
+ icon = pluginpath + '/images/' + icon
+ png = LoadPixmap(icon)
+ self['device_icon'].instance.setPixmap(png)
+ device = '/media/neoboot'
+ ustot = usfree = usperc = ''
+ rc = system('df > /tmp/memoryinfo.tmp')
+ if fileExists('/tmp/memoryinfo.tmp'):
+ f = open('/tmp/memoryinfo.tmp', 'r')
+ for line in f.readlines():
+ line = line.replace('part1', ' ')
+ parts = line.strip().split()
+ totsp = len(parts) - 1
+ if parts[totsp] == device:
+ if totsp == 5:
+ ustot = parts[1]
+ usfree = parts[3]
+ usperc = parts[4]
+ else:
+ ustot = 'N/A '
+ usfree = parts[2]
+ usperc = parts[3]
+ break
+
+ f.close()
+ os.remove('/tmp/memoryinfo.tmp')
+ if not fileExists('/usr/lib/enigma2/python/Plugins/Extensions/PowerboardCenter/PBDeviceManager.pyo'):
+ perc = int(usperc[0:-1])
+ self['progreso'].setValue(perc)
+ green = '#00389416'
+ red = '#00ff2525'
+ yellow = '#00ffe875'
+ orange = '#00ff7f50'
+ if perc < 30:
+ color = green
+ elif perc < 60:
+ color = yellow
+ elif perc < 80:
+ color = orange
+ else:
+ color = red
+ elif fileExists('/usr/lib/enigma2/python/Plugins/Extensions/PowerboardCenter/PBDeviceManager.pyo'):
+ perc2 = usperc[0:-1]
+ self['progreso'].setValue(perc2)
+ green = '#00389416'
+ red = '#00ff2525'
+ yellow = '#00ffe875'
+ orange = '#00ff7f50'
+ if perc2 < 30:
+ color = green
+ elif perc2 < 60:
+ color = yellow
+ elif perc2 < 80:
+ color = orange
+ else:
+ color = red
+ try:
+ from skin import parseColor
+ self['label13'].instance.setForegroundColor(parseColor(color))
+ self['label14'].instance.setForegroundColor(parseColor(color))
+ self['label15'].instance.setForegroundColor(parseColor(color))
+ self['progreso'].instance.setForegroundColor(parseColor(color))
+ except:
+ pass
+
+ self.availablespace = usfree[0:-3]
+ strview = _('Used: ') + usperc + _(' \n Available: ') + usfree[0:-3] + ' MB'
+ self['label3'].setText(strview)
+ try:
+ f2 = open('/media/neoboot/ImageBoot/.neonextboot', 'r')
+ mypath2 = f2.readline().strip()
+ f2.close()
+ except:
+ mypath2 = 'Flash'
+
+ if mypath2 == 'Flash':
+ image = getImageNeoBoot()
+ if not fileExists('/.multinfo'):
+ if fileExists('/etc/issue.net'):
+ try:
+ obraz = open('/etc/issue.net', 'r').readlines()
+ imagetype = obraz[0][:-3]
+ image = imagetype
+ open('/media/neoboot/ImageBoot/.Flash', 'w').write(image)
+ except:
+ False
+ if fileExists('/.multinfo'):
+ if fileExists('/media/mmc/etc/issue.net'):
+ try:
+ obraz = open('/media/mmc/etc/issue.net', 'r').readlines()
+ imagetype = obraz[0][:-3]
+ image = imagetype
+ open('/media/neoboot/ImageBoot/.Flash', 'w').write(image)
+ except:
+ False
+ elif fileExists('/etc/issue.net'):
+ try:
+ obraz = open('/etc/issue.net', 'r').readlines()
+ imagetype = obraz[0][:-1]
+ lines = open('/etc/hostname', 'r').readlines()
+ boxtype = lines[0][:-1]
+ image = imagetype[0:-2] + ' ' + boxtype
+ open('/media/neoboot/ImageBoot/.Flash', 'w').write(image)
+ except:
+ False
+
+ elif fileExists('/media/neoboot/ImageBoot/.Flash'):
+ f = open('/media/neoboot/ImageBoot/.Flash', 'r')
+ image = f.readline().strip()
+ f.close()
+ image = ' [' + image + ']'
+ self.list.append('Flash' + image)
+ self['label5'].setText(mypath)
+ if fileExists('/.multinfo'):
+ f2 = open('/.multinfo', 'r')
+ mypath3 = f2.readline().strip()
+ f2.close()
+ self['label6'].setText(mypath3)
+ else:
+ f2 = open('/media/neoboot/ImageBoot/.neonextboot', 'r')
+ mypath3 = f2.readline().strip()
+ f2.close()
+ self['label6'].setText(mypath3)
+ mypath = '/media/neoboot/ImageBoot'
+ myimages = listdir(mypath)
+ for fil in myimages:
+ if os.path.isdir(os.path.join(mypath, fil)):
+ self.list.append(fil)
+
+ self['label7'].setText(str(len(self.list) - 1))
+ self['config'].setList(self.list)
+ KERNELVERSION = getKernelImageVersion()
+ strview = PLUGINVERSION + ' ' + 'Kernel %s' % KERNELVERSION
+ self['label9'].setText(strview)
+ self['label19'].setText(readline('/media/neoboot/ImagesUpload/.kernel/used_flash_kernel'))
+ strview = UPDATEVERSION
+ self['label10'].setText(strview)
+
+ def mytools(self):
+ from Plugins.Extensions.NeoBoot.files.tools import MBTools
+ self.session.open(MBTools)
+
+ def remove(self):
+ self.mysel = self['config'].getCurrent()
+ if 'Flash' in self.mysel:
+ self.mysel = 'Flash'
+ if self.mysel:
+ f = open('/media/neoboot/ImageBoot/.neonextboot', 'r')
+ mypath = f.readline().strip()
+ f.close()
+ try:
+ if fileExists('/.multinfo'):
+ self.session.open(MessageBox, _('Sorry you can delete only from the image Flash.'), MessageBox.TYPE_INFO, 5)
+ elif self.mysel == 'Flash':
+ self.session.open(MessageBox, _('Sorry you cannot delete Flash image'), MessageBox.TYPE_INFO, 5)
+ elif mypath == self.mysel:
+ self.session.open(MessageBox, _('Sorry you cannot delete the image currently booted from.'), MessageBox.TYPE_INFO, 5)
+ else:
+ out = open('/media/neoboot/ImageBoot/.neonextboot', 'w')
+ out.write('Flash')
+ out.close()
+ message = _('Delete the selected image - ') + self.mysel + _('\nDelete ?')
+ ybox = self.session.openWithCallback(self.remove2, MessageBox, message, MessageBox.TYPE_YESNO)
+ ybox.setTitle(_('Delete Confirmation'))
+ except:
+ print 'no image to remove'
+
+ else:
+ self.mysel
+
+ def up(self):
+ self.list = []
+ self['config'].setList(self.list)
+ self.updateList()
+
+ def up2(self):
+ try:
+ self.list = []
+ self['config'].setList(self.list)
+ self.updateList()
+ except:
+ print ' '
+
+ def remove2(self, yesno):
+ if yesno:
+ cmd = _("echo -e 'Deleting in progress...\n'")
+ cmd1 = 'rm -r /media/neoboot/ImageBoot/' + self.mysel
+ self.session.openWithCallback(self.up, Console, _('NeoBoot: Deleting Image'), [cmd, cmd1])
+ else:
+ self.session.open(MessageBox, _('Removing canceled!'), MessageBox.TYPE_INFO)
+
+ def ImageInstall(self):
+ if not fileExists('/.multinfo'):
+ KERNEL_VERSION = getKernelVersionString()
+ if getCPUSoC() == 'hi3798mv200' or getBoxHostName == 'ax60' or getCPUSoC() == '3798mv200' or getBoxHostName() == 'sf8008' or getCPUSoC() == 'bcm7251' or getBoxHostName() == 'sf4008' or getCPUSoC() == 'bcm7251s' or getCPUSoC() == '7241' or getBoxHostName() == 'h7' or getBoxHostName() == 'dm900' or getCPUSoC() == 'BCM97252SSFF' or getCPUSoC() == '7444s' or getCPUSoC() == '7252s' or getCPUSoC() == '7376' or getCPUSoC() == '72604' or getCPUSoC() == '7278' or getCPUSoC() == '7335' or getCPUSoC() == '7413' or getCPUSoC() == '7325' or getCPUSoC() == '7356' or getCPUSoC() == 'bcm7356' or getCPUSoC() == '7429' or getCPUSoC() == '7424' or getCPUSoC() == '7362' or getCPUSoC() == 'bcm7362' or getCPUSoC() == 'BCM7362' or getCPUSoC() == 'bcm7358' or getCPUSoC() == '7405' or getCPUSoC() == '7405(with 3D)' or getCPUSoC() == 'bcm7424' or getBoxHostName() == 'vuultimo' or getBoxHostName() == 'mbmini' or getBoxHostName() == 'osmini' or getBoxHostName() == 'mbultra' or getBoxHostName() == 'h3':
+ self.extractImage()
+ else:
+ self.messagebox = self.session.open(MessageBox, _('Nie wykryto odpowiedniego STB do instalacji !!!!'), MessageBox.TYPE_INFO, 8)
+ self.close()
+ else:
+ self.messagebox = self.session.open(MessageBox, _('Instalacja tylko z poziomu systemu flash.'), MessageBox.TYPE_INFO, 8)
+ self.close()
+
+ def extractImage(self):
+ images = False
+ if fileExists('/media/neoboot/ImageBoot/.without_copying'):
+ system('rm /media/neoboot/ImageBoot/.without_copying')
+
+ if not os.path.exists('/media/neoboot/ImagesUpload'):
+ system('mkdir /media/neoboot/ImagesUpload')
+ myimages = listdir('/media/neoboot/ImagesUpload')
+ print myimages
+ for fil in myimages:
+ if fil.endswith('.zip'):
+ images = True
+ break
+ if fil.endswith('.tar.xz'):
+ images = True
+ break
+ if fil.endswith('.nfi'):
+ images = True
+ break
+ else:
+ images = False
+
+ if images == True:
+ #self.session.openWithCallback(self.up2, InstalacjaImage)
+ from Plugins.Extensions.NeoBoot.unpack import InstallImage
+ self.session.open(InstallImage)
+ else:
+ self.ImageSystem()
+
+ def ImageSystem(self):
+ if fileExists('/media/neoboot/ImageBoot/.neonextboot'):
+ self.messagebox = self.session.open(MessageBox, _('[NeoBoot] The /media/neoboot/ImagesUpload directory is EMPTY !!!\nPlease upload the image files in .ZIP or .NFI formats to install.\n'), MessageBox.TYPE_INFO, 8)
+ self.close()
+ else:
+ self.close()
+
+ def boot(self):
+ self.mysel = self['config'].getCurrent()
+ if 'Flash' in self.mysel:
+ self.mysel = 'Flash'
+ if self.mysel:
+ out = open('/media/neoboot/ImageBoot/.neonextboot', 'w')
+ out.write(self.mysel)
+ out.close()
+ from Plugins.Extensions.NeoBoot.run import StartImage
+ self.session.open(StartImage)
+
+ def myClose(self, message):
+ self.session.open(MessageBox, message, MessageBox.TYPE_INFO)
+ self.close()
+
+####################### _(-_-)_ gutosie _(-_-)_ #######################
+####################### _(-_-)_ gutosie _(-_-)_ #######################
+
+def readline(filename, iferror = ''):
+ if iferror[:3] == 'or:':
+ data = iferror[3:]
+ else:
+ data = iferror
+ try:
+ if os.path.exists(filename):
+ with open(filename) as f:
+ data = f.readline().strip()
+ f.close()
+ except Exception:
+ PrintException()
+ return data
+
+def checkimage():
+ mycheck = False
+ if fileExists('/proc/stb/info'): #vumodel'): ogranicza tylko dla vu+
+ mycheck = True
+ else:
+ mycheck = False
+ return mycheck
+
+
+def checkversion(session):
+ version = 0
+ if fileExists('/media/neoboot/ImageBoot/.version'):
+ f = open('/media/neoboot/ImageBoot/.version')
+ version = float(f.read())
+ f.close()
+ if fileExists('/media/neoboot/ImageBoot/.neonextboot'):
+ f2 = open('/media/neoboot/ImageBoot/.neonextboot', 'r')
+ mypath2 = f2.readline().strip()
+ f2.close()
+ if mypath2 != 'Flash' or mypath2 == 'Flash' and checkimage():
+ if float(PLUGINVERSION) != version:
+ session.open(MyUpgrade)
+ else:
+ session.open(NeoBootImageChoose)
+ else:
+ session.open(MessageBox, _('Sorry: Wrong image in flash found. You have to install in flash Vu+ or Octagon-sf4008 Image !!!'), MessageBox.TYPE_INFO, 10)
+ else:
+ session.open(NeoBootInstallation)
+
+def main(session, **kwargs):
+ try:
+ doMount=True
+ with open('/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location', 'r') as f:
+ mypath = f.readline().strip()
+ if not os.path.exists('/media/neoboot'):
+ system('mkdir /media/neoboot')
+ with open('/proc/mounts', 'r') as f:
+ for line in f.readlines():
+ if line.find('/media/neoboot') != -1:
+ doMount=False
+ break
+ if doMount:
+ cmd = 'mount ' + mypath + ' /media/neoboot'
+ system(cmd)
+ except Exception:
+ pass
+
+ checkversion(session)
+
+def menu(menuid, **kwargs):
+ if menuid == 'mainmenu':
+ return [(_('NEOBOOT'),
+ main,
+ 'neo_boot',
+ 1)]
+ return []
+
+from Plugins.Plugin import PluginDescriptor
+
+def Plugins(**kwargs):
+ return [PluginDescriptor(name='NeoBoot ', description='NeoBoot', where=PluginDescriptor.WHERE_MENU, fnc=menu), PluginDescriptor(name='NeoBoot', description=_('Installing multiple images'), icon='neo.png', where=PluginDescriptor.WHERE_PLUGINMENU, fnc=main)]
diff --git a/NeoBoot/run.py b/NeoBoot/run.py
new file mode 100644
index 0000000..b60eeed
--- /dev/null
+++ b/NeoBoot/run.py
@@ -0,0 +1,399 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+from __init__ import _
+from Plugins.Extensions.NeoBoot.files import Harddisk
+from Plugins.Extensions.NeoBoot.files.stbbranding import getKernelVersionString, getKernelImageVersion, getCPUtype, getCPUSoC, getImageNeoBoot, getBoxVuModel, getBoxHostName, getTunerModel
+from enigma import getDesktop
+from enigma import eTimer
+from Screens.Screen import Screen
+from Screens.Console import Console
+from Screens.MessageBox import MessageBox
+from Screens.ChoiceBox import ChoiceBox
+from Screens.VirtualKeyBoard import VirtualKeyBoard
+from Screens.Standby import TryQuitMainloop
+from Components.About import about
+from Components.Sources.List import List
+from Components.Button import Button
+from Components.ActionMap import ActionMap, NumberActionMap
+from Components.GUIComponent import *
+from Components.MenuList import MenuList
+from Components.Input import Input
+from Components.Label import Label
+from Components.ProgressBar import ProgressBar
+from Components.ScrollLabel import ScrollLabel
+from Components.Pixmap import Pixmap, MultiPixmap
+from Components.config import *
+from Components.ConfigList import ConfigListScreen
+from Tools.LoadPixmap import LoadPixmap
+from Tools.Directories import fileExists, pathExists, createDir, resolveFilename, SCOPE_PLUGINS
+from os import system, listdir, mkdir, chdir, getcwd, rename as os_rename, remove as os_remove, popen
+from os.path import dirname, isdir, isdir as os_isdir
+import os
+import time
+
+
+class StartImage(Screen):
+ screenwidth = getDesktop(0).size().width()
+ if screenwidth and screenwidth == 1920:
+ skin = """
+ \n\t\t\t
+ \n\t\t\t\t
+ \n \t\t{"template": [
+ \n \t\t\tMultiContentEntryText(pos = (90, 1), size = (920, 66), flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 0),
+ \n \t\t\tMultiContentEntryPixmapAlphaTest(pos = (8, 4), size = (66, 66), png = 1),
+ \n \t\t\t],
+ \n \t\t\t"fonts": [gFont("Regular", 40)],\n \t\t\t"itemHeight": 66\n \t\t}
+ \n \t\t\n\t\t
+ \n
+ \n\t\t
+ \n\t\t """
+ else:
+ skin = """
+ \n\t\t\t
+
+ \n\t\t\t\t
+ \n \t\t{"template": [
+ \n \t\t\tMultiContentEntryText(pos = (180, 0), size = (520, 36), flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 0),
+ \n \t\t\tMultiContentEntryPixmapAlphaTest(pos = (4, 2), size = (36, 36), png = 1),
+ \n \t\t\t],\n \t\t\t"fonts": [gFont("Regular", 22)],
+ \n \t\t\t"itemHeight": 35\n \t\t}\n \t\t
+ \n\t\t\n
+
+ \n\t\t """
+
+ __module__ = __name__
+ def __init__(self, session):
+ Screen.__init__(self, session)
+ self.list = []
+ self['list'] = List(self.list)
+ self.select()
+ self['actions'] = ActionMap(['WizardActions', 'ColorActions'], {'ok': self.KeyOk,
+ 'back': self.close})
+ self['label1'] = Label(_('Start the chosen system now ?'))
+ self['label2'] = Label(_('Select OK to run the image.'))
+
+ def select(self):
+ self.list = []
+ mypath = '/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot'
+ if not fileExists(mypath + 'icons'):
+ mypixmap = '/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/images/ok.png'
+ png = LoadPixmap(mypixmap)
+ res = (_('OK Start image...'), png, 0)
+ self.list.append(res)
+ self['list'].list = self.list
+
+#################################
+ def KeyOk(self):
+ if getImageNeoBoot() != 'Flash':
+ cmd = _("echo -e '[NeoBoot] Uwaga!!! po poprawnym starcie wybranego oprogramowania w neoboot,\nnalezy uruchomic NEOBOOTA by potwierdzic prawidlowy start image.\n\nNacisnij OK lub exit na pilocie by kontynuowac...\n\n\n'")
+ self.session.openWithCallback(self.StartImageInNeoBoot, Console, _('NeoBoot: Start image...'), [cmd])
+ else:
+ self.StartImageInNeoBoot()
+
+ def StartImageInNeoBoot(self):
+ if fileExists('/media/neoboot/ImageBoot/%s/.control_ok ' % ( getImageNeoBoot())):
+ system('touch /tmp/.control_ok ')
+ elif not fileExists('/media/neoboot/ImageBoot/%s/.control_ok ' % ( getImageNeoBoot())):
+ system('touch /media/neoboot/ImageBoot/%s//.control_boot_new_image ' % ( getImageNeoBoot()))
+
+####################################
+ system('sync; echo 3 > /proc/sys/vm/drop_caches; chmod 755 /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/*')
+ self.sel = self['list'].getCurrent()
+ if self.sel:
+ self.sel = self.sel[2]
+ if self.sel == 0:
+ if fileExists('/media/mmc/etc/init.d/neobootmount.sh'):
+ os.system('rm -f /media/mmc/etc/init.d/neobootmount.sh;')
+
+ #DM900; Zgemma h7S; AX HD60 4K
+ if getCPUSoC() == 'hi3798mv200' or getBoxHostName == 'ax60' or getCPUSoC() == '3798mv200' or getBoxHostName() == 'sf8008' or getCPUSoC() == 'bcm7251s' or getBoxHostName() == 'h7' or getCPUSoC() == 'BCM97252SSFF' or getBoxHostName() == 'dm900':
+ if getImageNeoBoot() == 'Flash':
+ if fileExists('/.multinfo'):
+ os.system('cd /media/mmc; ln -sfn /sbin/init.sysvinit /media/mmc/sbin/init; reboot -d -f -h -i')
+ elif not fileExists('/.multinfo'):
+ os.system('ln -sfn /sbin/init.sysvinit /sbin/init; reboot -d -f -h -i')
+ elif getImageNeoBoot() != 'Flash':
+ os.system('ln -sfn /sbin/neoinitarm /sbin/init; reboot -d -f -h -i')
+ else:
+ os.system('echo "Flash " >> /media/neoboot/ImageBoot/.neonextboot')
+ self.messagebox = self.session.open(MessageBox, _('Wygląda na to że multiboot nie wspiera tego modelu STB !!! '), MessageBox.TYPE_INFO, 8)
+ self.close()
+
+ #MiracleBox, ET8500, Formuler F1, Formuler F3, Atemio6000 - MIPS # test - ultra, osmini
+ elif getCPUtype() != 'ARMv7' and getCPUSoC() == 'bcm7358' or getCPUSoC() == 'bcm7362' or getCPUSoC() == 'bcm7356' or getCPUSoC() == 'bcm7241' or getCPUSoC() == 'bcm7362' or getBoxHostName() == 'mbmini' or getBoxHostName() == 'h3' or getTunerModel() == 'ini-1000sv': #or getBoxHostName == 'mbultra' or getCPUSoC() == 'BCM7362' or getBoxHostName() == 'osmini'
+ if getImageNeoBoot() == 'Flash':
+ self.session.open(TryQuitMainloop, 2)
+ elif getImageNeoBoot() != 'Flash':
+ cmd='ln -sfn /sbin/neoinitmips /sbin/init; reboot -d -f -h -i'
+ self.session.open(Console, _('NeoBoot ....'), [cmd])
+ else:
+ os.system('echo "Flash " >> /media/neoboot/ImageBoot/.neonextboot')
+ self.messagebox = self.session.open(MessageBox, _('Wygląda na to że multiboot nie wspiera tego modelu STB !!! '), MessageBox.TYPE_INFO, 8)
+ self.close()
+
+
+
+ #MiracleBox Ultra - MIPS #Test
+ elif getCPUtype() != 'ARMv7' and getCPUSoC() == 'bcm7424' or getTunerModel() == 'ini-8000sv':
+
+ if getImageNeoBoot() == 'Flash':
+ if fileExists('/.multinfo'):
+ cmd2='/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/mbultra_dev_mtd2.sh'
+ self.session.open(Console, _('NeoBoot MiracleBox Ultra...'), [cmd2])
+ elif not fileExists('/.multinfo'):
+ self.session.open(TryQuitMainloop, 2)
+
+ elif getImageNeoBoot() != 'Flash':
+ if not fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz ' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd2='ln -sfn /sbin/neoinitmips /sbin/init; reboot -d -f -h -i'
+ self.session.open(Console, _('NeoBoot MiracleBox Ultra Rebooting....'), [cmd2])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd2='ln -sfn /sbin/neoinitmips /sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/mbultra_dev_mtd2.sh'
+ self.session.open(Console, _('NeoBoot MiracleBox Ultra....'), [cmd2])
+
+ elif fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd2='ln -sfn /sbin/init.sysvinit /sbin/init; opkg install --force-reinstall --force-overwrite --force-downgrade /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk; reboot -d -f -h -i' % getBoxHostName()
+ self.session.open(Console, _('NeoBoot MiracleBox Ultra Rebooting....'), [cmd2])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd2='ln -sfn /sbin/init.sysvinit /sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/mbultra_dev_mtd2.sh'
+ self.session.open(Console, _('NeoBoot MiracleBox Ultra....'), [cmd2])
+
+ else:
+ os.system('echo "Flash " >> /media/neoboot/ImageBoot/.neonextboot')
+ self.messagebox = self.session.open(MessageBox, _('Wygląda na to że model STB nie jest wpierany przez multiboota!!! '), MessageBox.TYPE_INFO, 8)
+ self.close()
+
+
+ #Edision OS MINI - MIPS #Test
+ elif getCPUtype() != 'ARMv7' and getCPUSoC() == 'BCM7362' or getBoxHostName() == 'osmini':
+ if getImageNeoBoot() == 'Flash':
+ if fileExists('/.multinfo'):
+ cmd2='/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/osmini_dev_mtd0.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd2])
+ elif not fileExists('/.multinfo'):
+ self.session.open(TryQuitMainloop, 2)
+ elif getImageNeoBoot() != 'Flash':
+ if not fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd2='ln -sfn /sbin/neoinitmips /sbin/init; reboot -d -f -h -i'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd2])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd2='ln -sfn /sbin/neoinitmips /sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/osmini_dev_mtd0.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd2])
+ elif fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd2='opkg install --force-reinstall --force-overwrite --force-downgrade /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk; reboot -d -f -h -i' % getBoxHostName()
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd2])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd2='/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/osmini_dev_mtd0.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd2])
+ else:
+ os.system('echo "Flash " >> /media/neoboot/ImageBoot/.neonextboot')
+ self.messagebox = self.session.open(MessageBox, _('Wygląda na to że model STB nie jest wpierany przez multiboota!!! '), MessageBox.TYPE_INFO, 8)
+ self.close()
+
+ #Octagon SF4008 ARM
+ elif getCPUSoC() == 'bcm7251' or getBoxHostName() == 'sf4008' :
+ if getImageNeoBoot() == 'Flash':
+ if fileExists('/.multinfo'):
+ cmd1='/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/sf4008_mmcblk0p3.sh'
+ self.session.open(Console, _('NeoBoot Octagon SF4008 ARM ...'), [cmd1])
+ elif not fileExists('/.multinfo'):
+ self.session.open(TryQuitMainloop, 2)
+ elif getImageNeoBoot() != 'Flash':
+ if not fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd1='ln -sfn /sbin/neoinitarm /sbin/init; reboot -d -f -h -i'
+ self.session.open(Console, _('NeoBoot Octagon SF4008 ARM ....'), [cmd1])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd1='ln -sfn /sbin/neoinitarm /sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/sf4008_mmcblk0p3.sh'
+ self.session.open(Console, _('NeoBoot Octagon SF4008 ARM ....'), [cmd1])
+ elif fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd1='cd /media/mmc; ln -sf /sbin/init.sysvinit /media/mmc/sbin/init; opkg install --force-maintainer --force-reinstall --force-overwrite --force-downgrade /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk; reboot -d -f -h -i' % getBoxHostName()
+ self.session.open(Console, _('NeoBoot Octagon SF4008 ARM ....'), [cmd1])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd1='cd /media/mmc; ln -sfn /sbin/init.sysvinit /media/mmc/sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/sf4008_mmcblk0p3.sh'
+ self.session.open(Console, _('NeoBoot Octagon SF4008 ARM ....'), [cmd1])
+ else:
+ os.system('echo "Flash " >> /media/neoboot/ImageBoot/.neonextboot')
+ self.messagebox = self.session.open(MessageBox, _('Wygląda na to że Twój model STB nie jest wpierany!!! '), MessageBox.TYPE_INFO, 8)
+ self.close()
+
+ #Zgemma h7S ARM
+ elif getCPUSoC() == 'bcm7251s' or getBoxHostName() == 'h7' :
+ if getImageNeoBoot() == 'Flash':
+ if fileExists('/.multinfo'):
+ cmd1='/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/h7s_mmcblk0p2.sh'
+ self.session.open(Console, _('NeoBoot Zgemma h7S ARM ...'), [cmd1])
+ elif not fileExists('/.multinfo'):
+ self.session.open(TryQuitMainloop, 2)
+ elif getImageNeoBoot() != 'Flash':
+ if not fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd1='ln -sfn /sbin/neoinitarm /sbin/init; reboot -d -f -h -i'
+ self.session.open(Console, _('NeoBoot Zgemma h7S ARM ....'), [cmd1])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd1='ln -sfn /sbin/neoinitarm /sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/h7s_mmcblk0p2.sh'
+ self.session.open(Console, _('NeoBoot Zgemma h7S ARM ....'), [cmd1])
+ elif fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd1='cd /media/mmc; ln -sf /sbin/neoinitarm /media/mmc/sbin/init; opkg install --force-maintainer --force-reinstall --force-overwrite --force-downgrade /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk; reboot -d -f -h -i' % getBoxHostName()
+ self.session.open(Console, _('NeoBoot Zgemma h7S ARM ....'), [cmd1])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxHostName())):
+ cmd1='cd /media/mmc; ln -sfn /sbin/neoinitarm /media/mmc/sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/h7s_mmcblk0p2.sh'
+ self.session.open(Console, _('NeoBoot Zgemma h7S ARM ....'), [cmd1])
+ else:
+ os.system('echo "Flash " >> /media/neoboot/ImageBoot/.neonextboot')
+ self.messagebox = self.session.open(MessageBox, _('Wygląda na to że Twój model STB nie jest wpierany!!! '), MessageBox.TYPE_INFO, 8)
+ self.close()
+
+ #VUPLUS ARM - vu_mmcblk0p1.sh
+ elif getCPUSoC() == '7444s' or getBoxHostName() == 'vuultimo4k' or getCPUSoC() == '7376' or getBoxHostName() == 'vusolo4k' or getCPUSoC() == '7252s' or getBoxHostName() == 'vuuno4kse':
+ if getImageNeoBoot() == 'Flash':
+ if fileExists('/.multinfo'):
+ cmd1='/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/vu_mmcblk0p1.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd1])
+ elif not fileExists('/.multinfo'):
+ self.session.open(TryQuitMainloop, 2)
+ elif getImageNeoBoot() != 'Flash':
+ if not fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd1='ln -sfn /sbin/neoinitarm /sbin/init; reboot -d -f -h -i'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd1])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd1='ln -sfn /sbin/neoinitarmvu /sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/vu_mmcblk0p1.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd1])
+ elif fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd1='cd /media/mmc; ln -sf /sbin/neoinitarm /media/mmc/sbin/init; opkg install --force-maintainer --force-reinstall --force-overwrite --force-downgrade /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk; reboot -d -f -h -i' % getBoxVuModel()
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd1])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd1='cd /media/mmc; ln -sfn /sbin/neoinitarmvu /media/mmc/sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/vu_mmcblk0p1.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd1])
+ else:
+ os.system('echo "Flash " >> /media/neoboot/ImageBoot/.neonextboot')
+ self.messagebox = self.session.open(MessageBox, _('Wygląda na to że Twój model STB nie jest wpierany!!! '), MessageBox.TYPE_INFO, 8)
+ self.close()
+
+ #VUPLUS ARM - vu_mmcblk0p4.sh
+ elif getCPUSoC() == '72604' or getBoxHostName() == 'vuzero4k':
+ if getImageNeoBoot() == 'Flash':
+ if fileExists('/.multinfo'):
+ cmd1='/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/vu_mmcblk0p4.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd1])
+ elif not fileExists('/.multinfo'):
+ self.session.open(TryQuitMainloop, 2)
+ elif getImageNeoBoot() != 'Flash':
+ if not fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd1='ln -sfn /sbin/neoinitarm /sbin/init; reboot -d -f -h -i'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd1])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd1='ln -sfn /sbin/neoinitarmvu /sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/vu_mmcblk0p4.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd1])
+ elif fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd1='cd /media/mmc; ln -sf /sbin/neoinitarm /media/mmc/sbin/init; opkg install --force-maintainer --force-reinstall --force-overwrite --force-downgrade /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk; reboot -d -f -h -i' % getBoxVuModel()
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd1])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd1='cd /media/mmc; ln -sfn /sbin/neoinitarmvu /media/mmc/sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/vu_mmcblk0p4.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd1])
+ else:
+ os.system('echo "Flash " >> /media/neoboot/ImageBoot/.neonextboot')
+ self.messagebox = self.session.open(MessageBox, _('Wygląda na to że Twój model STB nie jest wpierany!!! '), MessageBox.TYPE_INFO, 8)
+ self.close()
+
+ #VUPLUS ARM - Duo4k.sh
+ elif getCPUSoC() == '7278' or getBoxHostName() == 'vuduo4k':
+ if getImageNeoBoot() == 'Flash':
+ if fileExists('/.multinfo'):
+ cmd1='/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/vu_mmcblk0p6.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd1])
+ elif not fileExists('/.multinfo'):
+ self.session.open(TryQuitMainloop, 2)
+ elif getImageNeoBoot() != 'Flash':
+ if not fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd1='ln -sfn /sbin/neoinitarm /sbin/init; reboot -d -f -h -i'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd1])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd1='ln -sfn /sbin/neoinitarmvu /sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/vu_mmcblk0p6.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd1])
+ elif fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd1='cd /media/mmc; ln -sf /sbin/neoinitarm /media/mmc/sbin/init; opkg install --force-maintainer --force-reinstall --force-overwrite --force-downgrade /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk; reboot -d -f -h -i' % getBoxVuModel()
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd1])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/zImage.%s' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd1='cd /media/mmc; ln -sfn /sbin/neoinitarmvu /media/mmc/sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/vu_mmcblk0p6.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd1])
+ else:
+ os.system('echo "Flash " >> /media/neoboot/ImageBoot/.neonextboot')
+ self.messagebox = self.session.open(MessageBox, _('Wygląda na to że Twój model STB nie jest wpierany!!! '), MessageBox.TYPE_INFO, 8)
+ self.close()
+
+ #VUPLUS MIPS mtd2
+ elif getCPUSoC() == '7356' or getCPUSoC() == '7429' or getCPUSoC() == '7424' or getCPUSoC() == '7241' or getCPUSoC() == '7362' or getBoxHostName() == 'vusolo2' or getBoxHostName() == 'vusolose' or getBoxHostName() == 'vuduo2' or getBoxHostName() == 'vuzero':
+ if getImageNeoBoot() == 'Flash':
+ if fileExists('/.multinfo'):
+ cmd2='/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/vu_dev_mtd2.sh'
+ self.session.open(Console, _('NeoBoot MIPS...'), [cmd2])
+ elif not fileExists('/.multinfo'):
+ self.session.open(TryQuitMainloop, 2)
+ elif getImageNeoBoot() != 'Flash':
+ if not fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd2='ln -sfn /sbin/neoinitmips /sbin/init; reboot -d -f -h -i'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd2])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd2='ln -sfn /sbin/neoinitmipsvu /sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/vu_dev_mtd2.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd2])
+ elif fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd2='opkg install --force-reinstall --force-overwrite --force-downgrade /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk; reboot -d -f -h -i' % getBoxVuModel()
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd2])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd2='/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/vu_dev_mtd2.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd2])
+ else:
+ os.system('echo "Flash " >> /media/neoboot/ImageBoot/.neonextboot')
+ self.messagebox = self.session.open(MessageBox, _('Wygląda na to że model STB nie jest wpierany przez multiboota!!! '), MessageBox.TYPE_INFO, 8)
+ self.close()
+
+
+ #VUPLUS MIPS mtd1
+ elif getCPUSoC() == '7335' or getCPUSoC() == '7325' or getCPUSoC() == '7405' or getCPUSoC() == '7405(with 3D)' or getBoxHostName() == 'vuultimo' or getBoxHostName() == 'bm750' or getBoxHostName() == 'duo' or getBoxHostName() == 'vuuno' or getBoxHostName() == 'vusolo' or getBoxHostName() == 'vuduo':
+ if getImageNeoBoot() == 'Flash':
+ if fileExists('/.multinfo'):
+ cmd2='/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/vu_dev_mtd1.sh'
+ self.session.open(Console, _('NeoBoot MIPS...'), [cmd2])
+ elif not fileExists('/.multinfo'):
+ self.session.open(TryQuitMainloop, 2)
+ elif getImageNeoBoot() != 'Flash':
+ if not fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd2='ln -sfn /sbin/neoinitmips /sbin/init; reboot -d -f -h -i'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd2])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd2='ln -sfn /sbin/neoinitmipsvu /sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/vu_dev_mtd1.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd2])
+ elif fileExists('/.multinfo'):
+ if not fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd2='opkg install --force-reinstall --force-overwrite --force-downgrade /media/neoboot/ImagesUpload/.kernel/zImage.%s.ipk; reboot -d -f -h -i' % getBoxVuModel()
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd2])
+ elif fileExists('/media/neoboot/ImageBoot/%s/boot/%s.vmlinux.gz' % ( getImageNeoBoot(), getBoxVuModel())):
+ cmd2='/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/target/vu_dev_mtd1.sh'
+ self.session.open(Console, _('NeoBoot Arm....'), [cmd2])
+ else:
+ os.system('echo "Flash " >> /media/neoboot/ImageBoot/.neonextboot')
+ self.messagebox = self.session.open(MessageBox, _('Wygląda na to że model STB nie jest wpierany przez multiboota!!! '), MessageBox.TYPE_INFO, 8)
+ self.close()
+
+ else:
+ os.system('echo "Flash " >> /media/neoboot/ImageBoot/.neonextboot')
+ self.messagebox = self.session.open(MessageBox, _('Wygląda na to że model STB nie jest wpierany przez NEOBOOT !!! '), MessageBox.TYPE_INFO, 8)
+ self.close()
+
diff --git a/NeoBoot/unpack.py b/NeoBoot/unpack.py
new file mode 100644
index 0000000..cf4f97b
--- /dev/null
+++ b/NeoBoot/unpack.py
@@ -0,0 +1,313 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+from __init__ import _
+from Plugins.Extensions.NeoBoot.files import Harddisk
+from Plugins.Extensions.NeoBoot.files.stbbranding import getKernelVersionString, getKernelImageVersion, getCPUtype, getCPUSoC, getImageNeoBoot, getBoxVuModel, getBoxHostName, getTunerModel
+from enigma import getDesktop
+from enigma import eTimer
+from Screens.Screen import Screen
+from Screens.Console import Console
+from Screens.MessageBox import MessageBox
+from Screens.ChoiceBox import ChoiceBox
+from Screens.VirtualKeyBoard import VirtualKeyBoard
+from Screens.Standby import TryQuitMainloop
+from Components.About import about
+from Components.Sources.List import List
+from Components.Button import Button
+from Components.ActionMap import ActionMap, NumberActionMap
+from Components.GUIComponent import *
+from Components.MenuList import MenuList
+from Components.Input import Input
+from Components.Label import Label
+from Components.ProgressBar import ProgressBar
+from Components.ScrollLabel import ScrollLabel
+from Components.Pixmap import Pixmap, MultiPixmap
+from Components.config import *
+from Components.ConfigList import ConfigListScreen
+from Tools.LoadPixmap import LoadPixmap
+from Tools.Directories import fileExists, pathExists, createDir, resolveFilename, SCOPE_PLUGINS
+from os import system, listdir, mkdir, chdir, getcwd, rename as os_rename, remove as os_remove, popen
+from os.path import dirname, isdir, isdir as os_isdir
+import os
+import time
+
+class InstallImage(Screen, ConfigListScreen):
+ screenwidth = getDesktop(0).size().width()
+ if screenwidth and screenwidth == 1920:
+ skin = """
+
+
+
+
+
+
+
+
+
+
+
+
+ \
+ """
+ else:
+ skin = """
+
+
+
+
+
+
+
+
+
+
+
+
+
+ """
+
+ def __init__(self, session):
+ Screen.__init__(self, session)
+ fn = 'NewImage'
+ sourcelist = []
+ for fn in os.listdir('/media/neoboot/ImagesUpload'):
+ if fn.find('.zip') != -1:
+ fn = fn.replace('.zip', '')
+ sourcelist.append((fn, fn))
+ continue
+ if fn.find('.tar.xz') != -1:
+ fn = fn.replace('.tar.xz', '')
+ sourcelist.append((fn, fn))
+ continue
+ if fn.find('.nfi') != -1:
+ fn = fn.replace('.nfi', '')
+ sourcelist.append((fn, fn))
+ continue
+ if len(sourcelist) == 0:
+ sourcelist = [('None', 'None')]
+ self.source = ConfigSelection(choices=sourcelist)
+ self.target = ConfigText(fixed_size=False)
+ self.CopyFiles = ConfigYesNo(default=False)
+ self.CopyKernel = ConfigYesNo(default=True)
+ self.TvList = ConfigYesNo(default=True)
+ self.Montowanie = ConfigYesNo(default=True)
+ self.LanWlan = ConfigYesNo(default=True)
+ self.Sterowniki = ConfigYesNo(default=False)
+ self.InstallSettings = ConfigYesNo(default=False)
+ self.ZipDelete = ConfigYesNo(default=False)
+ self.RepairFTP = ConfigYesNo(default=False)
+ self.SoftCam = ConfigYesNo(default=False)
+ self.MediaPortal = ConfigYesNo(default=False)
+ self.BlackHole = ConfigYesNo(default=False)
+ self.target.value = ''
+ self.curselimage = ''
+
+ try:
+ if self.curselimage != self.source.value:
+ self.target.value = self.source.value[:-13]
+ self.curselimage = self.source.value
+ except:
+ pass
+
+ self.createSetup()
+ ConfigListScreen.__init__(self, self.list, session=session)
+ self.source.addNotifier(self.typeChange)
+ self['actions'] = ActionMap(['OkCancelActions',
+ 'ColorActions',
+ 'CiSelectionActions',
+ 'VirtualKeyboardActions'], {'cancel': self.cancel,
+ 'red': self.cancel,
+ 'green': self.imageInstall,
+ 'yellow': self.HelpInstall,
+ 'blue': self.openKeyboard}, -2)
+ self['key_green'] = Label(_('Install'))
+ self['key_red'] = Label(_('Cancel'))
+ self['key_yellow'] = Label(_('Help'))
+ self['key_blue'] = Label(_('Keyboard'))
+ self['HelpWindow'] = Pixmap()
+ self['HelpWindow'].hide()
+
+ def createSetup(self):
+ self.list = []
+ self.list.append(getConfigListEntry(_('Source Image file'), self.source))
+ self.list.append(getConfigListEntry(_('Image Name'), self.target))
+ self.list.append(getConfigListEntry(_('Do not copy files from Flash to the installed image ?'), self.CopyFiles ))
+ self.list.append(getConfigListEntry(_('Copy the kernel of the installed system (recommended only for Vu+) ?'), self.CopyKernel ))
+ self.list.append(getConfigListEntry(_('Copy the channel list ?'), self.TvList))
+ self.list.append(getConfigListEntry(_('Copy mounting disks ? (Recommended)'), self.Montowanie))
+ self.list.append(getConfigListEntry(_('Copy network settings LAN-WLAN ?'), self.LanWlan))
+ self.list.append(getConfigListEntry(_('Copy the drivers ? (Recommended only other image.)'), self.Sterowniki))
+ self.list.append(getConfigListEntry(_('Copy Settings to the new Image'), self.InstallSettings))
+ self.list.append(getConfigListEntry(_('Delete Image zip after Install ?'), self.ZipDelete))
+ self.list.append(getConfigListEntry(_('Repair FTP ? (Recommended only other image if it does not work.)'), self.RepairFTP))
+ self.list.append(getConfigListEntry(_('Copy config SoftCam ?'), self.SoftCam))
+ self.list.append(getConfigListEntry(_('Copy MediaPortal ?'), self.MediaPortal))
+ self.list.append(getConfigListEntry(_('Path BlackHole ? (Not recommended for VuPlus)'), self.BlackHole))
+
+ def HelpInstall(self):
+ if fileExists('/.multinfo'):
+ mess = _('Information available only when running Flash.')
+ self.session.open(MessageBox, mess, MessageBox.TYPE_INFO)
+ else:
+ self.session.open(HelpInstall)
+
+
+
+ def typeChange(self, value):
+ self.createSetup()
+ self['config'].l.setList(self.list)
+ if self.curselimage != self.source.value:
+ self.target.value = self.source.value[:-13]
+ self.curselimage = self.source.value
+
+ def openKeyboard(self):
+ sel = self['config'].getCurrent()
+ if sel:
+ if sel == self.target:
+ if self['config'].getCurrent()[1].help_window.instance is not None:
+ self['config'].getCurrent()[1].help_window.hide()
+ self.vkvar = sel[0]
+ if self.vkvar == _('Image Name'):
+ self.session.openWithCallback(self.VirtualKeyBoardCallback, VirtualKeyBoard, title=self['config'].getCurrent()[0], text=self['config'].getCurrent()[1].value)
+ return
+
+ def VirtualKeyBoardCallback(self, callback = None):
+ if callback is not None and len(callback):
+ self['config'].getCurrent()[1].setValue(callback)
+ self['config'].invalidate(self['config'].getCurrent())
+ return
+
+ def imageInstall(self):
+ if self.check_free_space():
+ pluginpath = '/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot'
+ myerror = ''
+ source = self.source.value.replace(' ', '')
+ target = self.target.value.replace(' ', '')
+ for fn in os.listdir('/media/neoboot/ImageBoot'):
+ if fn == target:
+ myerror = _('Sorry, an Image with the name ') + target + _(' is already installed.\n Please try another name.')
+ continue
+
+ if source == 'None':
+ myerror = _('You have to select one Image to install.\nPlease, upload your zip file in the folder: /media/neoboot/ImagesUpload and select the image to install.')
+ if target == '':
+ myerror = _('You have to provide a name for the new Image.')
+ if target == 'Flash':
+ myerror = _('Sorry this name is reserved. Choose another name for the new Image.')
+ if len(target) > 35:
+ myerror = _('Sorry the name of the new Image is too long.')
+ if myerror:
+ myerror
+ self.session.open(MessageBox, myerror, MessageBox.TYPE_INFO)
+ else:
+ myerror
+ message = "echo -e '"
+ message += _('NeoBot started installing new image.\n')
+ message += _('The installation process may take a few minutes.\n')
+ message += _('Please: DO NOT reboot your STB and turn off the power.\n')
+ message += _('Please, wait...\n')
+ message += "'"
+ cmd1 = 'python ' + pluginpath + '/ex_init.py'
+ cmd = '%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s ' % (cmd1,
+ source,
+ target.replace(' ', '.'),
+ str(self.CopyFiles.value),
+ str(self.CopyKernel.value),
+ str(self.TvList.value),
+ str(self.Montowanie.value),
+ str(self.LanWlan.value),
+ str(self.Sterowniki.value),
+ str(self.InstallSettings.value),
+ str(self.ZipDelete.value),
+ str(self.RepairFTP.value),
+ str(self.SoftCam.value),
+ str(self.MediaPortal.value),
+ str(self.BlackHole.value))
+ print '[NEO-BOOT]: ', cmd
+ self.session.open(Console, _('NEOBoot: Install new image'), [message, cmd])
+
+
+ def check_free_space(self):
+ if Freespace('/media/neoboot/ImagesUpload') < 500000:
+ self.session.open(MessageBox, _('Not enough free space on /media/neoboot/ !!\nYou need at least 500Mb free space.\n\nExit plugin.'), type=MessageBox.TYPE_ERROR)
+ return False
+ return True
+
+ def cancel(self):
+ self.close()
+
+class HelpInstall(Screen):
+ screenwidth = getDesktop(0).size().width()
+ if screenwidth and screenwidth == 1920:
+ skin = """
+
+
+ """
+ else:
+ skin = """
+
+ """
+ __module__ = __name__
+
+ def __init__(self, session):
+ Screen.__init__(self, session)
+ self['lab1'] = ScrollLabel('')
+ self['actions'] = ActionMap(['WizardActions', 'ColorActions', 'DirectionActions'], {'back': self.close,
+ 'ok': self.close,
+ 'up': self['lab1'].pageUp,
+ 'left': self['lab1'].pageUp,
+ 'down': self['lab1'].pageDown,
+ 'right': self['lab1'].pageDown})
+ self['lab1'].hide()
+ self.updatetext()
+
+ def updatetext(self):
+
+ message = _('Source Image file')
+ message += _(' -Wybierz kursorem pilota oprogramowanie do zainstalowania (w lewo lub prawo).\n\n')
+
+ message += _('Image Name')
+ message += _(' -Zmień nazwę image - aby zmienić naciśnij na pilocie niebieski.\n\n')
+
+ message += _('Do not copy files from Flash to the installed image ?')
+ message += _(' - po zaznaczeniu tej opcji nie zostanie nic skopiowane z image flash do instalowanego image w neoboot. \n\n')
+
+ message += _('Copy the kernel of the installed system (recommended only for Vu+) ?')
+ message += _(' - po zaznaczeniu tej opcji zostanie skopiowany plik jądra (kernel) instalowanego image do neoboota, zalecane tylko dla STB vuplus \n\n')
+
+ message += _('Copy the channel list ?')
+ message += _(' - opcja kopiuje listę kanałów z flasha do instalowanego image w neoboocie.\n\n')
+
+ message += _('Copy mounting disks ? (Recommended)')
+ message += _(' - opcja przenosi do instalowanego image w neoboot ustawienia montowania podłaczonych urządzeń do tunera.\n\n')
+
+ message += _('Copy network settings LAN-WLAN ?')
+ message += _(' - opcja przenosi pliki z zawartymi ustawieniami dla sieci lan i wlan. \n\n ')
+
+ message += _('Copy the drivers ? (Recommended only other image.)')
+ message += _(' - opcja przenosi z flasza sterowniki do instalowanego image w neoboocie, zalecane tylko w przypadku jeśli instalujemy image od innego model niż posiadamy.\n\n')
+
+ message += _('Copy Settings to the new Image')
+ message += _(' - opcja kopiuje ustawienia oprogramowania z flasza do instalowanego systemu w neoboocie.\n\n')
+
+ message += _('Delete Image zip after Install ?')
+ message += _(' - po instalacji, opcja kasuje plik zip image z katalogu ImagesUpload. \n\n')
+
+ message += _('Repair FTP ? (Recommended only other image if it does not work.)')
+ message += _(' - opcja w niektórych przypadkach naprawia w instalowanym image polączenie FTP (ang. File Transfer Protocol) \n\n')
+
+ message += _('Copy config SoftCam ?')
+ message += _(' - opcja kopiuje configi oscama i cccam (openpli -domyślnie)\n\n')
+
+ message += _('Path BlackHole ? (Not recommended for VuPlus)')
+ message += _(' - opcja przeznaczona dla image blackhole, pomaga uruchomić BH w neoboot \n\n')
+
+ self['lab1'].show()
+ self['lab1'].setText(message)
+
+def Freespace(dev):
+ statdev = os.statvfs(dev)
+ space = statdev.f_bavail * statdev.f_frsize / 1024
+ print '[NeoBoot] Free space on %s = %i kilobytes' % (dev, space)
+ return space
\ No newline at end of file