Index: ipk/source/system_addonmanager_2_0/CONTROL/control
===================================================================
--- ipk/source/system_addonmanager_2_0/CONTROL/control	(revision 3733)
+++ ipk/source/system_addonmanager_2_0/CONTROL/control	(revision 3735)
@@ -1,4 +1,4 @@
 Package: enigma2-plugin-system-addonmanager
-Version: 2.0
+Version: 2.06
 Architecture: sh4
 OE: This is the AAF- AddonManager. Maybe you know the plugin from BA / FullUSB images!
@@ -7,4 +7,4 @@
 Maintainer: AAF
 Homepage: http://www.aaf-digital.info
-Description: AddonManager v2.0
+Description: AddonManager v2.06
 Source: http://www.aaf-digital.info
Index: ipk/source/system_addonmanager_2_0/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/downloader.py
===================================================================
--- ipk/source/system_addonmanager_2_0/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/downloader.py	(revision 3733)
+++ ipk/source/system_addonmanager_2_0/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/downloader.py	(revision 3735)
@@ -27,4 +27,5 @@
 from Components.MultiContent import MultiContentEntryText
 from Tools.Directories import fileExists
+from Screens.Console import Console
 
 from os import system, remove, path, walk, makedirs, listdir
@@ -75,5 +76,14 @@
 config.AddonManager.ba_usersettings_on = ConfigInteger(0, limits=(0, 1))
 
-version = "2.00"
+config.AddonManager2 = ConfigSubsection()
+config.AddonManager2.sett_on = ConfigInteger(1, limits=(0, 1))
+config.AddonManager2.camconfig_on = ConfigInteger(1, limits=(0, 1))
+config.AddonManager2.plug_on = ConfigInteger(1, limits=(0, 1))
+config.AddonManager2.network_on = ConfigInteger(1, limits=(0, 1))
+config.AddonManager2.samba_on = ConfigInteger(1, limits=(0, 1))
+config.AddonManager2.bilder_on = ConfigInteger(0, limits=(0, 1))
+config.AddonManager2.sonstige_on = ConfigInteger(1, limits=(0, 1))
+
+version = "2.06"
 serverurl = ""
 activenam = ""
@@ -90,4 +100,15 @@
 activenam = "Addons-Server"
 serverurl = activesource + "/E2/"
+
+# Boytyp lesen
+file = open("/proc/stb/info/model", "r")
+box = file.readline().strip()
+file.close()
+
+# dm8000 is a vu-box
+#box = "dm8000"
+if box == "dm8000":
+  serverurl = activesource + "/vuplus/"
+
 
 def applySkinVars(skin,dict):
@@ -113,4 +134,45 @@
   os.system("rm /tmp/command.txt")
   return comandline
+
+def restore():
+  ffile = open("/var/etc/restore.cfg", "w")
+  if config.AddonManager2.sett_on.value == 1:
+    ffile.write("settings=y")
+  else:
+    ffile.write("settings=n")
+  ffile.write("\n")
+  if config.AddonManager2.camconfig_on.value == 1:
+    ffile.write("camconfig=y")
+  else:
+    ffile.write("camconfig=n")
+  ffile.write("\n")
+  if config.AddonManager2.plug_on.value == 1:
+    ffile.write("plugins=y")
+  else:
+    ffile.write("plugins=n")
+  ffile.write("\n")
+  if config.AddonManager2.network_on.value == 1:
+    ffile.write("network=y")
+  else:
+    ffile.write("network=n")
+  ffile.write("\n")
+  if config.AddonManager2.samba_on.value == 1:
+    ffile.write("samba=y")
+  else:
+    ffile.write("samba=n")
+  ffile.write("\n")
+  if config.AddonManager2.bilder_on.value == 1:
+    ffile.write("bilder=y")
+  else:
+    ffile.write("bilder=n")
+  ffile.write("\n")
+  if config.AddonManager2.sonstige_on.value == 1:
+    ffile.write("sonstige=y")
+  else:
+    ffile.write("sonstige=n")
+  ffile.write("\n")
+  ffile.close()
+
+restore()
 
 #----- Class Cancel -------------------------------------------------------
@@ -368,35 +430,69 @@
 		self.ThumbTimer.callback.append(self.list_download)
 
-		self["actions"] = ActionMap(["OkCancelActions", "ColorActions", "DirectionActions", "EPGSelectActions", "MenuActions", "InfobarTeletextActions", "NumberActions", "MovieSelectionActions"],
-		{
-			"cancel": self.closeCB,
-			"red": self.plugins_download,
-			"green": self.ipks_download,			#"green": self.patches_download,
-			"yellow": self.emusconfig_download,
-			"blue": self.emus_download,
-
-			"1": self.settings_download,
-			"2": self.bootbilder_download,
-			"3": self.radiobilder_download,
-			"4": self.image_download,
-			"7": self.skins_download,
-			"8": self.beta_download,
-			"9": self.sh_preview,
-			"0": self.update,
-
-			"prevBouquet": self.switchList,
-			"nextBouquet": self.switchList,
-			"ok": self.check_download,
-			"left": self.left,
-			"right": self.right,
-			"up": self.up,
-			"upRepeated": self.up,
-			"downRepeated": self.down,
-			"menu": self.settings_menu,
-			"startTeletext": self.switch_ListTyp,
-			"showEventInfo": self.info,
-			"showEpg": self.usb_load,
-			"down": self.down
-		}, -1)
+		#self.box = "dm8000"
+		if box == "dm8000":
+			self["actions"] = ActionMap(["OkCancelActions", "ColorActions", "DirectionActions", "EPGSelectActions", "MenuActions", "InfobarTeletextActions", "NumberActions", "MovieSelectionActions"],
+			{
+				"cancel": self.closeCB,
+				"red": self.plugins_download,
+				"green": self.ipks_download,
+				"yellow":  self.skins_download,
+				"blue": self.emus_download,
+				"1": self.settings_download,
+				"2": self.picons_download,
+				"5": self.settings_backup,
+				"6": self.settings_restore,
+				"8": self.beta_download,
+				"9": self.sh_preview,
+				"0": self.update,
+
+				"prevBouquet": self.switchList,
+				"nextBouquet": self.switchList,
+				"ok": self.check_download,
+				"left": self.left,
+				"right": self.right,
+				"up": self.up,
+				"upRepeated": self.up,
+				"downRepeated": self.down,
+				"menu": self.settings_menu,
+				"startTeletext": self.switch_ListTyp,
+				"showEventInfo": self.info,
+				"showEpg": self.usb_load,
+				"down": self.down
+			}, -1)
+		else:
+			self["actions"] = ActionMap(["OkCancelActions", "ColorActions", "DirectionActions", "EPGSelectActions", "MenuActions", "InfobarTeletextActions", "NumberActions", "MovieSelectionActions"],
+			{
+				"cancel": self.closeCB,
+				"red": self.plugins_download,
+				"green": self.ipks_download,
+				"yellow": self.emusconfig_download,
+				"blue": self.emus_download,
+
+				"1": self.settings_download,
+				"2": self.bootbilder_download,
+				"3": self.radiobilder_download,
+				"4": self.image_download,
+				"5": self.settings_backup,
+				"6": self.settings_restore,
+				"7": self.skins_download,
+				"8": self.beta_download,
+				"9": self.sh_preview,
+				"0": self.update,
+
+				"prevBouquet": self.switchList,
+				"nextBouquet": self.switchList,
+				"ok": self.check_download,
+				"left": self.left,
+				"right": self.right,
+				"up": self.up,
+				"upRepeated": self.up,
+				"downRepeated": self.down,
+				"menu": self.settings_menu,
+				"startTeletext": self.switch_ListTyp,
+				"showEventInfo": self.info,
+				"showEpg": self.usb_load,
+				"down": self.down
+			}, -1)
 
 
@@ -443,9 +539,18 @@
 			self["key_red"].text = _("Plugin")
 			self["key_green"].text = (_("IPK"))
-			self["key_yellow"].text = (_("EmuConfig"))
+			#self.box = "dm8000"
+			if box == "dm8000":
+				self["key_yellow"].text = (_("Skins"))
+				self["key_1"].text = _("(1) Settings")
+				self["key_2"].text = (_("(2) Picons"))
+				self["key_3"].text = (_("(5) Backup"))
+				self["key_4"].text = (_("(6) Restore"))
+			else:
+				self["key_yellow"].text = (_("EmuConfig"))
+				self["key_1"].text = _("(1) Settings")
+				self["key_2"].text = (_("(2) Bootbilder"))
+				self["key_3"].text = (_("(3) Radiobilder"))
+
 			self["key_blue"].text = (_("Emus"))
-			self["key_1"].text = _("(1) Settings")
-			self["key_2"].text = (_("(2) Bootbilder"))
-			self["key_3"].text = (_("(3) Radiobilder"))
 
 			if os.path.exists("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ufs922") is False:
@@ -454,5 +559,6 @@
 				else:
 					#self["key_4"].text = (_("(4) BAold-Image"))
-					self["key_4"].text = (_("  "))
+					if box <> "dm8000":
+						self["key_4"].text = (_("(5,6) Back/Rest"))
 
 				self.read_Boxtyp()
@@ -560,5 +666,6 @@
 
 	def info(self):
-		evfd.getInstance().vfd_write_string("Version V " + version)
+		if box <> "dm8000":
+			evfd.getInstance().vfd_write_string("Version V " + version)
 		message = "%s %s\n\n%s" % (_("AAF Addon-Manager\n\n     Version "), version, _("       AAF-Team\n\n@Bauernbub 2009"))
 		self.session.openWithCallback(self.update_now, MessageBox, message, MessageBox.TYPE_INFO)
@@ -573,14 +680,17 @@
 			print "[Addon-Manager] gleich"
 			message = "%s %s\n%s %s\n\n%s" % (_("Version am Server:"), version_server, _("Version in der Box:"), version, _("Ein Update ist nicht erforderlich!"))
-			evfd.getInstance().vfd_write_string("No Update")
+			if box <> "dm8000":
+				evfd.getInstance().vfd_write_string("No Update")
 			self.session.open( MessageBox, message, MessageBox.TYPE_INFO)
 		else:
 			if version_server > version:
 				message = "%s %s\n%s %s\n\n%s" % (_("Version am Server:"), version_server, _("Version in der Box:"), version, _("Ein Update ist empfehlenswert!"))
-				evfd.getInstance().vfd_write_string("UPDATE is here")
+				if box <> "dm8000":
+					evfd.getInstance().vfd_write_string("UPDATE is here")
 				self.session.openWithCallback(self.update_now, MessageBox, message, MessageBox.TYPE_YESNO)
 			else:
 				message = "%s %s\n%s %s\n\n%s" % (_("\nKlingt wie ein Scherz, aber die Version am Server ist aelter als die auf ihrer Box!\n\nVersion am Server:"), version_server, _("Version in der Box:"), version, _("NICHT UPDATEN, sie besitzen vermutlich eine fortgeschrittene Betaversion!"))
-				evfd.getInstance().vfd_write_string("Update is older")
+				if box <> "dm8000":
+					evfd.getInstance().vfd_write_string("Update is older")
 				self.session.openWithCallback(self.update_now, MessageBox, message, MessageBox.TYPE_YESNO)
 
@@ -588,6 +698,12 @@
 		self.downloading(False)
 		if answer == True:
-			versurl = activesource + "/addon-man_e2.tar.gz"
+
+			if box <> "dm8000":
+				versurl = activesource + "/addon-man_e2.tar.gz"
+			else:
+				versurl = activesource + "/addon-man_vu_e2.tar.gz"
+
 			h = urllib.urlretrieve(versurl, "/tmp/aaf/addon-man_e2.tar.gz")
+
 			os.system("cd /tmp/aaf; tar -xzf addon-man_e2.tar.gz")
 			if os.path.exists("/tmp/aaf/addon-man_e2.tar.gz") is True:
@@ -596,5 +712,6 @@
 				os.system("cd / ; rm *tar.gz")
 				os.system("mkdir /tmp/aaf")
-				evfd.getInstance().vfd_write_string("rebooting ....")
+				if box <> "dm8000":
+					evfd.getInstance().vfd_write_string("rebooting ....")
 				message = "%s" % (_("Der Addon-Manager hat einen Neustart angefordert!\nDie Box wird nun neu gestartet!"))
 				self.session.openWithCallback(self.update_now, MessageBox, message, MessageBox.TYPE_YESNO)
@@ -607,4 +724,6 @@
 		self.downloading(True)
 		self.download = self.feed_download
+		print "[feed-download]" +  self.feed_base + "index.txt"
+
 		if os.path.exists("/tmp/aaf") is False:
 				os.system("mkdir /tmp/aaf")
@@ -629,8 +748,12 @@
 		self.downloading(False)
 
+		#self.box = "dm8000"
+
 		if self.plug == "ipk":
 				fileresultmask = re.compile("(?P<name>.*?)\#\#(?P<url>.*?_sh4.ipk)", re.DOTALL)
 		elif self.plug == "ipkimage":
 				fileresultmask = re.compile("(?P<name>.*?)\#\#(?P<url>.*?.img)", re.DOTALL)
+		elif box == "dm8000":
+				fileresultmask = re.compile("(?P<name>.*?)\#\#(?P<url>.*?.ipk)", re.DOTALL)
 		else:
 				fileresultmask = re.compile("(?P<name>.*?)\#\#(?P<url>.*?.gz)", re.DOTALL)
@@ -828,7 +951,6 @@
 			if self.box == "cuberevo" or self.box == "cuberevo-mini" or self.box == "cuberevo-mini2":
 				self.box = "cuberevo"
-			if self.box == "ufs910" or self.box == "hdbox":
-				self.box = "ufs910"
-				print "[Addon-Manager]" + self.box
+			#if self.box == "ufs910" or self.box == "UFS922":
+			#	self.box = "ufs"
 
 #----- you press au Menu-key, define the urls----------------------------------
@@ -838,7 +960,9 @@
 			print "[Addon-Manager] you are in AAF-Betasection"
 			self.previewtimeout = 600
-			evfd.getInstance().vfd_write_string("BETA-Section")
+			if box <> "dm8000":
+				evfd.getInstance().vfd_write_string("BETA-Section")
 			self.plug = "beta"
-			serverurlbeta = "http://addons.aaf-board.net/E2/"
+			serverurlbeta = "http://kati910.aaf-board.info/dbase/E2/"
+			#serverurlbeta = "http://addons.aaf-board.net/E2/" old server
 			self.feed_base = serverurlbeta + "%s/" % self.plug
 			self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
@@ -847,5 +971,6 @@
 	def plugins_download(self):
 		self.plug = "plugins"
-		evfd.getInstance().vfd_write_string("Plugins")
+		if box <> "dm8000":
+			evfd.getInstance().vfd_write_string("Plugins")
 		self.feed_base = serverurl + "%s/" % self.plug
 		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
@@ -854,5 +979,6 @@
 	def patches_download(self):
 		self.plug = "patches"
-		evfd.getInstance().vfd_write_string("Patches")
+		if box <> "dm8000":
+			evfd.getInstance().vfd_write_string("Patches")
 		self.feed_base = serverurl + "%s/" % self.plug
 		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
@@ -861,5 +987,6 @@
 	def emus_download(self):
 		self.plug = "emus"
-		evfd.getInstance().vfd_write_string("Emus")
+		if box <> "dm8000":
+			evfd.getInstance().vfd_write_string("Emus")
 		self.feed_base = serverurl + "%s/" % self.plug
 		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
@@ -868,5 +995,6 @@
 	def emusconfig_download(self):
 		self.plug = "emusconfig"
-		evfd.getInstance().vfd_write_string("EmusConfig")
+		if box <> "dm8000":
+			evfd.getInstance().vfd_write_string("EmusConfig")
 		self.feed_base = serverurl + "%s/" % self.plug
 		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
@@ -875,5 +1003,6 @@
 	def settings_download(self):
 		self.plug = "settings"
-		evfd.getInstance().vfd_write_string("Settings")
+		if box <> "dm8000":
+			evfd.getInstance().vfd_write_string("Settings")
 		self.feed_base = serverurl + "%s/" % self.plug
 		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
@@ -886,5 +1015,6 @@
 		if self.box == "cuberevo":
 				self.plug = "skins_cuberevo"
-		evfd.getInstance().vfd_write_string("Skins")
+		if box <> "dm8000":
+			evfd.getInstance().vfd_write_string("Skins")
 		self.feed_base = serverurl + "%s/" % self.plug
 		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
@@ -892,7 +1022,13 @@
 
 	def ipks_download(self):
-		self.plug = "ipk"
-		evfd.getInstance().vfd_write_string("IPK")
-		if os.path.exists("/var/etc/ipkg/official-feed.conf") is True:
+		self.read_Boxtyp()
+		print "Boxtyp=" + self.box
+		if box == "dm8000":
+			self.ipks_vudownload()
+		else:
+			self.plug = "ipk"
+			if box <> "dm8000":
+				evfd.getInstance().vfd_write_string("IPK")
+			if os.path.exists("/var/etc/ipkg/official-feed.conf") is True:
 				file = open("/var/etc/ipkg/official-feed.conf", "r")
 				self.feed_base = file.readline().strip()
@@ -900,17 +1036,27 @@
 				self.feed_base = str(self.feed_base) + "/"
 				self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
-		elif os.path.exists("/etc/ipkg/official-feed.conf") is True:
+			elif os.path.exists("/etc/ipkg/official-feed.conf") is True:
 				file = open("/etc/ipkg/official-feed.conf", "r")
 				self.feed_base = file.readline().strip()
 				self.feed_base = self.feed_base.replace(u"src/gz cross ","")
 				self.feed_base = str(self.feed_base) + "/"
-		else:
+			else:
 				self.feed_base = serverurl + "%s/" % self.plug
 				self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
+			self.feed_download()
+
+	def ipks_vudownload(self):
+		self.plug = "ipkvu"
+		if box <> "dm8000":
+			evfd.getInstance().vfd_write_string("IPK-VU")
+		self.feed_base = serverurl + "ipk/"
+		self.plugin_filter = "" 
+		print "DownTyp=" + self.feed_base
 		self.feed_download()
 
 	def bootbilder_download(self):
 		self.plug = "bootbilder"
-		evfd.getInstance().vfd_write_string("Bootbilder")
+		if box <> "dm8000":
+			evfd.getInstance().vfd_write_string("Bootbilder")
 		self.feed_base = serverurl + "%s/" % self.plug
 		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
@@ -919,5 +1065,6 @@
 	def radiobilder_download(self):
 		self.plug = "radiobilder"
-		evfd.getInstance().vfd_write_string("Radiobilder")
+		if box <> "dm8000":
+			evfd.getInstance().vfd_write_string("Radiobilder")
 		self.feed_base = serverurl + "%s/" % self.plug
 		self.plugin_filter = "" # "release" # only show IPKs containing this string, or all if ""
@@ -926,7 +1073,16 @@
 	def spiele_download(self):
 		self.plug = "spiele"
-		evfd.getInstance().vfd_write_string("Spiele")
+		if box <> "dm8000":
+			evfd.getInstance().vfd_write_string("Spiele")
 		self.feed_base = serverurl + "%s/" % self.plug
 		self.plugin_filter = "" 
+		self.feed_download()
+
+	def picons_download(self):
+		self.plug = "picons"
+		if box <> "dm8000":
+			evfd.getInstance().vfd_write_string("Picons")
+		self.feed_base = serverurl + "%s/" % self.plug
+		self.plugin_filter = ""
 		self.feed_download()
 
@@ -935,8 +1091,24 @@
 			if os.path.exists("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ufs922") is False:
 				self.plug = "image"
-				evfd.getInstance().vfd_write_string("BA-Image")
+				if box <> "dm8000":
+					evfd.getInstance().vfd_write_string("BA-Image")
 				self.feed_base = serverurl + "%s/" % self.plug
 				self.plugin_filter = ""
 				self.feed_download()
+
+	def settings_backup(self):
+				self["statusbar"].text = _("Backup der Einstellungen ist gestartet ....")
+				self.CpString = "/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/backup.sh"
+				#self.showlog(self.CpString)
+				self.session.open(Console, title = _("Backup - Settings"), cmdlist = ["%s" % self.CpString], closeOnSuccess = False)
+				self["statusbar"].text = _("                                           ")
+
+
+	def settings_restore(self):
+				self["statusbar"].text = _("Restore der Einstellungen laueft ....")
+				self.CpString = "/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/restore.sh"
+				#self.showlog(self.CpString)
+				self.session.open(Console, title = _("Restore - Settings"), cmdlist = ["%s" % self.CpString], closeOnSuccess = False)
+
 
 #----- plugin download ------------------------------------------------------------
@@ -955,5 +1127,6 @@
 				print "[Addon-Manager] Flashname: ", self.flashname
 				self.PLUGINlocal = "/var/swap/images/" + str(self.flashname)
-				evfd.getInstance().vfd_write_string("load USBImage")
+				if box <> "dm8000":
+					evfd.getInstance().vfd_write_string("load USBImage")
 
 				os.system("rm /tmp/nochmals")
@@ -975,8 +1148,16 @@
 			if len(str(self.foundipk)) == 4:
 				self.PLUGINlocal = '/tmp/aaf/downfile.tar.gz'
-				evfd.getInstance().vfd_write_string("load Tarfile")
+				if box <> "dm8000":
+					evfd.getInstance().vfd_write_string("load Tarfile")
 			else:
 				self.PLUGINlocal = '/tmp/aaf/downfile.sh4.ipk'
-				evfd.getInstance().vfd_write_string("load IPK")
+				if box <> "dm8000":
+					evfd.getInstance().vfd_write_string("load IPK")
+
+			#self.box = "dm8000"
+			if box == "dm8000":
+				self.PLUGINlocal = '/tmp/aaf/downfile.sh4.ipk'
+				if box <> "dm8000":
+					evfd.getInstance().vfd_write_string("load IPK")
 
 			self.PluginPath = "E2/image"
@@ -1033,5 +1214,6 @@
 
 						self.PLUGINlocal = '/var/baroot/UFS_Images/%s' % self.urlname
-						evfd.getInstance().vfd_write_string("load Image")
+						if box <> "dm8000":
+							evfd.getInstance().vfd_write_string("load Image")
 
 					pngpath = "/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/install.png"
@@ -1086,5 +1268,6 @@
 			if os.path.exists("/bootp.conf") is True:
 				if self.BAtyp == "new":
-					evfd.getInstance().vfd_write_string("install Image")
+					if box <> "dm8000":
+						evfd.getInstance().vfd_write_string("install Image")
 					self["statusbar"].text = _("Decompressing Image in progress...")
 					self.urlnameorg = self.urlname
@@ -1188,5 +1371,6 @@
           # and now we copy the settings
 					if config.AddonManager.ba_settings_on.value == 1:
-						evfd.getInstance().vfd_write_string("install Settings")
+						if box <> "dm8000":
+							evfd.getInstance().vfd_write_string("install Settings")
 						self["statusbar"].text = _("Settings werden uebernommen....")
 
@@ -1285,9 +1469,10 @@
 						os.system("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/ba_script.sh")
 
-					evfd.getInstance().vfd_write_string("Image Ready!")
+					if box <> "dm8000":
+						evfd.getInstance().vfd_write_string("Image Ready!")
 					restartbox = self.session.openWithCallback(self.restart,MessageBox,_("Das Image ist nun fertig installiert!\nSoll ein Neustart durchgefuehrt werden?"), MessageBox.TYPE_YESNO)
 					restartbox.setTitle(_("UFS-Box starten?"))
 		else:
-			# not an ipk-file
+			# no image and an ipk-file
 			if len(str(self.foundipk)) == 4:
 				ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
@@ -1332,5 +1517,5 @@
 					print "[Addon-Manager] Flash=", freesize
 					#GOst ---> cut -c1-4 -nach-> cut -d\t -f1
-					os.system("du -sc /tmp/aaf |grep total|cut -d\t -f1 >/tmp/free2.txt")
+					os.system("du -sc /tmp/aaf |grep total|cut -dt -f1 >/tmp/free2.txt")
 					if os.path.exists("/tmp/free2.txt") is True:
 						f = open("/tmp/free2.txt", "r" )
@@ -1354,4 +1539,6 @@
 					else:
 						print "[Addon-Manager] FreeSpace Error in Flash!"
+						#def __init__(self, session, title = "Console", cmdlist = None, finishedCallback = None, closeOnSuccess = False):
+
 						self["statusbar"].text = _("FreeSpace Error!")
 						print "[Addon-Manager] frei=", freesize,"File=",filesize
@@ -1405,17 +1592,17 @@
 							# und nun in der ufs910 im Flash den emu installieren
 							os.system("rm /tmp/aaf/*.tar.gz ; sync")
-							#os.system("cp -RP /tmp/aaf/* / ; sync") # error when by softlink
-							os.system("(. /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/cp_r.func; cd /tmp/aaf; cp_r /tmp/aaf /)" )
-
+							os.system("cp -RP /tmp/aaf/* / ; sync")
 							if self.swaptest == True:
 								os.system("cd /usr/lib/enigma2/python/Plugins/Extensions/AddonManager; ./do_link.sh")
 								print "[Addon-Manager] Emu wude nach /var/swap/bin verlinkt"
 
-				# 14.03.2010 abgeschaltet wegen TF Softlink
 				if os.path.exists("/tmp/aaf/inst.sh") is True:
 					print "[Addon-Manager] Preinst gefunden (inst.sh)"
-					#os.system("(. /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/cp_r.func; cd /tmp/aaf; ./inst.sh)" )
-					os.system("(. /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/cp_r.func; cd /tmp/aaf; cp_r /tmp/aaf /; sync)" )
-
+					#os.system("sed -e 's/cp -RP /. \/usr\/lib\/enigma2\/python\/Plugins\/Extensions\/AddonManager\/cp_r.func; cp_r \/tmp\/aaf\//g' -i /tmp/aaf/inst.sh")
+					#os.system("sed -e 's/cp -RP /cp_r /g' -i /tmp/aaf/inst.sh")
+					#os.system("cd /tmp/aaf; ./inst.sh" )
+					os.system("(. /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/cp_r.func; cd /tmp/aaf; ./inst.sh)" )
+					#os.system("rm -r /tmp/aaf")
+					#os.system("cd / ; rm *tar.gz ; rm inst.sh")
 				else:
 					# Boxtyp lesen
@@ -1424,4 +1611,6 @@
 					file.close()
 					# Topfield "TF7700HDPVR"
+
+					#self.box ="dm8000"
 					ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
 					ffile.write("erkannter Boxtyp:" + self.box)
@@ -1509,32 +1698,51 @@
 						# es ist ein Flash aber keine ufs910
 						else:
-							ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
-							ffile.write("es ist ein Flashimage aber keine ufs910")
-							ffile.write("\n")
-							ffile.write("cp_r /tmp/aaf / ; sync")
-							ffile.write("\n")
-							ffile.close()
-							#GOst begin
-							#os.system("cp -RP /tmp/aaf/* / ; sync")
-							os.system("(. /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/cp_r.func; cd /tmp/aaf; cp_r /tmp/aaf / ; sync)" )
-
-							#os.system("(cd /tmp/aaf; tar -xzf *tar.gz -C / ; sync)")
-							#GOst end
+							#self.box = "dm8000"
+							if box == "dm8000":
+								ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+								ffile.write("es ist ein Flashimage aber keine ufs910")
+								ffile.write("\n")
+								ffile.write("IPKvu wird entpackt!")
+								ffile.write("\n")
+								ffile.close()
+								self["statusbar"].text = _("Decompressing IPK-File...")
+								os.system("cd /tmp/aaf ; ipkg install /tmp/aaf/downfile.sh4.ipk")
+								#os.system("rm -r /tmp/aaf")
+							else:
+								ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+								ffile.write("es ist ein Flashimage aber keine ufs910")
+								ffile.write("\n")
+								ffile.write("cp -RP /tmp/aaf/* / ; sync")
+								ffile.write("\n")
+								ffile.close()
+								#GOst begin
+								#os.system("cp -RP /tmp/aaf/* / ; sync")
+								os.system("(cd /tmp/aaf; tar -xzf *tar.gz -C / ; sync)")
+								#GOst end
 
 					# es ist kein Flash
 					else:
-							ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
-							ffile.write("es ist kein Flashimage")
-							ffile.write("\n")
-							ffile.write("cp_r /tmp/aaf / ; sync")
-							ffile.write("\n")
-							ffile.close()
-							#GOst begin
-							os.system("(. /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/cp_r.func; cp_r /tmp/aaf / ; sync)")
-							#os.system("(cd /tmp/aaf; tar -xzf *tar.gz -C / ; sync)")
-							#GOst end
-
-					os.system("rm -r /tmp/aaf")
-					os.system("cd / ; rm *tar.gz")
+							if box == "dm8000":
+								ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+								ffile.write("IPKvu wird entpackt!")
+								ffile.write("\n")
+								ffile.close()
+								self["statusbar"].text = _("Decompressing IPK-File...")
+								os.system("cd /tmp/aaf ; ipkg install /tmp/aaf/downfile.sh4.ipk")
+								os.system("rm -r /tmp/aaf")
+							else:
+								ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
+								ffile.write("es ist kein Flashimage")
+								ffile.write("\n")
+								ffile.write("cp -RP /tmp/aaf/* / ; sync")
+								ffile.write("\n")
+								ffile.close()
+								#GOst begin
+								#os.system("(. /usr/lib/enigma2/python/Plugins/Extensions/AddonManager/cp_r.func; cp_r /tmp/aaf / ; sync)")
+								os.system("(cd /tmp/aaf; tar -xzf *tar.gz -C / ; sync)")
+								#GOst end
+
+					#os.system("rm -r /tmp/aaf")
+					#os.system("cd / ; rm *tar.gz")
 			else:
 				ffile = open("/usr/lib/enigma2/python/Plugins/Extensions/AddonManager/inst.log","a")
@@ -1545,9 +1753,6 @@
 				self["statusbar"].text = _("Decompressing IPK-File...")
 				os.system("cd /tmp/aaf ; ipkg install /tmp/aaf/downfile.sh4.ipk")
-				os.system("rm -r /tmp/aaf")
-
-
-		os.system("rm -r /tmp/aaf")
-		os.system("cd / ; rm *tar.gz")
+				#os.system("rm -r /tmp/aaf")
+
 		os.system("mkdir /tmp/aaf")
 		self["statusbar"].text = _("Installation OK!")
@@ -1629,5 +1834,5 @@
     skin = """
         <screen position="{screen.pos}" size="650,400" title="Addon-Manager Setup" >
-        <widget name="config" position="40,10" size="570,360" scrollbarMode="showOnDemand" />
+        <widget name="config" position="40,10" size="570,325" scrollbarMode="showOnDemand" />
         <widget name="buttonred" position="40,360" size="100,40" backgroundColor="red" valign="center" halign="center" zPosition="2"  foregroundColor="white" font="Regular;18"/>
         <widget name="buttongreen" position="160,360" size="100,40" backgroundColor="green" valign="center" halign="center" zPosition="2"  foregroundColor="white" font="Regular;18"/>
@@ -1669,4 +1874,11 @@
         self.list.append(getConfigListEntry(_("BA temp.Image nach Download entfernen (1=Ein, 0=Aus)"), config.AddonManager.ba_remove_on))
         self.list.append(getConfigListEntry(_("BA Defaultsettings kopieren (1=Ein, 0=Aus)"), config.AddonManager.ba_usersettings_on))
+        self.list.append(getConfigListEntry(_("Restore Settings (1=Ein, 0=Aus)"), config.AddonManager2.sett_on))
+        self.list.append(getConfigListEntry(_("Restore CamConfig (1=Ein, 0=Aus)"), config.AddonManager2.camconfig_on))
+        self.list.append(getConfigListEntry(_("Restore Plugins(1=Ein, 0=Aus)"), config.AddonManager2.plug_on))
+        self.list.append(getConfigListEntry(_("Restore Netzwerk (1=Ein, 0=Aus)"), config.AddonManager2.network_on))
+        self.list.append(getConfigListEntry(_("Restore Samba (1=Ein, 0=Aus)"), config.AddonManager2.samba_on))
+        self.list.append(getConfigListEntry(_("Restore Bootbilder (1=Ein, 0=Aus)"), config.AddonManager2.bilder_on))
+        self.list.append(getConfigListEntry(_("Restore sonstiges (1=Ein, 0=Aus)"), config.AddonManager2.sonstige_on))
 
         ConfigListScreen.__init__(self, self.list)
@@ -1693,5 +1905,5 @@
 
         if config.AddonManager.which_server.value == 1:
-		        activesource = "http://addons.aaf-board.net"
+		        activesource = "http://kati910.aaf-board.info/dbase"
 		        activenam = "Primary-Server"
         else:
@@ -1700,4 +1912,5 @@
         #if self.betacode == True:
 	      #  self.previewtimeout = 600
+        #restore()
         self.close()
 
@@ -1707,4 +1920,70 @@
             x[1].cancel()
         self.close(False)
+
+class RestoreConfigScreen(ConfigListScreen,Screen):
+    skin = """
+        <screen position="{screen.pos}" size="650,400" title="Backup Restore Setup" >
+        <widget name="config" position="40,10" size="570,325" scrollbarMode="showOnDemand" />
+        <widget name="buttonred" position="40,360" size="100,40" backgroundColor="red" valign="center" halign="center" zPosition="2"  foregroundColor="white" font="Regular;18"/>
+        <widget name="buttongreen" position="160,360" size="100,40" backgroundColor="green" valign="center" halign="center" zPosition="2"  foregroundColor="white" font="Regular;18"/>
+        </screen>"""
+
+    def __init__(self, session, args = 0):
+        self.session = session
+        #switch automatic to current skin
+        current_w = getDesktop(0).size().width()
+        current_h = getDesktop(0).size().height()
+        print "[Addon-Manager] DESKTOPsize is",current_w,current_h
+        size_w = 650
+        size_h = 400
+
+        # calculate Skin koordinates
+        pos_w = (current_w - size_w)/2
+        pos_h = (current_h - size_h)/2
+
+        # set Skinvariables
+        self.dict = {
+				   'screen.size': "%i,%i"%(size_w,size_h),
+				   'screen.pos': "%i,%i"%(pos_w,pos_h),
+				   }
+
+        self.skin = applySkinVars(RestoreConfigScreen.skin,self.dict)
+        Screen.__init__(self, session)
+        self.list = []
+        self.list.append(getConfigListEntry(_("Restore Settings (1=Ein, 0=Aus)"), config.AddonManager2.sett_on))
+        self.list.append(getConfigListEntry(_("Restore CamConfig (1=Ein, 0=Aus)"), config.AddonManager2.camconfig_on))
+        self.list.append(getConfigListEntry(_("Restore Plugins(1=Ein, 0=Aus)"), config.AddonManager2.plug_on))
+        self.list.append(getConfigListEntry(_("Restore Netzwerk (1=Ein, 0=Aus)"), config.AddonManager2.network_on))
+        self.list.append(getConfigListEntry(_("Restore Samba (1=Ein, 0=Aus)"), config.AddonManager2.samba_on))
+        self.list.append(getConfigListEntry(_("Restore Bootbilder (1=Ein, 0=Aus)"), config.AddonManager2.bilder_on))
+        self.list.append(getConfigListEntry(_("Restore sonstiges (1=Ein, 0=Aus)"), config.AddonManager2.sonstige_on))
+
+        ConfigListScreen.__init__(self, self.list)
+        self["buttonred"] = Label(_("cancel"))
+        self["buttongreen"] = Label(_("ok"))
+        self["setupActions"] = ActionMap(["SetupActions"],
+        {
+            "green": self.save,
+            "red": self.cancel,
+            "save": self.save,
+            "cancel": self.cancel,
+            "ok": self.save,
+        }, -2)
+
+    def save(self):
+        global activesource, activenam
+        for x in self["config"].list:
+			      x[1].save()
+        config.save()
+
+        restore()
+        self.close()
+
+    def cancel(self):
+        print "[Addon-Manager] cancel"
+        for x in self["config"].list:
+            x[1].cancel()
+        self.close(False)
+
 
 #-----------------------------------------------------------------
