From 15fb039f08f9b50c300d7aed75571e0e574f1d00 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Sun, 5 Mar 2006 21:47:47 +0000 Subject: [PATCH] add ConfigurationBackup plugin --- .../ConfigurationBackup/.cvsignore | 4 + .../ConfigurationBackup/Makefile.am | 7 + .../ConfigurationBackup/__init__.py | 0 .../ConfigurationBackup/backup.png | Bin 0 -> 4443 bytes .../ConfigurationBackup/blue.png | Bin 0 -> 3811 bytes .../ConfigurationBackup/green.png | Bin 0 -> 3811 bytes .../ConfigurationBackup/plugin.py | 227 ++++++++++++++++++ .../SystemPlugins/ConfigurationBackup/red.png | Bin 0 -> 3811 bytes .../ConfigurationBackup/yellow.png | Bin 0 -> 3811 bytes 9 files changed, 238 insertions(+) create mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/.cvsignore create mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/Makefile.am create mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/__init__.py create mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/backup.png create mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/blue.png create mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/green.png create mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/plugin.py create mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/red.png create mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/yellow.png diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/.cvsignore b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/.cvsignore new file mode 100644 index 00000000..138b9cc2 --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/.cvsignore @@ -0,0 +1,4 @@ +*.pyc +*.pyo +Makefile +Makefile.in diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/Makefile.am b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/Makefile.am new file mode 100644 index 00000000..6ad19f49 --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/Makefile.am @@ -0,0 +1,7 @@ +installdir = $(LIBDIR)/enigma2/python/Plugins/SystemPlugins/ConfigurationBackup + +install_PYTHON = \ + __init__.py \ + plugin.py red.png yellow.png green.png blue.png backup.png + + \ No newline at end of file diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/__init__.py b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/backup.png b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/backup.png new file mode 100644 index 0000000000000000000000000000000000000000..bb219a4c59863a36c6bc5da2c766b6a3888162a1 GIT binary patch literal 4443 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 bQoG{^7-LW6+pf5?|LajzMJ)v+*fRWoU}?=* literal 0 HcmV?d00001 diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/blue.png b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..f75db7a0f6820e98c57e0759d117ab398e915110 GIT binary patch literal 3811 zcmV<94jl1`P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=00004XF*Lt006O$eEU(80000WV@Og>004R=004l4008;_004mL004C` z008P>0026e000+nl3&F}00093P)t-s0000000960|2;iDKtV`SVVPE7gj!l!V{DFY zgU)SjZF!2ydy?jQkKJZwX<}kxh@0VrkGYhj-I9`$hm^yKnbU`t(ubAHZh^vWfWmcu zrFDFmVsx~2dWn2|d|hp-VQ;03jEq`op;&03Zg!J{gM+E5scd+rl9ZjBo124-u8owh zm7KP!t-G|gz@@6boT9s%ptiog!p6qNlb5E2i=%;upN^BJy}iAzuCillgpZP*w6wH? zg^fW-WS*X(uCA^b85u%CLPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)Wt zPESuyP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5d zU|?WjVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&O zadC2Ta&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8 zf`fyDgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@ zl$4Z}m6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*! zrKP5(rl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dk zwzs#pxVX5vxw*Q!y1To(yu7@dCU z$jHda$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~ z>g((4?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF) z{QUg={r&#_{{R2~2(m@N00001bW%=J06^y0W&i*He$ zUA2qg=qGUV`zvm4&i>gd9V}Jj&{|Xku{0UH;Rp#_?!DyQC0Jm;8V)%Sw6Ii-Qm68hPiH$&vc7A_+A7E?MT*K54Nerl!OmqcAxlU$lt4T#2hr2VdR8u6v{7+`# Z`v6WdLL`Qd%E15t002ovPDHLkV1hwMaqa*B literal 0 HcmV?d00001 diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/green.png b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/green.png new file mode 100644 index 0000000000000000000000000000000000000000..118c3f46fa4791a442a0e6248a7790fd80f2a48a GIT binary patch literal 3811 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 Z`v6WdLL`Qd%E15t002ovPDHLkV1mDNanJw& literal 0 HcmV?d00001 diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/plugin.py b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/plugin.py new file mode 100644 index 00000000..162e61d6 --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/plugin.py @@ -0,0 +1,227 @@ +from enigma import * +from Screens.Screen import Screen +from Screens.MessageBox import MessageBox +from Screens.Console import Console +from Components.ActionMap import ActionMap, NumberActionMap +from Components.Pixmap import * +from Components.Pixmap import Pixmap +from Components.Label import Label +from Components.MenuList import MenuList +from Components.config import config, configSelection, configSelection, getConfigListEntry, configElement, ConfigSubsection, currentConfigSelectionElement +from Components.ConfigList import ConfigList +from Plugins.Plugin import PluginDescriptor + +from Tools.NumericalTextInput import * +from Tools.Directories import * +import os +import string +import time +import datetime + +plugin_path = "" + +BackupPath = { + "hdd" : "/media/hdd/backup", + "usb" : "/media/usb/backup", + "cf" : "/media/cf/backup" + } + +class BackupSetup(Screen): + skin = """ + + + + + + + + + + + """ + + def keyLeft(self): + self["config"].handleKey(config.key["prevElement"]) + + def keyRight(self): + self["config"].handleKey(config.key["nextElement"]) + + def keyNumberGlobal(self, number): + print "You pressed number " + str(number) + if (self["config"].getCurrent()[1].parent.enabled == True): + self["config"].handleKey(config.key[str(number)]) + + def keyCancel(self): + for x in self["config"].list: + x[1].cancel() + self.close() + + def keySave(self): + for x in self["config"].list: + x[1].save() + self.close() + + def __init__(self, session, args = None): + Screen.__init__(self, session) + self.skin_path = plugin_path + + self["oktext"] = Label(_("OK")) + self["canceltext"] = Label(_("Cancel")) + self["backuptext"] = Label(_("Backup")) + self["restoretext"] = Label(_("Restore")) + self["restore"] = Pixmap() + self["backup"] = Pixmap() + self["ok"] = Pixmap() + self["cancel"] = Pixmap() + + self.path = "" + self.list = [] + self["config"] = ConfigList(self.list) + self.createSetup() + + self["actions"] = NumberActionMap(["SetupActions"], + { + "ok": self.keySave, + "cancel": self.keyCancel, + "left": self.keyLeft, + "right": self.keyRight + }, -1) + + self["shortcuts"] = ActionMap(["ShortcutActions"], + { + "red": self.keyCancel, + "green": self.keySave, + "blue": self.Backup, + "yellow": self.Restore, + }) + + + def createSetup(self): + print "Creating BackupSetup" + self.list = [ ] + self["config"] = ConfigList(self.list) + config.backup = ConfigSubsection() + config.backup.type = configElement("config.backup.type", configSelection, 0, (("full", _("full /etc directory")), ("settings", _("only /etc/enigma2 directory")), ("var", _("/var directory")))) + config.backup.location = configElement("config.backup.location", configSelection, 0, (("usb", _("USB Stick")), ("cf", _("CF Drive")), ("hdd", _("Harddisk")))) + self.list.append(getConfigListEntry(_("Backup Mode"), config.backup.type)) + self.list.append(getConfigListEntry(_("Backup Location"), config.backup.location)) + + + def createBackupfolders(self): + self.path = BackupPath[str(currentConfigSelectionElement(config.backup.location))] + print "BackupPath: ", str(self.path) + print "Creating Backup Folder if not already there..." + cmd = "[ ! -e " + self.path + " ] && mkdir " + self.path + print "Commandstring: " + str(cmd) + os.system(cmd) + + def Backup(self): + print "this will start the backup now!" + self.session.openWithCallback(self.runBackup, MessageBox, _("Do you want to backup now?\nAfter pressing OK, please wait!")) + + def Restore(self): + print "this will start the restore now!" + self.session.open(RestoreMenu) + + def runBackup(self, result): + if result: + self.createBackupfolders() + d = time.localtime() + dt = datetime.date(d.tm_year, d.tm_mon, d.tm_mday) + print "Backup Time: " + str(dt) + self.path = BackupPath[str(currentConfigSelectionElement(config.backup.location))] + print "BackupPath: ", str(self.path) + if currentConfigSelectionElement(config.backup.type) == "full": + print "Backup Mode: Full" + self.session.open(Console, ["Backup running", "tar -czvf " + self.path + "/" + str(dt) + "_full_backup.tar.gz /etc/"]) + if currentConfigSelectionElement(config.backup.type) == "settings": + print "Backup Mode: Settings" + self.session.open(Console, ["Backup running", "tar -czvf " + self.path + "/" + str(dt) + "_settings_backup.tar.gz /etc/enigma2/"]) + if currentConfigSelectionElement(config.backup.type) == "var": + print "Backup Mode: var" + self.session.open(Console, ["Backup running", "tar -czvf " + self.path + "/" + str(dt) + "_var_backup.tar.gz /var/"]) + + +class RestoreMenu(Screen): + skin = """ + + + + + + + + """ + + def __init__(self, session, args = None): + Screen.__init__(self, session) + self.skin_path = plugin_path + + self['text0'] = Label("") + self["canceltext"] = Label(_("Cancel")) + self["restoretext"] = Label(_("Restore")) + self["restore"] = Pixmap() + self["cancel"] = Pixmap() + + self.sel = [] + self.val = [] + self.entry = False + self.exe = False + + self.path = "" + + self["actions"] = NumberActionMap(["SetupActions"], + { + "ok": self.KeyOk, + "cancel": self.keyCancel + }, -1) + + self["shortcuts"] = ActionMap(["ShortcutActions"], + { + "red": self.keyCancel, + "yellow": self.KeyOk, + }) + self.flist = [] + self["filelist"] = MenuList(self.flist) + self.fill_list() + + def fill_list(self): + self.flist = [] + self.path = BackupPath[str(currentConfigSelectionElement(config.backup.location))] + print "BackupPath: ", str(self.path) + dir = os.listdir(self.path) + for x in dir: + bla = string.find(x, ".tar.gz") + if (bla > 1): + self.flist.append((x)) + self.entry = True + self["filelist"].l.setList(self.flist) + + + + def KeyOk(self): + if (self.exe == False) and (self.entry == True): + self.sel = self["filelist"].getCurrent() + self.val = self.path + self.sel + self.session.openWithCallback(self.startRestore, MessageBox, _("are you sure you want to restore\nfollowing backup:\n\n") + self.sel) + + def keyCancel(self): + self.close() + + def startRestore(self, ret = False): + if (ret == True): + self.exe = True + self['text0'].setText(_('One moment please...')) + print "Restore Location: " + str(self.path) + self.session.open(Console, ["Restore running", "tar -xzvf " + self.path + "/" + self.sel + " -C /"]) + + def Exit(self): + self.close() + +def BackupMain(session, **kwargs): + session.open(BackupSetup) + +def Plugins(path, **kwargs): + global plugin_path + plugin_path = path + return PluginDescriptor(name="Backup/Restore", description="Backup and Restore your Settings", icon="backup.png", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=BackupMain) diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/red.png b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/red.png new file mode 100644 index 0000000000000000000000000000000000000000..4f7e97fbcba963241dd4eb0119065ca579b05976 GIT binary patch literal 3811 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 Z`v6WdLL`Qd%E15t002ovPDHLkV1hE1aFPH3 literal 0 HcmV?d00001 diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/yellow.png b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..48b3e68f8fe0e36d02ee134afd05c86f3b8b0dc7 GIT binary patch literal 3811 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 Z`v6WdLL`Qd%E15t002ovPDHLkV1m68c|!mI literal 0 HcmV?d00001 -- 2.30.2