Merge branch 'next' of ssh://git.ipfire.org/pub/git/ipfire-2.x into monit

Conflicts:
	config/etc/logrotate.conf
This commit is contained in:
Dirk Wagner
2015-01-06 15:51:29 +01:00
584 changed files with 45455 additions and 77180 deletions

View File

@@ -1,26 +0,0 @@
# dracut config file
# Specific list of dracut modules to use
#dracutmodules+=""
# Dracut modules to omit
#omit_dracutmodules+=""
# Dracut modules to add to the default
#add_dracutmodules+=""
# additional kernel modules to the default
#add_drivers+=""
# list of kernel filesystem modules to be included in the generic initramfs
filesystems+="ext2 ext3 ext4 reiserfs reiser4 iso9660 vfat"
# build initrd only to boot current hardware
#hostonly="yes"
#
# install local /etc/mdadm.conf
mdadmconf="no"
# install local /etc/lvm/lvm.conf
lvmconf="no"

View File

@@ -1,188 +0,0 @@
/*
* switchroot.c - switch to new root directory and start init.
*
* Copyright 2002-2008 Red Hat, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Authors:
* Peter Jones <pjones@redhat.com>
* Jeremy Katz <katzj@redhat.com>
*/
#include <sys/mount.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/param.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <ctype.h>
#include <dirent.h>
#ifndef MS_MOVE
#define MS_MOVE 8192
#endif
enum {
ok,
err_no_directory,
err_usage,
};
/* remove all files/directories below dirName -- don't cross mountpoints */
static int
recursiveRemove(char * dirName)
{
struct stat sb,rb;
DIR * dir;
struct dirent * d;
char * strBuf = alloca(strlen(dirName) + 1024);
if (!(dir = opendir(dirName))) {
printf("error opening %s: %m\n", dirName);
return 0;
}
if (fstat(dirfd(dir),&rb)) {
printf("unable to stat %s: %m\n", dirName);
closedir(dir);
return 0;
}
errno = 0;
while ((d = readdir(dir))) {
errno = 0;
if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, "..")) {
errno = 0;
continue;
}
strcpy(strBuf, dirName);
strcat(strBuf, "/");
strcat(strBuf, d->d_name);
if (lstat(strBuf, &sb)) {
printf("failed to stat %s: %m\n", strBuf);
errno = 0;
continue;
}
/* only descend into subdirectories if device is same as dir */
if (S_ISDIR(sb.st_mode)) {
if (sb.st_dev == rb.st_dev) {
recursiveRemove(strBuf);
if (rmdir(strBuf))
printf("failed to rmdir %s: %m\n", strBuf);
}
errno = 0;
continue;
}
if (unlink(strBuf)) {
printf("failed to remove %s: %m\n", strBuf);
errno = 0;
continue;
}
}
if (errno) {
closedir(dir);
printf("error reading from %s: %m\n", dirName);
return 1;
}
closedir(dir);
return 0;
}
static int switchroot(const char *newroot)
{
/* Don't try to unmount the old "/", there's no way to do it. */
const char *umounts[] = { "/dev", "/proc", "/sys", NULL };
int errnum;
int i;
for (i = 0; umounts[i] != NULL; i++) {
char newmount[PATH_MAX];
strcpy(newmount, newroot);
strcat(newmount, umounts[i]);
if (mount(umounts[i], newmount, NULL, MS_MOVE, NULL) < 0) {
fprintf(stderr, "Error mount moving old %s %s %m\n",
umounts[i], newmount);
fprintf(stderr, "Forcing unmount of %s\n", umounts[i]);
umount2(umounts[i], MNT_FORCE);
}
}
if (chdir(newroot) < 0) {
errnum=errno;
fprintf(stderr, "switchroot: chdir failed: %m\n");
errno=errnum;
return -1;
}
recursiveRemove("/");
if (mount(newroot, "/", NULL, MS_MOVE, NULL) < 0) {
errnum = errno;
fprintf(stderr, "switchroot: mount failed: %m\n");
errno = errnum;
return -1;
}
if (chroot(".")) {
errnum = errno;
fprintf(stderr, "switchroot: chroot failed: %m\n");
errno = errnum;
return -2;
}
return 1;
}
static void usage(FILE *output)
{
fprintf(output, "usage: switchroot <newrootdir> <init> <args to init>\n");
if (output == stderr)
exit(err_usage);
exit(ok);
}
int main(int argc, char *argv[])
{
char *newroot = argv[1];
char *init = argv[2];
char **initargs = &argv[2];
if (newroot == NULL || newroot[0] == '\0' ||
init == NULL || init[0] == '\0' ) {
usage(stderr);
}
if (switchroot(newroot) < 0) {
fprintf(stderr, "switchroot has failed. Sorry.\n");
return 1;
}
if (access(initargs[0], X_OK))
fprintf(stderr, "WARNING: can't access %s\n", initargs[0]);
/* get session leader */
setsid();
/* set controlling terminal */
ioctl (0, TIOCSCTTY, 1);
execv(initargs[0], initargs);
}

View File

@@ -17,26 +17,8 @@
. ${rc_functions}
eval $(/usr/local/bin/readhash /var/ipfire/main/settings)
# English is default
FONT="lat0-16"
FONT="LatArCyrHeb-16"
KEYMAP_CORRECTIONS="euro2"
case "${LANGUAGE}" in
# German
de)
LEGACY_CHARSET="iso-8859-15"
FONT="lat0-16 -m 8859-15"
;;
# Polish
pl)
FONT="lat2-16"
;;
# Russish/Turkish
ru|tr)
FONT="LatArCyrHeb-16"
;;
esac
UNICODE="1"
BROKEN_COMPOSE="0"

0
src/initscripts/init.d/dhcrelay Executable file → Normal file
View File

View File

@@ -104,6 +104,12 @@ iptables_init() {
iptables -t nat -N CUSTOMPOSTROUTING
iptables -t nat -A POSTROUTING -j CUSTOMPOSTROUTING
# P2PBLOCK
iptables -N P2PBLOCK
iptables -A INPUT -j P2PBLOCK
iptables -A FORWARD -j P2PBLOCK
iptables -A OUTPUT -j P2PBLOCK
# Guardian (IPS) chains
iptables -N GUARDIAN
iptables -A INPUT -j GUARDIAN

View File

@@ -28,7 +28,7 @@ ser_console $cmdline
#
/etc/init.d/sysklogd start
export LANG=en_US.utf8
/usr/local/sbin/setup /dev/tty2 INSTALL
/usr/sbin/setup /dev/tty2 INSTALL
if [ "${?}" == "1" ]; then
echo Setup not finished. Rebooting ...
reboot -f

View File

@@ -17,22 +17,24 @@
case "${1}" in
start)
boot_mesg "Background Autoresize root partition to use the whole drive"
# Detect device
ROOT=`mount | grep -m1 " / " | cut -d" " -f1`;
DRV=${ROOT::`expr length $ROOT`-1}
if [ -e "/.resizefs" ]; then
boot_mesg "Re-sizing root partition..."
boot_mesg "resize ${DRV}3 ..."
nice -n 19 $0 background ${DRV}3 > /dev/null &
;;
background)
resize2fs -p $2
# Find root device
mount | while read -r dev tmp1 mountpoint tmp2; do
# Skip generic entries
[ "${dev}" = "rootfs" ] && continue
# Erase symlink, it should run only once
rm -f /etc/rc.d/rcsysinit.d/S42fsresize
sync
exit 0;
if [ "${mountpoint}" = "/" ]; then
# Resize filesystem
resize2fs -p "${dev}"
# Remove marker
rm -f /.resizefs
break
fi
done
fi
;;
*)

View File

@@ -1,47 +0,0 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/mdadm
#
# Description : This script controls software Raid
#
# Authors : Dirk Hoefle <dhoefle@gmx.net>
#
# Version : 01.00
#
# Notes :
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
case "${1}" in
start)
boot_mesg "Scan/assemble mdadm raid devices..."
mdadm --assemble --scan
echo_ok
;;
stop)
boot_mesg "Stopping Raid devices..."
mdadm --stop --scan
echo_ok
;;
restart)
${0} stop
sleep 1
${0} start
;;
status)
cat /proc/mdstat
;;
*)
echo "Usage: ${0} {start|stop|restart|status}"
exit 1
;;
esac
# End $rc_base/init.d/mdadm

View File

@@ -0,0 +1,33 @@
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/mounttmpfs
#
# Description : Mount tmpfses
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
case "${1}" in
start)
boot_mesg -n "Mounting ramdisk file systems:" ${INFO}
if ! mountpoint /var/lock &>/dev/null; then
boot_mesg -n " /var/lock" ${NORMAL}
mount -n -t tmpfs -o nosuid,nodev,size=8M /var/lock /var/lock || failed=1
fi
boot_mesg "" ${NORMAL}
(exit ${failed})
evaluate_retval
;;
*)
echo "Usage: ${0} {start}"
exit 1
;;
esac
# End $rc_base/init.d/mounttmpfs

View File

@@ -17,40 +17,54 @@
case "${1}" in
start)
if [ -e "/.partresize" ]; then
boot_mesg "Mounting root file system in read/write mode ..."
mount -o remount,rw / > /dev/null
evaluate_retval
boot_mesg "Mounting root file system in read/write mode ..."
mount -o remount,rw / > /dev/null
evaluate_retval
boot_mesg "Create /etc/mtab..."
> /etc/mtab
mount -f / || failed=1
(exit ${failed})
evaluate_retval
boot_mesg "Create /etc/mtab..."
> /etc/mtab
mount -f / || failed=1
(exit ${failed})
evaluate_retval
# Detect device
mount | while read -r dev tmp1 mountpoint tmp2; do
[ "${dev}" = "rootfs" ] && continue
# Detect device
ROOT=`mount | grep -m1 " / " | cut -d" " -f1`;
if [ "${ROOT:`expr length $ROOT`-2:1}" == "p" ]; then
DRV=${ROOT::`expr length $ROOT`-2}
else
DRV=${ROOT::`expr length $ROOT`-1}
if [ "${mountpoint}" = "/" ]; then
# Find root partition number
part_num="${dev: -1}"
# Find path to the root device
root_dev="${dev::-1}"
if [ ! -b "${dev::-1}" -a "${root_dev: -1}" = "p" ]; then
root_dev="${dev::-2}"
fi
boot_mesg "Growing root partition to maximum size..."
echo -e ',+' | sfdisk --no-reread -f -N${part_num} "${root_dev}" 2>/dev/null
# Update c,h,s values of the boot partition...
if [ ${part_num} -ne 1 -a -b "${root_dev}1" ]; then
echo -e ',' | sfdisk --no-reread -f -N1 ${DRV} &> /dev/null
fi
# The filesystem should be resized after
# this operation
touch /.resizefs
# Remove marker
rm -f /.partresize
# Reboot
boot_mesg "Rebooting system..."
mount -o remount,ro / &>/dev/null
sleep 15
reboot -f
fi
done
fi
boot_mesg "Change Partition ${DRV}3 to all free space ..."
echo -e ',+' | sfdisk --no-reread -f -N3 ${DRV} 2>/dev/null
boot_mesg "Update c,h,s values of ${DRV}1 ..."
echo -e ',' | sfdisk --no-reread -f -N1 ${DRV} &> /dev/null
# Erase symlink, it should run only once
rm -f /etc/rc.d/rcsysinit.d/S25partresize
boot_mesg "Rebooting ..."
sync
mount -o remount,ro / &> /dev/null
sleep 15
reboot -f
;;
*)
echo "Usage: ${0} {start}"

View File

@@ -68,6 +68,10 @@ case "$1" in
evaluate_retval
;;
restore)
if ! mountpoint $RRDLOG &>/dev/null; then
mount -t tmpfs -o size=64M none "$RRDLOG"
fi
if [ -e $RRDLOG.bak/cron/new.root ]; then
if [ -e $RRDLOG.bak/cron/root ]; then
rm -f $RRDLOG.bak/cron/new.root

View File

@@ -1,87 +0,0 @@
/* SmoothWall install program.
*
* This program is distributed under the terms of the GNU General Public
* Licence. See the file COPYING for details.
*
* (c) Lawrence Manning, 2001
* Write the config and get password stuff.
*
*/
#include "install.h"
extern FILE *flog;
extern char *mylog;
extern char **ctr;
int write_lang_configs( char *lang)
{
struct keyvalue *kv = initkeyvalues();
/* default stuff for main/settings. */
replacekeyvalue(kv, "LANGUAGE", lang);
replacekeyvalue(kv, "HOSTNAME", SNAME);
replacekeyvalue(kv, "THEME", "ipfire");
writekeyvalues(kv, "/harddisk" CONFIG_ROOT "/main/settings");
freekeyvalues(kv);
return 1;
}
int write_ethernet_configs(struct keyvalue *ethernetkv)
{
/* Write out the network settings we got from a few mins ago. */
writekeyvalues(ethernetkv, "/harddisk" CONFIG_ROOT "/ethernet/settings");
return 1;
}
/* Taken from the cdrom one. */
int getpassword(char *password, char *text)
{
char *values[] = { NULL, NULL, NULL }; /* pointers for the values. */
struct newtWinEntry entries[] =
{
{ ctr[TR_PASSWORD_PROMPT], &values[0], 2 },
{ ctr[TR_AGAIN_PROMPT], &values[1], 2 },
{ NULL, NULL, 0 }
};
char title[STRING_SIZE];
int rc;
int done;
do
{
done = 1;
sprintf (title, "%s v%s - %s", NAME, VERSION, SLOGAN);
rc = newtWinEntries(title, text,
50, 5, 5, 20, entries, ctr[TR_OK], ctr[TR_CANCEL], NULL);
if (rc != 2)
{
if (strlen(values[0]) == 0 || strlen(values[1]) == 0)
{
errorbox(ctr[TR_PASSWORD_CANNOT_BE_BLANK]);
done = 0;
strcpy(values[0], "");
strcpy(values[1], "");
}
else if (strcmp(values[0], values[1]) != 0)
{
errorbox(ctr[TR_PASSWORDS_DO_NOT_MATCH]);
done = 0;
strcpy(values[0], "");
strcpy(values[1], "");
}
}
}
while (!done);
strncpy(password, values[0], STRING_SIZE);
if (values[0]) free(values[0]);
if (values[1]) free(values[1]);
return rc;
}

View File

@@ -1,35 +0,0 @@
/* SmoothWall install program.
*
* This program is distributed under the terms of the GNU General Public
* Licence. See the file COPYING for details.
*
* (c) Lawrence Manning, 2001
* Main include file.
*
*/
#include "../libsmooth/libsmooth.h"
#define IDE_EMPTY 0
#define IDE_CDROM 1
#define IDE_HD 2
#define IDE_UNKNOWN 3
/* CDROMS and harddisks. */
struct devparams
{
char devnode_disk[30]; // when single partition is addressed
char devnode_part[30]; // when the RAID partition is addressed
char devnode_disk_run[30]; // the same dev but after installation
char devnode_part_run[30];
char modulename[STRING_SIZE];
char options[STRING_SIZE];
};
/* config.c */
int write_disk_configs(struct devparams *dp);
int write_lang_configs( char *lang);
int write_ethernet_configs(struct keyvalue *ethernetkv);
/* unattended.c */
int unattended_setup(struct keyvalue *unattendedkv);

View File

@@ -1,633 +0,0 @@
/* SmoothWall install program.
*
* This program is distributed under the terms of the GNU General Public
* Licence. See the file COPYING for details.
*
* (c) Lawrence Manning, 2001
* Contains main entry point, and misc functions.6
*
*/
#include "install.h"
#define _GNU_SOURCE
#define INST_FILECOUNT 21000
#define UNATTENDED_CONF "/cdrom/boot/unattended.conf"
#define LICENSE_FILE "/cdrom/COPYING"
#define EXT2 0
#define EXT3 1
#define EXT4 2
#define REISERFS 3
FILE *flog = NULL;
char *mylog;
char **ctr;
extern char url[STRING_SIZE];
struct nic nics[20] = { { "" , "" , "" } }; // only defined for compile
struct knic knics[20] = { { "" , "" , "" , "" } }; // only defined for compile
extern char *en_tr[];
extern char *es_tr[];
extern char *de_tr[];
extern char *fr_tr[];
extern char *nl_tr[];
extern char *pl_tr[];
extern char *ru_tr[];
extern char *tr_tr[];
int main(int argc, char *argv[])
{
char discl_msg[40000] = "Disclaimer\n";
char *langnames[] = { "Deutsch", "English", "Français", "Español", "Nederlands", "Polski", "Русский", "Türkçe", NULL };
char *shortlangnames[] = { "de", "en", "fr", "es", "nl", "pl", "ru", "tr", NULL };
char **langtrs[] = { de_tr, en_tr, fr_tr, es_tr, nl_tr, pl_tr, ru_tr, tr_tr, NULL };
char hdletter;
char harddrive[30], sourcedrive[5]; /* Device holder. */
char harddrive_info[STRING_SIZE]; /* Additional infos about target */
struct devparams hdparams, cdromparams; /* Params for CDROM and HD */
int rc = 0;
char commandstring[STRING_SIZE];
char mkfscommand[STRING_SIZE];
char *fstypes[] = { "ext2", "ext3", "ext4", "ReiserFS", NULL };
int fstype = EXT4;
int choice;
int i;
int found = 0;
char shortlangname[10];
char message[1000];
char title[STRING_SIZE];
int allok = 0;
int allok_fastexit=0;
int raid_disk = 0;
struct keyvalue *ethernetkv = initkeyvalues();
FILE *handle, *cmdfile, *copying;
char line[STRING_SIZE];
char string[STRING_SIZE];
long memory = 0, disk = 0, free;
long system_partition, boot_partition, root_partition, swap_file;
int scsi_disk = 0;
char *yesnoharddisk[3]; // char *yesnoharddisk = { "NO", "YES", NULL };
int unattended = 0;
int serialconsole = 0;
struct keyvalue *unattendedkv = initkeyvalues();
int hardyn = 0;
char restore_file[STRING_SIZE] = "";
setlocale (LC_ALL, "");
sethostname( SNAME , 10);
memset(&hdparams, 0, sizeof(struct devparams));
memset(&cdromparams, 0, sizeof(struct devparams));
/* Log file/terminal stuff. */
if (argc >= 2)
{
if (!(flog = fopen(argv[1], "w+")))
return 0;
}
else
return 0;
mylog = argv[1];
fprintf(flog, "Install program started.\n");
newtInit();
newtCls();
newtDrawRootText(14, 0, NAME " " VERSION " - " SLOGAN );
sprintf (title, "%s %s - %s", NAME, VERSION, SLOGAN);
if (! (cmdfile = fopen("/proc/cmdline", "r")))
{
fprintf(flog, "Couldn't open commandline: /proc/cmdline\n");
} else {
fgets(line, STRING_SIZE, cmdfile);
// check if we have to make an unattended install
if (strstr (line, "unattended") != NULL) {
unattended = 1;
runcommandwithstatus("/bin/sleep 10", "WARNING: Unattended installation will start in 10 seconds...");
}
// check if we have to patch for serial console
if (strstr (line, "console=ttyS0") != NULL) {
serialconsole = 1;
}
}
// Load common modules
mysystem("/sbin/modprobe vfat"); // USB key
/* German is the default */
for (choice = 0; langnames[choice]; choice++)
{
if (strcmp(langnames[choice], "English") == 0)
break;
}
if (!langnames[choice])
goto EXIT;
if (!unattended) {
rc = newtWinMenu("Language selection", "Select the language you wish to use for the " NAME ".", 50, 5, 5, 8,
langnames, &choice, "Ok", NULL);
}
ctr = langtrs[choice];
strcpy(shortlangname, shortlangnames[choice]);
newtPushHelpLine(ctr[TR_HELPLINE]);
if (!unattended) {
sprintf(message, ctr[TR_WELCOME], NAME);
newtWinMessage(title, ctr[TR_OK], message);
}
mysystem("/bin/mountsource.sh");
if ((handle = fopen("/tmp/source_device", "r")) == NULL) {
newtWinMessage(title, ctr[TR_OK], ctr[TR_NO_LOCAL_SOURCE]);
runcommandwithstatus("/bin/downloadsource.sh",ctr[TR_DOWNLOADING_ISO]);
if ((handle = fopen("/tmp/source_device", "r")) == NULL) {
errorbox(ctr[TR_DOWNLOAD_ERROR]);
goto EXIT;
}
}
fgets(sourcedrive, 5, handle);
fprintf(flog, "Source drive: %s\n", sourcedrive);
fclose(handle);
if (!unattended) {
// Read the license file.
if (!(copying = fopen(LICENSE_FILE, "r"))) {
sprintf(discl_msg, "Could not open license file: %s\n", LICENSE_FILE);
fprintf(flog, discl_msg);
} else {
fread(discl_msg, 1, 40000, copying);
fclose(copying);
if (disclaimerbox(discl_msg)==0) {
errorbox(ctr[TR_LICENSE_NOT_ACCEPTED]);
goto EXIT;
}
}
}
i = 0;
while (found == 0) {
i++;
fprintf(flog, "Harddisk scan pass %i\n", i);
switch (mysystem("/bin/mountdest.sh") % 255) {
case 0: // Found IDE disk
scsi_disk = 0;
raid_disk = 0;
found = 1;
break;
case 1: // Found SCSI disk
scsi_disk = 1;
raid_disk = 0;
found = 1;
break;
case 2: // Found RAID disk
scsi_disk = 0;
raid_disk= 1;
found = 1;
break;
case 10: // No harddisk found
errorbox(ctr[TR_NO_HARDDISK]);
goto EXIT;
}
}
if ((handle = fopen("/tmp/dest_device", "r")) == NULL) {
errorbox(ctr[TR_NO_HARDDISK]);
goto EXIT;
}
fgets(harddrive, 30, handle);
fclose(handle);
if ((handle = fopen("/tmp/dest_device_info", "r")) == NULL) {
sprintf(harddrive_info, "%s", harddrive);
}
fgets(harddrive_info, 70, handle);
fclose(handle);
/* load unattended configuration */
if (unattended) {
fprintf(flog, "unattended: Reading unattended.conf\n");
(void) readkeyvalues(unattendedkv, UNATTENDED_CONF);
findkey(unattendedkv, "RESTORE_FILE", restore_file);
}
/* Make the hdparms struct and print the contents.
With USB-KEY install and SCSI disk, while installing, the disk
is named 'sdb,sdc,...' (following keys)
On reboot, it will become 'sda'
To avoid many test, all names are built in the struct.
*/
sprintf(hdparams.devnode_disk, "/dev/%s", harddrive);
/* Address the partition or raid partition (eg dev/sda or /dev/sdap1 */
sprintf(hdparams.devnode_part, "/dev/%s%s", harddrive,raid_disk ? "p" : "");
/* Now the names after the machine is booted. Only scsi is affected
and we only install on the first scsi disk. */
fprintf(flog, "Destination drive: %s\n", hdparams.devnode_disk);
sprintf(message, ctr[TR_PREPARE_HARDDISK], harddrive_info);
if (unattended) {
hardyn = 1;
} else {
yesnoharddisk[0] = ctr[TR_NO];
yesnoharddisk[1] = ctr[TR_YES];
yesnoharddisk[2] = NULL;
}
while (! hardyn) {
rc = newtWinMenu(title, message,
50, 5, 5, 6, yesnoharddisk,
&hardyn, ctr[TR_OK],
ctr[TR_CANCEL], NULL);
if (rc == 2)
goto EXIT;
}
if (rc == 2)
goto EXIT;
fstypes[0]=ctr[TR_EXT2FS_DESCR];
fstypes[1]=ctr[TR_EXT3FS_DESCR];
fstypes[2]=ctr[TR_EXT4FS_DESCR];
fstypes[3]=ctr[TR_REISERFS_DESCR];
fstypes[4]=NULL;
if (!unattended) {
sprintf(message, ctr[TR_CHOOSE_FILESYSTEM]);
rc = newtWinMenu( ctr[TR_CHOOSE_FILESYSTEM], message,
50, 5, 5, 6, fstypes, &fstype, ctr[TR_OK],
ctr[TR_CANCEL], NULL);
} else {
rc = 1;
fstype = EXT4;
}
if (rc == 2)
goto EXIT;
/* Calculate amount of memory in machine */
if ((handle = fopen("/proc/meminfo", "r")))
{
while (fgets(line, STRING_SIZE-1, handle)) {
if (sscanf (line, "MemTotal: %s kB", string)) {
memory = atoi(string) / 1024 ;
}
}
fclose(handle);
}
/* Partition, mkswp, mkfs.
* before partitioning, first determine the sizes of each
* partition. In order to do that we need to know the size of
* the disk.
*/
/* Don't use mysystem here so we can redirect output */
sprintf(commandstring, "/sbin/sfdisk -s /dev/%s > /tmp/disksize 2> /dev/null", harddrive);
system(commandstring);
/* Calculate amount of disk space */
if ((handle = fopen("/tmp/disksize", "r"))) {
fgets(line, STRING_SIZE-1, handle);
if (sscanf (line, "%s", string)) {
disk = atoi(string) / 1024;
}
fclose(handle);
}
fprintf(flog, "Disksize = %ld, memory = %ld", disk, memory);
/* Calculating Swap-Size dependend of Ram Size */
if (memory <= 256)
swap_file = 128;
else if (memory <= 1024 && memory > 256)
swap_file = 256;
else
swap_file = memory / 4;
/* Calculating Root-Size dependend of Max Disk Space */
if ( disk < 2048 )
root_partition = 1024;
else if ( disk >= 2048 && disk <= 3072 )
root_partition = 1536;
else
root_partition = 2048;
/* Calculating the amount of free space */
boot_partition = 64; /* in MB */
system_partition = disk - ( root_partition + swap_file + boot_partition );
fprintf(flog, ", boot = %ld, swap = %ld, mylog = %ld, root = %ld\n",
boot_partition, swap_file, system_partition, root_partition);
rc = 0;
if ( (!unattended) && (((disk - (root_partition + swap_file + boot_partition)) < 256 ) && ((disk - (root_partition + boot_partition )) > 256)) ) {
rc = newtWinChoice(title, ctr[TR_OK], ctr[TR_CANCEL], ctr[TR_CONTINUE_NO_SWAP]);
if (rc == 1){
swap_file = 0;
system_partition = disk - ( root_partition + swap_file + boot_partition );
fprintf(flog, "Changing Swap Size to 0 MB.\n");
}
else if (rc == 2){
fprintf(flog, "Disk is too small.\n");
errorbox(ctr[TR_DISK_TOO_SMALL]);goto EXIT;
}
}
else if (disk - (root_partition + swap_file + boot_partition) >= 256) {
}
else {
fprintf(flog, "Disk is too small.\n");
errorbox(ctr[TR_DISK_TOO_SMALL]);goto EXIT;
}
handle = fopen("/tmp/partitiontable", "w");
/* Make swapfile */
if (swap_file) {
fprintf(handle, ",%ld,L,*\n,%ld,S,\n,%ld,L,\n,,L,\n",
boot_partition, swap_file, root_partition);
} else {
fprintf(handle, ",%ld,L,*\n,0,0,\n,%ld,L,\n,,L,\n",
boot_partition, root_partition);
}
fclose(handle);
if (disk < 2097150) {
// <2TB use sfdisk and normal mbr
snprintf(commandstring, STRING_SIZE, "/sbin/sfdisk -L -uM %s < /tmp/partitiontable", hdparams.devnode_disk);
} else {
// >2TB use parted with gpt
snprintf(commandstring, STRING_SIZE, "/usr/sbin/parted -s %s mklabel gpt mkpart boot ext2 1M 64M mkpart swap linux-swap 64M 1000M mkpart root ext4 1000M 5000M mkpart var ext4 5000M 100%% disk_set pmbr_boot on", hdparams.devnode_disk);
}
if (runcommandwithstatus(commandstring, ctr[TR_PARTITIONING_DISK]))
{
errorbox(ctr[TR_UNABLE_TO_PARTITION]);
goto EXIT;
}
if (fstype == EXT2) {
// mysystem("/sbin/modprobe ext2");
sprintf(mkfscommand, "/sbin/mke2fs -T ext2");
} else if (fstype == REISERFS) {
mysystem("/sbin/modprobe reiserfs");
sprintf(mkfscommand, "/sbin/mkreiserfs -f");
} else if (fstype == EXT3) {
// mysystem("/sbin/modprobe ext3");
sprintf(mkfscommand, "/sbin/mke2fs -T ext3");
} else if (fstype == EXT4) {
// mysystem("/sbin/modprobe ext4");
sprintf(mkfscommand, "/sbin/mke2fs -T ext4");
}
snprintf(commandstring, STRING_SIZE, "/sbin/mke2fs -T ext2 -I 128 %s1", hdparams.devnode_part);
if (runcommandwithstatus(commandstring, ctr[TR_MAKING_BOOT_FILESYSTEM]))
{
errorbox(ctr[TR_UNABLE_TO_MAKE_BOOT_FILESYSTEM]);
goto EXIT;
}
if (swap_file) {
snprintf(commandstring, STRING_SIZE, "/sbin/mkswap %s2", hdparams.devnode_part);
if (runcommandwithstatus(commandstring, ctr[TR_MAKING_SWAPSPACE]))
{
errorbox(ctr[TR_UNABLE_TO_MAKE_SWAPSPACE]);
goto EXIT;
}
}
snprintf(commandstring, STRING_SIZE, "%s %s3", mkfscommand, hdparams.devnode_part);
if (runcommandwithstatus(commandstring, ctr[TR_MAKING_ROOT_FILESYSTEM]))
{
errorbox(ctr[TR_UNABLE_TO_MAKE_ROOT_FILESYSTEM]);
goto EXIT;
}
snprintf(commandstring, STRING_SIZE, "%s %s4", mkfscommand, hdparams.devnode_part);
if (runcommandwithstatus(commandstring, ctr[TR_MAKING_LOG_FILESYSTEM]))
{
errorbox(ctr[TR_UNABLE_TO_MAKE_LOG_FILESYSTEM]);
goto EXIT;
}
snprintf(commandstring, STRING_SIZE, "/bin/mount %s3 /harddisk", hdparams.devnode_part);
if (runcommandwithstatus(commandstring, ctr[TR_MOUNTING_ROOT_FILESYSTEM]))
{
errorbox(ctr[TR_UNABLE_TO_MOUNT_ROOT_FILESYSTEM]);
goto EXIT;
}
mkdir("/harddisk/boot", S_IRWXU|S_IRWXG|S_IRWXO);
mkdir("/harddisk/var", S_IRWXU|S_IRWXG|S_IRWXO);
mkdir("/harddisk/var/log", S_IRWXU|S_IRWXG|S_IRWXO);
snprintf(commandstring, STRING_SIZE, "/bin/mount %s1 /harddisk/boot", hdparams.devnode_part);
if (runcommandwithstatus(commandstring, ctr[TR_MOUNTING_BOOT_FILESYSTEM]))
{
errorbox(ctr[TR_UNABLE_TO_MOUNT_BOOT_FILESYSTEM]);
goto EXIT;
}
if (swap_file) {
snprintf(commandstring, STRING_SIZE, "/sbin/swapon %s2", hdparams.devnode_part);
if (runcommandwithstatus(commandstring, ctr[TR_MOUNTING_SWAP_PARTITION]))
{
errorbox(ctr[TR_UNABLE_TO_MOUNT_SWAP_PARTITION]);
goto EXIT;
}
}
snprintf(commandstring, STRING_SIZE, "/bin/mount %s4 /harddisk/var", hdparams.devnode_part);
if (runcommandwithstatus(commandstring, ctr[TR_MOUNTING_LOG_FILESYSTEM]))
{
errorbox(ctr[TR_UNABLE_TO_MOUNT_LOG_FILESYSTEM]);
goto EXIT;
}
snprintf(commandstring, STRING_SIZE,
"/bin/tar -C /harddisk -xvf /cdrom/" SNAME "-" VERSION ".tlz --lzma 2>/dev/null");
if (runcommandwithprogress(60, 4, title, commandstring, INST_FILECOUNT,
ctr[TR_INSTALLING_FILES]))
{
errorbox(ctr[TR_UNABLE_TO_INSTALL_FILES]);
goto EXIT;
}
/* Save language und local settings */
write_lang_configs(shortlangname);
/* mount proc filesystem */
mysystem("mkdir /harddisk/proc");
mysystem("/bin/mount --bind /proc /harddisk/proc");
mysystem("/bin/mount --bind /dev /harddisk/dev");
mysystem("/bin/mount --bind /sys /harddisk/sys");
/* Build cache lang file */
snprintf(commandstring, STRING_SIZE, "/usr/sbin/chroot /harddisk /usr/bin/perl -e \"require '" CONFIG_ROOT "/lang.pl'; &Lang::BuildCacheLang\"");
if (runcommandwithstatus(commandstring, ctr[TR_INSTALLING_LANG_CACHE]))
{
errorbox(ctr[TR_UNABLE_TO_INSTALL_LANG_CACHE]);
goto EXIT;
}
/* Update /etc/fstab */
snprintf(commandstring, STRING_SIZE, "/bin/sed -i -e \"s#DEVICE1#UUID=$(/sbin/blkid %s1 -sUUID | /usr/bin/cut -d'\"' -f2)#g\" /harddisk/etc/fstab", hdparams.devnode_part);
system(commandstring);
snprintf(commandstring, STRING_SIZE, "/bin/sed -i -e \"s#DEVICE2#UUID=$(/sbin/blkid %s2 -sUUID | /usr/bin/cut -d'\"' -f2)#g\" /harddisk/etc/fstab", hdparams.devnode_part);
system(commandstring);
snprintf(commandstring, STRING_SIZE, "/bin/sed -i -e \"s#DEVICE3#UUID=$(/sbin/blkid %s3 -sUUID | /usr/bin/cut -d'\"' -f2)#g\" /harddisk/etc/fstab", hdparams.devnode_part);
system(commandstring);
snprintf(commandstring, STRING_SIZE, "/bin/sed -i -e \"s#DEVICE4#UUID=$(/sbin/blkid %s4 -sUUID | /usr/bin/cut -d'\"' -f2)#g\" /harddisk/etc/fstab", hdparams.devnode_part);
system(commandstring);
if (fstype == EXT2) {
replace("/harddisk/etc/fstab", "FSTYPE", "ext2");
replace("/harddisk/boot/grub/grub.conf", "MOUNT", "ro");
} else if (fstype == REISERFS) {
replace("/harddisk/etc/fstab", "FSTYPE", "reiserfs");
replace("/harddisk/boot/grub/grub.conf", "MOUNT", "ro");
} else if (fstype == EXT3) {
replace("/harddisk/etc/fstab", "FSTYPE", "ext3");
replace("/harddisk/boot/grub/grub.conf", "MOUNT", "ro");
} else if (fstype == EXT4) {
replace("/harddisk/etc/fstab", "FSTYPE", "ext4");
replace("/harddisk/boot/grub/grub.conf", "MOUNT", "ro");
}
replace("/harddisk/boot/grub/grub.conf", "KVER", KERNEL_VERSION);
snprintf(commandstring, STRING_SIZE, "/bin/sed -i -e \"s#root=ROOT#root=UUID=$(/sbin/blkid %s3 -sUUID | /usr/bin/cut -d'\"' -f2)#g\" /harddisk/boot/grub/grub.conf", hdparams.devnode_part);
system(commandstring);
mysystem("ln -s grub.conf /harddisk/boot/grub/menu.lst");
system("/bin/sed -e 's#/harddisk#/#g' -e 's#//#/#g' < /proc/mounts > /harddisk/etc/mtab");
/*
* Generate device.map to help grub finding the device to install itself on.
*/
FILE *f = NULL;
if (f = fopen("/harddisk/boot/grub/device.map", "w")) {
fprintf(f, "(hd0) %s\n", hdparams.devnode_disk);
fclose(f);
}
snprintf(commandstring, STRING_SIZE,
"/usr/sbin/chroot /harddisk /usr/sbin/grub-install --no-floppy %s", hdparams.devnode_disk);
if (runcommandwithstatus(commandstring, ctr[TR_INSTALLING_GRUB])) {
errorbox(ctr[TR_UNABLE_TO_INSTALL_GRUB]);
goto EXIT;
}
/* Serial console ? */
if (serialconsole) {
/* grub */
replace("/harddisk/boot/grub/grub.conf", "splashimage", "#splashimage");
replace("/harddisk/boot/grub/grub.conf", "#serial", "serial");
replace("/harddisk/boot/grub/grub.conf", "#terminal", "terminal");
replace("/harddisk/boot/grub/grub.conf", " panic=10 ", " console=ttyS0,115200n8 panic=10 ");
/*inittab*/
replace("/harddisk/etc/inittab", "1:2345:respawn:", "#1:2345:respawn:");
replace("/harddisk/etc/inittab", "2:2345:respawn:", "#2:2345:respawn:");
replace("/harddisk/etc/inittab", "3:2345:respawn:", "#3:2345:respawn:");
replace("/harddisk/etc/inittab", "4:2345:respawn:", "#4:2345:respawn:");
replace("/harddisk/etc/inittab", "5:2345:respawn:", "#5:2345:respawn:");
replace("/harddisk/etc/inittab", "6:2345:respawn:", "#6:2345:respawn:");
replace("/harddisk/etc/inittab", "#7:2345:respawn:", "7:2345:respawn:");
}
/* Set marker that the user has already accepted the gpl */
mysystem("/usr/bin/touch /harddisk/var/ipfire/main/gpl_accepted");
/* Copy restore file from cdrom */
if (unattended && (strlen(restore_file) > 0)) {
fprintf(flog, "unattended: Copy restore file\n");
snprintf(commandstring, STRING_SIZE,
"cp /cdrom/%s /harddisk/var/ipfire/backup", restore_file);
mysystem(commandstring);
}
mysystem("umount /cdrom");
snprintf(commandstring, STRING_SIZE, "/usr/bin/eject /dev/%s", sourcedrive);
mysystem(commandstring);
if (!unattended) {
sprintf(message, ctr[TR_CONGRATULATIONS_LONG],
NAME, SNAME, NAME);
newtWinMessage(ctr[TR_CONGRATULATIONS], ctr[TR_PRESS_OK_TO_REBOOT], message);
}
allok = 1;
EXIT:
fprintf(flog, "Install program ended.\n");
if (!(allok))
newtWinMessage(title, ctr[TR_OK], ctr[TR_PRESS_OK_TO_REBOOT]);
freekeyvalues(ethernetkv);
if (allok && !allok_fastexit)
{
if (unattended) {
fprintf(flog, "Entering unattended setup\n");
if (unattended_setup(unattendedkv)) {
snprintf(commandstring, STRING_SIZE, "/bin/sleep 10");
runcommandwithstatus(commandstring, "Unattended installation finished, system will reboot");
} else {
errorbox("Unattended setup failed.");
goto EXIT;
}
}
fflush(flog);
fclose(flog);
newtFinished();
if (system("/bin/umount /harddisk/proc"))
printf("Unable to umount /harddisk/proc.\n");
} else {
fflush(flog);
fclose(flog);
newtFinished();
}
fcloseall();
if (swap_file) {
snprintf(commandstring, STRING_SIZE, "/bin/swapoff %s2", hdparams.devnode_part);
}
newtFinished();
system("/bin/umount /harddisk/proc >/dev/null 2>&1");
system("/bin/umount /harddisk/dev >/dev/null 2>&1");
system("/bin/umount /harddisk/sys >/dev/null 2>&1");
system("/bin/umount /harddisk/var >/dev/null 2>&1");
system("/bin/umount /harddisk/boot >/dev/null 2>&1");
system("/bin/umount /harddisk >/dev/null 2>&1");
if (!(allok))
system("/etc/halt");
return 0;
}

View File

@@ -1,74 +0,0 @@
#!/bin/sh
###############################################################################
# #
# IPFire.org - A linux based firewall #
# Copyright (C) 2007-2014 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
###############################################################################
#lfs patch source here...
version=FullIPFireVersion
#
echo "Scanning source media"
# scan all Block devices
for DEVICE in `find /sys/block/* -maxdepth 0 ! -name fd* ! -name loop* ! -name ram* -exec basename {} \;`
do
mount /dev/${DEVICE} /cdrom 2> /dev/null
if [ -n "$(ls /cdrom/${version}.media 2>/dev/null)" ]; then
echo -n ${DEVICE} > /tmp/source_device
echo "Found ${version} on ${DEVICE}"
exit 0
else
echo "not found on ${DEVICE} - SKIP"
fi
umount /cdrom 2> /dev/null
done
# scan all Partitions on block devices
for DEVICE in `find /sys/block/* -maxdepth 0 ! -name fd* ! -name loop* ! -name ram* -exec basename {} \;`
do
for DEVICEP in $(ls /dev/${DEVICE}? 2>/dev/null | sed "s/\/dev\///");do
mount /dev/${DEVICEP} /cdrom 2> /dev/null
if [ -n "$(ls /cdrom/${version}.media 2>/dev/null)" ]; then
echo -n ${DEVICEP} > /tmp/source_device
echo "Found ${version} on ${DEVICEP}"
exit 0
else
echo "not found on ${DEVICEP} - SKIP"
fi
umount /cdrom 2> /dev/null
done
done
# scan all Partitions on raid/mmc devices
for DEVICE in `find /sys/block/* -maxdepth 0 ! -name fd* ! -name loop* ! -name ram* -exec basename {} \;`
do
for DEVICEP in $(ls /dev/${DEVICE}p? 2>/dev/null | sed "s/\/dev\///");do
mount /dev/${DEVICEP} /cdrom 2> /dev/null
if [ -n "$(ls /cdrom/${version}.media 2>/dev/null)" ]; then
echo -n ${DEVICEP} > /tmp/source_device
echo "Found ${version} on ${DEVICEP}"
exit 0
else
echo "not found on ${DEVICEP} - SKIP"
fi
umount /cdrom 2> /dev/null
done
done
exit 10

View File

@@ -1,161 +0,0 @@
/*
* This file is part of the IPFire Firewall.
*
* IPFire is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* IPFire is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with IPFire; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Copyright 2007: Michael Tremer for www.ipfire.org
*
*/
#include "install.h"
extern FILE *flog;
int unattended_setup(struct keyvalue *unattendedkv) {
struct keyvalue *mainsettings = initkeyvalues();
struct keyvalue *ethernetkv = initkeyvalues();
FILE *file, *hosts;
char commandstring[STRING_SIZE];
char domainname[STRING_SIZE];
char hostname[STRING_SIZE];
char keymap[STRING_SIZE];
char language[STRING_SIZE];
char timezone[STRING_SIZE];
char theme[STRING_SIZE];
char green_address[STRING_SIZE];
char green_netmask[STRING_SIZE];
char green_netaddress[STRING_SIZE];
char green_broadcast[STRING_SIZE];
char root_password[STRING_SIZE];
char admin_password[STRING_SIZE];
char restore_file[STRING_SIZE] = "";
findkey(unattendedkv, "DOMAINNAME", domainname);
findkey(unattendedkv, "HOSTNAME", hostname);
findkey(unattendedkv, "KEYMAP", keymap);
findkey(unattendedkv, "LANGUAGE", language);
findkey(unattendedkv, "TIMEZONE", timezone);
findkey(unattendedkv, "THEME", theme);
findkey(unattendedkv, "GREEN_ADDRESS", green_address);
findkey(unattendedkv, "GREEN_NETMASK", green_netmask);
findkey(unattendedkv, "GREEN_NETADDRESS", green_netaddress);
findkey(unattendedkv, "GREEN_BROADCAST", green_broadcast);
findkey(unattendedkv, "ROOT_PASSWORD", root_password);
findkey(unattendedkv, "ADMIN_PASSWORD", admin_password);
findkey(unattendedkv, "RESTORE_FILE", restore_file);
/* write main/settings. */
replacekeyvalue(mainsettings, "DOMAINNAME", domainname);
replacekeyvalue(mainsettings, "HOSTNAME", hostname);
replacekeyvalue(mainsettings, "KEYMAP", keymap);
replacekeyvalue(mainsettings, "LANGUAGE", language);
replacekeyvalue(mainsettings, "TIMEZONE", timezone);
replacekeyvalue(mainsettings, "THEME", theme);
writekeyvalues(mainsettings, "/harddisk" CONFIG_ROOT "/main/settings");
freekeyvalues(mainsettings);
/* do setup stuff */
fprintf(flog, "unattended: Starting setup\n");
/* network */
fprintf(flog, "unattended: setting up network configuration\n");
(void) readkeyvalues(ethernetkv, "/harddisk" CONFIG_ROOT "/ethernet/settings");
replacekeyvalue(ethernetkv, "GREEN_ADDRESS", green_address);
replacekeyvalue(ethernetkv, "GREEN_NETMASK", green_netmask);
replacekeyvalue(ethernetkv, "GREEN_NETADDRESS", green_netaddress);
replacekeyvalue(ethernetkv, "GREEN_BROADCAST", green_broadcast);
replacekeyvalue(ethernetkv, "CONFIG_TYPE", "0");
replacekeyvalue(ethernetkv, "GREEN_DEV", "eth0");
write_ethernet_configs(ethernetkv);
freekeyvalues(ethernetkv);
/* timezone */
unlink("/harddisk/etc/localtime");
snprintf(commandstring, STRING_SIZE, "/harddisk/%s", timezone);
link(commandstring, "/harddisk/etc/localtime");
/* hostname */
fprintf(flog, "unattended: writing hostname.conf\n");
if (!(file = fopen("/harddisk" CONFIG_ROOT "/main/hostname.conf", "w")))
{
errorbox("unattended: ERROR writing hostname.conf");
return 0;
}
fprintf(file, "ServerName %s.%s\n", hostname,domainname);
fclose(file);
fprintf(flog, "unattended: writing hosts\n");
if (!(hosts = fopen("/harddisk/etc/hosts", "w")))
{
errorbox("unattended: ERROR writing hosts");
return 0;
}
fprintf(hosts, "127.0.0.1\tlocalhost\n");
fprintf(hosts, "%s\t%s.%s\t%s\n", green_address, hostname, domainname, hostname);
fclose(hosts);
fprintf(flog, "unattended: writing hosts.allow\n");
if (!(file = fopen("/harddisk/etc/hosts.allow", "w")))
{
errorbox("unattended: ERROR writing hosts.allow");
return 0;
}
fprintf(file, "sshd : ALL\n");
fprintf(file, "ALL : localhost\n");
fprintf(file, "ALL : %s/%s\n", green_netaddress, green_netmask);
fclose(file);
fprintf(flog, "unattended: writing hosts.deny\n");
if (!(file = fopen("/harddisk/etc/hosts.deny", "w")))
{
errorbox("unattended: ERROR writing hosts.deny");
return 0;
}
fprintf(file, "ALL : ALL\n");
fclose(file);
/* set root password */
fprintf(flog, "unattended: setting root password\n");
snprintf(commandstring, STRING_SIZE,
"/usr/sbin/chroot /harddisk /bin/sh -c \"echo 'root:%s' | /usr/sbin/chpasswd\"", root_password);
if (mysystem(commandstring)) {
errorbox("unattended: ERROR setting root password");
return 0;
}
/* set admin password */
fprintf(flog, "unattended: setting admin password\n");
snprintf(commandstring, STRING_SIZE,
"/usr/sbin/chroot /harddisk /usr/sbin/htpasswd -c -m -b " CONFIG_ROOT "/auth/users admin '%s'", admin_password);
if (mysystem(commandstring)) {
errorbox("unattended: ERROR setting admin password");
return 0;
}
/* restore backup */
if (strlen(restore_file) > 0) {
fprintf(flog, "unattended: Restoring Backup\n");
snprintf(commandstring, STRING_SIZE,
"/usr/sbin/chroot /harddisk /bin/tar -xvzp -f /var/ipfire/backup/%s -C /", restore_file);
if (mysystem(commandstring)) {
errorbox("unattended: ERROR restoring backup");
}
}
fprintf(flog, "unattended: Setup ended\n");
return 1;
}

View File

@@ -1,15 +0,0 @@
/* SmoothWall libsmooth.
*
* This program is distributed under the terms of the GNU General Public
* Licence. See the file COPYING for details.
*
* (c) Lawrence Manning, 2001
* This is a template (basically just a header). langs.h is generated via
* the Makefile, from lang_en.c.
*
* $Id: langs.h.temp,v 1.4 2003/12/11 11:25:53 riddles Exp $
*
*/
enum trstrings
{

View File

@@ -1,119 +0,0 @@
/* SmoothWall libsmooth.
*
* This program is distributed under the terms of the GNU General Public
* Licence. See the file COPYING for details.
*
* (c) Lawrence Manning, 2001
* Contains prototypes for library functions.
*
*/
#ifndef ___LIBSMOOTH_H
#define ___LIBSMOOTH_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <wchar.h>
#include <locale.h>
#include <unistd.h>
#include <sys/file.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <newt.h>
#include <dirent.h>
#include <sys/mount.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <linux/cdrom.h>
#include <sys/ioctl.h>
#include "langs.h"
#define STRING_SIZE 1024
#define ADDRESS 0
#define NETADDRESS 1
#define NETMASK 2
#define DHCP 3
#define NETCHANGE_TOTAL 4
#define SCANNED_NICS "/var/ipfire/ethernet/scanned_nics"
#define SYSDIR "/sys/class/net"
#define _GREEN_CARD_ 0
#define _RED_CARD_ 1
#define _ORANGE_CARD_ 2
#define _BLUE_CARD_ 3
struct keyvalue
{
char key[STRING_SIZE];
char value[STRING_SIZE];
struct keyvalue *next;
};
struct nic
{
char driver[80];
char description[256];
char macaddr[20];
char nic[20];
};
struct knic
{
char driver[80];
char description[256];
char macaddr[20];
char colour[20];
};
/* libsmooth.c */
void reboot(void);
void stripnl(char *s);
int mysystem(char *command);
void errorbox(char *message);
int statuswindowscroll(int width, int height, char *title, char *text, ...);
int disclaimerbox(char *message);
void statuswindow(int width, int height, char *title, char *text, ...);
int runcommandwithprogress(int width, int height, char *title, char *command,
int lines, char *text, ...);
int runcommandwithstatus(char *command, char *message);
int runhiddencommandwithstatus(char *command, char *message);
int checkformodule(char *module);
int replace(char filename1[], char *from, char *to);
char* get_version(void);
/* netstuff.c */
int changeaddress(struct keyvalue *kv, char *colour, int typeflag,
char *defaultdhcphostname);
int gettype(char *type);
int setnetaddress(struct keyvalue *kv, char *colour);
void networkdialogcallbacktype(newtComponent cm, void *data);
int interfacecheck(struct keyvalue *kv, char *colour);
int rename_nics(void);
int init_knics(void);
int create_udev(void);
int scan_network_cards(void);
int nicmenu(int colour);
int clear_card_entry(int cards);
int ask_clear_card_entry(int cards);
int manualdriver(char *driver, char *driveroptions);
/* varval.c */
struct keyvalue *initkeyvalues(void);
void freekeyvalues(struct keyvalue *head);
int readkeyvalues(struct keyvalue *head, char *filename);
int writekeyvalues(struct keyvalue *head, char *filename);
int findkey(struct keyvalue *head, char *key, char *value);
void appendkeyvalue(struct keyvalue *head, char *key, char *value);
void replacekeyvalue(struct keyvalue *head, char *key, char *value);
#endif

View File

@@ -1,40 +0,0 @@
/* 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
* Main include file.
*
* $Id: setup.h,v 1.4 2003/12/11 11:25:54 riddles Exp $
*
*/
#include "../libsmooth/libsmooth.h"
/* hostname.c */
int handlehostname(void);
/* domainname.c */
int handledomainname(void);
/* networking.c */
int handlenetworking(void);
/* dhcp.c */
int handledhcp(void);
/* passwords.c */
int handlerootpassword(void);
int handlesetuppassword(void);
int handleadminpassword(void);
/* misc.c */
int writehostsfiles(void);
int handleisdn(void);
/* keymap.c */
int handlekeymap(void);
/* timezone.c */
int handletimezone(void);

7
src/installer/.tx/config Normal file
View File

@@ -0,0 +1,7 @@
[main]
host = https://www.transifex.com
[ipfire.installer-legacy]
file_filter = po/<lang>.po
source_file = po/installer.pot
source_lang = en

82
src/installer/Makefile.am Normal file
View File

@@ -0,0 +1,82 @@
# This file is part of the installer.
#
# installer is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
AM_MAKEFLAGS = --no-print-directory
AUTOMAKE_OPTIONS = color-tests parallel-tests
SUBDIRS = . po
# remove targets if the command fails
.DELETE_ON_ERROR:
# keep intermediate files
.SECONDARY:
CLEANFILES =
EXTRA_DIST =
dracutmoduledir = $(prefix)/lib/dracut/modules.d/99installer
AM_CPPFLAGS = \
-include $(top_builddir)/config.h \
-I $(top_srcdir)/include \
$(OUR_CPPFLAGS)
AM_CFLAGS = $(OUR_CFLAGS)
AM_LDFLAGS = $(OUR_LDFLAGS)
bin_PROGRAMS = \
installer
bin_SCRIPTS = \
downloadsource.sh \
execute-postinstall.sh \
start-networking.sh
#- installer -------------------------------------------------------------------
installer_SOURCES = \
hw.c \
hw.h \
main.c
installer_CFLAGS = \
$(AM_CFLAGS) \
$(BLKID_CFLAGS) \
$(LIBSMOOTH_CFLAGS) \
$(PCI_CFLAGS) \
$(UDEV_CFLAGS)
installer_LDADD = \
$(BLKID_LIBS) \
$(LIBSMOOTH_LIBS) \
$(NEWT_LIBS) \
$(PCI_LIBS) \
$(UDEV_LIBS)
dracutmodule_DATA = \
dracut-module/70-dhcpcd.exe \
dracut-module/fake-root.sh \
dracut-module/module-setup.sh \
dracut-module/run-installer.sh
#-------------------------------------------------------------------------------
substitutions = \
'|PACKAGE_NAME=$(PACKAGE_NAME)|' \
'|PACKAGE_VERSION=$(PACKAGE_VERSION)|' \
'|prefix=$(prefix)|' \
'|exec_prefix=$(exec_prefix)|' \
'|libdir=$(libdir)|' \
'|includedir=$(includedir)|'
SED_PROCESS = \
$(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
$(SED) $(subst '|,-e 's|@,$(subst =,\@|,$(subst |',|g',$(substitutions)))) < $< > $@
%.pc: %.pc.in Makefile
$(SED_PROCESS)

3
src/installer/autogen.sh Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/sh
autoreconf --force --install -I m4

114
src/installer/configure.ac Normal file
View File

@@ -0,0 +1,114 @@
# This file is part of the installer.
#
# installer is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
AC_PREREQ([2.64])
AC_INIT([installer],
[001],
[],
[installer],
[http://git.ipfire.org/?p=ipfire-2.x.git;a=summary])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([
foreign
1.11
-Wall
-Wno-portability
silent-rules
tar-pax
no-dist-gzip
dist-xz
subdir-objects
])
AM_SILENT_RULES([yes])
LT_PREREQ(2.2)
LT_INIT([disable-static])
AC_PROG_SED
AC_PROG_CC
AC_PROG_CC_C99
AC_PROG_CC_C_O
CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
"-Wformat=2 -Wformat-security -Wformat-nonliteral" \
-Werror=overflow \
-fno-strict-aliasing \
-fstack-protector \
-fstack-protector-strong \
-fPIE \
--param=ssp-buffer-size=4])
AC_SUBST([OUR_CFLAGS], "$with_cflags")
AC_PATH_PROG([M4], [m4])
# Gettext
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.18])
AC_CHECK_HEADERS([libintl.h])
# This makes sure pkg.m4 is available.
m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
save_LIBS="$LIBS"
# newt
LIBS=
AC_SEARCH_LIBS([newtWinMenu], [newt], [], [AC_MSG_ERROR([*** newt library not found])])
NEWT_LIBS="$LIBS"
AC_SUBST(NEWT_LIBS)
LIBS="$save_LIBS"
PKG_CHECK_MODULES(BLKID, [blkid])
PKG_CHECK_MODULES(PCI, [libpci])
PKG_CHECK_MODULES(LIBSMOOTH, [libsmooth])
PKG_CHECK_MODULES(UDEV, [libudev])
AC_ARG_WITH([distro-name],
AS_HELP_STRING([--with-distro-name] [The name of the distribution]),
AC_DEFINE_UNQUOTED([NAME], "$withval", [The name of the distribution]),
AC_MSG_ERROR([*** you need to set the name with --with-distro-name=]))
AC_ARG_WITH([distro-sname],
AS_HELP_STRING([--with-distro-sname] [The short name of the distribution]),
AC_DEFINE_UNQUOTED([SNAME], "$withval", [The sname of the distribution]),
AC_MSG_ERROR([*** you need to set the sname with --with-distro-sname=]))
AC_ARG_WITH([distro-slogan],
AS_HELP_STRING([--with-distro-slogan] [The slogan of the distribution]),
AC_DEFINE_UNQUOTED([SLOGAN], "$withval", [The slogan of the distribution]),
AC_MSG_ERROR([*** you need to set the slogan with --with-distro-slogan=]))
AC_ARG_WITH([config-root],
AS_HELP_STRING([--with-distro-config-root] [The configuration directory]),
AC_DEFINE_UNQUOTED([CONFIG_ROOT], "$withval", [The config-root]),
AC_MSG_ERROR([*** you need to set CONFIG_ROOT with --with-config-root=]))
AC_ARG_WITH([download-url],
AS_HELP_STRING([--with-download-url] [The default download URL]),
AC_DEFINE_UNQUOTED([DOWNLOAD_URL], "$withval", [The default download URL]),
AC_MSG_ERROR([*** you need to set DOWNLOAD_URL with --with-download-url=]))
AC_CONFIG_FILES([
Makefile
po/Makefile.in
])
AC_OUTPUT
AC_MSG_RESULT([
$PACKAGE_NAME $VERSION
CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
])

View File

@@ -19,41 +19,48 @@
# #
###############################################################################
#lfs change the url while build!
IPFireISO=ipfire.iso
#
function download() {
wget -U "IPFire-NetInstall/2.x" "$@"
}
#Get user defined download from boot cmdline
grep "netinstall=" /proc/cmdline > /dev/null && CMDLINE=1
if ( [ "$CMDLINE" == "1" ]); then
read CMDLINE < /proc/cmdline
POS=${CMDLINE%%netinstall*}
POS=${#POS}
IPFireISO=`echo ${CMDLINE:POS} | cut -d"=" -f2 | cut -d" " -f1`
if [ $# -lt 2 ]; then
echo "$0: Insufficient number of arguments" >&2
exit 2
fi
echo
echo "Configure Network with DHCP..."
dhcpcd
echo
echo "Sleep 15s..."
sleep 15
echo
echo "Download with wget..."
wget $IPFireISO -O /tmp/download.iso -t3 -U IPFire_NetInstall/2.x
wget $IPFireISO.md5 -O /tmp/download.iso.md5 -t3 -U IPFire_NetInstall/2.x
echo
echo "Checking download..."
md5_file=`md5sum /tmp/download.iso | cut -d" " -f1`
md5_down=`cat /tmp/download.iso.md5 | cut -d" " -f1`
if [ "$md5_file" == "$md5_down" ]; then
mount /tmp/download.iso -o loop /cdrom 2> /dev/null
if [ -n "$(ls /cdrom/ipfire-*.tlz 2>/dev/null)" ]; then
echo -n "null" > /tmp/source_device
echo "Found tarball in /tmp/download.iso"
exit 0
OUTPUT="${1}"
URL="${2}"
# Mount a tmpfs which is big enough to hold the ISO image
OUTPUT_DIR="${OUTPUT%/*}"
mkdir -p "${OUTPUT_DIR}"
if ! mount -t tmpfs none "${OUTPUT_DIR}" -o size=512M; then
echo "Could not mount tmpfs to ${OUTPUT_DIR}" >&2
exit 1
fi
echo "Downloading ${URL}..."
if ! download -O "${OUTPUT}" "${URL}"; then
echo "Download failed" >&2
rm -f "${OUTPUT}"
exit 1
fi
# Download went well. Checking for MD5 sum
if download -O "${OUTPUT}.md5" "${URL}.md5" &>/dev/null; then
# Read downloaded checksum
read -r md5sum rest < "${OUTPUT}.md5"
rm -f "${OUTPUT}.md5"
# Compute checkum of downloaded image file
read -r md5sum_image rest <<< "$(md5sum "${OUTPUT}")"
if [ "${md5sum}" != "${md5sum_image}" ]; then
echo "MD5 sum mismatch: ${md5sum} != ${md5sum_image}" >&2
exit 2
fi
umount /cdrom 2> /dev/null
fi
echo "Error - SKIP"
exit 10
exit 0

View File

@@ -0,0 +1,56 @@
#/bin/bash
########################################################################
# Begin
#
# Description : DHCP Client Script (initrd version)
#
# Authors : Arne Fitzenreiter - arne_f@ipfire.org
#
# Version : 02.00
#
# Notes :
#
########################################################################
LEASE_FILE="/var/ipfire/dhcpc/dhcpcd-${interface}.info"
export_lease() {
set | grep "^new_" | sed "s|^new_||g" | \
sed "s|'||g" | sort > ${LEASE_FILE}
}
make_resolvconf() {
local DNS="$(grep 'domain_name_servers' ${LEASE_FILE} | cut -d'=' -f2)"
local DNS1="$(echo ${DNS} | cut -d' ' -f1)"
local DNS2="$(echo ${DNS} | cut -d' ' -f2)"
(
echo "nameserver ${DNS1}"
echo "nameserver ${DNS2}"
) > /etc/resolv.conf
}
case "${reason}" in
PREINIT)
# Configure MTU
if [ -n "${new_interface_mtu}" ] && [ ${new_interface_mtu} -gt 576 ]; then
echo "Setting MTU to ${new_interface_mtu}"
ip link set "${interface}" mtu "${new_interface_mtu}"
fi
;;
BOUND|INFORM|REBIND|REBOOT|RENEW|TIMEOUT|STATIC)
# Export all information about the newly received lease
# to file
export_lease
# Create system configuration files
make_resolvconf
;;
EXPIRE|FAIL|IPV4LL|NAK|NOCARRIER|RELEASE|STOP)
rm -f "${LEASE_FILE}"
;;
esac
exit 0

View File

@@ -0,0 +1,5 @@
#!/bin/sh
# Fake root so dracut will start our installer
root="installer"
rootok=1

View File

@@ -0,0 +1,75 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {
return 255
}
# called by dracut
depends() {
echo base bash mdraid shutdown
return 0
}
# called by dracut
install() {
inst /etc/system-release
inst /usr/bin/installer
inst /usr/bin/downloadsource.sh
inst /usr/bin/execute-postinstall.sh
inst /usr/local/bin/iowrap
# Kernel drivers
instmods =drivers/hid
# Network drivers
instmods =drivers/net/ethernet =drivers/net/usb
instmods virtio_net hv_netvsc vmxnet3
# Filesystem support
inst_multiple parted mkswap mke2fs mkreiserfs mkfs.xfs
instmods ext4 iso9660 reiserfs vfat xfs
# Extraction
inst_multiple tar gzip lzma xz
# Networking
inst_multiple dhcpcd ethtool hostname ip ping sort wget
inst /usr/bin/start-networking.sh
inst /var/ipfire/dhcpc/dhcpcd.conf
inst /var/ipfire/dhcpc/dhcpcd-run-hooks
inst "$moddir/70-dhcpcd.exe" "/var/ipfire/dhcpc/dhcpcd-hooks/70-dhcpcd.exe"
inst /etc/host.conf /etc/protocols
inst /etc/nsswitch.conf /etc/resolv.conf
inst_libdir_file "libnss_dns.so.*"
# Misc. tools
inst_multiple chmod cut grep eject id killall md5sum touch
inst_multiple -o fdisk cfdisk df ps top
# Hardware IDs
inst /usr/share/hwdata/pci.ids /usr/share/hwdata/usb.ids
# Locales
mkdir -p "${initdir}/usr/lib/locale"
localedef --quiet --prefix="${initdir}" --add-to-archive /usr/lib/locale/en_US
localedef --quiet --prefix="${initdir}" --add-to-archive /usr/lib/locale/en_US.utf8
for file in /usr/share/locale/*/LC_MESSAGES/installer.mo; do
inst "${file}"
done
# Bash start files
inst_multiple /etc/profile /root/.bash_profile /etc/bashrc /root/.bashrc
for file in /etc/profile.d/*.sh; do
inst "${file}"
done
inst_hook cmdline 99 "$moddir/fake-root.sh"
inst_hook pre-mount 99 "$moddir/run-installer.sh"
return 0
}

View File

@@ -0,0 +1,42 @@
#!/bin/sh
#
# IPFire Installer RC
#
unattended=0
if grep -q "installer.unattended" /proc/cmdline; then
unattended=1
fi
# Enable Unicode
echo -en '\033%G' && kbd_mode -u
# Load default console font
setfont LatArCyrHeb-16
# Silence the kernel
echo >/proc/sys/kernel/printk "1 4 1 7"
echo -n -e "\033[9;0]"
echo "Starting shells on tty2 and tty3 ..."
/usr/local/bin/iowrap /dev/tty2 /bin/bash &
/usr/local/bin/iowrap /dev/tty3 /bin/bash &
echo "Loading Installer..."
/bin/bash --login -c "/usr/bin/installer /dev/tty2"
ret=$?
case "${ret}" in
139)
echo "The installer has crashed. You will be dropped to a debugging shell"
/bin/bash --login
;;
esac
# Poweroff after an unattended installation
if [ "${unattended}" = "1" ]; then
/shutdown poweroff
fi
# Reboot the system
/shutdown reboot

View File

@@ -1,8 +1,8 @@
#!/usr/bin/perl
#!/bin/sh
###############################################################################
# #
# IPFire.org - A linux based firewall #
# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
# Copyright (C) 2014 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
@@ -19,9 +19,47 @@
# #
###############################################################################
while (<>)
{
if (/\/\* (TR_[A-Z0-9_]*)/) {
print "\t$1,\n"; }
}
print "};\n";
function download() {
wget -U "IPFire-NetInstall/2.x" "$@"
}
if [ $# -lt 2 ]; then
echo "$0: Insufficient number of arguments" >&2
exit 2
fi
DESTINATION="${1}"
DOWNLOAD_URL="${2}"
DOWNLOAD_TARGET="/tmp/post-install.exe"
if download -O "${DESTINATION}${DOWNLOAD_TARGET}" "${DOWNLOAD_URL}"; then
echo "Downloading post-install script from ${DOWNLOAD_URL}..."
# Make it executable
chmod a+x "${DESTINATION}${DOWNLOAD_TARGET}"
# Replace /etc/resolv.conf so that we will have
cp -fb /etc/resolv.conf ${DESTINATION}/etc/resolv.conf
for i in /dev /proc /sys; do
mount --bind "${i}" "${DESTINATION}${i}"
done
# Execute the downloaded script
chroot "${DESTINATION}" sh --login -c "${DOWNLOAD_TARGET}"
retval=$?
# Cleanup the environment
mv -f ${DESTINATION}/etc/resolv.conf{~,}
for i in /dev /proc /sys; do
umount "${DESTINATION}${i}"
done
rm -f "${DESTINATION}${DOWNLOAD_TARGET}"
exit ${retval}
# In case the download failed
else
echo "Could not download the post-install script" >&2
exit 1
fi

1143
src/installer/hw.c Normal file

File diff suppressed because it is too large Load Diff

139
src/installer/hw.h Normal file
View File

@@ -0,0 +1,139 @@
/*#############################################################################
# #
# IPFire - An Open Source Firewall Distribution #
# Copyright (C) 2014 IPFire development team #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
#############################################################################*/
#ifndef HEADER_HW_H
#define HEADER_HW_H
#include <libudev.h>
#define DESTINATION_MOUNT_PATH "/harddisk"
#define SOURCE_MOUNT_PATH "/cdrom"
#define SOURCE_TEST_FILE SOURCE_MOUNT_PATH "/" VERSION ".media"
#define HW_MAX_DISKS 32
#define STRING_SIZE 1024
#define DEV_SIZE 128
#define HW_PATH_BOOT "/boot"
#define HW_PATH_DATA "/var"
#define HW_PART_TYPE_NORMAL 0
#define HW_PART_TYPE_RAID1 1
#define HW_PART_TABLE_MSDOS 0
#define HW_PART_TABLE_GPT 1
#define HW_FS_SWAP 0
#define HW_FS_REISERFS 1
#define HW_FS_EXT4 2
#define HW_FS_EXT4_WO_JOURNAL 3
#define HW_FS_XFS 4
#define HW_FS_DEFAULT HW_FS_EXT4
#define RAID_METADATA "1.0"
#define SERIAL_BAUDRATE 115200
#define BYTES2MB(x) ((x) / 1024 / 1024)
#define MB2BYTES(x) ((unsigned long long)(x) * 1024 * 1024)
struct hw {
struct udev *udev;
};
struct hw_disk {
char path[DEV_SIZE];
unsigned long long size;
char description[STRING_SIZE];
char vendor[STRING_SIZE];
char model[STRING_SIZE];
// Reference counter
int ref;
};
struct hw_destination {
char path[DEV_SIZE];
int is_raid;
int raid_level;
const struct hw_disk* disk1;
const struct hw_disk* disk2;
int part_table;
char part_bootldr[DEV_SIZE];
char part_boot[DEV_SIZE];
char part_swap[DEV_SIZE];
char part_root[DEV_SIZE];
char part_data[DEV_SIZE];
int part_boot_idx;
int filesystem;
unsigned long long size;
unsigned long long size_bootldr;
unsigned long long size_boot;
unsigned long long size_swap;
unsigned long long size_root;
unsigned long long size_data;
};
struct hw* hw_init();
void hw_free(struct hw* hw);
int hw_mount(const char* source, const char* target, const char* fs, int flags);
int hw_umount(const char* target);
char* hw_find_source_medium(struct hw* hw);
struct hw_disk** hw_find_disks(struct hw* hw, const char* sourcedrive);
void hw_free_disks(struct hw_disk** disks);
unsigned int hw_count_disks(const struct hw_disk** disks);
struct hw_disk** hw_select_disks(struct hw_disk** disks, int* selection);
struct hw_disk** hw_select_first_disk(const struct hw_disk** disks);
struct hw_destination* hw_make_destination(int part_type, struct hw_disk** disks,
int disable_swap);
unsigned long long hw_memory();
int hw_create_partitions(struct hw_destination* dest, const char* output);
int hw_create_filesystems(struct hw_destination* dest, const char* output);
int hw_mount_filesystems(struct hw_destination* dest, const char* prefix);
int hw_umount_filesystems(struct hw_destination* dest, const char* prefix);
int hw_destroy_raid_superblocks(const struct hw_destination* dest, const char* output);
int hw_setup_raid(struct hw_destination* dest, const char* output);
int hw_stop_all_raid_arrays(const char* output);
int hw_install_bootloader(struct hw_destination* dest, const char* output);
int hw_write_fstab(struct hw_destination* dest);
char* hw_find_backup_file(const char* output, const char* search_path);
int hw_restore_backup(const char* output, const char* backup_path, const char* destination);
int hw_start_networking(const char* output);
void hw_sync();
#endif /* HEADER_HW_H */

View File

@@ -0,0 +1,288 @@
dnl Macros to check the presence of generic (non-typed) symbols.
dnl Copyright (c) 2006-2008 Diego Pettenò <flameeyes@gmail.com>
dnl Copyright (c) 2006-2008 xine project
dnl Copyright (c) 2012 Lucas De Marchi <lucas.de.marchi@gmail.com>
dnl
dnl This program is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 2, or (at your option)
dnl any later version.
dnl
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
dnl 02110-1301, USA.
dnl
dnl As a special exception, the copyright owners of the
dnl macro gives unlimited permission to copy, distribute and modify the
dnl configure scripts that are the output of Autoconf when processing the
dnl Macro. You need not follow the terms of the GNU General Public
dnl License when using or distributing such scripts, even though portions
dnl of the text of the Macro appear in them. The GNU General Public
dnl License (GPL) does govern all other use of the material that
dnl constitutes the Autoconf Macro.
dnl
dnl This special exception to the GPL applies to versions of the
dnl Autoconf Macro released by this project. When you make and
dnl distribute a modified version of the Autoconf Macro, you may extend
dnl this special exception to the GPL to apply to your modified version as
dnl well.
dnl Check if FLAG in ENV-VAR is supported by compiler and append it
dnl to WHERE-TO-APPEND variable
dnl CC_CHECK_FLAG_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG])
AC_DEFUN([CC_CHECK_FLAG_APPEND], [
AC_CACHE_CHECK([if $CC supports flag $3 in envvar $2],
AS_TR_SH([cc_cv_$2_$3]),
[eval "AS_TR_SH([cc_save_$2])='${$2}'"
eval "AS_TR_SH([$2])='-Werror $3'"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([int a = 0; int main(void) { return a; } ])],
[eval "AS_TR_SH([cc_cv_$2_$3])='yes'"],
[eval "AS_TR_SH([cc_cv_$2_$3])='no'"])
eval "AS_TR_SH([$2])='$cc_save_$2'"])
AS_IF([eval test x$]AS_TR_SH([cc_cv_$2_$3])[ = xyes],
[eval "$1='${$1} $3'"])
])
dnl CC_CHECK_FLAGS_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG1 FLAG2])
AC_DEFUN([CC_CHECK_FLAGS_APPEND], [
for flag in $3; do
CC_CHECK_FLAG_APPEND($1, $2, $flag)
done
])
dnl Check if the flag is supported by linker (cacheable)
dnl CC_CHECK_LDFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
AC_DEFUN([CC_CHECK_LDFLAGS], [
AC_CACHE_CHECK([if $CC supports $1 flag],
AS_TR_SH([cc_cv_ldflags_$1]),
[ac_save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $1"
AC_LINK_IFELSE([int main() { return 1; }],
[eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"],
[eval "AS_TR_SH([cc_cv_ldflags_$1])="])
LDFLAGS="$ac_save_LDFLAGS"
])
AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes],
[$2], [$3])
])
dnl define the LDFLAGS_NOUNDEFINED variable with the correct value for
dnl the current linker to avoid undefined references in a shared object.
AC_DEFUN([CC_NOUNDEFINED], [
dnl We check $host for which systems to enable this for.
AC_REQUIRE([AC_CANONICAL_HOST])
case $host in
dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads
dnl are requested, as different implementations are present; to avoid problems
dnl use -Wl,-z,defs only for those platform not behaving this way.
*-freebsd* | *-openbsd*) ;;
*)
dnl First of all check for the --no-undefined variant of GNU ld. This allows
dnl for a much more readable commandline, so that people can understand what
dnl it does without going to look for what the heck -z defs does.
for possible_flags in "-Wl,--no-undefined" "-Wl,-z,defs"; do
CC_CHECK_LDFLAGS([$possible_flags], [LDFLAGS_NOUNDEFINED="$possible_flags"])
break
done
;;
esac
AC_SUBST([LDFLAGS_NOUNDEFINED])
])
dnl Check for a -Werror flag or equivalent. -Werror is the GCC
dnl and ICC flag that tells the compiler to treat all the warnings
dnl as fatal. We usually need this option to make sure that some
dnl constructs (like attributes) are not simply ignored.
dnl
dnl Other compilers don't support -Werror per se, but they support
dnl an equivalent flag:
dnl - Sun Studio compiler supports -errwarn=%all
AC_DEFUN([CC_CHECK_WERROR], [
AC_CACHE_CHECK(
[for $CC way to treat warnings as errors],
[cc_cv_werror],
[CC_CHECK_CFLAGS_SILENT([-Werror], [cc_cv_werror=-Werror],
[CC_CHECK_CFLAGS_SILENT([-errwarn=%all], [cc_cv_werror=-errwarn=%all])])
])
])
AC_DEFUN([CC_CHECK_ATTRIBUTE], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([if $CC supports __attribute__(( ifelse([$2], , [$1], [$2]) ))],
AS_TR_SH([cc_cv_attribute_$1]),
[ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([$3])],
[eval "AS_TR_SH([cc_cv_attribute_$1])='yes'"],
[eval "AS_TR_SH([cc_cv_attribute_$1])='no'"])
CFLAGS="$ac_save_CFLAGS"
])
AS_IF([eval test x$]AS_TR_SH([cc_cv_attribute_$1])[ = xyes],
[AC_DEFINE(
AS_TR_CPP([SUPPORT_ATTRIBUTE_$1]), 1,
[Define this if the compiler supports __attribute__(( ifelse([$2], , [$1], [$2]) ))]
)
$4],
[$5])
])
AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [
CC_CHECK_ATTRIBUTE(
[constructor],,
[void __attribute__((constructor)) ctor() { int a; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_FORMAT], [
CC_CHECK_ATTRIBUTE(
[format], [format(printf, n, n)],
[void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [
CC_CHECK_ATTRIBUTE(
[format_arg], [format_arg(printf)],
[char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [
CC_CHECK_ATTRIBUTE(
[visibility_$1], [visibility("$1")],
[void __attribute__((visibility("$1"))) $1_function() { }],
[$2], [$3])
])
AC_DEFUN([CC_ATTRIBUTE_NONNULL], [
CC_CHECK_ATTRIBUTE(
[nonnull], [nonnull()],
[void __attribute__((nonnull())) some_function(void *foo, void *bar) { foo = (void*)0; bar = (void*)0; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_UNUSED], [
CC_CHECK_ATTRIBUTE(
[unused], ,
[void some_function(void *foo, __attribute__((unused)) void *bar);],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [
CC_CHECK_ATTRIBUTE(
[sentinel], ,
[void some_function(void *foo, ...) __attribute__((sentinel));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_DEPRECATED], [
CC_CHECK_ATTRIBUTE(
[deprecated], ,
[void some_function(void *foo, ...) __attribute__((deprecated));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_ALIAS], [
CC_CHECK_ATTRIBUTE(
[alias], [weak, alias],
[void other_function(void *foo) { }
void some_function(void *foo) __attribute__((weak, alias("other_function")));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_MALLOC], [
CC_CHECK_ATTRIBUTE(
[malloc], ,
[void * __attribute__((malloc)) my_alloc(int n);],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_PACKED], [
CC_CHECK_ATTRIBUTE(
[packed], ,
[struct astructure { char a; int b; long c; void *d; } __attribute__((packed));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_CONST], [
CC_CHECK_ATTRIBUTE(
[const], ,
[int __attribute__((const)) twopow(int n) { return 1 << n; } ],
[$1], [$2])
])
AC_DEFUN([CC_FLAG_VISIBILITY], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([if $CC supports -fvisibility=hidden],
[cc_cv_flag_visibility],
[cc_flag_visibility_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
CC_CHECK_CFLAGS_SILENT([-fvisibility=hidden],
cc_cv_flag_visibility='yes',
cc_cv_flag_visibility='no')
CFLAGS="$cc_flag_visibility_save_CFLAGS"])
AS_IF([test "x$cc_cv_flag_visibility" = "xyes"],
[AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1,
[Define this if the compiler supports the -fvisibility flag])
$1],
[$2])
])
AC_DEFUN([CC_FUNC_EXPECT], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([if compiler has __builtin_expect function],
[cc_cv_func_expect],
[ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
AC_COMPILE_IFELSE([AC_LANG_SOURCE(
[int some_function() {
int a = 3;
return (int)__builtin_expect(a, 3);
}])],
[cc_cv_func_expect=yes],
[cc_cv_func_expect=no])
CFLAGS="$ac_save_CFLAGS"
])
AS_IF([test "x$cc_cv_func_expect" = "xyes"],
[AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1,
[Define this if the compiler supports __builtin_expect() function])
$1],
[$2])
])
AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([highest __attribute__ ((aligned ())) supported],
[cc_cv_attribute_aligned],
[ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
for cc_attribute_align_try in 64 32 16 8 4 2; do
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
int main() {
static char c __attribute__ ((aligned($cc_attribute_align_try))) = 0;
return c;
}])], [cc_cv_attribute_aligned=$cc_attribute_align_try; break])
done
CFLAGS="$ac_save_CFLAGS"
])
if test "x$cc_cv_attribute_aligned" != "x"; then
AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], [$cc_cv_attribute_aligned],
[Define the highest alignment supported])
fi
])

942
src/installer/main.c Normal file
View File

@@ -0,0 +1,942 @@
/* SmoothWall install program.
*
* This program is distributed under the terms of the GNU General Public
* Licence. See the file COPYING for details.
*
* (c) Lawrence Manning, 2001
* Contains main entry point, and misc functions.6
*
*/
#define _GNU_SOURCE
#include <assert.h>
#include <errno.h>
#include <libsmooth.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/mount.h>
#include "hw.h"
// Translation
#include <libintl.h>
#define _(x) dgettext("installer", x)
#define INST_FILECOUNT 21000
#define LICENSE_FILE "/cdrom/COPYING"
#define SOURCE_TEMPFILE "/tmp/downloads/image.iso"
extern char url[STRING_SIZE];
static int newtChecklist(const char* title, const char* message,
unsigned int width, unsigned int height, unsigned int num_entries,
const char** entries, int* states) {
int ret;
const int list_height = 4;
char cbstates[num_entries];
for (unsigned int i = 0; i < num_entries; i++) {
cbstates[i] = states[i] ? '*' : ' ';
}
newtCenteredWindow(width, height, title);
newtComponent textbox = newtTextbox(1, 1, width - 2, height - 6 - list_height,
NEWT_FLAG_WRAP);
newtTextboxSetText(textbox, message);
int top = newtTextboxGetNumLines(textbox) + 2;
newtComponent form = newtForm(NULL, NULL, 0);
newtComponent sb = NULL;
if (list_height < num_entries) {
sb = newtVerticalScrollbar(
width - 4, top + 1, list_height,
NEWT_COLORSET_CHECKBOX, NEWT_COLORSET_ACTCHECKBOX);
newtFormAddComponent(form, sb);
}
newtComponent subform = newtForm(sb, NULL, 0);
newtFormSetBackground(subform, NEWT_COLORSET_CHECKBOX);
newtFormSetHeight(subform, list_height);
newtFormSetWidth(subform, width - 10);
for (unsigned int i = 0; i < num_entries; i++) {
newtComponent cb = newtCheckbox(4, top + i, entries[i], cbstates[i],
NULL, &cbstates[i]);
newtFormAddComponent(subform, cb);
}
newtFormAddComponents(form, textbox, subform, NULL);
newtComponent btn_okay = newtButton((width - 18) / 3, height - 4, _("OK"));
newtComponent btn_cancel = newtButton((width - 18) / 3 * 2 + 9, height - 4, _("Cancel"));
newtFormAddComponents(form, btn_okay, btn_cancel, NULL);
newtComponent answer = newtRunForm(form);
if ((answer == NULL) || (answer == btn_cancel)) {
ret = -1;
} else {
ret = 0;
for (unsigned int i = 0; i < num_entries; i++) {
states[i] = (cbstates[i] != ' ');
if (states[i])
ret++;
}
}
newtFormDestroy(form);
newtPopWindow();
return ret;
}
static int newtWinOkCancel(const char* title, const char* message, int width, int height,
const char* btn_txt_ok, const char* btn_txt_cancel) {
int ret = 1;
unsigned int btn_width_ok = strlen(btn_txt_ok);
unsigned int btn_width_cancel = strlen(btn_txt_cancel);
// Maybe make the box wider to fix both buttons inside
unsigned int min_width = btn_width_ok + btn_width_cancel + 5;
if (width < min_width)
width = min_width;
unsigned int btn_pos_ok = (width / 3) - (btn_width_ok / 2) - 1;
unsigned int btn_pos_cancel = (width * 2 / 3) - (btn_width_cancel / 2) - 1;
// Move buttons a bit if they overlap
while ((btn_pos_ok + btn_width_ok + 5) > btn_pos_cancel) {
// Move the cancel button to the right if there is enough space left
if ((btn_pos_cancel + btn_width_cancel + 2) < width) {
++btn_pos_cancel;
continue;
}
// Move the OK button to the left if possible
if (btn_pos_ok > 1) {
--btn_pos_ok;
continue;
}
// If they still overlap, we cannot fix the situtation
// and break. Should actually never get here, because we
// adjust the width of the window earlier.
break;
}
newtCenteredWindow(width, height, title);
newtComponent form = newtForm(NULL, NULL, 0);
newtComponent textbox = newtTextbox(1, 1, width - 2, height - 6, NEWT_FLAG_WRAP);
newtTextboxSetText(textbox, message);
newtFormAddComponent(form, textbox);
newtComponent btn_ok = newtButton(btn_pos_ok, height - 4, btn_txt_ok);
newtComponent btn_cancel = newtButton(btn_pos_cancel, height - 4, btn_txt_cancel);
newtFormAddComponents(form, btn_ok, btn_cancel, NULL);
newtComponent answer = newtRunForm(form);
if (answer == btn_ok) {
ret = 0;
}
newtFormDestroy(form);
newtPopWindow();
return ret;
}
static int newtLicenseBox(const char* title, const char* text, int width, int height) {
int ret = 1;
newtCenteredWindow(width, height, title);
newtComponent form = newtForm(NULL, NULL, 0);
newtComponent textbox = newtTextbox(1, 1, width - 2, height - 7,
NEWT_FLAG_WRAP|NEWT_FLAG_SCROLL);
newtTextboxSetText(textbox, text);
newtFormAddComponent(form, textbox);
char choice;
newtComponent checkbox = newtCheckbox(3, height - 3, _("I accept this license"),
' ', " *", &choice);
newtComponent btn = newtButton(width - 15, height - 4, _("OK"));
newtFormAddComponents(form, checkbox, btn, NULL);
newtComponent answer = newtRunForm(form);
if (answer == btn && choice == '*')
ret = 0;
newtFormDestroy(form);
newtPopWindow();
return ret;
}
int write_lang_configs(char* lang) {
struct keyvalue *kv = initkeyvalues();
/* default stuff for main/settings. */
replacekeyvalue(kv, "LANGUAGE", lang);
replacekeyvalue(kv, "HOSTNAME", SNAME);
replacekeyvalue(kv, "THEME", "ipfire");
writekeyvalues(kv, "/harddisk" CONFIG_ROOT "/main/settings");
freekeyvalues(kv);
return 1;
}
static char* get_system_release() {
char system_release[STRING_SIZE] = "\0";
FILE* f = fopen("/etc/system-release", "r");
if (f) {
fgets(system_release, sizeof(system_release), f);
fclose(f);
}
return strdup(system_release);
}
static char* center_string(const char* str, int width) {
unsigned int str_len = strlen(str);
unsigned int indent_length = (width - str_len) / 2;
char indent[indent_length + 1];
for (unsigned int i = 0; i < indent_length; i++) {
indent[i] = ' ';
}
indent[indent_length] = '\0';
char* string = NULL;
if (asprintf(&string, "%s%s", indent, str) < 0)
return NULL;
return string;
}
#define DEFAULT_LANG "English"
#define NUM_LANGS 10
static struct lang {
const char* code;
char* name;
} languages[NUM_LANGS + 1] = {
{ "da.utf8", "Danish (Dansk)" },
{ "nl_NL.utf8", "Dutch (Nederlands)" },
{ "en_US.utf8", "English" },
{ "fr_FR.utf8", "French (Français)" },
{ "de_DE.utf8", "German (Deutsch)" },
{ "pl_PL.utf8", "Polish (Polski)" },
{ "pt_BR.utf8", "Portuguese (Brasil)" },
{ "ru_RU.utf8", "Russian (Русский)" },
{ "es_ES.utf8", "Spanish (Español)" },
{ "tr_TR.utf8", "Turkish (Türkçe)" },
{ NULL, NULL },
};
static struct config {
int unattended;
int serial_console;
int require_networking;
int perform_download;
int disable_swap;
char download_url[STRING_SIZE];
char postinstall[STRING_SIZE];
} config = {
.unattended = 0,
.serial_console = 0,
.require_networking = 0,
.perform_download = 0,
.disable_swap = 0,
.download_url = DOWNLOAD_URL,
.postinstall = "\0",
};
static void parse_command_line(struct config* c) {
char buffer[STRING_SIZE];
char cmdline[STRING_SIZE];
FILE* f = fopen("/proc/cmdline", "r");
if (!f)
return;
int r = fread(&cmdline, 1, sizeof(cmdline) - 1, f);
if (r > 0) {
char* token = strtok(cmdline, " ");
while (token) {
strncpy(buffer, token, sizeof(buffer));
char* val = buffer;
char* key = strsep(&val, "=");
// serial console
if ((strcmp(key, "console") == 0) && (strncmp(val, "ttyS", 4) == 0))
c->serial_console = 1;
// enable networking?
else if (strcmp(token, "installer.net") == 0)
c->require_networking = 1;
// unattended mode
else if (strcmp(token, "installer.unattended") == 0)
c->unattended = 1;
// disable swap
else if (strcmp(token, "installer.disable-swap") == 0)
c->disable_swap = 1;
// download url
else if (strcmp(key, "installer.download-url") == 0) {
strncpy(c->download_url, val, sizeof(c->download_url));
c->perform_download = 1;
// Require networking for the download
c->require_networking = 1;
// postinstall script
} else if (strcmp(key, "installer.postinstall") == 0) {
strncpy(c->postinstall, val, sizeof(c->postinstall));
// Require networking for the download
c->require_networking = 1;
}
token = strtok(NULL, " ");
}
}
fclose(f);
}
int main(int argc, char *argv[]) {
struct hw* hw = hw_init();
const char* logfile = NULL;
// Read /etc/system-release
char* system_release = get_system_release();
char discl_msg[40000] = "Disclaimer\n";
char* sourcedrive = NULL;
int rc = 0;
char commandstring[STRING_SIZE];
int choice;
char language[STRING_SIZE];
char message[STRING_SIZE];
char title[STRING_SIZE];
int allok = 0;
FILE *copying;
setlocale(LC_ALL, "");
sethostname(SNAME, 10);
/* Log file/terminal stuff. */
FILE* flog = NULL;
if (argc >= 2) {
logfile = argv[1];
if (!(flog = fopen(logfile, "w+")))
return 0;
} else {
return 0;
}
fprintf(flog, "Install program started.\n");
newtInit();
newtCls();
// Determine the size of the screen
int screen_cols = 0;
int screen_rows = 0;
newtGetScreenSize(&screen_cols, &screen_rows);
// Draw title
char* roottext = center_string(system_release, screen_cols);
newtDrawRootText(0, 0, roottext);
snprintf(title, sizeof(title), "%s - %s", NAME, SLOGAN);
// Parse parameters from the kernel command line
parse_command_line(&config);
if (config.unattended) {
splashWindow(title, _("Warning: Unattended installation will start in 10 seconds..."), 10);
}
// Load common modules
mysystem(logfile, "/sbin/modprobe vfat"); // USB key
hw_stop_all_raid_arrays(logfile);
if (!config.unattended) {
// Language selection
char* langnames[NUM_LANGS + 1];
for (unsigned int i = 0; i < NUM_LANGS; i++) {
if (strcmp(languages[i].name, DEFAULT_LANG) == 0)
choice = i;
langnames[i] = languages[i].name;
}
langnames[NUM_LANGS] = NULL;
rc = newtWinMenu(_("Language selection"), _("Select the language you wish to use for the installation."),
50, 5, 5, 8, langnames, &choice, _("OK"), NULL);
assert(choice <= NUM_LANGS);
fprintf(flog, "Selected language: %s (%s)\n", languages[choice].name, languages[choice].code);
snprintf(language, sizeof(language), "%s", languages[choice].code);
setenv("LANGUAGE", language, 1);
setlocale(LC_ALL, language);
}
// Set helpline
char* helpline = NULL;
if (config.unattended)
helpline = center_string(_("Unattended mode"), screen_cols);
else
helpline = center_string(_("<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"), screen_cols);
newtPushHelpLine(helpline);
if (!config.unattended) {
snprintf(message, sizeof(message),
_("Welcome to the %s installation program.\n\n"
"Selecting Cancel on any of the following screens will reboot the computer."), NAME);
newtWinMessage(title, _("Start installation"), message);
}
/* Search for a source drive that holds the right
* version of the image we are going to install. */
if (!config.perform_download) {
sourcedrive = hw_find_source_medium(hw);
fprintf(flog, "Source drive: %s\n", sourcedrive);
}
/* If we could not find a source drive, we will try
* downloading the install image */
if (!sourcedrive)
config.perform_download = 1;
if (config.perform_download) {
if (!config.unattended) {
// Show the right message to the user
char reason[STRING_SIZE];
if (config.perform_download) {
snprintf(reason, sizeof(reason),
_("The installer will now try downloading the installation image."));
} else {
snprintf(reason, sizeof(reason),
_("No source drive could be found.\n\n"
"You can try downloading the required installation image."));
}
snprintf(message, sizeof(message), "%s %s", reason,
_("Please make sure to connect your machine to a network and "
"the installer will try connect to acquire an IP address."));
rc = newtWinOkCancel(title, message, 55, 12,
_("Download installation image"), _("Cancel"));
if (rc != 0)
goto EXIT;
}
// Make sure that we enable networking before download
config.require_networking = 1;
}
// Try starting the networking if we require it
if (config.require_networking) {
while (1) {
statuswindow(60, 4, title, _("Trying to start networking (DHCP)..."));
rc = hw_start_networking(logfile);
newtPopWindow();
// Networking was successfully started
if (rc == 0) {
break;
// An error happened, ask the user what to do
} else {
rc = newtWinOkCancel(title, _("Networking could not be started "
"but is required to go on with the installation.\n\n"
"Please connect your machine to a network with a "
"DHCP server and retry."), 50, 10, _("Retry"), _("Cancel"));
if (rc)
goto EXIT;
}
}
// Download the image if required
if (config.perform_download) {
fprintf(flog, "Download URL: %s\n", config.download_url);
snprintf(commandstring, sizeof(commandstring), "/usr/bin/downloadsource.sh %s %s",
SOURCE_TEMPFILE, config.download_url);
while (!sourcedrive) {
rc = runcommandwithstatus(commandstring, title, _("Downloading installation image..."), logfile);
FILE* f = fopen(SOURCE_TEMPFILE, "r");
if (f) {
sourcedrive = strdup(SOURCE_TEMPFILE);
fclose(f);
} else {
char reason[STRING_SIZE] = "-";
if (rc == 2)
snprintf(reason, sizeof(STRING_SIZE), _("MD5 checksum mismatch"));
snprintf(message, sizeof(message),
_("The installation image could not be downloaded.\n Reason: %s\n\n%s"),
reason, config.download_url);
rc = newtWinOkCancel(title, message, 75, 12, _("Retry"), _("Cancel"));
if (rc)
goto EXIT;
}
}
}
}
assert(sourcedrive);
int r = hw_mount(sourcedrive, SOURCE_MOUNT_PATH, "iso9660", MS_RDONLY);
if (r) {
snprintf(message, sizeof(message), _("Could not mount %s to %s:\n %s\n"),
sourcedrive, SOURCE_MOUNT_PATH, strerror(errno));
errorbox(message);
goto EXIT;
}
if (!config.unattended) {
// Read the license file.
if (!(copying = fopen(LICENSE_FILE, "r"))) {
sprintf(discl_msg, "Could not open license file: %s\n", LICENSE_FILE);
fprintf(flog, "%s", discl_msg);
} else {
fread(discl_msg, 1, 40000, copying);
fclose(copying);
if (newtLicenseBox(_("License Agreement"), discl_msg, 75, 20)) {
errorbox(_("License not accepted!"));
goto EXIT;
}
}
}
int part_type = HW_PART_TYPE_NORMAL;
// Scan for disks to install on.
struct hw_disk** disks = hw_find_disks(hw, sourcedrive);
struct hw_disk** selected_disks = NULL;
unsigned int num_selected_disks = 0;
// Check how many disks have been found and what
// we can do with them.
unsigned int num_disks = hw_count_disks((const struct hw_disk**)disks);
while (1) {
// no harddisks found
if (num_disks == 0) {
errorbox(_("No hard disk found."));
goto EXIT;
// exactly one disk has been found
// or if we are running in unattended mode, we will select
// the first disk and go with that one
} else if ((num_disks == 1) || (config.unattended && num_disks >= 1)) {
selected_disks = hw_select_first_disk((const struct hw_disk**)disks);
// more than one usable disk has been found and
// the user needs to choose what to do with them
} else {
const char* disk_names[num_disks];
int disk_selection[num_disks];
for (unsigned int i = 0; i < num_disks; i++) {
disk_names[i] = disks[i]->description;
disk_selection[i] = 0;
}
while (!selected_disks) {
rc = newtChecklist(_("Disk Selection"),
_("Select the disk(s) you want to install IPFire on. "
"First those will be partitioned, and then the partitions will have a filesystem put on them.\n\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."),
50, 20, num_disks, disk_names, disk_selection);
// Error
if (rc < 0) {
goto EXIT;
// Nothing has been selected
} else if (rc == 0) {
errorbox(_("No disk has been selected.\n\n"
"Please select one or more disks you want to install IPFire on."));
} else {
selected_disks = hw_select_disks(disks, disk_selection);
}
}
}
// Don't print the auto-selected harddisk setup in
// unattended mode.
if (config.unattended)
break;
num_selected_disks = hw_count_disks((const struct hw_disk**)selected_disks);
if (num_selected_disks == 1) {
snprintf(message, sizeof(message),
_("The installation program will now prepare the chosen harddisk:\n\n %s\n\n"
"Do you agree to continue?"), (*selected_disks)->description);
rc = newtWinOkCancel(_("Disk Setup"), message, 50, 10,
_("Delete all data"), _("Cancel"));
if (rc == 0)
break;
} else if (num_selected_disks == 2) {
snprintf(message, sizeof(message),
_("The installation program will now set up a RAID configuration on the selected harddisks:\n\n %s\n %s\n\n"
"Do you agree to continue?"), selected_disks[0]->description, selected_disks[1]->description);
rc = newtWinOkCancel(_("RAID Setup"), message, 50, 14,
_("Delete all data"), _("Cancel"));
if (rc == 0) {
part_type = HW_PART_TYPE_RAID1;
break;
}
// Currently not supported
} else {
errorbox(_("Your disk configuration is currently not supported."));
fprintf(flog, "Num disks selected: %d\n", num_selected_disks);
}
if (selected_disks) {
hw_free_disks(selected_disks);
selected_disks = NULL;
}
}
hw_free_disks(disks);
struct hw_destination* destination = hw_make_destination(part_type, selected_disks, config.disable_swap);
if (!destination) {
errorbox(_("Your harddisk is too small."));
goto EXIT;
}
fprintf(flog, "Destination drive: %s\n", destination->path);
fprintf(flog, " bootldr: %s (%lluMB)\n", destination->part_bootldr, BYTES2MB(destination->size_bootldr));
fprintf(flog, " boot : %s (%lluMB)\n", destination->part_boot, BYTES2MB(destination->size_boot));
fprintf(flog, " swap : %s (%lluMB)\n", destination->part_swap, BYTES2MB(destination->size_swap));
fprintf(flog, " root : %s (%lluMB)\n", destination->part_root, BYTES2MB(destination->size_root));
fprintf(flog, " data : %s (%lluMB)\n", destination->part_data, BYTES2MB(destination->size_data));
fprintf(flog, "Memory : %lluMB\n", BYTES2MB(hw_memory()));
// Warn the user if there is not enough space to create a swap partition
if (!config.unattended) {
if (!config.disable_swap && !*destination->part_swap) {
rc = newtWinChoice(title, _("OK"), _("Cancel"),
_("Your harddisk is very small, but you can continue without a swap partition."));
if (rc != 1)
goto EXIT;
}
}
// Filesystem selection
if (!config.unattended) {
struct filesystems {
int fstype;
char* description;
} filesystems[] = {
{ HW_FS_EXT4, _("ext4 Filesystem") },
{ HW_FS_EXT4_WO_JOURNAL, _("ext4 Filesystem without journal") },
{ HW_FS_XFS, _("XFS Filesystem") },
{ HW_FS_REISERFS, _("ReiserFS Filesystem") },
{ 0, NULL },
};
unsigned int num_filesystems = sizeof(filesystems) / sizeof(*filesystems);
char* fs_names[num_filesystems];
int fs_choice = 0;
for (unsigned int i = 0; i < num_filesystems; i++) {
if (HW_FS_DEFAULT == filesystems[i].fstype)
fs_choice = i;
fs_names[i] = filesystems[i].description;
}
rc = newtWinMenu(_("Filesystem Selection"), _("Please choose your filesystem:"),
50, 5, 5, 6, fs_names, &fs_choice, _("OK"), _("Cancel"), NULL);
if (rc == 2)
goto EXIT;
destination->filesystem = filesystems[fs_choice].fstype;
}
// Setting up RAID if needed.
if (destination->is_raid) {
statuswindow(60, 4, title, _("Building RAID..."));
rc = hw_setup_raid(destination, logfile);
if (rc) {
errorbox(_("Unable to build the RAID."));
goto EXIT;
}
newtPopWindow();
} else {
// We will have to destroy all RAID setups that may have
// been on the devices that we want to use now.
hw_destroy_raid_superblocks(destination, logfile);
}
// Execute the partitioning...
statuswindow(60, 4, title, _("Partitioning disk..."));
rc = hw_create_partitions(destination, logfile);
if (rc) {
errorbox(_("Unable to partition the disk."));
goto EXIT;
}
newtPopWindow();
// Execute the formatting...
statuswindow(60, 4, title, _("Creating filesystems..."));
rc = hw_create_filesystems(destination, logfile);
if (rc) {
errorbox(_("Unable to create filesystems."));
goto EXIT;
}
rc = hw_mount_filesystems(destination, DESTINATION_MOUNT_PATH);
if (rc) {
errorbox(_("Unable to mount filesystems."));
goto EXIT;
}
newtPopWindow();
// Extract files...
snprintf(commandstring, STRING_SIZE,
"/bin/tar -C /harddisk -xvf /cdrom/distro.img --lzma 2>/dev/null");
if (runcommandwithprogress(60, 4, title, commandstring, INST_FILECOUNT,
_("Installing the system..."), logfile)) {
errorbox(_("Unable to install the system."));
goto EXIT;
}
// Write fstab
rc = hw_write_fstab(destination);
if (rc) {
fprintf(flog, "Could not write /etc/fstab\n");
goto EXIT;
}
/* Save language und local settings */
write_lang_configs(language);
/* Build cache lang file */
snprintf(commandstring, STRING_SIZE, "/usr/sbin/chroot /harddisk /usr/bin/perl -e \"require '" CONFIG_ROOT "/lang.pl'; &Lang::BuildCacheLang\"");
if (runcommandwithstatus(commandstring, title, _("Installing the language cache..."), logfile)) {
errorbox(_("Unable to install the language cache."));
goto EXIT;
}
// Installing bootloader...
statuswindow(60, 4, title, _("Installing the bootloader..."));
/* Serial console ? */
if (config.serial_console) {
/* grub */
FILE* f = fopen(DESTINATION_MOUNT_PATH "/etc/default/grub", "a");
if (!f) {
errorbox(_("Unable to open /etc/default/grub for writing."));
goto EXIT;
}
fprintf(f, "GRUB_TERMINAL=\"serial\"\n");
fprintf(f, "GRUB_SERIAL_COMMAND=\"serial --unit=0 --speed=%d\"\n", SERIAL_BAUDRATE);
fclose(f);
replace(DESTINATION_MOUNT_PATH "/etc/default/grub", "panic=10", "panic=10 console=ttyS0,115200n8");
/* inittab */
replace("/harddisk/etc/inittab", "1:2345:respawn:", "#1:2345:respawn:");
replace("/harddisk/etc/inittab", "2:2345:respawn:", "#2:2345:respawn:");
replace("/harddisk/etc/inittab", "3:2345:respawn:", "#3:2345:respawn:");
replace("/harddisk/etc/inittab", "4:2345:respawn:", "#4:2345:respawn:");
replace("/harddisk/etc/inittab", "5:2345:respawn:", "#5:2345:respawn:");
replace("/harddisk/etc/inittab", "6:2345:respawn:", "#6:2345:respawn:");
replace("/harddisk/etc/inittab", "#7:2345:respawn:", "7:2345:respawn:");
}
rc = hw_install_bootloader(destination, logfile);
if (rc) {
errorbox(_("Unable to install the bootloader."));
goto EXIT;
}
newtPopWindow();
/* Set marker that the user has already accepted the gpl */
mysystem(logfile, "/usr/bin/touch /harddisk/var/ipfire/main/gpl_accepted");
/* Copy restore file from cdrom */
char* backup_file = hw_find_backup_file(logfile, SOURCE_MOUNT_PATH);
if (backup_file) {
rc = 0;
if (!config.unattended) {
rc = newtWinOkCancel(title, _("A backup file has been found on the installation image.\n\n"
"Do you want to restore the backup?"), 50, 10, _("Yes"), _("No"));
}
if (rc == 0) {
rc = hw_restore_backup(logfile, backup_file, DESTINATION_MOUNT_PATH);
if (rc) {
errorbox(_("An error occured when the backup file was restored."));
goto EXIT;
}
}
free(backup_file);
}
// Download and execute the postinstall script
if (*config.postinstall) {
snprintf(commandstring, sizeof(commandstring),
"/usr/bin/execute-postinstall.sh %s %s", DESTINATION_MOUNT_PATH, config.postinstall);
if (runcommandwithstatus(commandstring, title, _("Running post-install script..."), logfile)) {
errorbox(_("Post-install script failed."));
goto EXIT;
}
}
// Umount the destination drive
statuswindow(60, 4, title, _("Umounting filesystems..."));
rc = hw_umount_filesystems(destination, DESTINATION_MOUNT_PATH);
if (rc) {
// Show an error message if filesystems could not be umounted properly
snprintf(message, sizeof(message),
_("Could not umount all filesystems successfully:\n\n %s"), strerror(errno));
errorbox(message);
goto EXIT;
}
// Umount source drive and eject
hw_umount(SOURCE_MOUNT_PATH);
// Free downloaded ISO image
if (strcmp(sourcedrive, SOURCE_TEMPFILE) == 0) {
rc = unlink(sourcedrive);
if (rc)
fprintf(flog, "Could not free downloaded ISO image: %s\n", sourcedrive);
// or eject real images
} else {
snprintf(commandstring, STRING_SIZE, "/usr/bin/eject %s", sourcedrive);
mysystem(logfile, commandstring);
}
newtPopWindow();
// Stop the RAID array if we are using RAID
if (destination->is_raid)
hw_stop_all_raid_arrays(logfile);
// Show a short message that the installation went well and
// wait a moment so that all disk caches get flushed.
if (config.unattended) {
splashWindow(title, _("Unattended installation has finished. The system will be shutting down in a moment..."), 5);
} else {
snprintf(message, sizeof(message), _(
"%s was successfully installed!\n\n"
"Please remove any installation mediums from this system and hit the reboot button. "
"Once the system has restarted you will be asked to setup networking and system passwords. "
"After that, you should point your web browser at https://%s:444 (or what ever you name "
"your %s) for the web configuration console."), NAME, SNAME, NAME);
newtWinMessage(_("Congratulations!"), _("Reboot"), message);
}
allok = 1;
EXIT:
fprintf(flog, "Install program ended.\n");
fflush(flog);
fclose(flog);
if (!allok)
newtWinMessage(title, _("OK"), _("Setup has failed. Press Ok to reboot."));
newtFinished();
// Free resources
if (system_release)
free(system_release);
if (roottext)
free(roottext);
if (helpline)
free(helpline);
if (sourcedrive)
free(sourcedrive);
if (destination)
free(destination);
hw_stop_all_raid_arrays(logfile);
if (selected_disks)
hw_free_disks(selected_disks);
if (hw)
hw_free(hw);
fcloseall();
if (allok == 1)
return 0;
return 1;
}

30
src/installer/po/LINGUAS Normal file
View File

@@ -0,0 +1,30 @@
ar
ca
cs_CZ
da
de
el_GR
es
fa
fr
hu
id
it
ja
km_KH
nl
pl
pt_BR
pt_PT
ro_RO
ru
sk
sq
sv
th
tk
tr
uk
uz@Latn
vi
zh

41
src/installer/po/Makevars Normal file
View File

@@ -0,0 +1,41 @@
# Makefile variables for PO directory in any package using GNU gettext.
# Usually the message domain is the same as the package name.
DOMAIN = $(PACKAGE)
# These two variables depend on the location of this directory.
subdir = po
top_builddir = ..
# These options get passed to xgettext.
XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
# This is the copyright holder that gets inserted into the header of the
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
# package. (Note that the msgstr strings, extracted from the package's
# sources, belong to the copyright holder of the package.) Translators are
# expected to transfer the copyright for their translations to this person
# or entity, or to disclaim their copyright. The empty string stands for
# the public domain; in this case the translators are expected to disclaim
# their copyright.
COPYRIGHT_HOLDER = The IPFire Project (www.ipfire.org)
# This is the email address or URL to which the translators shall report
# bugs in the untranslated strings:
# - Strings which are not entire sentences, see the maintainer guidelines
# in the GNU gettext documentation, section 'Preparing Strings'.
# - Strings which use unclear terms or require additional context to be
# understood.
# - Strings which make invalid assumptions about notation of date, time or
# money.
# - Pluralisation problems.
# - Incorrect English spelling.
# - Incorrect formatting.
# It can be your email address, or a mailing list address where translators
# can write to without being subscribed, or the URL of a web page through
# which the translators can contact you.
MSGID_BUGS_ADDRESS =
# This is the list of locale categories, beyond LC_MESSAGES, for which the
# message catalogs shall be used. It is usually empty.
EXTRA_LOCALE_CATEGORIES =

View File

@@ -0,0 +1 @@
main.c

242
src/installer/po/ar.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Arabic (http://www.transifex.com/projects/p/ipfire/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/ca.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Catalan (http://www.transifex.com/projects/p/ipfire/language/ca/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ca\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/cs_CZ.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/ipfire/language/cs_CZ/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: cs_CZ\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

243
src/installer/po/da.po Normal file
View File

@@ -0,0 +1,243 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Henrik Simonsen <cybermaze@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Danish (http://www.transifex.com/projects/p/ipfire/language/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr "OK"
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr "Annuller"
#: main.c:145
msgid "I accept this license"
msgstr "Jeg accepterer brugerlicensen"
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr "<Tab>/<Alt-Tab> mellem elementer | <Space> vælger | <F12> næste skærm"
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr "Start installationen"
#: main.c:339
msgid "No local source media found. Starting download."
msgstr "Fandt ikke en lokal kilde. Henter fra internettet."
#: main.c:340
msgid "Downloading installation image ..."
msgstr "Henter installationsbillede ..."
#: main.c:342
msgid "Download error"
msgstr "Fejl under hentning"
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr "Brugerlicensen ikke accepteret!"
#: main.c:399
msgid "No hard disk found."
msgstr "Fandt ikke en harddisk."
#: main.c:418
msgid "Disk Selection"
msgstr "Vælg harddisk"
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr "Vælg den eller de harddisk(e) du vil installere IPFire på. Diskene bliver først partitioneret og dernæst bliver der oprettet filsystemer.\n\nAL DATA PÅ DISKENE BLIVER SLETTET."
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr "Ingen harddisk valgt.\n\nVælg venligst en eller flere harddiske du vil installere IPFire på."
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr "Installationsprogrammet forbereder nu den eller de valgte harddiske:\n\n%s\n\nVil du fortsætte?"
#: main.c:445
msgid "Disk Setup"
msgstr "Harddisk opsætning"
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr "Slet alle data"
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr "Installationsprogrammet vil nu opsætte RAID konfigurationen på de valgte harddiske:\n\n%s\n%s\n\nVil du fortsætte?"
#: main.c:455
msgid "RAID Setup"
msgstr "RAID opsætning"
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr "Din harddisk konfiguration understøttes ikke pt."
#: main.c:480
msgid "Your harddisk is too small."
msgstr "Din harddisk er for lille."
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr "ext4 filsystem"
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr "ext4 filsystem uden journal"
#: main.c:508
msgid "XFS Filesystem"
msgstr "XFS filsystem"
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr "ReiserFS filsystem"
#: main.c:523
msgid "Filesystem Selection"
msgstr "Vælg filsystem"
#: main.c:523
msgid "Please choose your filesystem:"
msgstr "Vælg venligst et filsystem:"
#: main.c:534
msgid "Building RAID..."
msgstr "Bygger RAID..."
#: main.c:538
msgid "Unable to build the RAID."
msgstr "Kunne ikke bygge RAID."
#: main.c:550
msgid "Partitioning disk..."
msgstr "Partitionerer harddisk..."
#: main.c:554
msgid "Unable to partition the disk."
msgstr "Kunne ikke partitionere harddisk."
#: main.c:561
msgid "Creating filesystems..."
msgstr "Opretter filsystemer..."
#: main.c:565
msgid "Unable to create filesystems."
msgstr "Kunne ikke oprette filsystemer."
#: main.c:571
msgid "Unable to mount filesystems."
msgstr "Kunne ikke forbinde til filsystemer."
#: main.c:582
msgid "Installing the system..."
msgstr "Installerer systemet..."
#: main.c:583
msgid "Unable to install the system."
msgstr "Kunne ikke installere systemet."
#: main.c:599
msgid "Installing the language cache..."
msgstr "Installerer sprog arkivet..."
#: main.c:600
msgid "Unable to install the language cache."
msgstr "Kunne ikke installere sprog arkivet."
#: main.c:605
msgid "Installing the bootloader..."
msgstr "Installerer bootloader..."
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr "Kunne ikke installere bootloader."
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr "Tillykke!"
#: main.c:671
msgid "Reboot"
msgstr "Genstart"
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

244
src/installer/po/de.po Normal file
View File

@@ -0,0 +1,244 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Michael Tremer <michael.tremer@ipfire.org>, 2014
# Stefan Schantl <stefan.schantl@ipfire.org>, 2014
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 16:04+0000\n"
"Last-Translator: Stefan Schantl <stefan.schantl@ipfire.org>\n"
"Language-Team: German (http://www.transifex.com/projects/p/ipfire/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr "OK"
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr "Abbrechen"
#: main.c:145
msgid "I accept this license"
msgstr "Ich akzeptiere die Lizenz"
#: main.c:312
msgid "Language selection"
msgstr "Sprachauswahl"
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr "Wählen Sie die gewünschte Sprache für den Installationsprozess aus."
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr "<Tab>/<Alt-Tab> um zu wechseln | <Leertaste> wählt aus | <F12> nächster Bildschirm"
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr "Willkommen zum %s Installationsprogramm.\n\nWenn Sie auf irgendeiner der folgenden Seiten 'Abbrechen' auswählen, wird der Computer neu gestartet."
#: main.c:330
msgid "Start installation"
msgstr "Installation beginnen"
#: main.c:339
msgid "No local source media found. Starting download."
msgstr "Kein lokales Quellmedium gefunden. Starte Download."
#: main.c:340
msgid "Downloading installation image ..."
msgstr "Lade Installationsimage herunter..."
#: main.c:342
msgid "Download error"
msgstr "Fehler beim Download"
#: main.c:376
msgid "License Agreement"
msgstr "Lizenzvereinbarung"
#: main.c:377
msgid "License not accepted!"
msgstr "Lizenz nicht akzeptiert!"
#: main.c:399
msgid "No hard disk found."
msgstr "Es wurde keine Festplatte gefunden."
#: main.c:418
msgid "Disk Selection"
msgstr "Festplattenauswahl"
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr "Wählen Sie die Festplatte(n) auf denen IPFire installiert werden soll. Diese wird/werden zuerst partitioniert und danach mit einem Dateisystem ausgestattet.\n\nSÄMTLICHE DATEN AUF DER FESTPLATTE GEHEN VERLOREN."
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr "Keine Festplatte ausgewählt.\n\nBitte wählen Sie eine oder mehrere Festplatten auf denen IPFire installiert werden soll aus."
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr "Das Installationsprogramm wird die folgende Festplatte nun vorbereiten:\n\n%s\n\nMöchten Sie damit fortfahren?"
#: main.c:445
msgid "Disk Setup"
msgstr "Disk-Setup"
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr "Alle Daten löschen"
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr "Das Installationsprogramm wird nun einen RAID Verbund auf den folgenden Festplatten erstellen:\n\n%s\n%s\n\nMöchten Sie damit fortfahren?"
#: main.c:455
msgid "RAID Setup"
msgstr "RAID-Setup"
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr "Die gewählte Festplattenkonstellation wird momentan nicht unterstützt."
#: main.c:480
msgid "Your harddisk is too small."
msgstr "Ihre Festplatte ist zu klein."
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr "Die gewählte Festplatte ist sehr klein, die Installation kann aber ohne Swap Partition fortgesetzt werden."
#: main.c:506
msgid "ext4 Filesystem"
msgstr "ext4-Dateisystem"
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr "ext4-Dateisystem ohne Journal"
#: main.c:508
msgid "XFS Filesystem"
msgstr "XFS-Dateisystem"
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr "ReiserFS-Dateisystem"
#: main.c:523
msgid "Filesystem Selection"
msgstr "Dateisystemauswahl"
#: main.c:523
msgid "Please choose your filesystem:"
msgstr "Bitte wählen Sie ein Dateisystem:"
#: main.c:534
msgid "Building RAID..."
msgstr "Erstelle RAID..."
#: main.c:538
msgid "Unable to build the RAID."
msgstr "Das RAID konnte nicht erstellt werden."
#: main.c:550
msgid "Partitioning disk..."
msgstr "Partitioniere die Festplatte..."
#: main.c:554
msgid "Unable to partition the disk."
msgstr "Die Festplatte konnte nicht partitioniert werden."
#: main.c:561
msgid "Creating filesystems..."
msgstr "Erstelle Dateisysteme..."
#: main.c:565
msgid "Unable to create filesystems."
msgstr "Die Dateisysteme konnten nicht erstellt werden."
#: main.c:571
msgid "Unable to mount filesystems."
msgstr "Die Dateisysteme konnten nicht eingehangen werden."
#: main.c:582
msgid "Installing the system..."
msgstr "Installiere das System..."
#: main.c:583
msgid "Unable to install the system."
msgstr "Das System konnte nicht installiert werden."
#: main.c:599
msgid "Installing the language cache..."
msgstr "Installiere den Sprachdateicache..."
#: main.c:600
msgid "Unable to install the language cache."
msgstr "Der Sprachdateicache konnte nicht erstellt werden."
#: main.c:605
msgid "Installing the bootloader..."
msgstr "Installiere den Bootloader..."
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr "/etc/default/grub konnte nicht geschrieben werden."
#: main.c:634
msgid "Unable to install the bootloader."
msgstr "Der Bootloader konnte nicht installiert werden."
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr "%s wurde erfolgreich installiert.\n\nEntfernen Sie bitte alle Installionsmedian aus dem Computer und drücken Sie den \"Neustarten\" Knopf . \n\nNach dem erfolgten Neustart wird das Setup-Programm gestartet, in dem Sie Netzwerkkarten und die Systempasswörter konfigurieren können. Sobald dies fertiggestellt ist, können Sie in Ihrem Webbrowser die Weboberfläche mit https://%s:444 (oder welchen Namen Sie Ihrem %s auch immer gegeben haben) erreichen."
#: main.c:671
msgid "Congratulations!"
msgstr "Herzlichen Glückwunsch!"
#: main.c:671
msgid "Reboot"
msgstr "Neustarten"
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr "Installation fehlgeschlagen. Drücken Sie \"OK\" für einen Neustart des Systems."

242
src/installer/po/el_GR.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Greek (Greece) (http://www.transifex.com/projects/p/ipfire/language/el_GR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: el_GR\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/es.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/ipfire/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

243
src/installer/po/fa.po Normal file
View File

@@ -0,0 +1,243 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Khalil Delavaran <khalil.delavaran@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Persian (http://www.transifex.com/projects/p/ipfire/language/fa/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fa\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr "بله"
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr "نمی خواهم"
#: main.c:145
msgid "I accept this license"
msgstr "من این پروانه را می پذیرم."
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr "<Tab>/<Alt-Tab> میان عنصری | <Space> گزینش | <F12> برای برگه پسین"
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr "آغاز برپا سازی"
#: main.c:339
msgid "No local source media found. Starting download."
msgstr "هیچ رسانه محلی یافت نشد. دانلود آغاز شد."
#: main.c:340
msgid "Downloading installation image ..."
msgstr "در حال دانلود ایمیج برای برپا سازی..."
#: main.c:342
msgid "Download error"
msgstr "ایراد در دانلود"
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr "پروانه پذیرفته نشد!"
#: main.c:399
msgid "No hard disk found."
msgstr "هارد دیسک یافت نشد."
#: main.c:418
msgid "Disk Selection"
msgstr "گزینش دیسک"
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr "دیسک (های) را برای برپاسازی IPFire گزینش کنید. نخست آنها را پارنیشین بندی کرده، و سپس، سیستم فایلی برای پارتیشن ها برگزینید.\n\nهمه داده های دیسک پاک می شوند."
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr "هیچ دیسکی گزینش نشده است.\n\nخواهشمند است یک دیسک یا بیشتر را برای برپا سازی IPFire گزینش کنید."
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr "آماده سازی دیسک سخت برای برپا سازی برنامه :\n\n%s\n\nآیا شما گرایش به ادامه دارید؟"
#: main.c:445
msgid "Disk Setup"
msgstr "پیکربندی دیسک"
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr "پاک کردن همه داده ها"
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr "پیکربندی RAID بر روی هارد دیسکهای گزینش شده برای برپا سازی برنامه\n\n%s\n%s\n\nآیا شما گرایش به ادامه دارید؟"
#: main.c:455
msgid "RAID Setup"
msgstr "پیکربندی RAID"
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr "پیکربندی دیسک شما پشتیبانی نمی شود."
#: main.c:480
msgid "Your harddisk is too small."
msgstr "هارد دیسک شما بسیار کوچک است."
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr "فایل سیستم ext4"
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr "سیستم فایل ext4 بدون روزنامه"
#: main.c:508
msgid "XFS Filesystem"
msgstr "فایل سیستم XFS"
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr "فایل سیستم RaiserFS"
#: main.c:523
msgid "Filesystem Selection"
msgstr "گزینش فایل سیستم"
#: main.c:523
msgid "Please choose your filesystem:"
msgstr "خواهشمند است فایل سیستم خود را گزینش کنید:"
#: main.c:534
msgid "Building RAID..."
msgstr "ساخت RAID..."
#: main.c:538
msgid "Unable to build the RAID."
msgstr "ناتوانی در ساخت RAID."
#: main.c:550
msgid "Partitioning disk..."
msgstr "پارتیشن بندی دیسک..."
#: main.c:554
msgid "Unable to partition the disk."
msgstr "ناتوانی در پارتیشین بندی دیسک."
#: main.c:561
msgid "Creating filesystems..."
msgstr "ساخت سیستم فایل..."
#: main.c:565
msgid "Unable to create filesystems."
msgstr "ناتوانی در ساخت سیستم فایل."
#: main.c:571
msgid "Unable to mount filesystems."
msgstr "ناتوانی در مونت کردن سیستم فایل."
#: main.c:582
msgid "Installing the system..."
msgstr "برپا سازی سیستم..."
#: main.c:583
msgid "Unable to install the system."
msgstr "ناتوانی در برپاسازی سیستم."
#: main.c:599
msgid "Installing the language cache..."
msgstr "در حال برپا سازی کش زبان..."
#: main.c:600
msgid "Unable to install the language cache."
msgstr "ناتوانی در برپا سازی کش زبان."
#: main.c:605
msgid "Installing the bootloader..."
msgstr "برپا سازی بوت لودر..."
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr "ناتوانی در برپا سازی بوت لودر."
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr "شادباش می گوییم!"
#: main.c:671
msgid "Reboot"
msgstr "ریبوت"
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/fr.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: French (http://www.transifex.com/projects/p/ipfire/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/hu.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Hungarian (http://www.transifex.com/projects/p/ipfire/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/id.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Indonesian (http://www.transifex.com/projects/p/ipfire/language/id/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: id\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/it.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/ipfire/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/ja.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Japanese (http://www.transifex.com/projects/p/ipfire/language/ja/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ja\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/km_KH.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Khmer (Cambodia) (http://www.transifex.com/projects/p/ipfire/language/km_KH/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: km_KH\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/nl.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Dutch (http://www.transifex.com/projects/p/ipfire/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/pl.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Polish (http://www.transifex.com/projects/p/ipfire/language/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pl\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

244
src/installer/po/pt_BR.po Normal file
View File

@@ -0,0 +1,244 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# André Felipe Morro <andre@andremorro.com>, 2014
# Leandro Luquetti Basilio da Silva <leandroluquetti@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/ipfire/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr "Ok"
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr "Cancelar"
#: main.c:145
msgid "I accept this license"
msgstr "Eu aceito esta licença"
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr "<Tab>/<Alt-Tab> entre os elementos | <Space> Selecione | <F12> próxima tela"
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr "Iniciar a instalação"
#: main.c:339
msgid "No local source media found. Starting download."
msgstr "Nenhuma fonte de mídia local encontrada. Iniciando download."
#: main.c:340
msgid "Downloading installation image ..."
msgstr "Baixando imagem de instalação ..."
#: main.c:342
msgid "Download error"
msgstr "Erro de download"
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr "Licença não aceita!"
#: main.c:399
msgid "No hard disk found."
msgstr "Nenhum disco rígido foi encontrado."
#: main.c:418
msgid "Disk Selection"
msgstr "Seleção de disco"
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr "Selecione o disco(s) que deseja instalar o IPFire. Primeiramente o mesmo será particionado, e então, as partições terão um sistema de arquivos que você escolher. \n\nTODOS OS DADOS NO DISCO SERÃO DESTRUÍDOS."
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr "Nenhum disco foi selecionado.\n\nPor favor seleccione um ou mais discos que você deseja instalar o IPFire."
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr "O programa de instalação irá agora preparar o disco rígido escolhido:\n\n%s \n\nVocê concorda em continuar?"
#: main.c:445
msgid "Disk Setup"
msgstr "Configuração de Discos"
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr "Apagar todos os dados"
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr "O programa de instalação ira agora definir uma configuração de RAID nos discos rígidos selecionados:\n\n%s\n%s\n \nVocê concorda continuar?"
#: main.c:455
msgid "RAID Setup"
msgstr "Configuração de RAID"
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr "Sua configuração de disco não é suportada atualmente."
#: main.c:480
msgid "Your harddisk is too small."
msgstr "Seu disco rígido é muito pequeno."
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr "Sistema de arquivos ext4"
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr "Sistema de arquivos ext4 sem journal"
#: main.c:508
msgid "XFS Filesystem"
msgstr "Sistema de arquivos XFS"
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr "Sistema de arquivos ReiserFS"
#: main.c:523
msgid "Filesystem Selection"
msgstr "Seleção do sistema de arquivos"
#: main.c:523
msgid "Please choose your filesystem:"
msgstr "Por favor, escolha o seu sistema de arquivos:"
#: main.c:534
msgid "Building RAID..."
msgstr "Construindo o RAID..."
#: main.c:538
msgid "Unable to build the RAID."
msgstr "Não foi possível construir o RAID."
#: main.c:550
msgid "Partitioning disk..."
msgstr "Particionando o disco..."
#: main.c:554
msgid "Unable to partition the disk."
msgstr "Não foi possível particionar o disco."
#: main.c:561
msgid "Creating filesystems..."
msgstr "Criando o sistema de arquivos..."
#: main.c:565
msgid "Unable to create filesystems."
msgstr "Não foi possível criar sistemas de arquivos."
#: main.c:571
msgid "Unable to mount filesystems."
msgstr "Não foi possível montar sistemas de arquivos."
#: main.c:582
msgid "Installing the system..."
msgstr "Instalando o sistema..."
#: main.c:583
msgid "Unable to install the system."
msgstr "Não é possível instalar o sistema."
#: main.c:599
msgid "Installing the language cache..."
msgstr "Instalando o cache de linguagem..."
#: main.c:600
msgid "Unable to install the language cache."
msgstr "Não foi possível instalar o cache de linguagem."
#: main.c:605
msgid "Installing the bootloader..."
msgstr "Instalando o gerenciador de inicialização..."
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr "Não foi possível instalar o gerenciador de inicialização."
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr "Parabéns!"
#: main.c:671
msgid "Reboot"
msgstr "Reiniciar"
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/pt_PT.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/ipfire/language/pt_PT/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt_PT\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/ro_RO.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/ipfire/language/ro_RO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ro_RO\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/ru.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Russian (http://www.transifex.com/projects/p/ipfire/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/sk.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Slovak (http://www.transifex.com/projects/p/ipfire/language/sk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sk\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/sq.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Albanian (http://www.transifex.com/projects/p/ipfire/language/sq/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sq\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/sv.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Swedish (http://www.transifex.com/projects/p/ipfire/language/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/th.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Thai (http://www.transifex.com/projects/p/ipfire/language/th/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: th\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/tk.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Turkmen (http://www.transifex.com/projects/p/ipfire/language/tk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: tk\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/tr.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Turkish (http://www.transifex.com/projects/p/ipfire/language/tr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: tr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/uk.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Ukrainian (http://www.transifex.com/projects/p/ipfire/language/uk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: uk\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/uz@Latn.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Uzbek (Latin) (http://www.transifex.com/projects/p/ipfire/language/uz@Latn/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: uz@Latn\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/vi.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Vietnamese (http://www.transifex.com/projects/p/ipfire/language/vi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: vi\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

242
src/installer/po/zh.po Normal file
View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR The IPFire Project (www.ipfire.org)
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: IPFire Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-21 15:09+0000\n"
"PO-Revision-Date: 2014-08-21 15:11+0000\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: Chinese (http://www.transifex.com/projects/p/ipfire/language/zh/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: main.c:77 main.c:148 main.c:313 main.c:339 main.c:493 main.c:524 main.c:682
msgid "OK"
msgstr ""
#: main.c:78 main.c:446 main.c:456 main.c:493 main.c:524
msgid "Cancel"
msgstr ""
#: main.c:145
msgid "I accept this license"
msgstr ""
#: main.c:312
msgid "Language selection"
msgstr ""
#: main.c:312
msgid "Select the language you wish to use for the installation."
msgstr ""
#: main.c:323
msgid "<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
msgstr ""
#: main.c:328
#, c-format
msgid ""
"Welcome to the %s installation program.\n"
"\n"
"Selecting Cancel on any of the following screens will reboot the computer."
msgstr ""
#: main.c:330
msgid "Start installation"
msgstr ""
#: main.c:339
msgid "No local source media found. Starting download."
msgstr ""
#: main.c:340
msgid "Downloading installation image ..."
msgstr ""
#: main.c:342
msgid "Download error"
msgstr ""
#: main.c:376
msgid "License Agreement"
msgstr ""
#: main.c:377
msgid "License not accepted!"
msgstr ""
#: main.c:399
msgid "No hard disk found."
msgstr ""
#: main.c:418
msgid "Disk Selection"
msgstr ""
#: main.c:419
msgid ""
"Select the disk(s) you want to install IPFire on. First those will be partitioned, and then the partitions will have a filesystem put on them.\n"
"\n"
"ALL DATA ON THE DISK WILL BE DESTROYED."
msgstr ""
#: main.c:430
msgid ""
"No disk has been selected.\n"
"\n"
"Please select one or more disks you want to install IPFire on."
msgstr ""
#: main.c:443
#, c-format
msgid ""
"The installation program will now prepare the chosen harddisk:\n"
"\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:445
msgid "Disk Setup"
msgstr ""
#: main.c:446 main.c:456
msgid "Delete all data"
msgstr ""
#: main.c:453
#, c-format
msgid ""
"The installation program will now set up a RAID configuration on the selected harddisks:\n"
"\n"
" %s\n"
" %s\n"
"\n"
"Do you agree to continue?"
msgstr ""
#: main.c:455
msgid "RAID Setup"
msgstr ""
#: main.c:466
msgid "You disk configuration is currently not supported."
msgstr ""
#: main.c:480
msgid "Your harddisk is too small."
msgstr ""
#: main.c:494
msgid ""
"Your harddisk is very small, but you can continue without a swap partition."
msgstr ""
#: main.c:506
msgid "ext4 Filesystem"
msgstr ""
#: main.c:507
msgid "ext4 Filesystem without journal"
msgstr ""
#: main.c:508
msgid "XFS Filesystem"
msgstr ""
#: main.c:509
msgid "ReiserFS Filesystem"
msgstr ""
#: main.c:523
msgid "Filesystem Selection"
msgstr ""
#: main.c:523
msgid "Please choose your filesystem:"
msgstr ""
#: main.c:534
msgid "Building RAID..."
msgstr ""
#: main.c:538
msgid "Unable to build the RAID."
msgstr ""
#: main.c:550
msgid "Partitioning disk..."
msgstr ""
#: main.c:554
msgid "Unable to partition the disk."
msgstr ""
#: main.c:561
msgid "Creating filesystems..."
msgstr ""
#: main.c:565
msgid "Unable to create filesystems."
msgstr ""
#: main.c:571
msgid "Unable to mount filesystems."
msgstr ""
#: main.c:582
msgid "Installing the system..."
msgstr ""
#: main.c:583
msgid "Unable to install the system."
msgstr ""
#: main.c:599
msgid "Installing the language cache..."
msgstr ""
#: main.c:600
msgid "Unable to install the language cache."
msgstr ""
#: main.c:605
msgid "Installing the bootloader..."
msgstr ""
#: main.c:612
msgid "Unable to open /etc/default/grub for writing."
msgstr ""
#: main.c:634
msgid "Unable to install the bootloader."
msgstr ""
#: main.c:666
#, c-format
msgid ""
"%s was successfully installed!\n"
"\n"
"Please remove any installation mediums from this system and hit the reboot button. Once the system has restarted you will be asked to setup networking and system passwords. After that, you should point your web browser at https://%s:444 (or what ever you name your %s) for the web configuration console."
msgstr ""
#: main.c:671
msgid "Congratulations!"
msgstr ""
#: main.c:671
msgid "Reboot"
msgstr ""
#: main.c:682
msgid "Setup has failed. Press Ok to reboot."
msgstr ""

View File

@@ -1,7 +1,8 @@
#!/bin/bash
###############################################################################
# #
# IPFire.org - A linux based firewall #
# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
# Copyright (C) 2014 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
@@ -18,32 +19,51 @@
# #
###############################################################################
function list_interfaces() {
local interface
CC = gcc
CFLAGS = -Os -Wall
INCLUDE =
for interface in /sys/class/net/*; do
[ -d "${interface}" ] || continue
LD = gcc
LDFLAGS =
LIBS = -lnewt -lslang -lpci
interface="$(basename ${interface})"
case "${interface}" in
eth*)
echo "${interface}"
;;
esac
done
}
COMPILE = $(CC) -c $(INCLUDE) $(CFLAGS)
function try_dhcp() {
local interface="${1}"
LINK = $(LD) $(LDFLAGS)
# Bring up the interface
ip link set "${interface}" up
all : programs
# Try to make the lights of the adapter light up
ethtool -i "${interface}" &>/dev/null
programs : install
# Start the DHCP client
dhcpcd "${interface}"
}
clean :
-rm -f *.o install core
function main() {
local interface
for interface in $(list_interfaces); do
if ! try_dhcp "${interface}"; then
echo "Could not acquire an IP address on ${interface}"
continue
fi
######
echo "Successfully started on ${interface}"
OBJS=main.o config.o ../libsmooth/libsmooth.o unattended.o
# Wait until everything is settled
sleep 15
install: $(OBJS)
$(LINK) $(OBJS) -o $@ $(LIBS)
return 0
done
%.o : %.c
$(COMPILE) $< -o $@
return 1
}
main

81
src/libsmooth/Makefile.am Normal file
View File

@@ -0,0 +1,81 @@
# This file is part of the libsmooth library.
#
# libsmooth is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
AM_MAKEFLAGS = --no-print-directory
AUTOMAKE_OPTIONS = color-tests parallel-tests
SUBDIRS = .
# remove targets if the command fails
.DELETE_ON_ERROR:
# keep intermediate files
.SECONDARY:
LIBSMOOTH_CURRENT=1
LIBSMOOTH_REVISION=0
LIBSMOOTH_AGE=0
pkgconfiglibdir=$(libdir)/pkgconfig
CLEANFILES =
EXTRA_DIST =
AM_CPPFLAGS = \
-include $(top_builddir)/config.h \
-I $(top_srcdir)/include \
$(OUR_CPPFLAGS)
AM_CFLAGS = $(OUR_CFLAGS)
AM_CXXFLAGS = $(OUR_CXXFLAGS)
AM_LDFLAGS = $(OUR_LDFLAGS)
lib_LTLIBRARIES =
include_HEADERS =
#- libsmooth -------------------------------------------------------------------
lib_LTLIBRARIES += \
libsmooth.la
libsmooth_la_SOURCES = \
main.c \
varval.c
libsmooth_la_LDFLAGS = \
$(AM_LDFLAGS) \
-version-info $(LIBSMOOTH_CURRENT):$(LIBSMOOTH_REVISION):$(LIBSMOOTH_AGE)
include_HEADERS += \
libsmooth.h
pkgconfiglib_DATA = \
libsmooth.pc
CLEANFILES += \
libsmooth.pc
EXTRA_DIST += \
libsmooth.pc.in
#-------------------------------------------------------------------------------
substitutions = \
'|PACKAGE_NAME=$(PACKAGE_NAME)|' \
'|PACKAGE_VERSION=$(PACKAGE_VERSION)|' \
'|prefix=$(prefix)|' \
'|exec_prefix=$(exec_prefix)|' \
'|libdir=$(libdir)|' \
'|includedir=$(includedir)|'
SED_PROCESS = \
$(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
$(SED) $(subst '|,-e 's|@,$(subst =,\@|,$(subst |',|g',$(substitutions)))) < $< > $@
%.pc: %.pc.in Makefile
$(SED_PROCESS)

3
src/libsmooth/autogen.sh Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/sh
autoreconf --force --install -I m4

View File

@@ -0,0 +1,58 @@
# This file is part of libsmooth.
#
# libsmooth is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
AC_PREREQ([2.64])
AC_INIT([libsmooth],
[001],
[],
[libsmooth],
[http://git.ipfire.org/?p=ipfire-2.x.git;a=summary])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([
foreign
1.11
-Wall
-Wno-portability
silent-rules
tar-pax
no-dist-gzip
dist-xz
subdir-objects
])
AM_SILENT_RULES([yes])
LT_PREREQ(2.2)
LT_INIT([disable-static])
AC_PROG_SED
AC_PROG_CC
AC_PROG_CC_C99
AC_PROG_CC_C_O
AC_PATH_PROG([M4], [m4])
# This makes sure pkg.m4 is available.
m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
AC_CONFIG_FILES([
Makefile
])
AC_OUTPUT
AC_MSG_RESULT([
$PACKAGE_NAME $VERSION
CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
])

69
src/libsmooth/libsmooth.h Normal file
View File

@@ -0,0 +1,69 @@
/* SmoothWall libsmooth.
*
* This program is distributed under the terms of the GNU General Public
* Licence. See the file COPYING for details.
*
* (c) Lawrence Manning, 2001
* Contains prototypes for library functions.
*
*/
#ifndef ___LIBSMOOTH_H
#define ___LIBSMOOTH_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <wchar.h>
#include <locale.h>
#include <unistd.h>
#include <sys/file.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <newt.h>
#include <dirent.h>
#include <sys/mount.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <linux/cdrom.h>
#include <sys/ioctl.h>
#define STRING_SIZE 1024
struct keyvalue {
char key[STRING_SIZE];
char value[STRING_SIZE];
struct keyvalue *next;
};
/* libsmooth.c */
void stripnl(char *s);
int mysystem(const char* output, const char *command);
void errorbox(char *message);
int statuswindowscroll(int width, int height, const char *title, const char *text, ...);
int disclaimerbox(char *message);
void statuswindow(int width, int height, const char *title, const char *text, ...);
int runcommandwithprogress(int width, int height, const char *title, const char *command,
int lines, char *text, ...);
int runcommandwithstatus(const char *command, const char* title, const char *message, const char* output);
int runhiddencommandwithstatus(const char *command, const char* title, const char *message, const char* output);
int splashWindow(const char* title, const char* message, unsigned int timeout);
int checkformodule(const char *module);
int replace(char filename1[], char *from, char *to);
char* get_version(void);
/* varval.c */
struct keyvalue *initkeyvalues(void);
void freekeyvalues(struct keyvalue *head);
int readkeyvalues(struct keyvalue *head, char *filename);
int writekeyvalues(struct keyvalue *head, char *filename);
int findkey(struct keyvalue *head, char *key, char *value);
void appendkeyvalue(struct keyvalue *head, char *key, char *value);
void replacekeyvalue(struct keyvalue *head, char *key, char *value);
#endif

View File

@@ -0,0 +1,18 @@
# This file is part of the libsmooth library.
#
# libsmooth is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
Name: libsmooth
Description: libsmooth library
URL: @PACKAGE_URL@
Version: @PACKAGE_VERSION@
Libs: -L${libdir} -lsmooth
Cflags: -I${includedir}

View File

@@ -0,0 +1,288 @@
dnl Macros to check the presence of generic (non-typed) symbols.
dnl Copyright (c) 2006-2008 Diego Pettenò <flameeyes@gmail.com>
dnl Copyright (c) 2006-2008 xine project
dnl Copyright (c) 2012 Lucas De Marchi <lucas.de.marchi@gmail.com>
dnl
dnl This program is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 2, or (at your option)
dnl any later version.
dnl
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
dnl 02110-1301, USA.
dnl
dnl As a special exception, the copyright owners of the
dnl macro gives unlimited permission to copy, distribute and modify the
dnl configure scripts that are the output of Autoconf when processing the
dnl Macro. You need not follow the terms of the GNU General Public
dnl License when using or distributing such scripts, even though portions
dnl of the text of the Macro appear in them. The GNU General Public
dnl License (GPL) does govern all other use of the material that
dnl constitutes the Autoconf Macro.
dnl
dnl This special exception to the GPL applies to versions of the
dnl Autoconf Macro released by this project. When you make and
dnl distribute a modified version of the Autoconf Macro, you may extend
dnl this special exception to the GPL to apply to your modified version as
dnl well.
dnl Check if FLAG in ENV-VAR is supported by compiler and append it
dnl to WHERE-TO-APPEND variable
dnl CC_CHECK_FLAG_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG])
AC_DEFUN([CC_CHECK_FLAG_APPEND], [
AC_CACHE_CHECK([if $CC supports flag $3 in envvar $2],
AS_TR_SH([cc_cv_$2_$3]),
[eval "AS_TR_SH([cc_save_$2])='${$2}'"
eval "AS_TR_SH([$2])='-Werror $3'"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([int a = 0; int main(void) { return a; } ])],
[eval "AS_TR_SH([cc_cv_$2_$3])='yes'"],
[eval "AS_TR_SH([cc_cv_$2_$3])='no'"])
eval "AS_TR_SH([$2])='$cc_save_$2'"])
AS_IF([eval test x$]AS_TR_SH([cc_cv_$2_$3])[ = xyes],
[eval "$1='${$1} $3'"])
])
dnl CC_CHECK_FLAGS_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG1 FLAG2])
AC_DEFUN([CC_CHECK_FLAGS_APPEND], [
for flag in $3; do
CC_CHECK_FLAG_APPEND($1, $2, $flag)
done
])
dnl Check if the flag is supported by linker (cacheable)
dnl CC_CHECK_LDFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
AC_DEFUN([CC_CHECK_LDFLAGS], [
AC_CACHE_CHECK([if $CC supports $1 flag],
AS_TR_SH([cc_cv_ldflags_$1]),
[ac_save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $1"
AC_LINK_IFELSE([int main() { return 1; }],
[eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"],
[eval "AS_TR_SH([cc_cv_ldflags_$1])="])
LDFLAGS="$ac_save_LDFLAGS"
])
AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes],
[$2], [$3])
])
dnl define the LDFLAGS_NOUNDEFINED variable with the correct value for
dnl the current linker to avoid undefined references in a shared object.
AC_DEFUN([CC_NOUNDEFINED], [
dnl We check $host for which systems to enable this for.
AC_REQUIRE([AC_CANONICAL_HOST])
case $host in
dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads
dnl are requested, as different implementations are present; to avoid problems
dnl use -Wl,-z,defs only for those platform not behaving this way.
*-freebsd* | *-openbsd*) ;;
*)
dnl First of all check for the --no-undefined variant of GNU ld. This allows
dnl for a much more readable commandline, so that people can understand what
dnl it does without going to look for what the heck -z defs does.
for possible_flags in "-Wl,--no-undefined" "-Wl,-z,defs"; do
CC_CHECK_LDFLAGS([$possible_flags], [LDFLAGS_NOUNDEFINED="$possible_flags"])
break
done
;;
esac
AC_SUBST([LDFLAGS_NOUNDEFINED])
])
dnl Check for a -Werror flag or equivalent. -Werror is the GCC
dnl and ICC flag that tells the compiler to treat all the warnings
dnl as fatal. We usually need this option to make sure that some
dnl constructs (like attributes) are not simply ignored.
dnl
dnl Other compilers don't support -Werror per se, but they support
dnl an equivalent flag:
dnl - Sun Studio compiler supports -errwarn=%all
AC_DEFUN([CC_CHECK_WERROR], [
AC_CACHE_CHECK(
[for $CC way to treat warnings as errors],
[cc_cv_werror],
[CC_CHECK_CFLAGS_SILENT([-Werror], [cc_cv_werror=-Werror],
[CC_CHECK_CFLAGS_SILENT([-errwarn=%all], [cc_cv_werror=-errwarn=%all])])
])
])
AC_DEFUN([CC_CHECK_ATTRIBUTE], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([if $CC supports __attribute__(( ifelse([$2], , [$1], [$2]) ))],
AS_TR_SH([cc_cv_attribute_$1]),
[ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([$3])],
[eval "AS_TR_SH([cc_cv_attribute_$1])='yes'"],
[eval "AS_TR_SH([cc_cv_attribute_$1])='no'"])
CFLAGS="$ac_save_CFLAGS"
])
AS_IF([eval test x$]AS_TR_SH([cc_cv_attribute_$1])[ = xyes],
[AC_DEFINE(
AS_TR_CPP([SUPPORT_ATTRIBUTE_$1]), 1,
[Define this if the compiler supports __attribute__(( ifelse([$2], , [$1], [$2]) ))]
)
$4],
[$5])
])
AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [
CC_CHECK_ATTRIBUTE(
[constructor],,
[void __attribute__((constructor)) ctor() { int a; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_FORMAT], [
CC_CHECK_ATTRIBUTE(
[format], [format(printf, n, n)],
[void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [
CC_CHECK_ATTRIBUTE(
[format_arg], [format_arg(printf)],
[char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [
CC_CHECK_ATTRIBUTE(
[visibility_$1], [visibility("$1")],
[void __attribute__((visibility("$1"))) $1_function() { }],
[$2], [$3])
])
AC_DEFUN([CC_ATTRIBUTE_NONNULL], [
CC_CHECK_ATTRIBUTE(
[nonnull], [nonnull()],
[void __attribute__((nonnull())) some_function(void *foo, void *bar) { foo = (void*)0; bar = (void*)0; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_UNUSED], [
CC_CHECK_ATTRIBUTE(
[unused], ,
[void some_function(void *foo, __attribute__((unused)) void *bar);],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [
CC_CHECK_ATTRIBUTE(
[sentinel], ,
[void some_function(void *foo, ...) __attribute__((sentinel));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_DEPRECATED], [
CC_CHECK_ATTRIBUTE(
[deprecated], ,
[void some_function(void *foo, ...) __attribute__((deprecated));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_ALIAS], [
CC_CHECK_ATTRIBUTE(
[alias], [weak, alias],
[void other_function(void *foo) { }
void some_function(void *foo) __attribute__((weak, alias("other_function")));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_MALLOC], [
CC_CHECK_ATTRIBUTE(
[malloc], ,
[void * __attribute__((malloc)) my_alloc(int n);],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_PACKED], [
CC_CHECK_ATTRIBUTE(
[packed], ,
[struct astructure { char a; int b; long c; void *d; } __attribute__((packed));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_CONST], [
CC_CHECK_ATTRIBUTE(
[const], ,
[int __attribute__((const)) twopow(int n) { return 1 << n; } ],
[$1], [$2])
])
AC_DEFUN([CC_FLAG_VISIBILITY], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([if $CC supports -fvisibility=hidden],
[cc_cv_flag_visibility],
[cc_flag_visibility_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
CC_CHECK_CFLAGS_SILENT([-fvisibility=hidden],
cc_cv_flag_visibility='yes',
cc_cv_flag_visibility='no')
CFLAGS="$cc_flag_visibility_save_CFLAGS"])
AS_IF([test "x$cc_cv_flag_visibility" = "xyes"],
[AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1,
[Define this if the compiler supports the -fvisibility flag])
$1],
[$2])
])
AC_DEFUN([CC_FUNC_EXPECT], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([if compiler has __builtin_expect function],
[cc_cv_func_expect],
[ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
AC_COMPILE_IFELSE([AC_LANG_SOURCE(
[int some_function() {
int a = 3;
return (int)__builtin_expect(a, 3);
}])],
[cc_cv_func_expect=yes],
[cc_cv_func_expect=no])
CFLAGS="$ac_save_CFLAGS"
])
AS_IF([test "x$cc_cv_func_expect" = "xyes"],
[AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1,
[Define this if the compiler supports __builtin_expect() function])
$1],
[$2])
])
AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([highest __attribute__ ((aligned ())) supported],
[cc_cv_attribute_aligned],
[ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
for cc_attribute_align_try in 64 32 16 8 4 2; do
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
int main() {
static char c __attribute__ ((aligned($cc_attribute_align_try))) = 0;
return c;
}])], [cc_cv_attribute_aligned=$cc_attribute_align_try; break])
done
CFLAGS="$ac_save_CFLAGS"
])
if test "x$cc_cv_attribute_aligned" != "x"; then
AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], [$cc_cv_attribute_aligned],
[Define the highest alignment supported])
fi
])

View File

@@ -5,103 +5,41 @@
*
* (c) Lawrence Manning, 2001
* Contains library functions.
*
* $Id: main.c,v 1.6.2.9 2005/12/09 22:31:41 franck78 Exp $
*
*/
#include "libsmooth.h"
extern FILE *flog;
extern char *mylog;
extern char **ctr;
/* reboot(). reboots. */
void reboot(void)
{
mysystem("/etc/halt");
}
#include <libintl.h>
#define _(x) dgettext("libsmooth", x)
/* stripnl(). Replaces \n with \0 */
void stripnl(char *s)
{
void stripnl(char *s) {
char *t = strchr(s, '\n');
if (t) *t = '\0';
if (t)
*t = '\0';
}
/* Little wrapper. */
int mysystem(char *command)
{
int mysystem(const char* output, const char *command) {
char mycommand[STRING_SIZE];
snprintf(mycommand, STRING_SIZE, "%s >>%s 2>>%s", command, mylog, mylog);
fprintf(flog, "Running command: %s\n", command);
if (output == NULL)
output = "/dev/null";
snprintf(mycommand, sizeof(mycommand), "%s >>%s 2>&1", command, output);
FILE* f = fopen(output, "w+");
fprintf(f, "Running command: %s\n", command);
fclose(f);
return system(mycommand);
}
void errorbox(char *message)
{
newtWinMessage(ctr[TR_ERROR], ctr[TR_OK], message);
void errorbox(char *message) {
newtWinMessage(_("Error"), _("OK"), message);
}
int scrollmsgbox(int width, int height, char *title, char *text, ...)
{
int rc = 0;
newtComponent t, f, b, c;
char *buf = NULL;
char checkbox;
int size = 0;
int i = 0;
va_list args;
va_start(args, text);
do {
size += 40000;
if (buf) free(buf);
buf = malloc(size);
i = vsnprintf(buf, size, text, args);
} while (i == size);
va_end(args);
newtCenteredWindow(width, height, title);
b = newtCompactButton(width - 15 ,height - 2, ctr[TR_OK]);
c = newtCheckbox(3, height - 2, ctr[TR_LICENSE_ACCEPT], ' ', " *", &checkbox);
t = newtTextbox(1, 1, width - 2, height - 4, NEWT_TEXTBOX_WRAP+NEWT_TEXTBOX_SCROLL);
newtTextboxSetText(t, buf);
f = newtForm(NULL, NULL, 0);
free(buf);
newtFormAddComponent(f, c);
newtFormAddComponent(f, b);
newtFormAddComponent(f, t);
newtRunForm(f);
if (checkbox=='*') rc=1;
newtFormDestroy(f);
return rc;
}
int disclaimerbox(char *message)
{
int rc;
char title[STRING_SIZE];
sprintf (title, "%s v%s - %s", NAME, VERSION, SLOGAN);
rc = scrollmsgbox(75, 20, title, message);
newtPopWindow();
return rc;
}
void statuswindow(int width, int height, char *title, char *text, ...)
{
void statuswindow(int width, int height, const char *title, const char *text, ...) {
newtComponent t, f;
char *buf = NULL;
int size = 0;
@@ -134,39 +72,37 @@ void statuswindow(int width, int height, char *title, char *text, ...)
newtFormDestroy(f);
}
int runcommandwithstatus(char *command, char *message)
{
int rc;
char title[STRING_SIZE];
sprintf (title, "%s v%s - %s", NAME, VERSION, SLOGAN);
int runcommandwithstatus(const char *command, const char* title, const char *message, const char* output) {
statuswindow(60, 4, title, message);
rc = mysystem(command);
int rc = mysystem(output, command);
newtPopWindow();
return rc;
}
int runhiddencommandwithstatus(char *command, char *message)
{
int rc;
char title[STRING_SIZE];
char mycommand[STRING_SIZE];
sprintf (title, "%s v%s - %s", NAME, VERSION, SLOGAN);
int runhiddencommandwithstatus(const char *command, const char* title, const char *message, const char* output) {
statuswindow(60, 4, title, message);
snprintf(mycommand, STRING_SIZE, "%s >>%s 2>>%s", command, mylog, mylog);
fprintf(flog, "Running command: ***** HIDDEN *****\n");
rc = system(mycommand);
int rc = mysystem(output, command);
newtPopWindow();
return rc;
}
int splashWindow(const char* title, const char* message, unsigned int timeout) {
statuswindow(60, 4, title, message);
// Wait so the user can read this message
sleep(timeout);
newtPopWindow();
return 0;
}
/* This one borrowed from redhat installer. */
int runcommandwithprogress(int width, int height, char *title, char *command,
int lines, char *text, ...)
{
int runcommandwithprogress(int width, int height, const char *title, const char *command,
int lines, char *text, ...) {
newtComponent t, f, s;
char *buf = NULL;
int size = 0;
@@ -206,10 +142,7 @@ int runcommandwithprogress(int width, int height, char *title, char *command,
newtDrawForm(f);
newtRefresh();
snprintf(mycommand, STRING_SIZE, "%s 2>>%s", command, mylog);
fprintf(flog, "Running command: %s\n", command);
if (!(p = popen(command, "r")))
{
rc = 1;
@@ -217,13 +150,11 @@ int runcommandwithprogress(int width, int height, char *title, char *command,
}
setvbuf(p, NULL, _IOLBF, 255);
while (fgets(buffer, STRING_SIZE, p))
{
while (fgets(buffer, STRING_SIZE, p)) {
newtScaleSet(s, ++progress);
newtRefresh();
fprintf(flog, "%s", buffer);
}
rc = pclose(p);
EXIT:
@@ -233,15 +164,14 @@ EXIT:
return rc;
}
int checkformodule(char *module)
{
int checkformodule(const char *module) {
FILE *file;
char buffer[STRING_SIZE];
int result = 0;
if (!(file = fopen("/proc/modules", "r")))
{
fprintf(flog, "Unable to open /proc/modules in checkformodule()\n");
fprintf(stderr, "Unable to open /proc/modules in checkformodule()\n");
return 0;
}
@@ -294,8 +224,7 @@ int _replace_string(char string[], char *from, char *to)
return 0;
}
int replace(char filename1[], char *from, char *to)
{
int replace(char filename1[], char *from, char *to) {
FILE *file1, *file2;
char filename2[1000];
char temp[1000];
@@ -312,7 +241,6 @@ int replace(char filename1[], char *from, char *to)
/* Start reading in lines */
while (fgets (temp, 1000, file1) != NULL) {
if (strlen(to) > 0) {
/* Replace string */
ret = _replace_string (temp, from, to);
@@ -336,20 +264,6 @@ int replace(char filename1[], char *from, char *to)
return (ret);
}
/* Include enabled languages */
#ifdef LANG_EN_ONLY
#include "lang_en.c"
#else
#include "lang_de.c"
#include "lang_en.c"
#include "lang_es.c"
#include "lang_fr.c"
#include "lang_pl.c"
#include "lang_ru.c"
#include "lang_nl.c"
#include "lang_tr.c"
#endif
// returns a pointer to the actual running version number of IPFire.
// Successive updates increase effective version but not VERSION !
char g_title[STRING_SIZE] = "";
@@ -359,8 +273,6 @@ char* get_version(void) {
fgets (g_title, STRING_SIZE, f_title);
fclose (f_title);
if (g_title[strlen(g_title) - 1] == '\n') g_title[strlen(g_title) - 1] = '\0';
} else {
sprintf (g_title, "%s %s - %s", NAME, VERSION, SLOGAN);
}
return g_title;
}

View File

@@ -18,10 +18,9 @@
# #
###############################################################################
CC=gcc
CFLAGS=-O2 -Wall
COMPILE=$(CC) $(CFLAGS)
CC = gcc
CFLAGS ?= -O2 -Wall
LIBS = -lsmooth -lnewt
PROGS = iowrap
SUID_PROGS = squidctrl sshctrl ipfirereboot \
@@ -35,128 +34,24 @@ SUID_PROGS = squidctrl sshctrl ipfirereboot \
getconntracktable wirelessclient dnsmasqctrl torctrl
SUID_UPDX = updxsetperms
install : all
OBJS = $(patsubst %,%.o,$(PROGS) $(SUID_PROGS))
install: all
install -m 755 $(PROGS) /usr/local/bin
install -m 4750 -g nobody $(SUID_PROGS) /usr/local/bin
all : $(PROGS) $(SUID_PROGS)
all: $(PROGS) $(SUID_PROGS)
clean :
clean:
-rm -f $(PROGS) $(SUID_PROGS) *.o core
######
% : %.c
$(COMPILE) $< setuid.o -o $@
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
setuid.o: setuid.c setuid.h
$(COMPILE) $< -c -o $@
$(CC) $(CFLAGS) -c $< -o $@
$(SUID_PROGS): setuid.o
$(PROGS): setuid.o
logwatch: logwatch.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ logwatch.c setuid.o ../install+setup/libsmooth/varval.o -o $@
openvpnctrl: openvpnctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ openvpnctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
qosctrl: qosctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ qosctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
redctrl: redctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ redctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
extrahdctrl: extrahdctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ extrahdctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
upnpctrl: upnpctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ upnpctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
sambactrl: sambactrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ sambactrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
tripwirectrl: tripwirectrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ tripwirectrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
smartctrl: smartctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ smartctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
clamavctrl: clamavctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ clamavctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
firewallctrl: firewallctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ firewallctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
timectrl: timectrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ timectrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
launch-ether-wake: launch-ether-wake.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ launch-ether-wake.c setuid.o ../install+setup/libsmooth/varval.o -o $@
rebuildhosts: rebuildhosts.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ rebuildhosts.c setuid.o ../install+setup/libsmooth/varval.o -o $@
applejuicectrl: applejuicectrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ applejuicectrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
dhcpctrl: dhcpctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ dhcpctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
sshctrl: sshctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ sshctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
squidctrl: squidctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ squidctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
snortctrl: snortctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ snortctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
wirelessctrl: wirelessctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ wirelessctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
ipsecctrl: ipsecctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ ipsecctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
getipstat: getipstat.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ getipstat.c setuid.o ../install+setup/libsmooth/varval.o -o $@
pakfire: pakfire.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ pakfire.c setuid.o ../install+setup/libsmooth/varval.o -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 $@
addonctrl: addonctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ addonctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
syslogdctrl: syslogdctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ syslogdctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
wlanapctrl: wlanapctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ wlanapctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
setaliases: setaliases.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ setaliases.c setuid.o ../install+setup/libsmooth/varval.o -o $@
fireinfoctrl: fireinfoctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ fireinfoctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
rebuildroutes: rebuildroutes.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ rebuildroutes.c setuid.o ../install+setup/libsmooth/varval.o -o $@
getconntracktable: getconntracktable.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ getconntracktable.c setuid.o ../install+setup/libsmooth/varval.o -o $@
wirelessclient: wirelessclient.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ wirelessclient.c setuid.o ../install+setup/libsmooth/varval.o -o $@
dnsmasqctrl: dnsmasqctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ dnsmasqctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
torctrl: torctrl.c setuid.o ../install+setup/libsmooth/varval.o
$(COMPILE) -I../install+setup/libsmooth/ torctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
$(PROGS) $(SUID_PROGS): setuid.o | $(OBJS)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.o $< $(LIBS)

View File

@@ -17,7 +17,7 @@
# along with IPFire; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
# Copyright (C) 2007-2013 IPFire-Team <info@ipfire.org>. #
# Copyright (C) 2007-2014 IPFire-Team <info@ipfire.org>. #
# #
############################################################################
#
@@ -31,6 +31,7 @@ if [ ! -z $ROOTUUID ]; then
ROOT="UUID=$ROOTUUID"
fi
if [ -f /boot/grub/grub.conf ]; then
MOUNT=`grep "kernel" /boot/grub/grub.conf | tail -n 1`
# Nur den letzten Parameter verwenden
echo $MOUNT > /dev/null
@@ -63,6 +64,8 @@ echo "title IPFire (PAE-Kernel)" >> /boot/grub/grub.conf
echo " kernel /vmlinuz-$KVER-ipfire-pae root=$ROOT panic=10$console $MOUNT" >> /boot/grub/grub.conf
echo " initrd /ipfirerd-$KVER-pae.img" >> /boot/grub/grub.conf
echo " savedefault $ENTRY" >> /boot/grub/grub.conf
fi
#
# Create new module depency
#
@@ -70,11 +73,15 @@ depmod -a $KVER-ipfire-pae
#
# Made initramdisk
#
/sbin/dracut --force --verbose /boot/ipfirerd-$KVER-pae.img $KVER-ipfire-pae
/usr/bin/dracut --force --xz /boot/initramfs-$KVER-ipfire-pae.img $KVER-ipfire-pae
# Default pae and request a reboot if pae is supported
#
# Update grub2 config
#
grub-mkconfig > /boot/grub/grub.cfg
# request a reboot if pae is supported
if [ ! "$(grep "^flags.* pae " /proc/cpuinfo)" == "" ]; then
grub-set-default $ENTRY
touch /var/run/need_reboot
fi
sync && sync

View File

@@ -17,15 +17,18 @@
# along with IPFire; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
# Copyright (C) 2007-2013 IPFire-Team <info@ipfire.org>. #
# Copyright (C) 2007-2014 IPFire-Team <info@ipfire.org>. #
# #
############################################################################
#
. /opt/pakfire/lib/functions.sh
remove_files
rm -rf /boot/ipfirerd-*-pae.img
rm -rf /boot/initramfs-*-pae.img
rm -rf /boot/vmlinuz-*-pae
rm -rf /lib/modules/*-ipfire-pae
cp /boot/grub/grub.conf /boot/grub/grub-backup-pae_uninstall.conf
sed -i "/title IPFire (PAE-Kernel)/,+3d" /boot/grub/grub.conf
grub-set-default 1
if [ -f /boot/grub/grub.conf ]; then
cp /boot/grub/grub.conf /boot/grub/grub-backup-pae_uninstall.conf
sed -i "/title IPFire (PAE-Kernel)/,+3d" /boot/grub/grub.conf
fi
grub-mkconfig > /boot/grub/grub.cfg
sync && sync

View File

@@ -17,7 +17,7 @@
# along with IPFire; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
# Copyright (C) 2007-2013 IPFire-Team <info@ipfire.org>. #
# Copyright (C) 2007-2014 IPFire-Team <info@ipfire.org>. #
# #
############################################################################
#

View File

@@ -1,452 +0,0 @@
diff -Naur Pound-2.6.orig/config.c Pound-2.6.reneg-ciphers-altnames-nosslv2/config.c
--- Pound-2.6.orig/config.c 2011-12-28 14:57:45.000000000 +0100
+++ Pound-2.6.reneg-ciphers-altnames-nosslv2/config.c 2012-02-15 21:49:39.000000000 +0100
@@ -31,6 +31,8 @@
#include "pound.h"
+#include <openssl/x509v3.h>
+
#ifdef MISS_FACILITYNAMES
/* This is lifted verbatim from the Linux sys/syslog.h */
@@ -76,7 +78,7 @@
static regex_t Err414, Err500, Err501, Err503, MaxRequest, HeadRemove, RewriteLocation, RewriteDestination;
static regex_t Service, ServiceName, URL, HeadRequire, HeadDeny, BackEnd, Emergency, Priority, HAport, HAportAddr;
static regex_t Redirect, RedirectN, TimeOut, Session, Type, TTL, ID, DynScale;
-static regex_t ClientCert, AddHeader, Ciphers, CAlist, VerifyList, CRLlist, NoHTTPS11;
+static regex_t ClientCert, AddHeader, DisableSSLv2, SSLAllowClientRenegotiation, SSLHonorCipherOrder, Ciphers, CAlist, VerifyList, CRLlist, NoHTTPS11;
static regex_t Grace, Include, ConnTO, IgnoreCase, HTTPS, HTTPSCert, Disabled, Threads, CNName;
static regmatch_t matches[5];
@@ -167,6 +169,53 @@
}
}
+unsigned char **
+get_subjectaltnames(X509 *x509, unsigned int *count)
+{
+ *count = 0;
+ unsigned int local_count = 0;
+ unsigned char **result = NULL;
+
+ STACK_OF(GENERAL_NAME) *san_stack = (STACK_OF(GENERAL_NAME)*)X509_get_ext_d2i(x509, NID_subject_alt_name, NULL, NULL);
+
+ unsigned char *temp[sk_GENERAL_NAME_num(san_stack)];
+
+ GENERAL_NAME *name = NULL;
+ while(sk_GENERAL_NAME_num(san_stack) > 0)
+ {
+ name = sk_GENERAL_NAME_pop(san_stack);
+
+ switch(name->type)
+ {
+ case GEN_DNS:
+ temp[local_count] = strndup(ASN1_STRING_data(name->d.dNSName), ASN1_STRING_length(name->d.dNSName)+1);
+ if(temp[local_count] == NULL) { conf_err("out of memory"); }
+ local_count++;
+ break;
+ default:
+ logmsg(LOG_INFO, "unsupported subjectAltName type encountered: %i", name->type);
+ }
+
+ GENERAL_NAME_free(name);
+ }
+
+ result = (unsigned char**)malloc(sizeof(unsigned char*)*local_count);
+ if(result == NULL) { conf_err("out of memory"); }
+ int i;
+ for(i = 0;i < local_count; i++)
+ {
+ result[i] = strndup(temp[i], strlen(temp[i])+1);
+ if(result[i] == NULL) { conf_err("out of memory"); }
+
+ free(temp[i]);
+ }
+ *count = local_count;
+
+ sk_GENERAL_NAME_pop_free(san_stack, GENERAL_NAME_free);
+
+ return result;
+}
+
/*
* parse a back-end
*/
@@ -289,9 +338,12 @@
} else if(!regexec(&HTTPS, lin, 4, matches, 0)) {
if((res->ctx = SSL_CTX_new(SSLv23_client_method())) == NULL)
conf_err("SSL_CTX_new failed - aborted");
+ SSL_CTX_set_app_data(res->ctx, res);
SSL_CTX_set_verify(res->ctx, SSL_VERIFY_NONE, NULL);
SSL_CTX_set_mode(res->ctx, SSL_MODE_AUTO_RETRY);
SSL_CTX_set_options(res->ctx, SSL_OP_ALL);
+ SSL_CTX_clear_options(res->ctx, SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION);
+ SSL_CTX_clear_options(res->ctx, SSL_OP_LEGACY_SERVER_CONNECT);
sprintf(lin, "%d-Pound-%ld", getpid(), random());
SSL_CTX_set_session_id_context(res->ctx, (unsigned char *)lin, strlen(lin));
SSL_CTX_set_tmp_rsa_callback(res->ctx, RSA_tmp_callback);
@@ -299,6 +351,7 @@
} else if(!regexec(&HTTPSCert, lin, 4, matches, 0)) {
if((res->ctx = SSL_CTX_new(SSLv23_client_method())) == NULL)
conf_err("SSL_CTX_new failed - aborted");
+ SSL_CTX_set_app_data(res->ctx, res);
lin[matches[1].rm_eo] = '\0';
if(SSL_CTX_use_certificate_chain_file(res->ctx, lin + matches[1].rm_so) != 1)
conf_err("SSL_CTX_use_certificate_chain_file failed - aborted");
@@ -309,6 +362,8 @@
SSL_CTX_set_verify(res->ctx, SSL_VERIFY_NONE, NULL);
SSL_CTX_set_mode(res->ctx, SSL_MODE_AUTO_RETRY);
SSL_CTX_set_options(res->ctx, SSL_OP_ALL);
+ SSL_CTX_clear_options(res->ctx, SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION);
+ SSL_CTX_clear_options(res->ctx, SSL_OP_LEGACY_SERVER_CONNECT);
sprintf(lin, "%d-Pound-%ld", getpid(), random());
SSL_CTX_set_session_id_context(res->ctx, (unsigned char *)lin, strlen(lin));
SSL_CTX_set_tmp_rsa_callback(res->ctx, RSA_tmp_callback);
@@ -805,13 +860,23 @@
/* logmsg(LOG_DEBUG, "Received SSL SNI Header for servername %s", servername); */
SSL_set_SSL_CTX(ssl, NULL);
- for(pc = ctx; pc; pc = pc->next)
+ for(pc = ctx; pc; pc = pc->next) {
if(fnmatch(pc->server_name, server_name, 0) == 0) {
/* logmsg(LOG_DEBUG, "Found cert for %s", servername); */
SSL_set_SSL_CTX(ssl, pc->ctx);
return SSL_TLSEXT_ERR_OK;
}
-
+ else if(pc->subjectAltNameCount > 0 && pc->subjectAltNames != NULL) {
+ int i;
+ for(i = 0; i < pc->subjectAltNameCount; i++) {
+ if(fnmatch(pc->subjectAltNames[i], server_name, 0) == 0) {
+ SSL_set_SSL_CTX(ssl, pc->ctx);
+ return SSL_TLSEXT_ERR_OK;
+ }
+ }
+ }
+ }
+
/* logmsg(LOG_DEBUG, "No match for %s, default used", server_name); */
SSL_set_SSL_CTX(ssl, ctx->ctx);
return SSL_TLSEXT_ERR_OK;
@@ -829,11 +894,15 @@
SERVICE *svc;
MATCHER *m;
int has_addr, has_port, has_other;
+ long ssl_op_enable, ssl_op_disable;
struct hostent *host;
struct sockaddr_in in;
struct sockaddr_in6 in6;
POUND_CTX *pc;
+ ssl_op_enable = SSL_OP_ALL;
+ ssl_op_disable = SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION | SSL_OP_LEGACY_SERVER_CONNECT;
+
if((res = (LISTENER *)malloc(sizeof(LISTENER))) == NULL)
conf_err("ListenHTTPS config: out of memory - aborted");
memset(res, 0, sizeof(LISTENER));
@@ -844,6 +913,8 @@
res->err500 = "An internal server error occurred. Please try again later.";
res->err501 = "This method may not be used.";
res->err503 = "The service is not available. Please try again later.";
+ res->allow_client_reneg = 0;
+ res->disable_ssl_v2 = 0;
res->log_level = log_level;
if(regcomp(&res->verb, xhttp[0], REG_ICASE | REG_NEWLINE | REG_EXTENDED))
conf_err("xHTTP bad default pattern - aborted");
@@ -959,6 +1030,9 @@
fclose(fcert);
memset(server_name, '\0', MAXBUF);
X509_NAME_oneline(X509_get_subject_name(x509), server_name, MAXBUF - 1);
+ pc->subjectAltNameCount = 0;
+ pc->subjectAltNames = NULL;
+ pc->subjectAltNames = get_subjectaltnames(x509, &(pc->subjectAltNameCount));
X509_free(x509);
if(!regexec(&CNName, server_name, 4, matches, 0)) {
server_name[matches[1].rm_eo] = '\0';
@@ -1029,6 +1103,25 @@
strcat(res->add_head, "\r\n");
strcat(res->add_head, lin + matches[1].rm_so);
}
+ } else if(!regexec(&DisableSSLv2, lin, 4, matches, 0)) {
+ res->disable_ssl_v2 = 1;
+ } else if(!regexec(&SSLAllowClientRenegotiation, lin, 4, matches, 0)) {
+ res->allow_client_reneg = atoi(lin + matches[1].rm_so);
+ if (res->allow_client_reneg == 2) {
+ ssl_op_enable |= SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION;
+ ssl_op_disable &= ~SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION;
+ } else {
+ ssl_op_disable |= SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION;
+ ssl_op_enable &= ~SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION;
+ }
+ } else if(!regexec(&SSLHonorCipherOrder, lin, 4, matches, 0)) {
+ if (atoi(lin + matches[1].rm_so)) {
+ ssl_op_enable |= SSL_OP_CIPHER_SERVER_PREFERENCE;
+ ssl_op_disable &= ~SSL_OP_CIPHER_SERVER_PREFERENCE;
+ } else {
+ ssl_op_disable |= SSL_OP_CIPHER_SERVER_PREFERENCE;
+ ssl_op_enable &= ~SSL_OP_CIPHER_SERVER_PREFERENCE;
+ }
} else if(!regexec(&Ciphers, lin, 4, matches, 0)) {
has_other = 1;
if(res->ctx == NULL)
@@ -1105,12 +1198,19 @@
conf_err("ListenHTTPS: can't set SNI callback");
#endif
for(pc = res->ctx; pc; pc = pc->next) {
+ SSL_CTX_set_app_data(pc->ctx, res);
SSL_CTX_set_mode(pc->ctx, SSL_MODE_AUTO_RETRY);
- SSL_CTX_set_options(pc->ctx, SSL_OP_ALL);
+ SSL_CTX_set_options(pc->ctx, ssl_op_enable);
+ SSL_CTX_clear_options(pc->ctx, ssl_op_disable);
+ if (res->disable_ssl_v2 == 1)
+ {
+ SSL_CTX_set_options(pc->ctx, SSL_OP_NO_SSLv2);
+ }
sprintf(lin, "%d-Pound-%ld", getpid(), random());
SSL_CTX_set_session_id_context(pc->ctx, (unsigned char *)lin, strlen(lin));
SSL_CTX_set_tmp_rsa_callback(pc->ctx, RSA_tmp_callback);
SSL_CTX_set_tmp_dh_callback(pc->ctx, DH_tmp_callback);
+ SSL_CTX_set_info_callback(pc->ctx, SSLINFO_callback);
}
return res;
} else {
@@ -1305,6 +1405,9 @@
|| regcomp(&DynScale, "^[ \t]*DynScale[ \t]+([01])[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
|| regcomp(&ClientCert, "^[ \t]*ClientCert[ \t]+([0-3])[ \t]+([1-9])[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
|| regcomp(&AddHeader, "^[ \t]*AddHeader[ \t]+\"(.+)\"[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
+ || regcomp(&SSLAllowClientRenegotiation, "^[ \t]*SSLAllowClientRenegotiation[ \t]+([012])[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
+ || regcomp(&DisableSSLv2, "^[ \t]*DisableSSLv2[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
+ || regcomp(&SSLHonorCipherOrder, "^[ \t]*SSLHonorCipherOrder[ \t]+([01])[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
|| regcomp(&Ciphers, "^[ \t]*Ciphers[ \t]+\"(.+)\"[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
|| regcomp(&CAlist, "^[ \t]*CAlist[ \t]+\"(.+)\"[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
|| regcomp(&VerifyList, "^[ \t]*VerifyList[ \t]+\"(.+)\"[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
@@ -1463,6 +1566,9 @@
regfree(&DynScale);
regfree(&ClientCert);
regfree(&AddHeader);
+ regfree(&SSLAllowClientRenegotiation);
+ regfree(&DisableSSLv2);
+ regfree(&SSLHonorCipherOrder);
regfree(&Ciphers);
regfree(&CAlist);
regfree(&VerifyList);
diff -Naur Pound-2.6.orig/http.c Pound-2.6.reneg-ciphers-altnames-nosslv2/http.c
--- Pound-2.6.orig/http.c 2011-12-28 14:57:45.000000000 +0100
+++ Pound-2.6.reneg-ciphers-altnames-nosslv2/http.c 2012-02-15 21:44:46.000000000 +0100
@@ -246,6 +246,11 @@
static int err_to = -1;
+typedef struct {
+ int timeout;
+ RENEG_STATE *reneg_state;
+} BIO_ARG;
+
/*
* Time-out for client read/gets
* the SSL manual says not to do it, but it works well enough anyway...
@@ -253,18 +258,32 @@
static long
bio_callback(BIO *const bio, const int cmd, const char *argp, int argi, long argl, long ret)
{
+ BIO_ARG *bio_arg;
struct pollfd p;
int to, p_res, p_err;
if(cmd != BIO_CB_READ && cmd != BIO_CB_WRITE)
return ret;
+ //logmsg(LOG_NOTICE, "bio callback");
/* a time-out already occured */
- if((to = *((int *)BIO_get_callback_arg(bio)) * 1000) < 0) {
+ if((bio_arg = (BIO_ARG*)BIO_get_callback_arg(bio))==NULL) return ret;
+ if((to = bio_arg->timeout * 1000) < 0) {
errno = ETIMEDOUT;
return -1;
}
+ /* Renegotiations */
+ //logmsg(LOG_NOTICE, "RENEG STATE %d", bio_arg->reneg_state==NULL?-1:*bio_arg->reneg_state);
+ if (bio_arg->reneg_state != NULL && *bio_arg->reneg_state == RENEG_ABORT) {
+ logmsg(LOG_NOTICE, "REJECTING renegotiated session");
+ errno = ECONNABORTED;
+ return -1;
+ }
+
+ //logmsg(LOG_NOTICE, "TO %d", to);
+ if (to == 0) return ret;
+
for(;;) {
memset(&p, 0, sizeof(p));
BIO_get_fd(bio, &p.fd);
@@ -299,7 +318,7 @@
return -1;
case 0:
/* timeout - mark the BIO as unusable for the future */
- BIO_set_callback_arg(bio, (char *)&err_to);
+ bio_arg->timeout = err_to;
#ifdef EBUG
logmsg(LOG_WARNING, "(%lx) CALLBACK timeout poll after %d secs: %s",
pthread_self(), to / 1000, strerror(p_err));
@@ -503,7 +522,14 @@
regmatch_t matches[4];
struct linger l;
double start_req, end_req;
+ RENEG_STATE reneg_state;
+ BIO_ARG ba1, ba2;
+ reneg_state = RENEG_INIT;
+ ba1.reneg_state = &reneg_state;
+ ba2.reneg_state = &reneg_state;
+ ba1.timeout = 0;
+ ba2.timeout = 0;
from_host = ((thr_arg *)arg)->from_host;
memcpy(&from_host_addr, from_host.ai_addr, from_host.ai_addrlen);
from_host.ai_addr = (struct sockaddr *)&from_host_addr;
@@ -512,6 +538,8 @@
free(((thr_arg *)arg)->from_host.ai_addr);
free(arg);
+ if(lstn->allow_client_reneg) reneg_state = RENEG_ALLOW;
+
n = 1;
setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (void *)&n, sizeof(n));
l.l_onoff = 1;
@@ -535,10 +563,11 @@
close(sock);
return;
}
- if(lstn->to > 0) {
- BIO_set_callback_arg(cl, (char *)&lstn->to);
+ //if(lstn->to > 0) {
+ ba1.timeout = lstn->to;
+ BIO_set_callback_arg(cl, (char *)&ba1);
BIO_set_callback(cl, bio_callback);
- }
+ //}
if(lstn->ctx != NULL) {
if((ssl = SSL_new(lstn->ctx->ctx)) == NULL) {
@@ -547,6 +576,7 @@
BIO_free_all(cl);
return;
}
+ SSL_set_app_data(ssl, &reneg_state);
SSL_set_bio(ssl, cl, cl);
if((bb = BIO_new(BIO_f_ssl())) == NULL) {
logmsg(LOG_WARNING, "(%lx) BIO_new(Bio_f_ssl()) failed", pthread_self());
@@ -848,7 +878,8 @@
}
BIO_set_close(be, BIO_CLOSE);
if(backend->to > 0) {
- BIO_set_callback_arg(be, (char *)&backend->to);
+ ba2.timeout = backend->to;
+ BIO_set_callback_arg(be, (char *)&ba2);
BIO_set_callback(be, bio_callback);
}
if(backend->ctx != NULL) {
diff -Naur Pound-2.6.orig/pound.8 Pound-2.6.reneg-ciphers-altnames-nosslv2/pound.8
--- Pound-2.6.orig/pound.8 2011-12-28 14:57:45.000000000 +0100
+++ Pound-2.6.reneg-ciphers-altnames-nosslv2/pound.8 2012-02-15 21:44:46.000000000 +0100
@@ -501,6 +501,19 @@
and
.I SSL_CTX_set_cipher_list(3).
.TP
+\fBSSLHonorCipherOrder\fR 0|1
+If this value is 1, the server will broadcast a preference to use \fBCiphers\fR in the
+order supplied in the \fBCiphers\fR directive. If the value is 0, the server will treat
+the Ciphers list as the list of Ciphers it will accept, but no preference will be
+indicated. Default value is 0.
+.TP
+\fBSSLAllowClientRenegotiation\fR 0|1|2
+If this value is 0, client initiated renegotiation will be disabled. This will mitigate
+DoS exploits based on client renegotiation, regardless of the patch status of clients and
+servers related to "Secure renegotiation". If the value is 1, secure renegotiation is
+supported. If the value is 2, insecure renegotiation is supported, with unpatched
+clients. /fBThis can lead to a DoS and a Man in the Middle attack!/fR Default value is 0.
+.TP
\fBCAlist\fR "CAcert_file"
Set the list of "trusted" CA's for this server. The CAcert_file is a file containing
a sequence of CA certificates (PEM format). The names of the defined CA certificates
diff -Naur Pound-2.6.orig/pound.h Pound-2.6.reneg-ciphers-altnames-nosslv2/pound.h
--- Pound-2.6.orig/pound.h 2011-12-28 14:57:45.000000000 +0100
+++ Pound-2.6.reneg-ciphers-altnames-nosslv2/pound.h 2012-02-15 21:49:39.000000000 +0100
@@ -380,6 +380,8 @@
SSL_CTX *ctx;
char *server_name;
struct _pound_ctx *next;
+ unsigned int subjectAltNameCount;
+ unsigned char **subjectAltNames;
} POUND_CTX;
/* Listener definition */
@@ -404,6 +406,8 @@
int rewr_dest; /* rewrite destination header */
int disabled; /* true if the listener is disabled */
int log_level; /* log level for this listener */
+ int allow_client_reneg; /* Allow Client SSL Renegotiation */
+ int disable_ssl_v2; /* Disable SSL version 2 */
SERVICE *services;
struct _listener *next;
} LISTENER;
@@ -419,6 +423,9 @@
struct _thr_arg *next;
} thr_arg; /* argument to processing threads: socket, origin */
+/* Track SSL handshare/renegotiation so we can reject client-renegotiations. */
+typedef enum { RENEG_INIT=0, RENEG_REJECT, RENEG_ALLOW, RENEG_ABORT } RENEG_STATE;
+
/* Header types */
#define HEADER_ILLEGAL -1
#define HEADER_OTHER 0
@@ -591,6 +598,11 @@
extern DH *DH_tmp_callback(SSL *, int, int);
/*
+ * Renegotiation callback
+ */
+extern void SSLINFO_callback(const SSL *s, int where, int rc);
+
+/*
* expiration stuff
*/
#ifndef EXPIRE_TO
diff -Naur Pound-2.6.orig/svc.c Pound-2.6.reneg-ciphers-altnames-nosslv2/svc.c
--- Pound-2.6.orig/svc.c 2011-12-28 14:57:45.000000000 +0100
+++ Pound-2.6.reneg-ciphers-altnames-nosslv2/svc.c 2012-02-15 21:44:46.000000000 +0100
@@ -1797,3 +1797,34 @@
close(ctl);
}
}
+
+void
+SSLINFO_callback(const SSL *ssl, int where, int rc)
+{
+ RENEG_STATE *reneg_state;
+
+ /* Get our thr_arg where we're tracking this connection info */
+ if ((reneg_state = (RENEG_STATE *)SSL_get_app_data(ssl)) == NULL) return;
+
+ /* If we're rejecting renegotiations, move to ABORT if Client Hello is being read. */
+ if ((where & SSL_CB_ACCEPT_LOOP) && *reneg_state == RENEG_REJECT) {
+ int state = SSL_get_state(ssl);
+
+ if (state == SSL3_ST_SR_CLNT_HELLO_A || state == SSL23_ST_SR_CLNT_HELLO_A) {
+ *reneg_state = RENEG_ABORT;
+ logmsg(LOG_WARNING,"rejecting client initiated renegotiation");
+ }
+ }
+ else if (where & SSL_CB_HANDSHAKE_DONE && *reneg_state == RENEG_INIT) {
+ // Reject any followup renegotiations
+ *reneg_state = RENEG_REJECT;
+ }
+
+ //if (where & SSL_CB_HANDSHAKE_START) logmsg(LOG_DEBUG, "handshake start");
+ //else if (where & SSL_CB_HANDSHAKE_DONE) logmsg(LOG_DEBUG, "handshake done");
+ //else if (where & SSL_CB_LOOP) logmsg(LOG_DEBUG, "loop");
+ //else if (where & SSL_CB_READ) logmsg(LOG_DEBUG, "read");
+ //else if (where & SSL_CB_WRITE) logmsg(LOG_DEBUG, "write");
+ //else if (where & SSL_CB_ALERT) logmsg(LOG_DEBUG, "alert");
+}
+

View File

@@ -1,38 +0,0 @@
--- compat-drivers-3.8-1-u/include/linux/compat-3.8.h.orig 2013-05-16 20:35:27.046386772 +0200
+++ compat-drivers-3.8-1-u/include/linux/compat-3.8.h 2013-05-16 20:35:39.219767618 +0200
@@ -24,35 +24,6 @@
/* This backports:
*
- * commit 4b20db3de8dab005b07c74161cb041db8c5ff3a7
- * Author: Thomas Hellstrom <thellstrom@vmware.com>
- * Date: Tue Nov 6 11:31:49 2012 +0000
- *
- * kref: Implement kref_get_unless_zero v3
- */
-/**
- * kref_get_unless_zero - Increment refcount for object unless it is zero.
- * @kref: object.
- *
- * Return non-zero if the increment succeeded. Otherwise return 0.
- *
- * This function is intended to simplify locking around refcounting for
- * objects that can be looked up from a lookup structure, and which are
- * removed from that lookup structure in the object destructor.
- * Operations on such objects require at least a read lock around
- * lookup + kref_get, and a write lock around kref_put + remove from lookup
- * structure. Furthermore, RCU implementations become extremely tricky.
- * With a lookup followed by a kref_get_unless_zero *with return value check*
- * locking in the kref_put path can be deferred to the actual removal from
- * the lookup structure and RCU lookups become trivial.
- */
-static inline int __must_check kref_get_unless_zero(struct kref *kref)
-{
- return atomic_add_unless(&kref->refcount, 1, 0);
-}
-
-/* This backports:
- *
* commit 83e68189745ad931c2afd45d8ee3303929233e7f
* Author: Matt Fleming <matt.fleming@intel.com>
* Date: Wed Nov 14 09:42:35 2012 +0000

View File

@@ -1,28 +0,0 @@
diff -Naur compat-wireless-2.6.34.org/include/linux/usb/usbnet.h compat-wireless-2.6.34/include/linux/usb/usbnet.h
--- compat-wireless-2.6.34.org/include/linux/usb/usbnet.h 2010-05-18 03:12:10.000000000 +0200
+++ compat-wireless-2.6.34/include/linux/usb/usbnet.h 2010-05-22 22:18:34.000000000 +0200
@@ -214,4 +214,24 @@
extern void usbnet_get_drvinfo (struct net_device *, struct ethtool_drvinfo *);
extern int usbnet_nway_reset(struct net_device *net);
+/* messaging support includes the interface name, so it must not be
+ * used before it has one ... notably, in minidriver bind() calls.
+ */
+#ifdef DEBUG
+#define devdbg(usbnet, fmt, arg...) \
+ printk(KERN_DEBUG "%s: " fmt "\n" , (usbnet)->net->name , ## arg)
+#else
+#define devdbg(usbnet, fmt, arg...) \
+ ({ if (0) printk(KERN_DEBUG "%s: " fmt "\n" , (usbnet)->net->name , \
+ ## arg); 0; })
+#endif
+
+#define deverr(usbnet, fmt, arg...) \
+ printk(KERN_ERR "%s: " fmt "\n" , (usbnet)->net->name , ## arg)
+#define devwarn(usbnet, fmt, arg...) \
+ printk(KERN_WARNING "%s: " fmt "\n" , (usbnet)->net->name , ## arg)
+
+#define devinfo(usbnet, fmt, arg...) \
+ printk(KERN_INFO "%s: " fmt "\n" , (usbnet)->net->name , ## arg); \
+
#endif /* __LINUX_USB_USBNET_H */

View File

@@ -1,14 +0,0 @@
diff -Naur compat-wireless-2.6.39-1-sn.org/compat/kfifo.c compat-wireless-2.6.39-1-sn/compat/kfifo.c
--- compat-wireless-2.6.39-1-sn.org/compat/kfifo.c 2011-05-24 01:43:48.000000000 +0200
+++ compat-wireless-2.6.39-1-sn/compat/kfifo.c 2011-05-24 17:20:06.956818313 +0200
@@ -27,6 +27,10 @@
#include <linux/uaccess.h>
#include <linux/kfifo.h>
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Stefani Seibold <stefani@seibold.net>");
+MODULE_DESCRIPTION("A generic kernel FIFO implementation");
+
/*
* internal helper to calculate the unused elements in a fifo
*/

View File

@@ -1,16 +0,0 @@
diff -Naur compat-wireless-3.5-1-snpc.org/config.mk compat-wireless-3.5/config.mk
--- compat-wireless-3.5-1-snpc.org/config.mk 2012-07-31 17:22:29.000000000 -0400
+++ compat-wireless-3.5/config.mk 2012-08-13 13:09:55.913234600 -0400
@@ -246,10 +246,12 @@
# mac80211 test driver
export CONFIG_MAC80211_HWSIM=m
+ifdef CONFIG_PCI
export CONFIG_ATH5K=m
# export CONFIG_ATH5K_DEBUG=y
# export CONFIG_ATH5K_TRACER=y
# export CONFIG_ATH5K_AHB=y
+endif #CONFIG_PCI
export CONFIG_ATH9K=m
export CONFIG_ATH9K_HW=m

File diff suppressed because it is too large Load Diff

View File

@@ -1,68 +0,0 @@
From patchwork Mon Jul 30 06:52:21 2012
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: codel: refine one condition to avoid a nul rec_inv_sqrt
Date: Sun, 29 Jul 2012 20:52:21 -0000
From: Eric Dumazet <eric.dumazet@gmail.com>
X-Patchwork-Id: 173968
Message-Id: <1343631141.2626.13293.camel@edumazet-glaptop>
To: David Miller <davem@davemloft.net>
Cc: netdev <netdev@vger.kernel.org>, Anton Mich <lp2s1h@gmail.com>
From: Eric Dumazet <edumazet@google.com>
One condition before codel_Newton_step() was not good if
we never left the dropping state for a flow. As a result
rec_inv_sqrt was 0, instead of the ~0 initial value.
codel control law was then set to a very aggressive mode, dropping
many packets before reaching 'target' and recovering from this problem.
To keep codel_vars_init() as efficient as possible, refine
the condition to make sure rec_inv_sqrt initial value is correct
Many thanks to Anton Mich for discovering the issue and suggesting
a fix.
Reported-by: Anton Mich <lp2s1h@gmail.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
---
include/net/codel.h | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/include/net/codel.h b/include/net/codel.h
index 550debf..389cf62 100644
--- a/include/net/codel.h
+++ b/include/net/codel.h
@@ -305,6 +305,8 @@ static struct sk_buff *codel_dequeue(struct Qdisc *sch,
}
}
} else if (drop) {
+ u32 delta;
+
if (params->ecn && INET_ECN_set_ce(skb)) {
stats->ecn_mark++;
} else {
@@ -320,9 +322,11 @@ static struct sk_buff *codel_dequeue(struct Qdisc *sch,
* assume that the drop rate that controlled the queue on the
* last cycle is a good starting point to control it now.
*/
- if (codel_time_before(now - vars->drop_next,
+ delta = vars->count - vars->lastcount;
+ if (delta > 1 &&
+ codel_time_before(now - vars->drop_next,
16 * params->interval)) {
- vars->count = (vars->count - vars->lastcount) | 1;
+ vars->count = delta;
/* we dont care if rec_inv_sqrt approximation
* is not very precise :
* Next Newton steps will correct it quadratically.

View File

@@ -1,56 +0,0 @@
--- coreutils-6.0.orig/lib/utimens.c 2006-06-11 09:14:31.000000000 +0200
+++ coreutils-6.0/lib/utimens.c 2007-07-17 00:41:08.000000000 +0200
@@ -75,7 +75,7 @@
Return 0 on success, -1 (setting errno) on failure. */
int
-futimens (int fd ATTRIBUTE_UNUSED,
+cu_futimens (int fd ATTRIBUTE_UNUSED,
char const *file, struct timespec const timespec[2])
{
/* There's currently no interface to set file timestamps with
@@ -168,5 +168,5 @@
int
utimens (char const *file, struct timespec const timespec[2])
{
- return futimens (-1, file, timespec);
+ return cu_futimens (-1, file, timespec);
}
--- coreutils-6.0.orig/lib/utimens.h 2004-11-23 21:41:51.000000000 +0100
+++ coreutils-6.0/lib/utimens.h 2007-07-17 00:41:31.000000000 +0200
@@ -1,3 +1,3 @@
#include "timespec.h"
-int futimens (int, char const *, struct timespec const [2]);
+int cu_futimens (int, char const *, struct timespec const [2]);
int utimens (char const *, struct timespec const [2]);
--- coreutils-6.0.orig/src/copy.c 2007-07-16 23:18:42.000000000 +0200
+++ coreutils-6.0/src/copy.c 2007-07-17 00:43:10.000000000 +0200
@@ -648,7 +648,7 @@
timespec[0] = get_stat_atime (src_sb);
timespec[1] = get_stat_mtime (src_sb);
- if (futimens (dest_desc, dst_name, timespec) != 0)
+ if (cu_futimens (dest_desc, dst_name, timespec) != 0)
{
error (0, errno, _("preserving times for %s"), quote (dst_name));
if (x->require_preserve)
--- coreutils-6.0.orig/src/touch.c 2005-11-02 11:01:07.000000000 +0100
+++ coreutils-6.0/src/touch.c 2007-07-17 00:43:51.000000000 +0200
@@ -167,7 +167,7 @@
if (amtime_now)
{
- /* Pass NULL to futimens so it will not fail if we have
+ /* Pass NULL to cu_futimens so it will not fail if we have
write access to the file, but don't own it. */
t = NULL;
}
@@ -182,7 +182,7 @@
t = timespec;
}
- ok = (futimens (fd, (fd == STDOUT_FILENO ? NULL : file), t) == 0);
+ ok = (cu_futimens (fd, (fd == STDOUT_FILENO ? NULL : file), t) == 0);
if (fd == STDIN_FILENO)
{

File diff suppressed because it is too large Load Diff

View File

@@ -1,51 +0,0 @@
From b50508742035812f8ae8671eedc6623fac53f51d Mon Sep 17 00:00:00 2001
From: Jim Meyering <jim@meyering.net>
Date: Thu, 22 Jun 2006 12:50:32 +0000
Subject: [PATCH] * src/tee.c (tee_files): Rename from tee, to avoid conflict with
the function in glibc's <fcntl.h>. Reported by Andreas Schwab.
---
src/tee.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/tee.c b/src/tee.c
index f99642d..f612181 100644
--- a/src/tee.c
+++ b/src/tee.c
@@ -1,5 +1,5 @@
/* tee - read from standard input and write to standard output and files.
- Copyright (C) 85,1990-2005 Free Software Foundation, Inc.
+ Copyright (C) 85,1990-2006 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -31,7 +31,7 @@
#define AUTHORS "Mike Parker", "Richard M. Stallman", "David MacKenzie"
-static bool tee (int nfiles, const char **files);
+static bool tee_files (int nfiles, const char **files);
/* If true, append to output files rather than truncating them. */
static bool append;
@@ -121,7 +121,7 @@ main (int argc, char **argv)
/* Do *not* warn if tee is given no file arguments.
POSIX requires that it work when given no arguments. */
- ok = tee (argc - optind, (const char **) &argv[optind]);
+ ok = tee_files (argc - optind, (const char **) &argv[optind]);
if (close (STDIN_FILENO) != 0)
error (EXIT_FAILURE, errno, _("standard input"));
@@ -133,7 +133,7 @@ main (int argc, char **argv)
Return true if successful. */
static bool
-tee (int nfiles, const char **files)
+tee_files (int nfiles, const char **files)
{
FILE **descriptors;
char buffer[BUFSIZ];
--
1.7.2.5

View File

@@ -1,272 +0,0 @@
Submitted By: Matthew Burgess <matthew at linuxfromscratch dot org>
Date: 2006-03-15
Initial Package Version: 5.94
Origin: original suppress_hotname_uptame_kill_su patch (Robert Connolly)
Upstream Status: N/A
Description: This patch supresses the building of uptime, and kill. The su
command is built so the testsuite can run, use './src/su', but it will not
be installed. Also see:
http://www.linuxfromscratch.org/patches/downloads/coreutils/
coreutils-5.0-dupes-2.patch
diff -Naur coreutils-5.94.orig/AUTHORS coreutils-5.94/AUTHORS
--- coreutils-5.94.orig/AUTHORS 2004-11-03 23:10:50.000000000 +0000
+++ coreutils-5.94/AUTHORS 2006-03-15 22:20:49.000000000 +0000
@@ -34,7 +34,6 @@
hostname: Jim Meyering
id: Arnold Robbins, David MacKenzie
join: Mike Haertel
-kill: Paul Eggert
link: Michael Stone
ln: Mike Parker, David MacKenzie
logname: FIXME: unknown
@@ -83,7 +82,6 @@
unexpand: David MacKenzie
uniq: Richard Stallman, David MacKenzie
unlink: Michael Stone
-uptime: Joseph Arceneaux, David MacKenzie, Kaveh Ghazi
users: Joseph Arceneaux, David MacKenzie
vdir: Richard Stallman, David MacKenzie
wc: Paul Rubin, David MacKenzie
diff -Naur coreutils-5.94.orig/Makefile.in coreutils-5.94/Makefile.in
--- coreutils-5.94.orig/Makefile.in 2006-02-13 12:52:03.000000000 +0000
+++ coreutils-5.94/Makefile.in 2006-03-15 22:20:49.000000000 +0000
@@ -148,7 +148,7 @@
$(top_srcdir)/m4/ullong_max.m4 $(top_srcdir)/m4/ulonglong.m4 \
$(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
$(top_srcdir)/m4/unlink-busy.m4 $(top_srcdir)/m4/unlinkdir.m4 \
- $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/uptime.m4 \
+ $(top_srcdir)/m4/unlocked-io.m4 \
$(top_srcdir)/m4/userspec.m4 $(top_srcdir)/m4/utimbuf.m4 \
$(top_srcdir)/m4/utime.m4 $(top_srcdir)/m4/utimecmp.m4 \
$(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes-null.m4 \
diff -Naur coreutils-5.94.orig/README coreutils-5.94/README
--- coreutils-5.94.orig/README 2005-09-28 18:34:26.000000000 +0000
+++ coreutils-5.94/README 2006-03-15 22:20:49.000000000 +0000
@@ -9,11 +9,11 @@
[ basename cat chgrp chmod chown chroot cksum comm cp csplit cut date dd
df dir dircolors dirname du echo env expand expr factor false fmt fold
- ginstall groups head hostid hostname id join kill link ln logname ls
+ ginstall groups head hostid hostname id join link ln logname ls
md5sum mkdir mkfifo mknod mv nice nl nohup od paste pathchk pinky pr
printenv printf ptx pwd readlink rm rmdir seq sha1sum shred sleep sort
split stat stty su sum sync tac tail tee test touch tr true tsort tty
- uname unexpand uniq unlink uptime users vdir wc who whoami yes
+ uname unexpand uniq unlink users vdir wc who whoami yes
See the file NEWS for a list of major changes in the current release.
diff -Naur coreutils-5.94.orig/configure coreutils-5.94/configure
--- coreutils-5.94.orig/configure 2006-02-13 12:52:04.000000000 +0000
+++ coreutils-5.94/configure 2006-03-15 22:20:49.000000000 +0000
@@ -50418,8 +50418,7 @@
{ echo "$as_me:$LINENO: result: $gnulib_cv_have_boot_time" >&5
echo "${ECHO_T}$gnulib_cv_have_boot_time" >&6; }
if test $gnulib_cv_have_boot_time = yes; then
- OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS uptime\$(EXEEXT)"
- MAN="$MAN uptime.1"
+echo "uptime is suppressed"
fi
diff -Naur coreutils-5.94.orig/man/Makefile.in coreutils-5.94/man/Makefile.in
--- coreutils-5.94.orig/man/Makefile.in 2006-02-13 12:51:58.000000000 +0000
+++ coreutils-5.94/man/Makefile.in 2006-03-15 22:20:50.000000000 +0000
@@ -142,7 +142,7 @@
$(top_srcdir)/m4/ullong_max.m4 $(top_srcdir)/m4/ulonglong.m4 \
$(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
$(top_srcdir)/m4/unlink-busy.m4 $(top_srcdir)/m4/unlinkdir.m4 \
- $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/uptime.m4 \
+ $(top_srcdir)/m4/unlocked-io.m4 \
$(top_srcdir)/m4/userspec.m4 $(top_srcdir)/m4/utimbuf.m4 \
$(top_srcdir)/m4/utime.m4 $(top_srcdir)/m4/utimecmp.m4 \
$(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes-null.m4 \
@@ -303,13 +303,13 @@
basename.1 cat.1 chgrp.1 chmod.1 chown.1 chroot.1 cksum.1 comm.1 \
cp.1 csplit.1 cut.1 date.1 dd.1 df.1 dir.1 dircolors.1 dirname.1 du.1 \
echo.1 env.1 expand.1 expr.1 factor.1 false.1 fmt.1 fold.1 groups.1 \
- head.1 hostid.1 hostname.1 id.1 install.1 join.1 kill.1 \
+ head.1 hostid.1 hostname.1 id.1 install.1 join.1 \
link.1 ln.1 logname.1 \
ls.1 md5sum.1 mkdir.1 mkfifo.1 mknod.1 mv.1 nice.1 nl.1 nohup.1 od.1 \
paste.1 pathchk.1 pinky.1 pr.1 printenv.1 printf.1 ptx.1 pwd.1 readlink.1 \
rm.1 rmdir.1 seq.1 sha1sum.1 shred.1 sleep.1 sort.1 split.1 stat.1 stty.1 \
- su.1 sum.1 sync.1 tac.1 tail.1 tee.1 test.1 touch.1 tr.1 true.1 tsort.1 \
- tty.1 uname.1 unexpand.1 uniq.1 unlink.1 uptime.1 users.1 vdir.1 wc.1 \
+ sum.1 sync.1 tac.1 tail.1 tee.1 test.1 touch.1 tr.1 true.1 tsort.1 \
+ tty.1 uname.1 unexpand.1 uniq.1 unlink.1 users.1 vdir.1 wc.1 \
who.1 whoami.1 yes.1
man_aux = $(dist_man_MANS:.1=.x)
@@ -575,7 +575,6 @@
id.1: $(common_dep) $(srcdir)/id.x ../src/id.c
install.1: $(common_dep) $(srcdir)/install.x ../src/install.c
join.1: $(common_dep) $(srcdir)/join.x ../src/join.c
-kill.1: $(common_dep) $(srcdir)/kill.x ../src/kill.c
link.1: $(common_dep) $(srcdir)/link.x ../src/link.c
ln.1: $(common_dep) $(srcdir)/ln.x ../src/ln.c
logname.1: $(common_dep) $(srcdir)/logname.x ../src/logname.c
@@ -608,7 +607,6 @@
split.1: $(common_dep) $(srcdir)/split.x ../src/split.c
stat.1: $(common_dep) $(srcdir)/stat.x ../src/stat.c
stty.1: $(common_dep) $(srcdir)/stty.x ../src/stty.c
-su.1: $(common_dep) $(srcdir)/su.x ../src/su.c
sum.1: $(common_dep) $(srcdir)/sum.x ../src/sum.c
sync.1: $(common_dep) $(srcdir)/sync.x ../src/sync.c
tac.1: $(common_dep) $(srcdir)/tac.x ../src/tac.c
@@ -624,7 +622,6 @@
unexpand.1: $(common_dep) $(srcdir)/unexpand.x ../src/unexpand.c
uniq.1: $(common_dep) $(srcdir)/uniq.x ../src/uniq.c
unlink.1: $(common_dep) $(srcdir)/unlink.x ../src/unlink.c
-uptime.1: $(common_dep) $(srcdir)/uptime.x ../src/uptime.c
users.1: $(common_dep) $(srcdir)/users.x ../src/users.c
vdir.1: $(common_dep) $(srcdir)/vdir.x ../src/ls.c
wc.1: $(common_dep) $(srcdir)/wc.x ../src/wc.c
@@ -656,7 +653,7 @@
check-x-vs-1:
PATH=../src$(PATH_SEPARATOR)$$PATH; export PATH; \
t=ls-files.$$$$; \
- (cd $(srcdir) && ls -1 *.x) | sed 's/\.x$$//' | $(ASSORT) > $$t;\
+ (cd $(srcdir) && ls -1 *.x) | grep -v -e 'kill.x' -e 'su.x' -e 'uptime.x' | sed 's/\.x$$//' | $(ASSORT) > $$t;\
echo $(dist_man_MANS) | tr -s ' ' '\n' | sed 's/\.1$$//' \
| $(ASSORT) | diff - $$t || { rm $$t; exit 1; }; \
rm $$t
diff -Naur coreutils-5.94.orig/src/Makefile.in coreutils-5.94/src/Makefile.in
--- coreutils-5.94.orig/src/Makefile.in 2006-02-13 13:08:11.000000000 +0000
+++ coreutils-5.94/src/Makefile.in 2006-03-15 22:20:50.000000000 +0000
@@ -39,7 +39,7 @@
host_triplet = @host@
EXTRA_PROGRAMS = chroot$(EXEEXT) df$(EXEEXT) hostid$(EXEEXT) \
nice$(EXEEXT) pinky$(EXEEXT) stty$(EXEEXT) su$(EXEEXT) \
- uname$(EXEEXT) uptime$(EXEEXT) users$(EXEEXT) who$(EXEEXT)
+ uname$(EXEEXT) users$(EXEEXT) who$(EXEEXT)
bin_PROGRAMS = [$(EXEEXT) chgrp$(EXEEXT) chown$(EXEEXT) chmod$(EXEEXT) \
cp$(EXEEXT) dd$(EXEEXT) dircolors$(EXEEXT) du$(EXEEXT) \
ginstall$(EXEEXT) link$(EXEEXT) ln$(EXEEXT) dir$(EXEEXT) \
@@ -56,7 +56,7 @@
uniq$(EXEEXT) wc$(EXEEXT) basename$(EXEEXT) date$(EXEEXT) \
dirname$(EXEEXT) echo$(EXEEXT) env$(EXEEXT) expr$(EXEEXT) \
factor$(EXEEXT) false$(EXEEXT) hostname$(EXEEXT) id$(EXEEXT) \
- kill$(EXEEXT) logname$(EXEEXT) pathchk$(EXEEXT) \
+ logname$(EXEEXT) pathchk$(EXEEXT) \
printenv$(EXEEXT) printf$(EXEEXT) pwd$(EXEEXT) seq$(EXEEXT) \
sleep$(EXEEXT) tee$(EXEEXT) test$(EXEEXT) true$(EXEEXT) \
tty$(EXEEXT) whoami$(EXEEXT) yes$(EXEEXT) $(am__EXEEXT_1) \
@@ -169,7 +169,7 @@
$(top_srcdir)/m4/ullong_max.m4 $(top_srcdir)/m4/ulonglong.m4 \
$(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
$(top_srcdir)/m4/unlink-busy.m4 $(top_srcdir)/m4/unlinkdir.m4 \
- $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/uptime.m4 \
+ $(top_srcdir)/m4/unlocked-io.m4 \
$(top_srcdir)/m4/userspec.m4 $(top_srcdir)/m4/utimbuf.m4 \
$(top_srcdir)/m4/utime.m4 $(top_srcdir)/m4/utimecmp.m4 \
$(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes-null.m4 \
@@ -350,11 +350,6 @@
join_LDADD = $(LDADD)
join_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
../lib/libcoreutils.a
-kill_SOURCES = kill.c
-kill_OBJECTS = kill.$(OBJEXT)
-kill_LDADD = $(LDADD)
-kill_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
- ../lib/libcoreutils.a
link_SOURCES = link.c
link_OBJECTS = link.$(OBJEXT)
link_LDADD = $(LDADD)
@@ -577,9 +572,6 @@
unlink_LDADD = $(LDADD)
unlink_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
../lib/libcoreutils.a
-uptime_SOURCES = uptime.c
-uptime_OBJECTS = uptime.$(OBJEXT)
-uptime_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
users_SOURCES = users.c
users_OBJECTS = users.$(OBJEXT)
users_LDADD = $(LDADD)
@@ -622,28 +614,28 @@
csplit.c cut.c date.c dd.c df.c $(dir_SOURCES) dircolors.c \
dirname.c du.c echo.c env.c expand.c expr.c factor.c false.c \
fmt.c fold.c $(ginstall_SOURCES) head.c hostid.c hostname.c \
- id.c join.c kill.c link.c ln.c logname.c $(ls_SOURCES) \
+ id.c join.c link.c ln.c logname.c $(ls_SOURCES) \
$(md5sum_SOURCES) mkdir.c mkfifo.c mknod.c $(mv_SOURCES) \
nice.c nl.c nohup.c od.c paste.c pathchk.c pinky.c pr.c \
printenv.c printf.c ptx.c pwd.c readlink.c $(rm_SOURCES) \
rmdir.c seq.c setuidgid.c $(sha1sum_SOURCES) shred.c sleep.c \
sort.c split.c stat.c stty.c su.c sum.c sync.c tac.c tail.c \
tee.c test.c touch.c tr.c true.c tsort.c tty.c uname.c \
- unexpand.c uniq.c unlink.c uptime.c users.c $(vdir_SOURCES) \
+ unexpand.c uniq.c unlink.c users.c $(vdir_SOURCES) \
wc.c who.c whoami.c yes.c
DIST_SOURCES = $(__SOURCES) basename.c cat.c $(chgrp_SOURCES) chmod.c \
$(chown_SOURCES) chroot.c cksum.c comm.c $(cp_SOURCES) \
csplit.c cut.c date.c dd.c df.c $(dir_SOURCES) dircolors.c \
dirname.c du.c echo.c env.c expand.c expr.c factor.c false.c \
fmt.c fold.c $(ginstall_SOURCES) head.c hostid.c hostname.c \
- id.c join.c kill.c link.c ln.c logname.c $(ls_SOURCES) \
+ id.c join.c link.c ln.c logname.c $(ls_SOURCES) \
$(md5sum_SOURCES) mkdir.c mkfifo.c mknod.c $(mv_SOURCES) \
nice.c nl.c nohup.c od.c paste.c pathchk.c pinky.c pr.c \
printenv.c printf.c ptx.c pwd.c readlink.c $(rm_SOURCES) \
rmdir.c seq.c setuidgid.c $(sha1sum_SOURCES) shred.c sleep.c \
sort.c split.c stat.c stty.c su.c sum.c sync.c tac.c tail.c \
tee.c test.c touch.c tr.c true.c tsort.c tty.c uname.c \
- unexpand.c uniq.c unlink.c uptime.c users.c $(vdir_SOURCES) \
+ unexpand.c uniq.c unlink.c users.c $(vdir_SOURCES) \
wc.c who.c whoami.c yes.c
HEADERS = $(noinst_HEADERS)
ETAGS = etags
@@ -840,7 +832,6 @@
nanosec_libs = $(LDADD) $(POW_LIB) $(LIB_NANOSLEEP)
sleep_LDADD = $(nanosec_libs)
tail_LDADD = $(nanosec_libs)
-uptime_LDADD = $(LDADD) $(GETLOADAVG_LIBS)
su_LDADD = $(LDADD) $(LIB_CRYPT)
SUFFIXES = .sh
installed_su = $(DESTDIR)$(bindir)/`echo su|sed '$(transform)'`
@@ -1076,9 +1067,6 @@
join$(EXEEXT): $(join_OBJECTS) $(join_DEPENDENCIES)
@rm -f join$(EXEEXT)
$(LINK) $(join_LDFLAGS) $(join_OBJECTS) $(join_LDADD) $(LIBS)
-kill$(EXEEXT): $(kill_OBJECTS) $(kill_DEPENDENCIES)
- @rm -f kill$(EXEEXT)
- $(LINK) $(kill_LDFLAGS) $(kill_OBJECTS) $(kill_LDADD) $(LIBS)
link$(EXEEXT): $(link_OBJECTS) $(link_DEPENDENCIES)
@rm -f link$(EXEEXT)
$(LINK) $(link_LDFLAGS) $(link_OBJECTS) $(link_LDADD) $(LIBS)
@@ -1226,9 +1214,6 @@
unlink$(EXEEXT): $(unlink_OBJECTS) $(unlink_DEPENDENCIES)
@rm -f unlink$(EXEEXT)
$(LINK) $(unlink_LDFLAGS) $(unlink_OBJECTS) $(unlink_LDADD) $(LIBS)
-uptime$(EXEEXT): $(uptime_OBJECTS) $(uptime_DEPENDENCIES)
- @rm -f uptime$(EXEEXT)
- $(LINK) $(uptime_LDFLAGS) $(uptime_OBJECTS) $(uptime_LDADD) $(LIBS)
users$(EXEEXT): $(users_OBJECTS) $(users_DEPENDENCIES)
@rm -f users$(EXEEXT)
$(LINK) $(users_LDFLAGS) $(users_OBJECTS) $(users_LDADD) $(LIBS)
@@ -1322,7 +1307,6 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/id.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/install.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/join.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lbracket.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ln.Po@am__quote@
@@ -1378,7 +1362,6 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unexpand.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uniq.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unlink.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uptime.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/users.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/who.Po@am__quote@
@@ -1606,7 +1589,7 @@
&& can_create_suid_root_executable=yes; \
rm -f $$TMPFILE; \
if test $$can_create_suid_root_executable = yes; then \
- $(INSTALL_SU); \
+ echo "Installation of su is suppressed"; \
else \
echo "WARNING: insufficient access; not installing su"; \
echo "NOTE: to install su, run 'make install-root' as root"; \

View File

@@ -1,204 +0,0 @@
Submitted By: Robert Connolly <robert@linuxfromscratch.org> (ashes)
Date: 2005-11-13
Initial Package Version: 5.93
Upstream Status: pending
Origin: Scot McPherson and Zack Winkles
Description: Fix the output of uname once and for all. This is the position independent
version.
$ uname -m # This always worked.
i686
$ uname -i # Used to report 'unknown'.
i386
$ uname -p # Likewise.
athlon-4
Now 'uname -p' can be used by GCC's mtune/mcpu and march options. For example:
CFLAGS="-march=$(uname -m) -mtune=$(uname -p)"
diff -Naur coreutils-5.93.orig/src/uname.c coreutils-5.93/src/uname.c
--- coreutils-5.93.orig/src/uname.c 2005-09-15 19:57:04.000000000 +0000
+++ coreutils-5.93/src/uname.c 2005-11-13 19:18:35.000000000 +0000
@@ -29,6 +29,26 @@
# include <sys/systeminfo.h>
#endif
+#ifdef linux
+/* Thanks to the ffmpeg team for this PIC version of cpuid() */
+#ifdef ARCH_X86_64
+# define REG_b "rbx"
+# define REG_S "rsi"
+#else
+# define REG_b "ebx"
+# define REG_S "esi"
+#endif
+#define cpuid(index,eax,ebx,ecx,edx)\
+ __asm __volatile\
+ ("mov %%"REG_b", %%"REG_S"\n\t"\
+ "cpuid\n\t"\
+ "xchg %%"REG_b", %%"REG_S\
+ : "=a" (eax), "=S" (ebx),\
+ "=c" (ecx), "=d" (edx)\
+ : "0" (index));
+int has_sse( void );
+#endif
+
#if HAVE_SYS_SYSCTL_H
# if HAVE_SYS_PARAM_H
# include <sys/param.h> /* needed for OpenBSD 3.0 */
@@ -256,6 +276,99 @@
if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor))
element = processor;
}
+#else
+ {
+ struct utsname u;
+ uname (&u);
+ element = u.machine;
+#ifdef linux
+/******************************************************************************
+ *
+ * Hello, major hack. I shouldn't have to do this. struct utsname should
+ * have another element with this info in it. There's probably a struct
+ * somewhere that has this info, I just don't know where it is.
+ *
+ *****************************************************************************/
+
+ if( !strcmp( element, "i586" ) || !strcmp( element, "i686" ) ) {
+ int eax, ebx, ecx, edx, unused;
+ int model, family, sse;
+
+ cpuid(0,unused,ebx,ecx,edx);
+ cpuid(1,eax,unused,unused,unused);
+ model = (eax >> 4) & 0xf;
+ family = (eax >> 8) & 0xf;
+
+ switch(ebx) {
+ case 0x756e6547: // Intel
+ switch( family ) {
+ case 5: // Pentium
+ if( model <= 3 )
+ element="pentium";
+ if( model > 3 )
+ element="pentium-mmx";
+ break;
+ case 6: // PentiumPro - Pentium III
+ if( model == 1 ) // Pentium Pro
+ element="pentiumpro";
+ if( ( model == 3 ) || ( model == 5 ) ||
+ ( model == 6 ) ) // Pentium II
+ element="pentium2";
+ if( ( model == 7 ) || ( model == 8 ) ||
+ ( model == 10 ) || ( model == 11 ) ) // These are all Pentium III
+ element="pentium3";
+ break;
+ case 15: // Pentium4
+ if( model == 3 ) // Prescott
+ element="prescott";
+ else
+ element="pentium4";
+ break;
+ default:
+ break;
+ } // end switch( family )
+ break;
+ case 0x68747541: // AMD
+ switch(family) {
+ case 5:
+ if( ( model == 0 ) || ( model == 1 ) ||
+ ( model == 2 ) || ( model == 3 ) ) // K5
+ element="i586";
+ if( ( model == 6 ) || ( model == 7 ) ) // K6
+ element="k6";
+ if( model == 8 ) // K6-2
+ element="k6-2";
+ if( model == 9 ) // K6-3
+ element="k6-3";
+ break;
+ case 6:
+ if( model <= 4 )
+ element="athlon";
+ if( model > 4 ) {
+ sse = has_sse();
+ if( sse == 0 )
+ element="athlon";
+ if( sse == 1 )
+ element="athlon-4";
+ }
+ break;
+ case 15:
+ element="athlon-4";
+ break;
+ default:
+ break;
+ } // end switch( family )
+ break;
+ case 0x69727943: // Cyrix
+ element="i386"; // who knows what cyrix supports, lets be safe
+ break;
+ default:
+ break;
+ } // end switch(ebx)
+ }
+
+#endif
+ }
#endif
#ifdef UNAME_PROCESSOR
if (element == unknown)
@@ -293,7 +406,7 @@
if (toprint & PRINT_HARDWARE_PLATFORM)
{
- char const *element = unknown;
+ char *element = unknown;
#if HAVE_SYSINFO && defined SI_PLATFORM
{
static char hardware_platform[257];
@@ -301,6 +414,15 @@
hardware_platform, sizeof hardware_platform))
element = hardware_platform;
}
+#else
+ {
+ struct utsname u;
+ uname (&u);
+ element = u.machine;
+ if (strlen (element) == 4 && element[0] == 'i' && element[2] == '8'
+ && element[3] == '6')
+ element[1] = '3';
+ }
#endif
#ifdef UNAME_HARDWARE_PLATFORM
if (element == unknown)
@@ -323,3 +445,29 @@
exit (EXIT_SUCCESS);
}
+
+#ifdef linux
+
+/******************************************************************************
+ *
+ * int has_sse( void )
+ * Checks Athlon CPU's to see if they support SSE.
+ *
+ *****************************************************************************/
+
+int has_sse( void )
+{
+ unsigned long edx, unused;
+ int sse;
+ cpuid(1,unused,unused,unused,edx);
+ // I think, I need this tested on a Duron with SSE
+ // and one without it.
+ sse = edx & 0x2000000;
+ if( sse == 0 ) {
+ return 0;
+ } else {
+ return 1;
+ }
+
+}
+#endif

View File

@@ -1,11 +0,0 @@
diff -Naur dhcp-3.1-ESV-R3.org/configure dhcp-3.1-ESV-R3/configure
--- dhcp-3.1-ESV-R3.org/configure 2005-03-17 21:14:55.000000000 +0100
+++ dhcp-3.1-ESV-R3/configure 2012-06-17 12:19:29.000000000 +0200
@@ -104,6 +104,7 @@
2) sysname=linux-2.2 ;;
*) sysname=linux-2.2 ;;
esac;;
+ 3) sysname=linux-2.2 ;;
esac;;
SunOS)
release=`uname -r`

View File

@@ -0,0 +1,25 @@
From 0b1008d367d44e77352134a4c5178f896f0db3e7 Mon Sep 17 00:00:00 2001
From: Simon Kelley <simon@thekelleys.org.uk>
Date: Sat, 27 Dec 2014 15:33:32 +0000
Subject: [PATCH] Bad packet protection.
---
src/dnssec.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/dnssec.c b/src/dnssec.c
index ed8cf89..026794b 100644
--- a/src/dnssec.c
+++ b/src/dnssec.c
@@ -805,7 +805,7 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in
{
while (*name_start != '.' && *name_start != 0)
name_start++;
- if (k != 1)
+ if (k != 1 && *name_start == '.')
name_start++;
}
--
1.7.10.4

View File

@@ -0,0 +1,85 @@
From 094b5c3d904bae9aeb3206d9f3b8348926b84975 Mon Sep 17 00:00:00 2001
From: Simon Kelley <simon@thekelleys.org.uk>
Date: Sun, 21 Dec 2014 16:11:52 +0000
Subject: [PATCH] Fix crash in DNSSEC code when attempting to verify large
RRs.
---
src/dnssec.c | 27 +++++++++++++++++++--------
1 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/src/dnssec.c b/src/dnssec.c
index 69bfc29..3208ac7 100644
--- a/src/dnssec.c
+++ b/src/dnssec.c
@@ -456,16 +456,27 @@ static u16 *get_desc(int type)
/* Return bytes of canonicalised rdata, when the return value is zero, the remaining
data, pointed to by *p, should be used raw. */
-static int get_rdata(struct dns_header *header, size_t plen, unsigned char *end, char *buff,
+static int get_rdata(struct dns_header *header, size_t plen, unsigned char *end, char *buff, int bufflen,
unsigned char **p, u16 **desc)
{
int d = **desc;
- (*desc)++;
-
/* No more data needs mangling */
if (d == (u16)-1)
- return 0;
+ {
+ /* If there's more data than we have space for, just return what fits,
+ we'll get called again for more chunks */
+ if (end - *p > bufflen)
+ {
+ memcpy(buff, *p, bufflen);
+ *p += bufflen;
+ return bufflen;
+ }
+
+ return 0;
+ }
+
+ (*desc)++;
if (d == 0 && extract_name(header, plen, p, buff, 1, 0))
/* domain-name, canonicalise */
@@ -560,7 +571,7 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int
if (left1 != 0)
memmove(buff1, buff1 + len1 - left1, left1);
- if ((len1 = get_rdata(header, plen, end1, buff1 + left1, &p1, &dp1)) == 0)
+ if ((len1 = get_rdata(header, plen, end1, buff1 + left1, MAXDNAME - left1, &p1, &dp1)) == 0)
{
quit = 1;
len1 = end1 - p1;
@@ -571,7 +582,7 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int
if (left2 != 0)
memmove(buff2, buff2 + len2 - left2, left2);
- if ((len2 = get_rdata(header, plen, end2, buff2 + left2, &p2, &dp2)) == 0)
+ if ((len2 = get_rdata(header, plen, end2, buff2 + left2, MAXDNAME - left2, &p2, &dp2)) == 0)
{
quit = 1;
len2 = end2 - p2;
@@ -808,7 +819,7 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in
/* canonicalise rdata and calculate length of same, use name buffer as workspace */
cp = p;
dp = rr_desc;
- for (len = 0; (seg = get_rdata(header, plen, end, name, &cp, &dp)) != 0; len += seg);
+ for (len = 0; (seg = get_rdata(header, plen, end, name, MAXDNAME, &cp, &dp)) != 0; len += seg);
len += end - cp;
len = htons(len);
hash->update(ctx, 2, (unsigned char *)&len);
@@ -816,7 +827,7 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in
/* Now canonicalise again and digest. */
cp = p;
dp = rr_desc;
- while ((seg = get_rdata(header, plen, end, name, &cp, &dp)))
+ while ((seg = get_rdata(header, plen, end, name, MAXDNAME, &cp, &dp)))
hash->update(ctx, seg, (unsigned char *)name);
if (cp != end)
hash->update(ctx, end - cp, cp);
--
1.7.10.4

View File

@@ -0,0 +1,365 @@
From fbc5205702c7f6f431d9f1043c553d7fb62ddfdb Mon Sep 17 00:00:00 2001
From: Simon Kelley <simon@thekelleys.org.uk>
Date: Tue, 23 Dec 2014 15:46:08 +0000
Subject: [PATCH] Fix problems validating NSEC3 and wildcards.
---
src/dnssec.c | 253 +++++++++++++++++++++++++++++-----------------------------
1 file changed, 128 insertions(+), 125 deletions(-)
diff --git a/src/dnssec.c b/src/dnssec.c
index 3208ac7..9350d3e 100644
--- a/src/dnssec.c
+++ b/src/dnssec.c
@@ -615,6 +615,7 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int
Return code:
STAT_SECURE if it validates.
STAT_SECURE_WILDCARD if it validates and is the result of wildcard expansion.
+ (In this case *wildcard_out points to the "body" of the wildcard within name.)
STAT_NO_SIG no RRsigs found.
STAT_INSECURE RRset empty.
STAT_BOGUS signature is wrong, bad packet.
@@ -625,8 +626,8 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int
name is unchanged on exit. keyname is used as workspace and trashed.
*/
-static int validate_rrset(time_t now, struct dns_header *header, size_t plen, int class,
- int type, char *name, char *keyname, struct blockdata *key, int keylen, int algo_in, int keytag_in)
+static int validate_rrset(time_t now, struct dns_header *header, size_t plen, int class, int type,
+ char *name, char *keyname, char **wildcard_out, struct blockdata *key, int keylen, int algo_in, int keytag_in)
{
static unsigned char **rrset = NULL, **sigs = NULL;
static int rrset_sz = 0, sig_sz = 0;
@@ -798,8 +799,16 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in
{
int k;
for (k = name_labels - labels; k != 0; k--)
- while (*name_start != '.' && *name_start != 0)
- name_start++;
+ {
+ while (*name_start != '.' && *name_start != 0)
+ name_start++;
+ if (k != 1)
+ name_start++;
+ }
+
+ if (wildcard_out)
+ *wildcard_out = name_start+1;
+
name_start--;
*name_start = '*';
}
@@ -974,7 +983,7 @@ int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t plen, ch
if (recp1->addr.ds.keylen == (int)hash->digest_size &&
(ds_digest = blockdata_retrieve(recp1->addr.key.keydata, recp1->addr.ds.keylen, NULL)) &&
memcmp(ds_digest, digest, recp1->addr.ds.keylen) == 0 &&
- validate_rrset(now, header, plen, class, T_DNSKEY, name, keyname, key, rdlen - 4, algo, keytag) == STAT_SECURE)
+ validate_rrset(now, header, plen, class, T_DNSKEY, name, keyname, NULL, key, rdlen - 4, algo, keytag) == STAT_SECURE)
{
valid = 1;
break;
@@ -1443,11 +1452,88 @@ static int base32_decode(char *in, unsigned char *out)
return p - out;
}
+static int check_nsec3_coverage(struct dns_header *header, size_t plen, int digest_len, unsigned char *digest, int type,
+ char *workspace1, char *workspace2, unsigned char **nsecs, int nsec_count)
+{
+ int i, hash_len, salt_len, base32_len, rdlen;
+ unsigned char *p, *psave;
+
+ for (i = 0; i < nsec_count; i++)
+ if ((p = nsecs[i]))
+ {
+ if (!extract_name(header, plen, &p, workspace1, 1, 0) ||
+ !(base32_len = base32_decode(workspace1, (unsigned char *)workspace2)))
+ return 0;
+
+ p += 8; /* class, type, TTL */
+ GETSHORT(rdlen, p);
+ psave = p;
+ p += 4; /* algo, flags, iterations */
+ salt_len = *p++; /* salt_len */
+ p += salt_len; /* salt */
+ hash_len = *p++; /* p now points to next hashed name */
+
+ if (!CHECK_LEN(header, p, plen, hash_len))
+ return 0;
+
+ if (digest_len == base32_len && hash_len == base32_len)
+ {
+ int rc = memcmp(workspace2, digest, digest_len);
+
+ if (rc == 0)
+ {
+ /* We found an NSEC3 whose hashed name exactly matches the query, so
+ we just need to check the type map. p points to the RR data for the record. */
+
+ int offset = (type & 0xff) >> 3;
+ int mask = 0x80 >> (type & 0x07);
+
+ p += hash_len; /* skip next-domain hash */
+ rdlen -= p - psave;
+
+ if (!CHECK_LEN(header, p, plen, rdlen))
+ return 0;
+
+ while (rdlen >= 2)
+ {
+ if (p[0] == type >> 8)
+ {
+ /* Does the NSEC3 say our type exists? */
+ if (offset < p[1] && (p[offset+2] & mask) != 0)
+ return STAT_BOGUS;
+
+ break; /* finshed checking */
+ }
+
+ rdlen -= p[1];
+ p += p[1];
+ }
+
+ return 1;
+ }
+ else if (rc <= 0)
+ {
+ /* Normal case, hash falls between NSEC3 name-hash and next domain name-hash,
+ wrap around case, name-hash falls between NSEC3 name-hash and end */
+ if (memcmp(p, digest, digest_len) > 0 || memcmp(workspace2, p, digest_len) > 0)
+ return 1;
+ }
+ else
+ {
+ /* wrap around case, name falls between start and next domain name */
+ if (memcmp(workspace2, p, digest_len) > 0 && memcmp(p, digest, digest_len) > 0)
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, unsigned char **nsecs, int nsec_count,
- char *workspace1, char *workspace2, char *name, int type)
+ char *workspace1, char *workspace2, char *name, int type, char *wildname)
{
unsigned char *salt, *p, *digest;
- int digest_len, i, iterations, salt_len, hash_len, base32_len, algo = 0;
+ int digest_len, i, iterations, salt_len, base32_len, algo = 0;
struct nettle_hash const *hash;
char *closest_encloser, *next_closest, *wildcard;
@@ -1520,7 +1606,14 @@ static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, uns
if (!(hash = hash_find("sha1")))
return STAT_BOGUS;
- /* Now, we need the "closest encloser NSEC3" */
+ if ((digest_len = hash_name(name, &digest, hash, salt, salt_len, iterations)) == 0)
+ return STAT_BOGUS;
+
+ if (check_nsec3_coverage(header, plen, digest_len, digest, type, workspace1, workspace2, nsecs, nsec_count))
+ return STAT_SECURE;
+
+ /* Can't find an NSEC3 which covers the name directly, we need the "closest encloser NSEC3"
+ or an answer inferred from a wildcard record. */
closest_encloser = name;
next_closest = NULL;
@@ -1529,6 +1622,9 @@ static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, uns
if (*closest_encloser == '.')
closest_encloser++;
+ if (wildname && hostname_isequal(closest_encloser, wildname))
+ break;
+
if ((digest_len = hash_name(closest_encloser, &digest, hash, salt, salt_len, iterations)) == 0)
return STAT_BOGUS;
@@ -1551,127 +1647,33 @@ static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, uns
}
while ((closest_encloser = strchr(closest_encloser, '.')));
- /* No usable NSEC3s */
- if (i == nsec_count)
+ if (!closest_encloser)
return STAT_BOGUS;
- if (!next_closest)
- {
- /* We found an NSEC3 whose hashed name exactly matches the query, so
- Now we just need to check the type map. p points to the RR data for the record. */
- int rdlen;
- unsigned char *psave;
- int offset = (type & 0xff) >> 3;
- int mask = 0x80 >> (type & 0x07);
-
- p += 8; /* class, type, TTL */
- GETSHORT(rdlen, p);
- psave = p;
- p += 5 + salt_len; /* algo, flags, iterations, salt_len, salt */
- hash_len = *p++;
- if (!CHECK_LEN(header, p, plen, hash_len))
- return STAT_BOGUS; /* bad packet */
- p += hash_len;
- rdlen -= p - psave;
-
- while (rdlen >= 2)
- {
- if (!CHECK_LEN(header, p, plen, rdlen))
- return STAT_BOGUS;
-
- if (p[0] == type >> 8)
- {
- /* Does the NSEC3 say our type exists? */
- if (offset < p[1] && (p[offset+2] & mask) != 0)
- return STAT_BOGUS;
-
- break; /* finshed checking */
- }
-
- rdlen -= p[1];
- p += p[1];
- }
-
- return STAT_SECURE;
- }
-
/* Look for NSEC3 that proves the non-existence of the next-closest encloser */
if ((digest_len = hash_name(next_closest, &digest, hash, salt, salt_len, iterations)) == 0)
return STAT_BOGUS;
- for (i = 0; i < nsec_count; i++)
- if ((p = nsecs[i]))
- {
- if (!extract_name(header, plen, &p, workspace1, 1, 0) ||
- !(base32_len = base32_decode(workspace1, (unsigned char *)workspace2)))
- return STAT_BOGUS;
-
- p += 15 + salt_len; /* class, type, TTL, rdlen, algo, flags, iterations, salt_len, salt */
- hash_len = *p++; /* p now points to next hashed name */
-
- if (!CHECK_LEN(header, p, plen, hash_len))
- return STAT_BOGUS;
-
- if (digest_len == base32_len && hash_len == base32_len)
- {
- if (memcmp(workspace2, digest, digest_len) <= 0)
- {
- /* Normal case, hash falls between NSEC3 name-hash and next domain name-hash,
- wrap around case, name-hash falls between NSEC3 name-hash and end */
- if (memcmp(p, digest, digest_len) > 0 || memcmp(workspace2, p, digest_len) > 0)
- return STAT_SECURE;
- }
- else
- {
- /* wrap around case, name falls between start and next domain name */
- if (memcmp(workspace2, p, digest_len) > 0 && memcmp(p, digest, digest_len) > 0)
- return STAT_SECURE;
- }
- }
- }
-
- /* Finally, check that there's no seat of wildcard synthesis */
- if (!(wildcard = strchr(next_closest, '.')) || wildcard == next_closest)
- return STAT_BOGUS;
-
- wildcard--;
- *wildcard = '*';
-
- if ((digest_len = hash_name(wildcard, &digest, hash, salt, salt_len, iterations)) == 0)
+ if (!check_nsec3_coverage(header, plen, digest_len, digest, type, workspace1, workspace2, nsecs, nsec_count))
return STAT_BOGUS;
- for (i = 0; i < nsec_count; i++)
- if ((p = nsecs[i]))
- {
- if (!extract_name(header, plen, &p, workspace1, 1, 0) ||
- !(base32_len = base32_decode(workspace1, (unsigned char *)workspace2)))
- return STAT_BOGUS;
-
- p += 15 + salt_len; /* class, type, TTL, rdlen, algo, flags, iterations, salt_len, salt */
- hash_len = *p++; /* p now points to next hashed name */
-
- if (!CHECK_LEN(header, p, plen, hash_len))
- return STAT_BOGUS;
-
- if (digest_len == base32_len && hash_len == base32_len)
- {
- if (memcmp(workspace2, digest, digest_len) <= 0)
- {
- /* Normal case, hash falls between NSEC3 name-hash and next domain name-hash,
- wrap around case, name-hash falls between NSEC3 name-hash and end */
- if (memcmp(p, digest, digest_len) > 0 || memcmp(workspace2, p, digest_len) > 0)
- return STAT_SECURE;
- }
- else
- {
- /* wrap around case, name falls between start and next domain name */
- if (memcmp(workspace2, p, digest_len) > 0 && memcmp(p, digest, digest_len) > 0)
- return STAT_SECURE;
- }
- }
- }
+ /* Finally, check that there's no seat of wildcard synthesis */
+ if (!wildname)
+ {
+ if (!(wildcard = strchr(next_closest, '.')) || wildcard == next_closest)
+ return STAT_BOGUS;
+
+ wildcard--;
+ *wildcard = '*';
+
+ if ((digest_len = hash_name(wildcard, &digest, hash, salt, salt_len, iterations)) == 0)
+ return STAT_BOGUS;
+
+ if (!check_nsec3_coverage(header, plen, digest_len, digest, type, workspace1, workspace2, nsecs, nsec_count))
+ return STAT_BOGUS;
+ }
- return STAT_BOGUS;
+ return STAT_SECURE;
}
/* Validate all the RRsets in the answer and authority sections of the reply (4035:3.2.3) */
@@ -1792,8 +1794,9 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch
struct all_addr a;
struct blockdata *key;
struct crec *crecp;
-
- rc = validate_rrset(now, header, plen, class1, type1, name, keyname, NULL, 0, 0, 0);
+ char *wildname;
+
+ rc = validate_rrset(now, header, plen, class1, type1, name, keyname, &wildname, NULL, 0, 0, 0);
if (rc == STAT_SECURE_WILDCARD)
{
@@ -1807,7 +1810,7 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch
if (nsec_type == T_NSEC)
rc = prove_non_existence_nsec(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, type1);
else
- rc = prove_non_existence_nsec3(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, type1);
+ rc = prove_non_existence_nsec3(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, type1, wildname);
if (rc != STAT_SECURE)
return rc;
@@ -1933,7 +1936,7 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch
if (nsec_type == T_NSEC)
return prove_non_existence_nsec(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, qtype);
else
- return prove_non_existence_nsec3(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, qtype);
+ return prove_non_existence_nsec3(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, qtype, NULL);
}
/* Chase the CNAME chain in the packet until the first record which _doesn't validate.
@@ -1980,7 +1983,7 @@ int dnssec_chase_cname(time_t now, struct dns_header *header, size_t plen, char
return STAT_INSECURE;
/* validate CNAME chain, return if insecure or need more data */
- rc = validate_rrset(now, header, plen, class, type, name, keyname, NULL, 0, 0, 0);
+ rc = validate_rrset(now, header, plen, class, type, name, keyname, NULL, NULL, 0, 0, 0);
if (rc != STAT_SECURE)
{
if (rc == STAT_NO_SIG)
--
1.7.10.4

View File

@@ -0,0 +1,32 @@
From 83d2ed09fc0216b567d7fb2197e4ff3eae150b0d Mon Sep 17 00:00:00 2001
From: Simon Kelley <simon@thekelleys.org.uk>
Date: Tue, 23 Dec 2014 18:42:38 +0000
Subject: [PATCH] Initialise return value.
---
src/dnssec.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/dnssec.c b/src/dnssec.c
index 9350d3e..ed8cf89 100644
--- a/src/dnssec.c
+++ b/src/dnssec.c
@@ -637,10 +637,13 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in
struct crec *crecp = NULL;
int type_covered, algo, labels, orig_ttl, sig_expiration, sig_inception, key_tag;
u16 *rr_desc = get_desc(type);
-
+
+ if (wildcard_out)
+ *wildcard_out = NULL;
+
if (!(p = skip_questions(header, plen)))
return STAT_BOGUS;
-
+
name_labels = count_labels(name); /* For 4035 5.3.2 check */
/* look for RRSIGs for this RRset and get pointers to each RR in the set. */
--
1.7.10.4

View File

@@ -0,0 +1,99 @@
From cbc652423403e3cef00e00240f6beef713142246 Mon Sep 17 00:00:00 2001
From: Simon Kelley <simon@thekelleys.org.uk>
Date: Sun, 21 Dec 2014 21:21:53 +0000
Subject: [PATCH] Make caching work for CNAMEs pointing to A/AAAA records
shadowed in /etc/hosts
If the answer to an upstream query is a CNAME which points to an
A/AAAA record which also exists in /etc/hosts and friends, then
caching is suppressed, to avoid inconsistent answers. This is
now modified to allow caching when the upstream and local A/AAAA
records have the same value.
---
src/cache.c | 34 +++++++++++++++++++++++++---------
1 file changed, 25 insertions(+), 9 deletions(-)
diff --git a/src/cache.c b/src/cache.c
index f9e1d31..ff1ca6f 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -322,7 +322,7 @@ static int is_expired(time_t now, struct crec *crecp)
return 1;
}
-static int cache_scan_free(char *name, struct all_addr *addr, time_t now, unsigned short flags)
+static struct crec *cache_scan_free(char *name, struct all_addr *addr, time_t now, unsigned short flags)
{
/* Scan and remove old entries.
If (flags & F_FORWARD) then remove any forward entries for name and any expired
@@ -331,8 +331,8 @@ static int cache_scan_free(char *name, struct all_addr *addr, time_t now, unsign
entries in the whole cache.
If (flags == 0) remove any expired entries in the whole cache.
- In the flags & F_FORWARD case, the return code is valid, and returns zero if the
- name exists in the cache as a HOSTS or DHCP entry (these are never deleted)
+ In the flags & F_FORWARD case, the return code is valid, and returns a non-NULL pointer
+ to a cache entry if the name exists in the cache as a HOSTS or DHCP entry (these are never deleted)
We take advantage of the fact that hash chains have stuff in the order <reverse>,<other>,<immortal>
so that when we hit an entry which isn't reverse and is immortal, we're done. */
@@ -361,7 +361,7 @@ static int cache_scan_free(char *name, struct all_addr *addr, time_t now, unsign
(((crecp->flags | flags) & F_CNAME) && !(crecp->flags & (F_DNSKEY | F_DS))))
{
if (crecp->flags & (F_HOSTS | F_DHCP | F_CONFIG))
- return 0;
+ return crecp;
*up = crecp->hash_next;
cache_unlink(crecp);
cache_free(crecp);
@@ -378,7 +378,7 @@ static int cache_scan_free(char *name, struct all_addr *addr, time_t now, unsign
crecp->addr.sig.type_covered == addr->addr.dnssec.type))
{
if (crecp->flags & F_CONFIG)
- return 0;
+ return crecp;
*up = crecp->hash_next;
cache_unlink(crecp);
cache_free(crecp);
@@ -423,7 +423,7 @@ static int cache_scan_free(char *name, struct all_addr *addr, time_t now, unsign
up = &crecp->hash_next;
}
- return 1;
+ return NULL;
}
/* Note: The normal calling sequence is
@@ -471,10 +471,26 @@ struct crec *cache_insert(char *name, struct all_addr *addr,
return NULL;
/* First remove any expired entries and entries for the name/address we
- are currently inserting. Fail if we attempt to delete a name from
- /etc/hosts or DHCP. */
- if (!cache_scan_free(name, addr, now, flags))
+ are currently inserting. */
+ if ((new = cache_scan_free(name, addr, now, flags)))
{
+ /* We're trying to insert a record over one from
+ /etc/hosts or DHCP, or other config. If the
+ existing record is for an A or AAAA and
+ the record we're trying to insert is the same,
+ just drop the insert, but don't error the whole process. */
+ if ((flags & (F_IPV4 | F_IPV6)) && (flags & F_FORWARD))
+ {
+ if ((flags & F_IPV4) && (new->flags & F_IPV4) &&
+ new->addr.addr.addr.addr4.s_addr == addr->addr.addr4.s_addr)
+ return new;
+#ifdef HAVE_IPV6
+ else if ((flags & F_IPV6) && (new->flags & F_IPV6) &&
+ IN6_ARE_ADDR_EQUAL(&new->addr.addr.addr.addr6, &addr->addr.addr6))
+ return new;
+#endif
+ }
+
insert_error = 1;
return NULL;
}
--
1.7.10.4

View File

@@ -0,0 +1,28 @@
From 800c5cc1e7438818fd80f08c2d472df249a6942d Mon Sep 17 00:00:00 2001
From: Simon Kelley <simon@thekelleys.org.uk>
Date: Mon, 15 Dec 2014 17:50:15 +0000
Subject: [PATCH] Remove floor on EDNS0 packet size with DNSSEC.
---
src/dnsmasq.c | 5 -----
1 files changed, 5 deletions(-)
diff --git a/src/dnsmasq.c b/src/dnsmasq.c
index bf2e25a..5c7750d 100644
--- a/src/dnsmasq.c
+++ b/src/dnsmasq.c
@@ -87,11 +87,6 @@ int main (int argc, char **argv)
if (daemon->edns_pktsz < PACKETSZ)
daemon->edns_pktsz = PACKETSZ;
-#ifdef HAVE_DNSSEC
- /* Enforce min packet big enough for DNSSEC */
- if (option_bool(OPT_DNSSEC_VALID) && daemon->edns_pktsz < EDNS_PKTSZ)
- daemon->edns_pktsz = EDNS_PKTSZ;
-#endif
daemon->packet_buff_sz = daemon->edns_pktsz > DNSMASQ_PACKETSZ ?
daemon->edns_pktsz : DNSMASQ_PACKETSZ;
--
1.7.10.4

Some files were not shown because too many files have changed in this diff Show More