mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-24 01:42:58 +02:00
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:
@@ -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"
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
0
src/initscripts/init.d/dhcrelay
Executable file → Normal 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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
;;
|
||||
|
||||
*)
|
||||
|
||||
@@ -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
|
||||
33
src/initscripts/init.d/mounttmpfs
Normal file
33
src/initscripts/init.d/mounttmpfs
Normal 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
|
||||
@@ -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}"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
{
|
||||
@@ -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
|
||||
|
||||
@@ -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
7
src/installer/.tx/config
Normal 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
82
src/installer/Makefile.am
Normal 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
3
src/installer/autogen.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
autoreconf --force --install -I m4
|
||||
114
src/installer/configure.ac
Normal file
114
src/installer/configure.ac
Normal 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}
|
||||
])
|
||||
@@ -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
|
||||
56
src/installer/dracut-module/70-dhcpcd.exe
Executable file
56
src/installer/dracut-module/70-dhcpcd.exe
Executable 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
|
||||
5
src/installer/dracut-module/fake-root.sh
Normal file
5
src/installer/dracut-module/fake-root.sh
Normal file
@@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Fake root so dracut will start our installer
|
||||
root="installer"
|
||||
rootok=1
|
||||
75
src/installer/dracut-module/module-setup.sh
Executable file
75
src/installer/dracut-module/module-setup.sh
Executable 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
|
||||
}
|
||||
42
src/installer/dracut-module/run-installer.sh
Normal file
42
src/installer/dracut-module/run-installer.sh
Normal 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
|
||||
@@ -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
1143
src/installer/hw.c
Normal file
File diff suppressed because it is too large
Load Diff
139
src/installer/hw.h
Normal file
139
src/installer/hw.h
Normal 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 */
|
||||
288
src/installer/m4/attributes.m4
Normal file
288
src/installer/m4/attributes.m4
Normal 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
942
src/installer/main.c
Normal 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
30
src/installer/po/LINGUAS
Normal 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
41
src/installer/po/Makevars
Normal 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 =
|
||||
1
src/installer/po/POTFILES.in
Normal file
1
src/installer/po/POTFILES.in
Normal file
@@ -0,0 +1 @@
|
||||
main.c
|
||||
242
src/installer/po/ar.po
Normal file
242
src/installer/po/ar.po
Normal 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
242
src/installer/po/ca.po
Normal 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
242
src/installer/po/cs_CZ.po
Normal 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
243
src/installer/po/da.po
Normal 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
244
src/installer/po/de.po
Normal 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
242
src/installer/po/el_GR.po
Normal 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
242
src/installer/po/es.po
Normal 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
243
src/installer/po/fa.po
Normal 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
242
src/installer/po/fr.po
Normal 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
242
src/installer/po/hu.po
Normal 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
242
src/installer/po/id.po
Normal 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
242
src/installer/po/it.po
Normal 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
242
src/installer/po/ja.po
Normal 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
242
src/installer/po/km_KH.po
Normal 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
242
src/installer/po/nl.po
Normal 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
242
src/installer/po/pl.po
Normal 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
244
src/installer/po/pt_BR.po
Normal 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
242
src/installer/po/pt_PT.po
Normal 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
242
src/installer/po/ro_RO.po
Normal 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
242
src/installer/po/ru.po
Normal 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
242
src/installer/po/sk.po
Normal 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
242
src/installer/po/sq.po
Normal 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
242
src/installer/po/sv.po
Normal 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
242
src/installer/po/th.po
Normal 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
242
src/installer/po/tk.po
Normal 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
242
src/installer/po/tr.po
Normal 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
242
src/installer/po/uk.po
Normal 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
242
src/installer/po/uz@Latn.po
Normal 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
242
src/installer/po/vi.po
Normal 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
242
src/installer/po/zh.po
Normal 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 ""
|
||||
@@ -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
81
src/libsmooth/Makefile.am
Normal 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
3
src/libsmooth/autogen.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
autoreconf --force --install -I m4
|
||||
58
src/libsmooth/configure.ac
Normal file
58
src/libsmooth/configure.ac
Normal 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
69
src/libsmooth/libsmooth.h
Normal 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
|
||||
18
src/libsmooth/libsmooth.pc.in
Normal file
18
src/libsmooth/libsmooth.pc.in
Normal 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}
|
||||
288
src/libsmooth/m4/attributes.m4
Normal file
288
src/libsmooth/m4/attributes.m4
Normal 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
|
||||
])
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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>. #
|
||||
# #
|
||||
############################################################################
|
||||
#
|
||||
|
||||
@@ -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");
|
||||
+}
|
||||
+
|
||||
@@ -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
|
||||
@@ -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 */
|
||||
@@ -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
|
||||
*/
|
||||
@@ -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
@@ -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.
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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"; \
|
||||
@@ -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
|
||||
@@ -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`
|
||||
25
src/patches/dnsmasq/dnsmasq-2.73-bad-packet-protection.patch
Normal file
25
src/patches/dnsmasq/dnsmasq-2.73-bad-packet-protection.patch
Normal 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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user