From: maniacikarus Date: Wed, 11 Jul 2007 20:30:21 +0000 (+0000) Subject: kleine Korrektur in der Samba CGI X-Git-Url: http://git.ipfire.org/?p=people%2Fteissler%2Fipfire-2.x.git;a=commitdiff_plain;h=8e8bbd9da3bd20ce3871b92b8aab88ac7b880457 kleine Korrektur in der Samba CGI IPFire Backup Loesung weiter gebaut kleiner fix im dhcp init Skript git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@676 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8 --- diff --git a/config/backup/backup.pl b/config/backup/backup.pl index ae9fec08a..f0ae002c4 100644 --- a/config/backup/backup.pl +++ b/config/backup/backup.pl @@ -14,23 +14,48 @@ $Stunden = sprintf("%02d", $Stunden); $Minuten = sprintf("%02d", $Minuten); if ($ARGV[0] eq 'include') { + &createinclude; + my @files = `find / -name *.log`; + foreach (@files){ + push(@include,$_); + } + open(DATEI, ">/tmp/include") || die "Could not save temp include file"; + print DATEI @include; + close(DATEI); + system("tar -cvzf /srv/web/ipfire/html/backup/$Jahr$Monat$Monatstag-$Stunden:$Minuten.ipf --files-from=/tmp/include --exclude-from=/var/ipfire/backup/exclude"); + system("rm /tmp/include"); +} + +if ($ARGV[0] eq 'exclude') { &createinclude; open(DATEI, ">/tmp/include") || die "Could not save temp include file"; print DATEI @include; close(DATEI); - system("tar -cvzf /var/ipfire/backup/$Jahr$Monat$Monatstag-$Stunden:$Minuten.ipf --files-from=/tmp/include --exclude-from=/var/ipfire/backup/exclude"); + system("tar -cvzf /srv/web/ipfire/html/backup/$Jahr$Monat$Monatstag-$Stunden:$Minuten.ipf --files-from='/tmp/include' --exclude-from='/var/ipfire/backup/exclude'"); system("rm /tmp/include"); } +if ($ARGV[0] eq 'restore') { + system("tar -xvz --preserve -f /tmp/restore.ipf"); +} + if ($ARGV[0] eq 'exclude') { &createinclude; open(DATEI, ">/tmp/include") || die "Could not save temp include file"; print DATEI @include; close(DATEI); - system("tar -cvzf /var/ipfire/backup/$Jahr$Monat$Monatstag-$Stunden:$Minuten.ipf --files-from='/tmp/include' --exclude-from='/var/ipfire/backup/exclude'"); + system("tar -cvzf /srv/web/ipfire/html/backup/$Jahr$Monat$Monatstag-$Stunden:$Minuten.ipf --files-from='/tmp/include' --exclude-from='/var/ipfire/backup/exclude'"); system("rm /tmp/include"); } +if ($ARGV[0] eq 'cli') { + system("tar -cvzf /srv/web/ipfire/html/backup/$Jahr$Monat$Monatstag-$Stunden:$Minuten-$ARGV[1].ipf --files-from='$ARGV[2]' --exclude-from='$ARGV[3]'"); +} + +if ($ARGV[0] eq '') { + printf "No argument given, please use \n" +} + sub createinclude(){ open(DATEI, "<${General::swroot}/backup/include") || die "Can not open include file"; @@ -42,8 +67,8 @@ sub createinclude(){ my @files = `ls $_`; foreach (@files){ push(@include,$_); - } - } + } + } else {push(@include,$_);} } } diff --git a/config/backup/exclude b/config/backup/exclude index 1944fd61e..4c8c09b7f 100644 --- a/config/backup/exclude +++ b/config/backup/exclude @@ -1 +1,2 @@ *.tmp +/var/ipfire/ethernet/settings diff --git a/config/backup/include b/config/backup/include index 49fce8f20..802ebc25c 100644 --- a/config/backup/include +++ b/config/backup/include @@ -1,3 +1,7 @@ /var/ipfire/*/settings /var/ipfire/*/*.conf /var/ipfire/*/*.pem +/etc/passwd +/etc/shadow +/etc/group + diff --git a/html/cgi-bin/backup.cgi b/html/cgi-bin/backup.cgi index 372d9080c..fbc96271b 100644 --- a/html/cgi-bin/backup.cgi +++ b/html/cgi-bin/backup.cgi @@ -10,6 +10,7 @@ use strict; # enable only the following on debugging purpose use warnings; use CGI::Carp 'fatalsToBrowser'; +use File::Copy; require '/var/ipfire/general-functions.pl'; require "${General::swroot}/lang.pl"; @@ -17,45 +18,74 @@ require "${General::swroot}/header.pl"; my %color = (); my %mainsettings = (); -my %backupsettings = (); +my %cgiparams=(); my %checked = (); my $message = ""; my $errormessage = ""; -my @backups = `cd /var/ipfire/backup/ && ls *.ipf`; +my @backups = `cd /srv/web/ipfire/html/backup && ls *.ipf`; +$a = new CGI; &General::readhash("${General::swroot}/main/settings", \%mainsettings); &General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color); -&Header::showhttpheaders(); -&Header::getcgihash(\%backupsettings); - -&Header::openpage($Lang::tr{'backup'}, 1, ""); -&Header::openbigbox('100%', 'left', '', $errormessage); +$cgiparams{'ACTION'} = ''; +$cgiparams{'FILE'} = ''; +$cgiparams{'UPLOAD'} = ''; +$cgiparams{'BACKUPLOGS'} = ''; +&Header::getcgihash(\%cgiparams); ############################################################################################################################ ######################################## Scanne Verzeichnisse nach Mp3 Dateien ############################################# -if ( $backupsettings{'ACTION'} eq "backup" ) +if ( $cgiparams{'ACTION'} eq "backup" ) { - if ( $backupsettings{'BACKUPLOGS'} eq "include" ){system("/usr/local/bin/backupctrl include");} + if ( $cgiparams{'BACKUPLOGS'} eq "include" ){system("/usr/local/bin/backupctrl include");} else {system("/usr/local/bin/backupctrl exclude");} } +elsif ( $cgiparams{'ACTION'} eq "download" ) +{ + open(DLFILE, "; + print "Content-Type:application/x-download\n"; + print "Content-Disposition:attachment;filename=$cgiparams{'FILE'}\n\n"; + print @fileholder; + exit (0); +} +elsif ( $cgiparams{'ACTION'} eq "restore" ) +{ + my $upload = $a->param("UPLOAD"); + open UPLOADFILE, ">/tmp/restore.ipf"; + binmode $upload; + while ( <$upload> ) { + print UPLOADFILE; + } + close UPLOADFILE; + system("/usr/local/bin/backupctrl restore"); +} ############################################################################################################################ ########################################### rekursiv nach neuen Mp3s Scannen ##############################################ä -if ( $message ne "" ) { print "$message"; } +&Header::showhttpheaders(); +&Header::openpage($Lang::tr{'backup'}, 1, ""); +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ( $message ne "" ){ + &Header::openbox('100%','left',$Lang::tr{'error messages'}); + print "$message\n"; + &Header::closebox(); +} &Header::openbox('100%', 'center', $Lang::tr{'backup'}); print < - + +
$Lang::tr{'logs'}include Logfiles / - exclude Logfiles
$Lang::tr{'logs'}include Logfiles / + exclude Logfiles
-
END @@ -65,16 +95,29 @@ END &Header::openbox('100%', 'center', $Lang::tr{'backups'}); print < END ; foreach (@backups){ -print ""; +chomp($_); +my $Datei = "/srv/web/ipfire/html/backup/".$_; +my @Info = stat($Datei); +my $Size = $Info[7] / 1024; +$Size = sprintf("%02d", $Size); +print ""; } print < - +END +; +&Header::closebox(); + +&Header::openbox('100%', 'center', $Lang::tr{'restore'}); + +print < + +
$Lang::tr{'backup from'}$_
$Lang::tr{'backup from'} $_ $Lang::tr{'size'} $Size KB
$Lang::tr{'backup'}
END ; &Header::closebox(); diff --git a/html/cgi-bin/samba.cgi b/html/cgi-bin/samba.cgi index 6c52a8457..0d506dea6 100644 --- a/html/cgi-bin/samba.cgi +++ b/html/cgi-bin/samba.cgi @@ -205,7 +205,7 @@ $sambasettings{'INTERFACES'} = ''; if ($sambasettings{'GREEN'} eq 'on'){ $sambasettings{'INTERFACES'} .= " $netsettings{'GREEN_DEV'}";} if ($sambasettings{'BLUE'} eq 'on'){ $sambasettings{'INTERFACES'} .= " $netsettings{'BLUE_DEV'}";} if ($sambasettings{'ORANGE'} eq 'on'){ $sambasettings{'INTERFACES'} .= " $netsettings{'ORANGE_DEV'}";} -if ($sambasettings{'VPN'} eq 'on'){ $sambasettings{'INTERFACES'} .= " $ovpnsettings{'DDEVICE'}";} +if ($sambasettings{'VPN'} eq 'on'){ $sambasettings{'INTERFACES'} .= " $ovpnsettings{'DOVPN_SUBNET'}";} if ($sambasettings{'OTHERINTERFACES'} ne ''){ $sambasettings{'INTERFACES'} .= " $sambasettings{'OTHERINTERFACES'}";} ############################################################################################################################ @@ -407,7 +407,7 @@ print <$Lang::tr{'log level'} $Lang::tr{'interfaces'}on / off | - OpenVpn - $ovpnsettings{'DDEVICE'} + OpenVpn - $ovpnsettings{'DOVPN_SUBNET'} on / off | $Lang::tr{'green'} - $netsettings{'GREEN_DEV'} diff --git a/src/initscripts/init.d/dhcp b/src/initscripts/init.d/dhcp index 2da8d64df..8a1f69e36 100644 --- a/src/initscripts/init.d/dhcp +++ b/src/initscripts/init.d/dhcp @@ -16,7 +16,7 @@ case "$1" in devices="${GREEN_DEV}" fi if [ -e /var/ipfire/dhcp/enable_blue ]; then - devices=+" ${BLUE_DEV}" + devices+=" ${BLUE_DEV}" iptables -A DHCPBLUEINPUT -p tcp --source-port 68 --destination-port 67 -i ${BLUE_DEV} -j ACCEPT > /dev/null 2>&1 iptables -A DHCPBLUEINPUT -p udp --source-port 68 --destination-port 67 -i ${BLUE_DEV} -j ACCEPT > /dev/null 2>&1 diff --git a/src/misc-progs/Makefile b/src/misc-progs/Makefile index 46fb4c91d..4170e7b72 100644 --- a/src/misc-progs/Makefile +++ b/src/misc-progs/Makefile @@ -7,7 +7,7 @@ PROGS = iowrap SUID_PROGS = setdmzholes setportfw setfilters setxtaccess \ squidctrl restartssh ipfirereboot setaliases \ ipsecctrl timectrl dhcpctrl snortctrl \ - applejuicectrl rebuildhosts \ + applejuicectrl rebuildhosts backupctrl\ restartsyslogd logwatch openvpnctrl outgoingfwctrl \ restartwireless getipstat qosctrl launch-ether-wake \ redctrl extrahdctrl sambactrl upnpctrl tripwirectrl \ @@ -123,3 +123,6 @@ pakfire: pakfire.c setuid.o ../install+setup/libsmooth/varval.o mpfirectrl: mpfirectrl.c setuid.o ../install+setup/libsmooth/varval.o $(COMPILE) -I../install+setup/libsmooth/ mpfirectrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@ + +backupctrl: backupctrl.c setuid.o ../install+setup/libsmooth/varval.o + $(COMPILE) -I../install+setup/libsmooth/ backupctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@ diff --git a/src/misc-progs/backupctrl.c b/src/misc-progs/backupctrl.c new file mode 100644 index 000000000..26d840fa7 --- /dev/null +++ b/src/misc-progs/backupctrl.c @@ -0,0 +1,44 @@ +/* This file is part of the IPFire Firewall. + * + * This program is distributed under the terms of the GNU General Public + * Licence. See the file COPYING for details. + * + */ + +#include +#include +#include +#include +#include +#include +#include "setuid.h" + +int main(int argc, char *argv[]) { + int i; + char command[1024]; + char add[STRING_SIZE]; + + if (!(initsetuid())) + exit(1); + + snprintf(command, STRING_SIZE, "/var/ipfire/backup/bin/backup.pl"); + + for (i = 1; i < argc; i++) { + if (strstr(argv[i], "&&")){ + fprintf (stderr, "Bad Argument!\n"); + exit (1); + } + if (strstr(argv[i], "|")){ + fprintf (stderr, "Bad Argument!\n"); + exit (1); + } + if (argc > 2){ + fprintf (stderr, "Too Many Arguments!\n"); + exit (1); + } + sprintf(add, " %s", argv[i]); + strcat(command, add); + } + + return safe_system(command); +}