mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-09 18:45:54 +02:00
Netzwerkscript beinahe vollendet.
Setup bearbeitet. (Geht schon ganz gut.) Sonstiges wie immer... git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@366 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.16
|
||||
# Wed Nov 29 00:06:35 2006
|
||||
# Tue Dec 12 17:10:37 2006
|
||||
#
|
||||
CONFIG_X86_32=y
|
||||
CONFIG_SEMAPHORE_SLEEPERS=y
|
||||
@@ -191,6 +191,7 @@ CONFIG_HZ=100
|
||||
# CONFIG_CRASH_DUMP is not set
|
||||
CONFIG_PHYSICAL_START=0x100000
|
||||
CONFIG_DOUBLEFAULT=y
|
||||
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
|
||||
|
||||
#
|
||||
# Power management options (ACPI, APM)
|
||||
@@ -460,6 +461,8 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_IP_NF_TARGET_TARPIT=m
|
||||
CONFIG_IP_NF_NAT_MMS=m
|
||||
CONFIG_IP_NF_MMS=m
|
||||
CONFIG_IP_NF_NAT_SIP=m
|
||||
CONFIG_IP_NF_SIP=m
|
||||
|
||||
@@ -518,7 +521,7 @@ CONFIG_LLC=y
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
CONFIG_WAN_ROUTER=y
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
@@ -1255,6 +1258,7 @@ CONFIG_DLCI=m
|
||||
CONFIG_DLCI_COUNT=24
|
||||
CONFIG_DLCI_MAX=8
|
||||
CONFIG_SDLA=m
|
||||
# CONFIG_WAN_ROUTER_DRIVERS is not set
|
||||
CONFIG_SBNI=m
|
||||
CONFIG_SBNI_MULTILINE=y
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.16
|
||||
# Wed Nov 29 00:35:50 2006
|
||||
# Tue Dec 12 17:10:59 2006
|
||||
#
|
||||
CONFIG_X86_32=y
|
||||
CONFIG_SEMAPHORE_SLEEPERS=y
|
||||
@@ -200,6 +200,7 @@ CONFIG_HZ=100
|
||||
CONFIG_PHYSICAL_START=0x100000
|
||||
# CONFIG_HOTPLUG_CPU is not set
|
||||
CONFIG_DOUBLEFAULT=y
|
||||
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
|
||||
|
||||
#
|
||||
# Power management options (ACPI, APM)
|
||||
@@ -466,6 +467,8 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_IP_NF_TARGET_TARPIT=m
|
||||
CONFIG_IP_NF_NAT_MMS=m
|
||||
CONFIG_IP_NF_MMS=m
|
||||
CONFIG_IP_NF_NAT_SIP=m
|
||||
CONFIG_IP_NF_SIP=m
|
||||
|
||||
@@ -524,7 +527,7 @@ CONFIG_LLC=y
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
CONFIG_WAN_ROUTER=y
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
@@ -1255,6 +1258,7 @@ CONFIG_DLCI=m
|
||||
CONFIG_DLCI_COUNT=24
|
||||
CONFIG_DLCI_MAX=8
|
||||
CONFIG_SDLA=m
|
||||
# CONFIG_WAN_ROUTER_DRIVERS is not set
|
||||
CONFIG_SBNI=m
|
||||
CONFIG_SBNI_MULTILINE=y
|
||||
|
||||
|
||||
@@ -2,19 +2,19 @@ TIMEOUT 5000
|
||||
DISPLAY message
|
||||
PROMPT 1
|
||||
DEFAULT vmlinuz
|
||||
APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 ramdisk_size=16384 rw
|
||||
APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 ramdisk_size=16384 vga=791 splash=silent rw
|
||||
LABEL unattended
|
||||
KERNEL vmlinuz
|
||||
APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 ramdisk_size=16384 rw unattended
|
||||
APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 ramdisk_size=16384 vga=791 splash=silent rw unattended
|
||||
LABEL nopcmcia
|
||||
KERNEL vmlinuz
|
||||
APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 ramdisk_size=16384 rw nopcmcia
|
||||
APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 ramdisk_size=16384 vga=791 splash=silent rw nopcmcia
|
||||
LABEL nousb
|
||||
KERNEL vmlinuz
|
||||
APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 ramdisk_size=16384 rw nousb
|
||||
APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 ramdisk_size=16384 vga=791 splash=silent rw nousb
|
||||
LABEL nousborpcmcia
|
||||
KERNEL vmlinuz
|
||||
APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 ramdisk_size=16384 rw nousb nopcmcia
|
||||
APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 ramdisk_size=16384 vga=791 splash=silent rw nousb nopcmcia
|
||||
LABEL dma
|
||||
KERNEL vmlinuz
|
||||
APPEND initrd=instroot.gz root=/dev/ram0 ramdisk_size=16384 rw
|
||||
APPEND initrd=instroot.gz root=/dev/ram0 ramdisk_size=16384 vga=791 splash=silent rw
|
||||
|
||||
@@ -5,8 +5,8 @@ usr/lib/perl5/site_perl/5.8.8/i586-linux/Net/SSLeay/Handle.pm
|
||||
#usr/lib/perl5/site_perl/5.8.8/i586-linux/auto/Net/SSLeay
|
||||
#usr/lib/perl5/site_perl/5.8.8/i586-linux/auto/Net/SSLeay/.packlist
|
||||
#usr/lib/perl5/site_perl/5.8.8/i586-linux/auto/Net/SSLeay/SSLeay.bs
|
||||
#sr/lib/perl5/site_perl/5.8.8/i586-linux/auto/Net/SSLeay/SSLeay.so
|
||||
#usr/lib/perl5/site_perl/5.8.8/i586-linux/auto/Net/SSLeay/autosplit.ix
|
||||
usr/lib/perl5/site_perl/5.8.8/i586-linux/auto/Net/SSLeay/SSLeay.so
|
||||
usr/lib/perl5/site_perl/5.8.8/i586-linux/auto/Net/SSLeay/autosplit.ix
|
||||
#usr/lib/perl5/site_perl/5.8.8/i586-linux/auto/Net/SSLeay/debug_read.al
|
||||
#usr/lib/perl5/site_perl/5.8.8/i586-linux/auto/Net/SSLeay/do_https.al
|
||||
#usr/lib/perl5/site_perl/5.8.8/i586-linux/auto/Net/SSLeay/do_https2.al
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#etc/dhcpc
|
||||
etc/dhcpc/dhcpcd.exe
|
||||
#var/ipfire/dhcpc
|
||||
var/ipfire/dhcpc/dhcpcd.exe
|
||||
sbin/dhcpcd
|
||||
#usr/share/man/man8/dhcpcd.8
|
||||
|
||||
@@ -331,9 +331,9 @@
|
||||
#usr/lib/libmudflapth.so.0.0.0
|
||||
#usr/lib/libstdc++.a
|
||||
#usr/lib/libstdc++.la
|
||||
#usr/lib/libstdc++.so
|
||||
#usr/lib/libstdc++.so.6
|
||||
#usr/lib/libstdc++.so.6.0.7
|
||||
usr/lib/libstdc++.so
|
||||
usr/lib/libstdc++.so.6
|
||||
usr/lib/libstdc++.so.6.0.7
|
||||
#usr/lib/libsupc++.a
|
||||
#usr/lib/libsupc++.la
|
||||
#usr/man/man1/cpp.1
|
||||
|
||||
@@ -1802,7 +1802,7 @@ usr/lib/locale/locale-archive
|
||||
#usr/share/zoneinfo/WET
|
||||
#usr/share/zoneinfo/Zulu
|
||||
#usr/share/zoneinfo/iso3166.tab
|
||||
#usr/share/zoneinfo/posix
|
||||
usr/share/zoneinfo/posix
|
||||
#usr/share/zoneinfo/posix/Africa
|
||||
#usr/share/zoneinfo/posix/Africa/Abidjan
|
||||
#usr/share/zoneinfo/posix/Africa/Accra
|
||||
|
||||
@@ -43,8 +43,8 @@ tmp
|
||||
#usr/bin/perl
|
||||
#usr/include
|
||||
#usr/lib
|
||||
#usr/lib/libgcc_s.so
|
||||
#usr/lib/libgcc_s.so.1
|
||||
usr/lib/libgcc_s.so
|
||||
usr/lib/libgcc_s.so.1
|
||||
usr/local/bin/connscheduler
|
||||
usr/local/bin/hddshutdown
|
||||
usr/local/bin/hddshutdown-state
|
||||
|
||||
@@ -321,13 +321,13 @@ foreach my $line (@active) {
|
||||
$marked = $temp[8];
|
||||
$offset = 1;
|
||||
} else {
|
||||
$marked = $temp[12];
|
||||
$marked = $temp[16];
|
||||
}
|
||||
$exsip = substr $temp[8 + $offset], 4;
|
||||
$exdip = substr $temp[9 + $offset], 4;
|
||||
$exsp = substr $temp[10 + $offset], 6;
|
||||
$exdp = substr $temp[11 + $offset], 6;
|
||||
$use = substr $temp[13], 4;
|
||||
$exsip = substr $temp[10 + $offset], 4;
|
||||
$exdip = substr $temp[11 + $offset], 4;
|
||||
$exsp = substr $temp[12 + $offset], 6;
|
||||
$exdp = substr $temp[13 + $offset], 6;
|
||||
$use = substr $temp[18], 4;
|
||||
}
|
||||
if ($temp[0] eq 'unknown') {
|
||||
my $offset = 0;
|
||||
|
||||
@@ -85,7 +85,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
|
||||
rm -f /tmp/ROOTFILES
|
||||
tar -x -C /tmp -f /$(SNAME).tar
|
||||
rm -f /$(SNAME).tar
|
||||
mkdir /tmp/sys
|
||||
@mkdir /tmp/sys
|
||||
cd /tmp && tar jcf /install/cdrom/$(SNAME)-$(VERSION).tbz2 * && rm -rf *
|
||||
|
||||
# Other files
|
||||
|
||||
@@ -104,9 +104,6 @@ $(TARGET) :
|
||||
echo "nameserver 1.2.3.4" > $(CONFIG_ROOT)/ppp/fake-resolv.conf
|
||||
echo "DISABLEPING=NO" > $(CONFIG_ROOT)/optionsfw/settings
|
||||
|
||||
# Symbolic links
|
||||
ln -sf /etc/rc.d/rc.updatered $(CONFIG_ROOT)/dhcpc/dhcpcd.exe
|
||||
|
||||
# Modify variables in header.pl
|
||||
sed -i -e "s+CONFIG_ROOT+$(CONFIG_ROOT)+g" \
|
||||
-e "s+VERSION+$(VERSION)+g" \
|
||||
|
||||
@@ -72,8 +72,10 @@ $(subst %,%_MD5,$(objects)) :
|
||||
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
|
||||
@$(PREBUILD)
|
||||
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
|
||||
cd $(DIR_APP) && ./configure --prefix="" --mandir=/usr/share/man --disable-nls
|
||||
cd $(DIR_APP) && ./configure --prefix="" --sysconfdir=$(CONFIG_ROOT) \
|
||||
--mandir=/usr/share/man --disable-nls
|
||||
cd $(DIR_APP) && make $(MAKETUNING)
|
||||
cd $(DIR_APP) && make install
|
||||
ln -sf /etc/rc.d/init.d/network $(CONFIG_ROOT)/dhcpc/dhcpcd.exe
|
||||
@rm -rf $(DIR_APP)
|
||||
@$(POSTBUILD)
|
||||
|
||||
@@ -141,5 +141,6 @@ $(TARGET) :
|
||||
cd / && umount /install/mnt && \
|
||||
losetup -d $$LOOPDEV
|
||||
gzip -9 /install/images/cdinitrd
|
||||
splash -s -f /boot/splash/config/bootsplash-1024x768.cfg >> /install/images/cdinitrd.gz
|
||||
|
||||
@$(POSTBUILD)
|
||||
|
||||
@@ -55,6 +55,7 @@ $(TARGET) :
|
||||
install -d -m 755 /etc/rc.d/rc6.d
|
||||
install -d -m 755 /etc/rc.d/rcsysinit.d
|
||||
install -d -m 755 /etc/rc.d/init.d
|
||||
install -d -m 755 /etc/rc.d/helper
|
||||
install -d -m 755 /etc/sysconfig
|
||||
|
||||
for i in $(DIR_SRC)/src/initscripts/init.d/*; do \
|
||||
@@ -66,6 +67,10 @@ $(TARGET) :
|
||||
install -v -m 644 $$i /etc/sysconfig/; \
|
||||
done
|
||||
|
||||
for i in $(DIR_SRC)/src/initscripts/helper/*; do \
|
||||
install -v -m 755 $$i /etc/rc.d/helper/; \
|
||||
done
|
||||
|
||||
ln -sf ../init.d/sysklogd /etc/rc.d/rc0.d/K90sysklogd
|
||||
ln -sf ../init.d/sendsignals /etc/rc.d/rc0.d/S60sendsignals
|
||||
ln -sf ../init.d/mountfs /etc/rc.d/rc0.d/S70mountfs
|
||||
@@ -105,18 +110,6 @@ $(TARGET) :
|
||||
ln -sf ../init.d/localnet /etc/rc.d/rcsysinit.d/S80localnet
|
||||
ln -sf ../init.d/sysctl /etc/rc.d/rcsysinit.d/S90sysctl
|
||||
|
||||
# -mkdir -p /etc/rc.d/helper
|
||||
# for i in $(DIR_SRC)/src/rc.d/* ; do \
|
||||
# if [ -f $$i ]; then \
|
||||
# sed "s+CONFIG_ROOT+$(CONFIG_ROOT)+g" $$i > /etc/rc.d/`basename $$i`; \
|
||||
# fi; \
|
||||
# done
|
||||
# for i in $(DIR_SRC)/src/rc.d/helper/* ; do \
|
||||
# if [ -f $$i ]; then \
|
||||
# sed "s+CONFIG_ROOT+$(CONFIG_ROOT)+g" $$i > /etc/rc.d/helper/`basename $$i`; \
|
||||
# fi; \
|
||||
# done
|
||||
# chmod -R 755 /etc/rc.d
|
||||
# chgrp nobody /etc/rc.d/rc.red
|
||||
# chmod 4750 /etc/rc.d/rc.red
|
||||
@$(POSTBUILD)
|
||||
|
||||
@@ -62,15 +62,17 @@ $(TARGET) :
|
||||
@rm -rf $(DIR_APP) && mkdir -p $(DIR_APP)
|
||||
@cp -vf $(DIR_SRC)/src/ipp2p/* $(DIR_APP)
|
||||
cd $(DIR_SRC) && rm -rf iptables-*
|
||||
cd $(DIR_SRC) && tar xfj $(DIR_DL)/iptables-1.3.5.tar.bz2
|
||||
cd $(DIR_SRC) && ln -sf iptables-1.3.5 iptables
|
||||
cd $(DIR_APP) && make
|
||||
cd $(DIR_SRC) && tar xfz $(DIR_DL)/iptables-fixed.tar.gz
|
||||
cd $(DIR_SRC) && ln -sf iptables-* iptables
|
||||
ifeq "$(SMP)" "1"
|
||||
cd $(DIR_APP) && make ipt_ipp2p.ko
|
||||
cp -f $(DIR_APP)/ipt_ipp2p.ko /lib/modules/$(KVER)-smp/kernel/net/ipv4/netfilter
|
||||
else
|
||||
ifeq "$(IPT)" "1"
|
||||
cd $(DIR_APP) && make
|
||||
cp -f $(DIR_APP)/libipt_ipp2p.o /lib/iptables
|
||||
else
|
||||
cd $(DIR_APP) && make ipt_ipp2p.ko
|
||||
cp -f $(DIR_APP)/ipt_ipp2p.ko /lib/modules/$(KVER)/kernel/net/ipv4/netfilter
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -81,10 +81,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
|
||||
@rm -rf $(DIR_DL)/netfilter-layer7-v2.1 && cd $(DIR_SRC) && tar zxf $(DIR_DL)/netfilter-layer7-v2.1.tar.gz
|
||||
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/netfilter-layer7-v2.6/iptables-layer7-2.6.patch
|
||||
|
||||
# # Appears that libipt_set/SET maybe a little broken, fix it for now...
|
||||
# cd $(DIR_APP)/extensions && sed -i -e 's/#include\ \"..\/ipset\/libipt_set.h\"//' libipt_set.c
|
||||
# cd $(DIR_APP)/extensions && sed -i -e 's/#include\ \"..\/ipset\/libipt_set.h\"//' libipt_SET.c
|
||||
|
||||
cd $(DIR_APP) && patch -Np1 < $(DIR_DL)/iptables-1.3.0-imq1.diff
|
||||
chmod +x $(DIR_APP)/extensions/.IMQ-test* $(DIR_APP)/extensions/.layer7-test*
|
||||
|
||||
|
||||
@@ -65,8 +65,8 @@ ifeq "$(LFS_PASS)" "install"
|
||||
-type f \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
|
||||
-exec /tools/bin/strip --strip-debug {} \; 2>/dev/null
|
||||
|
||||
-/tools/bin/strip --strip-all /{,usr/}{,local/}{bin,sbin}/* /install/{initrd,misc}/bin/*
|
||||
-/tools/bin/strip --strip-all /usr/lib/awk/{grcat,pwcat}
|
||||
-/tools/bin/strip --strip-all /usr/lib/gcc/*-linux-gnu/4.0.3/{cc1*,collect2}
|
||||
-/tools/bin/strip --strip-all /{,usr/}{,local/}{bin,sbin}/* /install/{initrd,misc}/bin/* 2>/dev/null
|
||||
-/tools/bin/strip --strip-all /usr/lib/awk/{grcat,pwcat} 2>/dev/null
|
||||
-/tools/bin/strip --strip-all /usr/lib/gcc/*-linux-gnu/4.0.3/{cc1*,collect2} 2>/dev/null
|
||||
endif
|
||||
|
||||
|
||||
32
src/initscripts/helper/getdnsfromdhcpc.pl
Normal file
32
src/initscripts/helper/getdnsfromdhcpc.pl
Normal file
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# Helper program to get DNS info from dhcpc .info file.
|
||||
#
|
||||
# (c) Lawrence Manning, 2001
|
||||
|
||||
use strict;
|
||||
require '/var/ipfire/general-functions.pl';
|
||||
|
||||
my $count = $ARGV[0];
|
||||
my ($dhcp, $dns, @alldns, %dhcpc);
|
||||
|
||||
if ($count eq "" || $count < 1) {
|
||||
die "Bad DNS number given"; }
|
||||
|
||||
if (open(FILE, "${General::swroot}/red/iface")) {
|
||||
my $iface = <FILE>;
|
||||
close FILE;
|
||||
chomp ($iface);
|
||||
if (!&General::readhash("${General::swroot}/dhcpc/dhcpcd-$iface.info", \%dhcpc)) {
|
||||
die "Could not open dhcpc info file";
|
||||
}
|
||||
} else {
|
||||
die "Could not open interface file";
|
||||
}
|
||||
|
||||
|
||||
$dns = $dhcpc{'DNS'};
|
||||
|
||||
@alldns = split(',', $dns);
|
||||
|
||||
print "$alldns[$count - 1]\n";
|
||||
55
src/initscripts/helper/writeipac.pl
Normal file
55
src/initscripts/helper/writeipac.pl
Normal file
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# Helper program to write a new IPAC settings file
|
||||
#
|
||||
# (c) Lawrence Manning, 2001
|
||||
#
|
||||
# $id
|
||||
#
|
||||
|
||||
use strict;
|
||||
require '/var/ipfire/general-functions.pl';
|
||||
|
||||
my %settings;
|
||||
my $iface;
|
||||
|
||||
General::readhash("${General::swroot}/ethernet/settings", \%settings);
|
||||
|
||||
if (!open(FILE, '>/etc/ipac-ng/rules.conf')) {
|
||||
die "Unable to create /etc/ipac-ng/rules.conf"; }
|
||||
|
||||
if (open(IFACE, "${General::swroot}/red/iface"))
|
||||
{
|
||||
$iface = <IFACE>;
|
||||
close IFACE;
|
||||
chomp ($iface);
|
||||
}
|
||||
|
||||
print FILE "incoming GREEN ($settings{'GREEN_DEV'})|ipac~o|$settings{'GREEN_DEV'}|all|||\n";
|
||||
print FILE "outgoing GREEN ($settings{'GREEN_DEV'})|ipac~i|$settings{'GREEN_DEV'}|all|||\n";
|
||||
print FILE "forwarded incoming GREEN ($settings{'GREEN_DEV'})|ipac~fi|$settings{'GREEN_DEV'}|all|||\n";
|
||||
print FILE "forwarded outgoing GREEN ($settings{'GREEN_DEV'})|ipac~fo|$settings{'GREEN_DEV'}|all|||\n";
|
||||
|
||||
if ($settings{'CONFIG_TYPE'} =~ /^(1|3|5|7)$/ )
|
||||
{
|
||||
print FILE "incoming ORANGE ($settings{'ORANGE_DEV'})|ipac~o|$settings{'ORANGE_DEV'}|all|||\n";
|
||||
print FILE "outgoing ORANGE ($settings{'ORANGE_DEV'})|ipac~i|$settings{'ORANGE_DEV'}|all|||\n";
|
||||
print FILE "forwarded incoming ORANGE ($settings{'ORANGE_DEV'})|ipac~fi|$settings{'ORANGE_DEV'}|all|||\n";
|
||||
print FILE "forwarded outgoing ORANGE ($settings{'ORANGE_DEV'})|ipac~fo|$settings{'ORANGE_DEV'}|all|||\n";
|
||||
}
|
||||
|
||||
if ($settings{'CONFIG_TYPE'} =~ /^(4|5|6|7)$/ )
|
||||
{
|
||||
print FILE "incoming BLUE ($settings{'BLUE_DEV'})|ipac~o|$settings{'BLUE_DEV'}|all|||\n";
|
||||
print FILE "outgoing BLUE ($settings{'BLUE_DEV'})|ipac~i|$settings{'BLUE_DEV'}|all|||\n";
|
||||
print FILE "forwarded incoming BLUE ($settings{'BLUE_DEV'})|ipac~fi|$settings{'BLUE_DEV'}|all|||\n";
|
||||
print FILE "forwarded outgoing BLUE ($settings{'BLUE_DEV'})|ipac~fo|$settings{'BLUE_DEV'}|all|||\n";
|
||||
}
|
||||
if ($iface) {
|
||||
print FILE "incoming RED ($iface)|ipac~o|$iface|all|||\n";
|
||||
print FILE "outgoing RED ($iface)|ipac~i|$iface|all|||\n";
|
||||
print FILE "forwarded incoming RED ($iface)|ipac~fi|$iface|all|||\n";
|
||||
print FILE "forwarded outgoing RED ($iface)|ipac~fo|$iface|all|||\n";
|
||||
}
|
||||
|
||||
close FILE;
|
||||
@@ -15,6 +15,14 @@
|
||||
. /etc/sysconfig/rc
|
||||
. ${rc_functions}
|
||||
. /var/ipfire/ethernet/settings
|
||||
. /var/ipfire/dhcp/settings
|
||||
. /var/ipfire/ppp/settings
|
||||
. /var/ipfire/vpn/settings
|
||||
|
||||
# This is a small wrapper for dhcpcd.exe
|
||||
if ( echo $0 | /bin/grep -q 'dhcpcd.exe' ); then
|
||||
/etc/rc.d/init.d/network red update $1 $2
|
||||
fi
|
||||
|
||||
case "${1}" in
|
||||
start)
|
||||
@@ -82,29 +90,34 @@ case "${1}" in
|
||||
fi
|
||||
|
||||
boot_mesg "Setting up IPFire firewall rules"
|
||||
/etc/rc.d/init.d/firewall start
|
||||
evaluate_retval
|
||||
/etc/rc.d/init.d/firewall start; evaluate_retval
|
||||
|
||||
boot_mesg "Setting up IP Accounting"
|
||||
/etc/rc.d/helper/writeipac.pl
|
||||
/usr/sbin/fetchipac -S
|
||||
evaluate_retval
|
||||
/usr/sbin/fetchipac -S; evaluate_retval
|
||||
|
||||
boot_mesg "Setting IPFire DMZ pinholes"
|
||||
/usr/local/bin/setdmzholes
|
||||
evaluate_retval
|
||||
/usr/local/bin/setdmzholes; evaluate_retval
|
||||
|
||||
if [ "$BLUE_DEV" != "" ]; then
|
||||
boot_mesg "Setting up wireless firewall rules"
|
||||
/usr/local/bin/restartwireless
|
||||
evaluate_retval
|
||||
/usr/local/bin/restartwireless; evaluate_retval
|
||||
fi
|
||||
|
||||
boot_mesg "Bringing network up..."
|
||||
. /etc/rc.d/rc.netaddress.up
|
||||
# Bringing interfaces up...
|
||||
$0 green up
|
||||
$0 orange up
|
||||
$0 blue up
|
||||
$0 red up
|
||||
|
||||
;;
|
||||
|
||||
stop)
|
||||
|
||||
# Stopping all interfaces...
|
||||
$0 red down
|
||||
$0 blue down
|
||||
$0 orange down
|
||||
$0 green down
|
||||
;;
|
||||
|
||||
restart)
|
||||
@@ -113,8 +126,246 @@ case "${1}" in
|
||||
${0} start
|
||||
;;
|
||||
|
||||
#
|
||||
# Every interface has its own context to start/stop/restart.
|
||||
#
|
||||
green)
|
||||
case "${2}" in
|
||||
up)
|
||||
boot_mesg "Bringing green network up..."
|
||||
if [ "$GREEN_DEV" != "" ]; then
|
||||
ifconfig $GREEN_DEV $GREEN_ADDRESS netmask $GREEN_NETMASK broadcast $GREEN_BROADCAST up
|
||||
evaluate_retval
|
||||
else
|
||||
echo "WARNING: No driver set for GREEN"
|
||||
fi
|
||||
;;
|
||||
down)
|
||||
boot_mesg "Bringing green network down..."
|
||||
ifconfig $GREEN_DEV down 2> /dev/null; evaluate_retval
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
orange)
|
||||
case "${2}" in
|
||||
up)
|
||||
if [ "$CONFIG_TYPE" = "1" -o "$CONFIG_TYPE" = "3" -o "$CONFIG_TYPE" = "5" -o "$CONFIG_TYPE" = "7" ]; then
|
||||
if [ "$ORANGE_DEV" != "" ]; then
|
||||
boot_mesg "Bringing orange network up..."
|
||||
ifconfig $ORANGE_DEV $ORANGE_ADDRESS netmask $ORANGE_NETMASK broadcast $ORANGE_BROADCAST up
|
||||
evaluate_retval
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
down)
|
||||
if [ "$ORANGE_DEV" != "" ]; then
|
||||
boot_mesg "Bringing orange network down..."
|
||||
ifconfig $ORANGE_DEV down 2> /dev/null; evaluate_retval
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
blue)
|
||||
case "${2}" in
|
||||
up)
|
||||
if [ "$CONFIG_TYPE" = "4" -o "$CONFIG_TYPE" = "5" -o "$CONFIG_TYPE" = "6" -o "$CONFIG_TYPE" = "7" ]; then
|
||||
if [ "$BLUE_DEV" != "" ]; then
|
||||
boot_mesg "Bringing blue network up..."
|
||||
ifconfig $BLUE_DEV $BLUE_ADDRESS netmask $BLUE_NETMASK broadcast $BLUE_BROADCAST up
|
||||
evaluate_retval
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
down)
|
||||
if [ "$BLUE_DEV" != "" ]; then
|
||||
boot_mesg "Bringing blue network down..."
|
||||
ifconfig $BLUE_DEV down 2> /dev/null; evaluate_retval
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
red)
|
||||
case "${2}" in
|
||||
up)
|
||||
boot_mesg "Bringing red network up..."
|
||||
# If RED is ethernet then check furthur...
|
||||
if [ "$CONFIG_TYPE" == "2" -o "$CONFIG_TYPE" == "3" -o "$CONFIG_TYPE" == "6" -o "$CONFIG_TYPE" == "7" ]; then
|
||||
# If we are DHCP or STATIC we have to start automatically
|
||||
if [ "$RED_TYPE" == "DHCP" -o "$RED_TYPE" == "STATIC" ]; then
|
||||
AUTOCONNECT="on"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Start DNSMASQ with defaults
|
||||
if [ "$DOMAIN_NAME_GREEN" == "" ]; then
|
||||
/usr/sbin/dnsmasq -l /var/state/dhcp/dhcpd.leases
|
||||
else
|
||||
/usr/sbin/dnsmasq -l /var/state/dhcp/dhcpd.leases -s "$DOMAIN_NAME_GREEN"
|
||||
fi
|
||||
|
||||
# Only when AUTOCONNECT is on
|
||||
if [ "$AUTOCONNECT" == "on" ]; then
|
||||
/etc/rc.d/init.d/red start; evaluate_retval
|
||||
fi
|
||||
;;
|
||||
down)
|
||||
boot_mesg "Bringing red network down..."
|
||||
/etc/rc.d/init.d/red stop
|
||||
sleep 3
|
||||
/etc/rc.d/init.d/red clear; evaluate_retval
|
||||
;;
|
||||
update)
|
||||
if [ ! -e /var/lock/rc.updatered.lock ]; then
|
||||
/usr/bin/touch /var/lock/rc.updatered.lock
|
||||
/usr/bin/logger -s -p local0.info -t rc.updatered "$0 locking for $$"
|
||||
else
|
||||
count=0
|
||||
while [ ! $count = 5 ]; do
|
||||
sleep 3
|
||||
if [ ! -e /var/lock/rc.updatered.lock ]; then
|
||||
break
|
||||
else
|
||||
/usr/bin/logger -s -p local0.info -t rc.updatered "$0 $$ waiting unlock"
|
||||
fi
|
||||
((++count))
|
||||
done
|
||||
fi
|
||||
|
||||
IFACE=`/bin/cat /var/ipfire/red/iface 2>/dev/null | /usr/bin/tr -d '\012'`
|
||||
REMOTE=`/bin/cat /var/ipfire/red/remote-ipaddress 2>/dev/null | /usr/bin/tr -d '\012'`
|
||||
|
||||
###
|
||||
### Retrieve DHCP Settings
|
||||
###
|
||||
if [ "$CONFIG_TYPE" = "2" -o "$CONFIG_TYPE" = "3" -o "$CONFIG_TYPE" = "6" -o "$CONFIG_TYPE" = "7" ]; then
|
||||
if [ "$RED_TYPE" = "DHCP" ]; then
|
||||
unset DNS1 DNS2
|
||||
eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
|
||||
if [ "$DNS1" = "" ]; then
|
||||
echo -n `/etc/rc.d/helper/getdnsfromdhcpc.pl 1` > /var/ipfire/red/dns1
|
||||
echo -n `/etc/rc.d/helper/getdnsfromdhcpc.pl 2` > /var/ipfire/red/dns2
|
||||
else
|
||||
echo "$DNS1" > /var/ipfire/red/dns1
|
||||
echo "$DNS2" > /var/ipfire/red/dns2
|
||||
fi
|
||||
. /var/ipfire/dhcpc/dhcpcd-${RED_DEV}.info
|
||||
echo "$IPADDR" > /var/ipfire/red/local-ipaddress
|
||||
echo "$GATEWAY" > /var/ipfire/red/remote-ipaddress
|
||||
fi
|
||||
else
|
||||
if [ "$PROTOCOL" = "RFC1483" -a "$METHOD" = "DHCP" ]; then
|
||||
unset DNS1 DNS2
|
||||
eval $(/usr/local/bin/readhash /var/ipfire/ppp/settings)
|
||||
if [ "$DNS" = "Automatic" ]; then
|
||||
echo -n `/etc/rc.d/helper/getdnsfromdhcpc.pl 1` > /var/ipfire/red/dns1
|
||||
echo -n `/etc/rc.d/helper/getdnsfromdhcpc.pl 2` > /var/ipfire/red/dns2
|
||||
else
|
||||
echo "$DNS1" > /var/ipfire/red/dns1
|
||||
echo "$DNS2" > /var/ipfire/red/dns2
|
||||
fi
|
||||
. /var/ipfire/dhcpc/dhcpcd-${IFACE}.info
|
||||
echo $IPADDR > /var/ipfire/red/local-ipaddress
|
||||
echo $GATEWAY > /var/ipfire/red/remote-ipaddress
|
||||
fi
|
||||
fi
|
||||
|
||||
###
|
||||
### Retrieve DNS settings
|
||||
###
|
||||
DNS1=`/bin/cat /var/ipfire/red/dns1 2>/dev/null | /usr/bin/tr -d '\012'`
|
||||
DNS2=`/bin/cat /var/ipfire/red/dns2 2>/dev/null | /usr/bin/tr -d '\012'`
|
||||
echo > /var/ipfire/red/resolv.conf #clear it
|
||||
[ "$DNS1" != "" ] && echo "nameserver $DNS1" > /var/ipfire/red/resolv.conf
|
||||
[ "$DNS2" != "" ] && echo "nameserver $DNS2" >> /var/ipfire/red/resolv.conf
|
||||
|
||||
|
||||
###
|
||||
### Restart DNSMASQ
|
||||
###
|
||||
/bin/killall -KILL dnsmasq 2> /dev/null
|
||||
sleep 1
|
||||
|
||||
DOMopt=""
|
||||
[ "$DOMAIN_NAME_GREEN" ] && DOMopt="-s $DOMAIN_NAME_GREEN"
|
||||
if [ -e "/var/ipfire/red/dial-on-demand" -a "$DIALONDEMANDDNS" == "on" -a ! -e "/var/ipfire/red/active" ]; then
|
||||
/usr/sbin/dnsmasq -l /var/state/dhcp/dhcpd.leases $DOMopt -r /var/ipfire/ppp/fake-resolv.conf
|
||||
else
|
||||
/usr/sbin/dnsmasq -l /var/state/dhcp/dhcpd.leases $DOMopt -r /var/ipfire/red/resolv.conf
|
||||
fi
|
||||
unset DOMopt
|
||||
|
||||
# Reset default route to ippp0 for dial on demand
|
||||
if [ -e "/var/ipfire/red/dial-on-demand" -a "$TYPE" == "isdn" -a ! -e "/var/ipfire/red/active" ]; then
|
||||
/sbin/route del default 2> /dev/null
|
||||
if [ ! -z "$REMOTE" ]; then
|
||||
/sbin/route add default gw $REMOTE 2> /dev/null
|
||||
else
|
||||
/sbin/route add default dev ippp0 2> /dev/null
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$3" ]; then
|
||||
eval $(/usr/local/bin/readhash "$3")
|
||||
case "$4" in
|
||||
up)
|
||||
/usr/bin/logger -s -p local0.info -t dhcpcd.exe "${INTERFACE} has been configured with old IP=${IPADDR}"
|
||||
if [ "$RED_TYPE" != 'PPTP' ]; then
|
||||
/usr/bin/touch /var/ipfire/red/active
|
||||
fi
|
||||
;;
|
||||
new)
|
||||
/usr/bin/logger -s -p local0.info -t dhcpcd.exe "${INTERFACE} has been configured with new IP=${IPADDR}"
|
||||
if [ -e "/var/ipfire/red/active" ]; then
|
||||
/usr/local/bin/setfilters
|
||||
/usr/local/bin/setportfw
|
||||
/usr/local/bin/setxtaccess
|
||||
/usr/local/bin/setddns.pl -f
|
||||
/usr/local/bin/restartsnort red
|
||||
sleep $VPN_DELAYED_START && /usr/local/bin/ipsecctrl S &
|
||||
/bin/rm -f /var/lock/rc.updatered.lock
|
||||
/usr/bin/logger -s -p local0.info -t rc.updatered "unlocking from $$"
|
||||
exit 0
|
||||
else
|
||||
if [ "$RED_TYPE" != 'PPTP' ]; then
|
||||
/usr/bin/touch /var/ipfire/red/active
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
down)
|
||||
/usr/bin/logger -s -p local0.info -t dhcpcd.exe "${INTERFACE} has been brought down"
|
||||
rm -f /var/ipfire/red/active
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ -e "/var/ipfire/red/active" ]; then
|
||||
[ "$IFACE" != "" ] && /sbin/ifconfig $IFACE -multicast
|
||||
/etc/rc.d/init.d/firewall reload
|
||||
/usr/local/bin/setfilters
|
||||
/usr/local/bin/restartsnort red
|
||||
/usr/local/bin/qosctrl restart
|
||||
/usr/local/bin/setportfw
|
||||
/usr/local/bin/setxtaccess
|
||||
/usr/local/bin/setddns.pl -f
|
||||
/etc/rc.d/helper/writeipac.pl
|
||||
/usr/sbin/fetchipac -S
|
||||
sleep $VPN_DELAYED_START && /usr/local/bin/ipsecctrl S &
|
||||
else
|
||||
/usr/local/bin/ipsecctrl D
|
||||
/etc/rc.d/init.d/firewall reload
|
||||
fi
|
||||
/bin/rm -f /var/lock/rc.updatered.lock
|
||||
/usr/bin/logger -s -p local0.info -t rc.updatered "unlocking from $$"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Usage: ${0} {start|stop|restart}"
|
||||
echo " or: ${0} {green|orange|blue|red} {up|down}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
1169
src/initscripts/init.d/red
Normal file
1169
src/initscripts/init.d/red
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,415 +0,0 @@
|
||||
/* IPCop install2 program.
|
||||
*
|
||||
* This program is distributed under the terms of the GNU General Public
|
||||
* Licence. See the file COPYING for details.
|
||||
*
|
||||
* (c) Lawrence Manning, 2001
|
||||
* (c) Franck Bourdonnec, 2006
|
||||
* Contains update/restore code
|
||||
*
|
||||
* $Id: install2.c,v 1.1.2.5 2006/02/10 06:53:57 gespinasse Exp $
|
||||
*
|
||||
*/
|
||||
#include "install.h"
|
||||
|
||||
FILE *flog = NULL;
|
||||
char *mylog;
|
||||
char **ctr;
|
||||
|
||||
/*
|
||||
To include a translated string in the final installer, you must reference
|
||||
it here with a simplr comment. This save a lot a space in the installer
|
||||
*/
|
||||
|
||||
/* TR_BUILDING_INITRD */
|
||||
/* TR_HELPLINE */
|
||||
/* TR_SKIP */
|
||||
/* TR_RESTORE_CONFIGURATION */
|
||||
/* TR_RESTORE */
|
||||
/* TR_OK */
|
||||
/* TR_CANCEL */
|
||||
/* TR_ERROR */
|
||||
/* TR_INSTALLING_FILES */
|
||||
/* TR_FAILED_TO_FIND */
|
||||
/* TR_UNABLE_TO_INSTALL_FILES */
|
||||
/* TR_LOADING_PCMCIA */
|
||||
|
||||
//libsmooth
|
||||
/* TR_INTERFACE */
|
||||
/* TR_ENTER_THE_IP_ADDRESS_INFORMATION */
|
||||
/* TR_STATIC */
|
||||
/* TR_DHCP_HOSTNAME */
|
||||
/* TR_IP_ADDRESS_PROMPT */
|
||||
/* TR_NETMASK_PROMPT */
|
||||
/* TR_INVALID_FIELDS */
|
||||
/* TR_IP_ADDRESS_CR */
|
||||
/* TR_NETWORK_MASK_CR */
|
||||
/* TR_DHCP_HOSTNAME_CR */
|
||||
/* TR_LOOKING_FOR_NIC */
|
||||
/* TR_MANUAL */
|
||||
/* TR_SELECT_NETWORK_DRIVER */
|
||||
/* TR_SELECT_NETWORK_DRIVER_LONG */
|
||||
/* TR_UNABLE_TO_LOAD_DRIVER_MODULE */
|
||||
/* TR_THIS_DRIVER_MODULE_IS_ALREADY_LOADED */
|
||||
/* TR_MODULE_PARAMETERS */
|
||||
/* TR_LOADING_MODULE */
|
||||
/* TR_MODULE_NAME_CANNOT_BE_BLANK */
|
||||
|
||||
//upgrade 120
|
||||
/* TR_UNABLE_TO_OPEN_SETTINGS_FILE */
|
||||
/* TR_DOMAINNAME */
|
||||
/* TR_ENTER_DOMAINNAME */
|
||||
/* TR_DOMAINNAME_CANNOT_CONTAIN_SPACES */
|
||||
/* TR_UNABLE_TO_MOUNT_PROC_FILESYSTEM */
|
||||
/* TR_UNABLE_TO_WRITE_ETC_FSTAB */
|
||||
|
||||
// dir to find files, chrooted or not...
|
||||
#define TMP_EXTRACT_CH "/tmp/ipcop"
|
||||
#define TMP_EXTRACT "/harddisk" TMP_EXTRACT_CH
|
||||
#define MOUNT_BACKUP_CH "/mnt/usb"
|
||||
#define MOUNT_BACKUP "/harddisk" MOUNT_BACKUP_CH
|
||||
/*
|
||||
return 0 when dev contains a backup set
|
||||
leave dev mounted
|
||||
*/
|
||||
int try_mount (char *dev, char *testfile) {
|
||||
char commandstring[STRING_SIZE];
|
||||
mysystem("/bin/umount " MOUNT_BACKUP);
|
||||
sprintf(commandstring, "/bin/mount -t vfat -o ro %s " MOUNT_BACKUP, dev);
|
||||
mysystem(commandstring);
|
||||
|
||||
/*verify it's what we want */
|
||||
sprintf(commandstring, MOUNT_BACKUP "/%s.dat", testfile);
|
||||
FILE *handle = fopen(commandstring, "r");
|
||||
if (handle == NULL) {
|
||||
return 1; /* bad disk ! */
|
||||
}
|
||||
fclose(handle);
|
||||
|
||||
handle = fopen(MOUNT_BACKUP "/backup.key", "r");
|
||||
if (handle == NULL) {
|
||||
return 1; /* bad disk ! */
|
||||
}
|
||||
fclose(handle);
|
||||
return 0; //success
|
||||
}
|
||||
|
||||
/* try to mount usb device until backup.tgz is found except the
|
||||
destination device (scsi names are identical with usb key)
|
||||
check "sda sdb sdc sdd"
|
||||
*/
|
||||
int mountbackup (char *testfile, char *destination_device) {
|
||||
char sourcedev[30];
|
||||
char i,j;
|
||||
for (i = 'a'; i < 'e'; i++) {
|
||||
sprintf (sourcedev,"/dev/sd%c ",i);
|
||||
if (strcmp (destination_device, sourcedev) != 0) {
|
||||
if (!try_mount (sourcedev, testfile)) return 0;
|
||||
}
|
||||
for (j = '1'; j < '5'; j++) {
|
||||
sourcedev[8] = j;
|
||||
if (strcmp (destination_device, sourcedev) != 0) {
|
||||
if (!try_mount (sourcedev, testfile)) return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int floppy_locate() {
|
||||
/* Temporarily mount /proc under /harddisk/proc,
|
||||
run updfstab to locate the floppy, and unmount /harddisk/proc
|
||||
again. This should be run each time the user tries to restore
|
||||
so it can properly detect removable devices */
|
||||
if (mysystem("/bin/mount -n -t proc /proc /harddisk/proc")) {
|
||||
errorbox(ctr[TR_UNABLE_TO_MOUNT_PROC_FILESYSTEM]);
|
||||
return 1;
|
||||
}
|
||||
if (mysystem("/bin/chroot /harddisk /usr/sbin/updfstab")) {
|
||||
errorbox(ctr[TR_UNABLE_TO_WRITE_ETC_FSTAB]);
|
||||
return 1;
|
||||
}
|
||||
mysystem("/bin/umount /harddisk/proc");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Check the SQUID acl file exists, if not use our 1.4 copy */
|
||||
void fixup_squidacl() {
|
||||
FILE *aclreadfile;
|
||||
if ((aclreadfile = fopen ("/harddisk" CONFIG_ROOT "/proxy/acl", "r"))) {
|
||||
unlink ("/harddisk" CONFIG_ROOT "/proxy/acl-1.4");
|
||||
fclose(aclreadfile);
|
||||
} else {
|
||||
rename ("/harddisk" CONFIG_ROOT "/proxy/acl-1.4",
|
||||
"/harddisk" CONFIG_ROOT "/proxy/acl");
|
||||
}
|
||||
chown ("/harddisk" CONFIG_ROOT "/proxy/acl", 99, 99);
|
||||
}
|
||||
/* if we detected SCSI then fixup */
|
||||
void fixup_initrd() {
|
||||
FILE *handle;
|
||||
char line[STRING_SIZE];
|
||||
char commandstring[STRING_SIZE];
|
||||
|
||||
if (!(handle = fopen("/scsidriver", "r")))
|
||||
return;
|
||||
|
||||
char *driver;
|
||||
fgets(line, STRING_SIZE-1, handle);
|
||||
fclose(handle);
|
||||
line[strlen(line) - 1] = 0;
|
||||
driver = strtok(line, ".");
|
||||
fprintf(flog, "Detected SCSI driver %s\n", driver);
|
||||
if (!strlen(driver) > 1)
|
||||
return;
|
||||
|
||||
fprintf(flog, "Fixing up ipfirerd.img\n");
|
||||
mysystem("/bin/chroot /harddisk /sbin/modprobe loop");
|
||||
mkdir("/harddisk/initrd", S_IRWXU|S_IRWXG|S_IRWXO);
|
||||
sprintf(commandstring, "/bin/chroot /harddisk /sbin/mkinitrd"
|
||||
" --with=scsi_mod --with=%s --with=sd_mod"
|
||||
" --with=sr_mod --with=libata"
|
||||
" --with=ataraid /boot/ipfirerd.img "KERNEL_VERSION,
|
||||
driver );
|
||||
runcommandwithstatus(commandstring, ctr[TR_BUILDING_INITRD]);
|
||||
#ifdef __i386__
|
||||
sprintf(commandstring, "/bin/chroot /harddisk /sbin/mkinitrd"
|
||||
" --with=scsi_mod --with=%s --with=sd_mod"
|
||||
" --with=sr_mod --with=libata"
|
||||
" --with=ataraid /boot/ipfirerd-smp.img "KERNEL_VERSION"-smp",
|
||||
driver );
|
||||
runcommandwithstatus(commandstring, ctr[TR_BUILDING_INITRD]);
|
||||
mysystem("/bin/chroot /harddisk /bin/mv /boot/grub/scsigrub.conf /boot/grub/grub.conf");
|
||||
#endif
|
||||
#ifdef __alpha__
|
||||
runcommandwithstatus("/bin/chroot /harddisk /bin/mv /boot/etc/scsiaboot.conf /boot/etc/aboot.conf", ctr[TR_BUILDING_INITRD]);
|
||||
#endif
|
||||
}
|
||||
/* when backup is ready in tmpdir, move files to definitive location */
|
||||
void do_copy_files() {
|
||||
mysystem("/bin/chroot /harddisk /bin/cp -af "TMP_EXTRACT_CH"/. /");
|
||||
/* Upgrade necessary files from v1.2 to v1.3 to v1.4 */
|
||||
upgrade_v12_v13();
|
||||
upgrade_v130_v140();
|
||||
/* Upgrade configuration files starting from 1.4.11 */
|
||||
mysystem("/bin/chroot /harddisk /usr/local/bin/upgrade");
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
#define LANG argv[1]
|
||||
#define DEST_DEV argv[2]
|
||||
#define WGET argv[3]
|
||||
|
||||
#ifdef LANG_EN_ONLY
|
||||
char **langtrs[] = { en_tr, NULL };
|
||||
#elifdef LANG_ALL
|
||||
char **langtrs[] = { bz_tr, cs_tr, da_tr, de_tr, en_tr, es_tr, fr_tr, el_tr, it_tr, la_tr, hu_tr, nl_tr, no_tr, pl_tr, pt_tr, sk_tr, so_tr, fi_tr, sv_tr, tr_tr, vi_tr, NULL };
|
||||
#else
|
||||
char **langtrs[] = { de_tr, en_tr, NULL };
|
||||
#endif
|
||||
char message[1000];
|
||||
char title[STRING_SIZE];
|
||||
char commandstring[STRING_SIZE];
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
/* Log file/terminal stuff. */
|
||||
mylog = "/dev/tty2";
|
||||
ctr = langtrs[ atoi(LANG) ];
|
||||
|
||||
if (!(flog = fopen(mylog, "w+")))
|
||||
{
|
||||
printf("Couldn't open log terminal\n");
|
||||
return 0;
|
||||
}
|
||||
fprintf(flog, "Install2 program started.\n");
|
||||
newtInit();
|
||||
newtCls();
|
||||
strcpy (title, NAME " v" VERSION " - " SLOGAN);
|
||||
newtDrawRootText(14, 0, title);
|
||||
newtPushHelpLine(ctr[TR_HELPLINE]);
|
||||
|
||||
/* working dirs... */
|
||||
mkdir(MOUNT_BACKUP, S_IRWXU|S_IRWXG|S_IRWXO);
|
||||
|
||||
//create the GUI screen and objects
|
||||
newtComponent form, header, labelfile, labelkey, file, key, radio0, radio1, radio2, radio3, radio4, ok;
|
||||
|
||||
newtCenteredWindow (55,20,ctr[TR_RESTORE]);
|
||||
form = newtForm (NULL, NULL,0);
|
||||
|
||||
sprintf(message, ctr[TR_RESTORE_CONFIGURATION], NAME);
|
||||
header = newtTextboxReflowed (2,1,message,51,0,0,0);
|
||||
newtFormAddComponent(form, header);
|
||||
|
||||
// The four method of restauration
|
||||
int start1=1, start2=0, start3=0, start4=0;
|
||||
radio1 = newtRadiobutton (17, 5, ctr[TR_SKIP], start1, NULL);
|
||||
radio2 = newtRadiobutton (17, 6, "Floppy (legacy)", start2, radio1);
|
||||
radio3 = newtRadiobutton (17, 7, "Usb-storage/CDROM", start3, radio2);
|
||||
if (strcmp(WGET,"none"))
|
||||
radio4 = newtRadiobutton (17, 8, "HTTP/FTP", start4, radio3);
|
||||
else
|
||||
radio4 = NULL;
|
||||
newtFormAddComponents(form, radio1, radio2, radio3, radio4, NULL);
|
||||
|
||||
// The optionnal filename for 'backup'
|
||||
labelfile=newtTextbox(12, 10, 35, 1, 0);
|
||||
newtTextboxSetText (labelfile, "Filename");
|
||||
newtFormAddComponent(form, labelfile);
|
||||
char *filevalue;
|
||||
char fileinit[STRING_SIZE] = "backup";
|
||||
file = newtEntry (17, 11, fileinit, 20, &filevalue, 0);
|
||||
newtFormAddComponent(form, file);
|
||||
|
||||
// The optionnal password for the key
|
||||
labelkey=newtTextbox(12, 13, 35, 1, 0);
|
||||
newtTextboxSetText (labelkey, "Backup key password");
|
||||
newtFormAddComponent(form, labelkey);
|
||||
char *keyvalue;
|
||||
char keyinit[STRING_SIZE] = "";
|
||||
key = newtEntry (17, 14, keyinit, 20, &keyvalue, 0);
|
||||
newtFormAddComponent(form, key);
|
||||
|
||||
// The OK button
|
||||
ok=newtButton (23, 16, ctr[TR_OK]);
|
||||
newtFormAddComponent(form, ok);
|
||||
|
||||
/* loop until succeeds or user skips out */
|
||||
int retcode = -1;
|
||||
while ( retcode<0 ) {
|
||||
|
||||
// run the windows
|
||||
struct newtExitStruct reponse;
|
||||
newtFormRun (form, &reponse);
|
||||
radio0 = newtRadioGetCurrent(radio1);
|
||||
int radio;
|
||||
radio = radio0 == radio1 ? 1 : radio0 == radio2 ? 2 : radio0 == radio3 ? 3 : radio0 == radio4 ? 4 : 0;
|
||||
strcpy(keyinit,keyvalue); //reuse actual value
|
||||
strcpy(fileinit,filevalue);
|
||||
|
||||
if (radio==1) {
|
||||
retcode = 1; // no restore: nothing special
|
||||
break; // out of the while loop
|
||||
}
|
||||
|
||||
mkdir(TMP_EXTRACT, S_IRWXU|S_IRWXG|S_IRWXO);
|
||||
statuswindow(45, 4, title, ctr[TR_INSTALLING_FILES]);
|
||||
switch (radio) {
|
||||
case 4: // network
|
||||
sprintf(commandstring,"/bin/wget -P " TMP_EXTRACT " %s/%s.dat", WGET, filevalue);
|
||||
mysystem (commandstring);
|
||||
sprintf(commandstring,"/bin/wget -P " TMP_EXTRACT " %s/%s.key", WGET, filevalue);
|
||||
if (mysystem (commandstring)) {
|
||||
errorbox(ctr[TR_FAILED_TO_FIND]);
|
||||
break;
|
||||
};
|
||||
goto COMMON;
|
||||
case 3: // normal backup
|
||||
if (mountbackup( filevalue, DEST_DEV )) {
|
||||
errorbox(ctr[TR_UNABLE_TO_INSTALL_FILES]);//mess=no device with backup found
|
||||
break;
|
||||
};
|
||||
// link files to a COMMON location
|
||||
sprintf (commandstring, "chroot /harddisk ln -s "MOUNT_BACKUP_CH"/%s.dat " TMP_EXTRACT_CH "/%s.dat", filevalue, filevalue);
|
||||
mysystem (commandstring);
|
||||
sprintf (commandstring, "chroot /harddisk ln -s "MOUNT_BACKUP_CH"/%s.key " TMP_EXTRACT_CH "/%s.key", filevalue, filevalue);
|
||||
mysystem (commandstring);
|
||||
|
||||
COMMON: // DECRYPT THE TARBALL
|
||||
// Copy the key to a new location because we decrypt it!
|
||||
if (strcmp(keyvalue, "")) { // password provided: decrypt the key
|
||||
sprintf(commandstring, "/bin/chroot /harddisk /usr/bin/openssl enc"
|
||||
" -a -d -aes256 -salt"
|
||||
" -pass pass:%s"
|
||||
" -in " TMP_EXTRACT_CH "/%s.key"
|
||||
" -out " TMP_EXTRACT_CH "/__tmp.key",
|
||||
keyvalue, filevalue);
|
||||
} else { //just copy to new name
|
||||
sprintf(commandstring, "/bin/chroot /harddisk cp"
|
||||
" " TMP_EXTRACT_CH "/%s.key"
|
||||
" " TMP_EXTRACT_CH "/__tmp.key",
|
||||
filevalue);
|
||||
}
|
||||
mysystem (commandstring);
|
||||
|
||||
sprintf(commandstring, "/bin/chroot /harddisk /usr/bin/openssl des3"
|
||||
" -d -salt"
|
||||
" -in " TMP_EXTRACT_CH "/%s.dat"
|
||||
" -out " TMP_EXTRACT_CH "/backup.tgz"
|
||||
" -kfile " TMP_EXTRACT_CH "/__tmp.key",
|
||||
filevalue);
|
||||
|
||||
if (mysystem (commandstring)) {
|
||||
errorbox(ctr[TR_UNABLE_TO_INSTALL_FILES]);//mess=decrypt error:invalid key?
|
||||
break;
|
||||
}
|
||||
strcpy(commandstring, "/bin/chroot /harddisk /bin/tar"
|
||||
" -X " CONFIG_ROOT "/backup/exclude.system"
|
||||
" -C " TMP_EXTRACT_CH
|
||||
" -xzf " TMP_EXTRACT_CH "/backup.tgz");
|
||||
|
||||
if (mysystem(commandstring)) {
|
||||
errorbox(ctr[TR_UNABLE_TO_INSTALL_FILES]);
|
||||
break;
|
||||
}
|
||||
sprintf(commandstring, TMP_EXTRACT "/%s.dat", filevalue);
|
||||
unlink(commandstring ); //dont need them anymore
|
||||
unlink( TMP_EXTRACT "/backup.tgz");
|
||||
sprintf(commandstring, TMP_EXTRACT "/%s.key", filevalue);
|
||||
unlink(commandstring );
|
||||
unlink( TMP_EXTRACT "/__tmp.key");
|
||||
|
||||
/* Now copy to correct location */
|
||||
do_copy_files();
|
||||
retcode = 0; /* successfully restored */
|
||||
break;
|
||||
case 2:
|
||||
// diskette change
|
||||
if (floppy_locate()) {
|
||||
retcode = 2; // this an error!
|
||||
break;
|
||||
}
|
||||
|
||||
/* Always extract to /tmp/ipcop for temporary extraction
|
||||
just in case floppy fails.
|
||||
try a compressed backup first because it's quicker to fail.
|
||||
In exclude.system, files name must be without leading / or
|
||||
on extraction, name will never match
|
||||
*/
|
||||
sprintf(commandstring,
|
||||
"/bin/chroot /harddisk /bin/tar -X " CONFIG_ROOT "/backup/exclude.system -C "TMP_EXTRACT_CH" -xvzf /dev/floppy > %s 2> /dev/null", mylog);
|
||||
if (system(commandstring)) {
|
||||
/* if it's not compressed, try uncompressed first before failing*/
|
||||
sprintf(commandstring,
|
||||
"/bin/chroot /harddisk /bin/tar -X " CONFIG_ROOT "/backup/exclude.system -C "TMP_EXTRACT_CH" -xvf /dev/floppy > %s 2> /dev/null", mylog);
|
||||
if (system(commandstring)) {
|
||||
/* command failed trying to read from floppy */
|
||||
errorbox(ctr[TR_UNABLE_TO_INSTALL_FILES]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* Now copy to correct location */
|
||||
do_copy_files();
|
||||
retcode = 0; /* successfully restored */
|
||||
}//switch
|
||||
/* remove possible badly restored files */
|
||||
mysystem("/bin/chroot /harddisk /bin/rm -rf " TMP_EXTRACT_CH );
|
||||
newtPopWindow(); // close windows
|
||||
}//while
|
||||
newtFormDestroy(form);
|
||||
|
||||
/* cleanup */
|
||||
mysystem("/bin/umount " MOUNT_BACKUP);
|
||||
mysystem("/bin/chroot /harddisk /bin/rmdir " MOUNT_BACKUP_CH);
|
||||
|
||||
/* others operations moved from install to install2 */
|
||||
fixup_squidacl();
|
||||
fixup_initrd();
|
||||
|
||||
fprintf(flog, "Install2 program ended.\n");
|
||||
fflush(flog);
|
||||
fclose(flog);
|
||||
newtFinished();
|
||||
return retcode;
|
||||
}
|
||||
|
||||
@@ -823,7 +823,7 @@ EXIT:
|
||||
{
|
||||
|
||||
if (!unattended) {
|
||||
if (system("/bin/chroot /harddisk /usr/local/sbin/setup /dev/tty2 INSTALL"))
|
||||
if (system("/sbin/chroot /harddisk /usr/local/sbin/setup /dev/tty2 INSTALL"))
|
||||
printf("Unable to run setup.\n");
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -1,167 +1,167 @@
|
||||
/* SmoothWall setup program.
|
||||
*
|
||||
* This program is distributed under the terms of the GNU General Public
|
||||
* Licence. See the file COPYING for details.
|
||||
*
|
||||
* (c) Lawrence Manning, 2001
|
||||
* Stuff for setting the keymap.
|
||||
*
|
||||
* $Id: keymap.c,v 1.9.2.1 2004/04/14 22:05:41 gespinasse Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#include "setup.h"
|
||||
|
||||
extern FILE *flog;
|
||||
extern char *mylog;
|
||||
|
||||
extern char **ctr;
|
||||
|
||||
extern int automode;
|
||||
|
||||
#define MAX_FILENAMES 5000
|
||||
#define KEYMAPROOT "/usr/share/kbd/keymaps/i386/"
|
||||
|
||||
static int filenamecount;
|
||||
static char *filenames[MAX_FILENAMES];
|
||||
static char *displaynames[MAX_FILENAMES];
|
||||
|
||||
static int process(char *prefix, char *path);
|
||||
static int cmp(const void *s1, const void *s2);
|
||||
|
||||
int handlekeymap(void)
|
||||
{
|
||||
int c;
|
||||
int choice;
|
||||
char *temp;
|
||||
struct keyvalue *kv = initkeyvalues();
|
||||
int rc;
|
||||
int result;
|
||||
char keymap[STRING_SIZE];
|
||||
char commandstring[STRING_SIZE];
|
||||
|
||||
filenamecount = 0;
|
||||
|
||||
process(KEYMAPROOT "azerty", "");
|
||||
process(KEYMAPROOT "dvorak", "");
|
||||
process(KEYMAPROOT "fgGIod", "");
|
||||
process(KEYMAPROOT "qwerty", "");
|
||||
process(KEYMAPROOT "qwertz", "");
|
||||
filenames[filenamecount] = NULL;
|
||||
qsort(filenames, filenamecount, sizeof(char *), cmp);
|
||||
|
||||
for (c = 0; filenames[c]; c++)
|
||||
{
|
||||
displaynames[c] = malloc(STRING_SIZE);
|
||||
if ((temp = strrchr(filenames[c], '/')))
|
||||
strcpy(displaynames[c], temp + 1);
|
||||
else
|
||||
strcpy(displaynames[c], filenames[c]);
|
||||
if ((temp = strstr(displaynames[c], ".map.gz")))
|
||||
*temp = '\0';
|
||||
}
|
||||
displaynames[c] = NULL;
|
||||
|
||||
if (!(readkeyvalues(kv, CONFIG_ROOT "/main/settings")))
|
||||
{
|
||||
freekeyvalues(kv);
|
||||
errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
strcpy(keymap, "/usr/share/kbd/keymaps/i386/qwertz/de.map.gz");
|
||||
findkey(kv, "KEYMAP", keymap);
|
||||
|
||||
choice = 0;
|
||||
for (c = 0; filenames[c]; c++)
|
||||
{
|
||||
if (strcmp(keymap, filenames[c]) == 0)
|
||||
choice = c;
|
||||
}
|
||||
|
||||
rc = newtWinMenu(ctr[TR_KEYBOARD_MAPPING], ctr[TR_KEYBOARD_MAPPING_LONG], 50, 5, 5, 6, displaynames, &choice,
|
||||
ctr[TR_OK], ctr[TR_CANCEL], NULL);
|
||||
|
||||
strcpy(keymap, filenames[choice]);
|
||||
|
||||
if (rc != 2)
|
||||
{
|
||||
replacekeyvalue(kv, "KEYMAP", keymap);
|
||||
writekeyvalues(kv, CONFIG_ROOT "/main/settings");
|
||||
sprintf(commandstring, "/bin/loadkeys %s", keymap);
|
||||
mysystem(commandstring);
|
||||
result = 1;
|
||||
}
|
||||
else
|
||||
result = 0;
|
||||
|
||||
for (c = 0; filenames[c]; c++)
|
||||
{
|
||||
free(filenames[c]);
|
||||
free(displaynames[c]);
|
||||
}
|
||||
freekeyvalues(kv);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static int process(char *prefix, char *path)
|
||||
{
|
||||
DIR *dir;
|
||||
struct dirent *de;
|
||||
char newpath[PATH_MAX];
|
||||
|
||||
snprintf(newpath, PATH_MAX, "%s%s", prefix, path);
|
||||
|
||||
if (!(dir = opendir(newpath)))
|
||||
{
|
||||
if (filenamecount > MAX_FILENAMES)
|
||||
return 1;
|
||||
|
||||
filenames[filenamecount] = (char *) strdup(newpath);
|
||||
filenamecount++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
while ((de = readdir(dir)))
|
||||
{
|
||||
if (de->d_name[0] == '.') continue;
|
||||
snprintf(newpath, PATH_MAX, "%s/%s", path, de->d_name);
|
||||
process(prefix, newpath);
|
||||
}
|
||||
closedir(dir);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Small wrapper for use with qsort() to sort filename part. */
|
||||
static int cmp(const void *s1, const void *s2)
|
||||
{
|
||||
/* c1 and c2 are copies. */
|
||||
char *c1 = strdup(* (char **) s1);
|
||||
char *c2 = strdup(* (char **) s2);
|
||||
/* point to somewhere in cN. */
|
||||
char *f1, *f2;
|
||||
char *temp;
|
||||
int res;
|
||||
|
||||
if ((temp = strrchr(c1, '/')))
|
||||
f1 = temp + 1;
|
||||
else
|
||||
f1 = c1;
|
||||
if ((temp = strrchr(c2, '/')))
|
||||
f2 = temp + 1;
|
||||
else
|
||||
f2 = c2;
|
||||
/* bang off the . */
|
||||
if ((temp = strchr(f1, '.')))
|
||||
*temp = '\0';
|
||||
if ((temp = strchr(f2, '.')))
|
||||
*temp = '\0';
|
||||
|
||||
res = strcmp(f1, f2);
|
||||
|
||||
free(c1); free(c2);
|
||||
|
||||
return res;
|
||||
}
|
||||
/* SmoothWall setup program.
|
||||
*
|
||||
* This program is distributed under the terms of the GNU General Public
|
||||
* Licence. See the file COPYING for details.
|
||||
*
|
||||
* (c) Lawrence Manning, 2001
|
||||
* Stuff for setting the keymap.
|
||||
*
|
||||
* $Id: keymap.c,v 1.9.2.1 2004/04/14 22:05:41 gespinasse Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#include "setup.h"
|
||||
|
||||
extern FILE *flog;
|
||||
extern char *mylog;
|
||||
|
||||
extern char **ctr;
|
||||
|
||||
extern int automode;
|
||||
|
||||
#define MAX_FILENAMES 5000
|
||||
#define KEYMAPROOT "/lib/kbd/keymaps/i386/"
|
||||
|
||||
static int filenamecount;
|
||||
static char *filenames[MAX_FILENAMES];
|
||||
static char *displaynames[MAX_FILENAMES];
|
||||
|
||||
static int process(char *prefix, char *path);
|
||||
static int cmp(const void *s1, const void *s2);
|
||||
|
||||
int handlekeymap(void)
|
||||
{
|
||||
int c;
|
||||
int choice;
|
||||
char *temp;
|
||||
struct keyvalue *kv = initkeyvalues();
|
||||
int rc;
|
||||
int result;
|
||||
char keymap[STRING_SIZE];
|
||||
char commandstring[STRING_SIZE];
|
||||
|
||||
filenamecount = 0;
|
||||
|
||||
process(KEYMAPROOT "azerty", "");
|
||||
process(KEYMAPROOT "dvorak", "");
|
||||
process(KEYMAPROOT "fgGIod", "");
|
||||
process(KEYMAPROOT "qwerty", "");
|
||||
process(KEYMAPROOT "qwertz", "");
|
||||
filenames[filenamecount] = NULL;
|
||||
qsort(filenames, filenamecount, sizeof(char *), cmp);
|
||||
|
||||
for (c = 0; filenames[c]; c++)
|
||||
{
|
||||
displaynames[c] = malloc(STRING_SIZE);
|
||||
if ((temp = strrchr(filenames[c], '/')))
|
||||
strcpy(displaynames[c], temp + 1);
|
||||
else
|
||||
strcpy(displaynames[c], filenames[c]);
|
||||
if ((temp = strstr(displaynames[c], ".map.gz")))
|
||||
*temp = '\0';
|
||||
}
|
||||
displaynames[c] = NULL;
|
||||
|
||||
if (!(readkeyvalues(kv, CONFIG_ROOT "/main/settings")))
|
||||
{
|
||||
freekeyvalues(kv);
|
||||
errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
strcpy(keymap, "/lib/kbd/keymaps/i386/qwertz/de.map.gz");
|
||||
findkey(kv, "KEYMAP", keymap);
|
||||
|
||||
choice = 0;
|
||||
for (c = 0; filenames[c]; c++)
|
||||
{
|
||||
if (strcmp(keymap, filenames[c]) == 0)
|
||||
choice = c;
|
||||
}
|
||||
|
||||
rc = newtWinMenu(ctr[TR_KEYBOARD_MAPPING], ctr[TR_KEYBOARD_MAPPING_LONG], 50, 5, 5, 6, displaynames, &choice,
|
||||
ctr[TR_OK], ctr[TR_CANCEL], NULL);
|
||||
|
||||
strcpy(keymap, filenames[choice]);
|
||||
|
||||
if (rc != 2)
|
||||
{
|
||||
replacekeyvalue(kv, "KEYMAP", keymap);
|
||||
writekeyvalues(kv, CONFIG_ROOT "/main/settings");
|
||||
sprintf(commandstring, "/bin/loadkeys %s", keymap);
|
||||
mysystem(commandstring);
|
||||
result = 1;
|
||||
}
|
||||
else
|
||||
result = 0;
|
||||
|
||||
for (c = 0; filenames[c]; c++)
|
||||
{
|
||||
free(filenames[c]);
|
||||
free(displaynames[c]);
|
||||
}
|
||||
freekeyvalues(kv);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static int process(char *prefix, char *path)
|
||||
{
|
||||
DIR *dir;
|
||||
struct dirent *de;
|
||||
char newpath[PATH_MAX];
|
||||
|
||||
snprintf(newpath, PATH_MAX, "%s%s", prefix, path);
|
||||
|
||||
if (!(dir = opendir(newpath)))
|
||||
{
|
||||
if (filenamecount > MAX_FILENAMES)
|
||||
return 1;
|
||||
|
||||
filenames[filenamecount] = (char *) strdup(newpath);
|
||||
filenamecount++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
while ((de = readdir(dir)))
|
||||
{
|
||||
if (de->d_name[0] == '.') continue;
|
||||
snprintf(newpath, PATH_MAX, "%s/%s", path, de->d_name);
|
||||
process(prefix, newpath);
|
||||
}
|
||||
closedir(dir);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Small wrapper for use with qsort() to sort filename part. */
|
||||
static int cmp(const void *s1, const void *s2)
|
||||
{
|
||||
/* c1 and c2 are copies. */
|
||||
char *c1 = strdup(* (char **) s1);
|
||||
char *c2 = strdup(* (char **) s2);
|
||||
/* point to somewhere in cN. */
|
||||
char *f1, *f2;
|
||||
char *temp;
|
||||
int res;
|
||||
|
||||
if ((temp = strrchr(c1, '/')))
|
||||
f1 = temp + 1;
|
||||
else
|
||||
f1 = c1;
|
||||
if ((temp = strrchr(c2, '/')))
|
||||
f2 = temp + 1;
|
||||
else
|
||||
f2 = c2;
|
||||
/* bang off the . */
|
||||
if ((temp = strchr(f1, '.')))
|
||||
*temp = '\0';
|
||||
if ((temp = strchr(f2, '.')))
|
||||
*temp = '\0';
|
||||
|
||||
res = strcmp(f1, f2);
|
||||
|
||||
free(c1); free(c2);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -21,36 +21,14 @@ char **ctr = NULL;
|
||||
|
||||
int automode = 0;
|
||||
|
||||
extern char *bz_tr[];
|
||||
extern char *cs_tr[];
|
||||
extern char *da_tr[];
|
||||
extern char *en_tr[];
|
||||
extern char *es_tr[];
|
||||
extern char *fi_tr[];
|
||||
extern char *fr_tr[];
|
||||
extern char *hu_tr[];
|
||||
extern char *la_tr[];
|
||||
extern char *nl_tr[];
|
||||
extern char *de_tr[];
|
||||
extern char *tr_tr[];
|
||||
extern char *it_tr[];
|
||||
extern char *el_tr[];
|
||||
extern char *sk_tr[];
|
||||
extern char *so_tr[];
|
||||
extern char *sv_tr[];
|
||||
extern char *no_tr[];
|
||||
extern char *pl_tr[];
|
||||
extern char *pt_tr[];
|
||||
extern char *vi_tr[];
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
#ifdef LANG_EN_ONLY
|
||||
char *shortlangnames[] = { "en", NULL };
|
||||
char **langtrs[] = { en_tr, NULL };
|
||||
#elifdef LANG_ALL
|
||||
char *shortlangnames[] = { "bz", "cs", "da", "de", "en", "es", "fr", "el", "it", "la", "hu", "nl", "no", "pl", "pt", "sk", "so", "fi", "sv", "tr", "vi", NULL };
|
||||
char **langtrs[] = { bz_tr, cs_tr, da_tr, de_tr, en_tr, es_tr, fr_tr, el_tr, it_tr, la_tr, hu_tr, nl_tr, no_tr, pl_tr, pt_tr, sk_tr, so_tr, fi_tr, sv_tr, tr_tr, vi_tr, NULL };
|
||||
#else
|
||||
char *shortlangnames[] = { "de", "en", NULL };
|
||||
char **langtrs[] = { de_tr, en_tr, NULL };
|
||||
@@ -68,7 +46,7 @@ int main(int argc, char *argv[])
|
||||
if (argc >= 2)
|
||||
mylog = argv[1];
|
||||
else
|
||||
mylog = strdup("/root/setup.log");
|
||||
mylog = strdup("/var/log/setup.log");
|
||||
|
||||
if (!(flog = fopen(mylog, "w+")))
|
||||
{
|
||||
@@ -131,7 +109,7 @@ int main(int argc, char *argv[])
|
||||
title[strlen(title) - 1] = '\0';
|
||||
fclose (f_title);
|
||||
} else {
|
||||
sprintf (title, "%s v%s - %s", NAME, VERSION, SLOGAN);
|
||||
sprintf (title, "%s %s - %s", NAME, VERSION, SLOGAN);
|
||||
}
|
||||
newtDrawRootText(14, 0, title);
|
||||
newtPushHelpLine(ctr[TR_HELPLINE]);
|
||||
@@ -214,17 +192,17 @@ int main(int argc, char *argv[])
|
||||
EXIT:
|
||||
if (automode != 0)
|
||||
{
|
||||
sprintf (title, "%s v%s - %s", NAME, VERSION, SLOGAN);
|
||||
sprintf (title, "%s %s - %s", NAME, VERSION, SLOGAN);
|
||||
if (autook)
|
||||
newtWinMessage(title, ctr[TR_OK], ctr[TR_SETUP_FINISHED]);
|
||||
else
|
||||
newtWinMessage(ctr[TR_WARNING], ctr[TR_OK], ctr[TR_SETUP_NOT_COMPLETE]);
|
||||
}
|
||||
|
||||
|
||||
fprintf(flog, "Setup program ended.\n");
|
||||
fflush(flog);
|
||||
fclose(flog);
|
||||
|
||||
|
||||
newtFinished();
|
||||
|
||||
return 0;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -32,7 +32,7 @@ int handlerootpassword(void)
|
||||
return 0;
|
||||
|
||||
snprintf(commandstring, STRING_SIZE,
|
||||
"/bin/echo 'root:%s' | /usr/sbin/chpasswd", password);
|
||||
"/bin/echo 'root:%s' | /usr/sbin/chpasswd", password);
|
||||
if (runhiddencommandwithstatus(commandstring, ctr[TR_SETTING_ROOT_PASSWORD]))
|
||||
{
|
||||
errorbox(ctr[TR_PROBLEM_SETTING_ROOT_PASSWORD]);
|
||||
@@ -83,7 +83,7 @@ int getpassword(char *password, char *text)
|
||||
do
|
||||
{
|
||||
done = 1;
|
||||
sprintf (title, "%s v%s - %s", NAME, VERSION, SLOGAN);
|
||||
sprintf (title, "%s %s - %s", NAME, VERSION, SLOGAN);
|
||||
rc = newtWinEntries(title, text,
|
||||
50, 5, 5, 20, entries, ctr[TR_OK], ctr[TR_CANCEL], NULL);
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#
|
||||
|
||||
use strict;
|
||||
require 'CONFIG_ROOT/general-functions.pl';
|
||||
require '/var/ipfire/general-functions.pl';
|
||||
|
||||
my %settings;
|
||||
my $iface;
|
||||
|
||||
Reference in New Issue
Block a user