diff options
127 files changed, 248 insertions, 1927 deletions
diff --git a/Makefile.am b/Makefile.am index 949aba4a..43b1a924 100644 --- a/Makefile.am +++ b/Makefile.am @@ -12,8 +12,6 @@ bin_SCRIPTS += scripts/vyatta-functions sbin_SCRIPTS += scripts/init-floppy sbin_SCRIPTS += scripts/rl-system.init -sbin_SCRIPTS += scripts/install-system -sbin_SCRIPTS += scripts/quick-install sbin_SCRIPTS += scripts/standalone_root_pw_reset sbin_SCRIPTS += scripts/system/vyatta_update_login.pl sbin_SCRIPTS += scripts/system/vyatta_update_login_user.pl diff --git a/debian/control b/debian/control index 2de64d20..05e8ee54 100644 --- a/debian/control +++ b/debian/control @@ -22,9 +22,10 @@ Depends: sed (>= 4.1.5), sudo, snmpd, keepalived, + bridge-utils, ssh, ed, - bridge-utils + tshark Suggests: util-linux (>= 2.13-5), net-tools, ethtool, diff --git a/debian/vyatta-cfg-system.postinst.in b/debian/vyatta-cfg-system.postinst.in index 30cbfd5a..54931692 100644 --- a/debian/vyatta-cfg-system.postinst.in +++ b/debian/vyatta-cfg-system.postinst.in @@ -45,7 +45,7 @@ Cmnd_Alias ETHTOOLP = /usr/sbin/ethtool -p * Cmnd_Alias DATE = /bin/date, /usr/sbin/ntpdate Cmnd_Alias PPPOE_CMDS = /sbin/pppd, /sbin/poff %operator ALL=NOPASSWD: /sbin/reboot, DATE, IPTABLES, ETHTOOLP, IPFLUSH, \ - PPPOE_CMDS + PPPOE_CMDS, /usr/bin/tshark EOF # for "users" level (FIXME) diff --git a/scripts/install-system b/scripts/install-system deleted file mode 100755 index 2823746b..00000000 --- a/scripts/install-system +++ /dev/null @@ -1,888 +0,0 @@ -#!/bin/bash -# -# Module: install-system -# -# **** License **** -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 as -# published by the Free Software Foundation. -# -# 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. -# -# This code was originally developed by Vyatta, Inc. -# Portions created by Vyatta are Copyright (C) 2006, 2007 Vyatta, Inc. -# All Rights Reserved. -# -# Author: Robert Bays -# Date: 2006 -# Description: -# -# **** End License **** -# -# Vyatta system installer script. -# -# -# If you set VYATTA_AUTO_INSTALL I will try to do an automated install for you - -if [ -e /etc/default/vyatta ] ; then - . /etc/default/vyatta -fi -: ${vyatta_prefix:=/opt/vyatta} -: ${vyatta_exec_prefix:=$vyatta_prefix} -: ${vyatta_bindir:=${vyatta_exec_prefix}/bin} -: ${vyatta_sbindir:=${vyatta_exec_prefix}/sbin} -: ${vyatta_sysconfdir:=${vyatta_prefix}/etc} - -ofrconfdir=${vyatta_sysconfdir}/config -fdconfdir=/media/floppy/config -rootfsdir=/mnt/rootfs - -# install log file name -INSTALL_LOG="install.log" -# root partition minimum size in MB -ROOT_MIN="450" -# the base install drive e.g. sda -if [ -n "$INSTALL_DRIVE" ]; then - INSTALL_DRIVE="" -fi -# the install partition e.g. sda1 -if [ -n "$ROOT_PARTITION" ]; then - ROOT_PARTITION="" -fi -# the config partition e.g. sda2 -if [ -n "$CONFIG_PARTITION" ]; then - CONFIG_PARTITION="" -fi -# the size of the root partition -if [ -n "$ROOT_PARTITION_SIZE" ]; then - ROOT_PARTITION_SIZE="" -fi -# global holding variable used in the select_partition sub -PARTITION='' - -# Process ID of this script for the lame marketing spinner -SPID=$$ - -# Path to standalone root password reset script -PWRESET=/opt/vyatta/sbin/standalone_root_pw_reset - -# trap signals so we can kill runaway progress indicators -trap 'progress_indicator stop; exit 1' 1 -trap 'progress_indicator stop; exit 1' 2 - -# turn off any mounted swap partitions -turnoffswap () { - if [ -f "/proc/swaps" ]; then - myresponse=$(cat /proc/swaps) - if [ -n "$myresponse" ]; then - echo "turning off swaps..." >> $INSTALL_LOG - swapoff -a - fi - fi -} - -# Validates a user response. Returns the response if valid. -# Returns the default is the user just hits enter. -# Returns nothing if not valid. Default parameter is $1. -# Options are in $2. If options are defined return must be a member -# of the enum. -get_response () { - ldefault=$(echo "$1" | tr [:upper:] [:lower:]) - loptions=$(echo "$2" | tr [:upper:] [:lower:]) - - # get the response from the user - read myresponse - myresponse=$(echo "$myresponse" | awk '{ printf (tolower($0)) }') - - # Check to see if the user accepts the default - if [ -z "$myresponse" ]; then - echo -n $ldefault - # if we are passing in options to check, make sure response is a valid option - elif [ -n "$loptions" ]; then - for token in $loptions - do - if [ "$token" == "$myresponse" ]; then - echo -n "$myresponse" - return 0 - fi - done - return 1 - else - echo -n "$myresponse" - fi - - return 0 -} - -# Return the size of the drive in MB -get_drive_size () { - ldrive=$1 - - # Make sure you can print disk info using parted - parted /dev/$ldrive p >/dev/null 2>&1 - - # If unable to read disk, it's likely it needs a disklabel - if [ "$?" != "0" ]; then - echo "Creating a new disklabel on $ldrive" >> $INSTALL_LOG - echo "parted /dev/$ldrive mklabel msdos" >> $INSTALL_LOG - output=$(parted /dev/$ldrive mklabel msdos) - - # Get the drive size from parted - lsize=$(parted /dev/$ldrive p | grep "^Disk" | awk '{ print $3 }') - - if [ $(echo $lsize | grep error) ]; then - echo "Unable to read disk label. Exiting." - exit 1 - fi - fi - - # Get the drive size from parted - lsize=$(parted /dev/$ldrive p | grep "^Disk" | awk '{ print $3 }') - # Get the reported units (mB, GB, kB) - lmodifier=$(echo $lsize | sed 's/[0-9\.]//g') - # remove the modifier - lsize=$(echo $lsize | sed 's/[a-z,A-Z]//g') - # Remove any fractions - lsize=$(echo $lsize | cut -f1 -d'.') - # Translate our size into mB if not there already - if [ $lmodifier = "GB" ]; then - lsize=$(($lsize * 1000)) - elif [ $lmodifier = "kB" ]; then - lsize=$(($lsize / 1000)) - fi - - echo $lsize -} - -# Probe hardrives not shown in /proc/partitions by default -probe_drives () { - # find IDE drives. Not all drives show up in /proc/partitions for - # some reason. - # TODO: not sure we have to do this for anything but compact flash - # when we test on other platforms, we will find out and modify this section - # as appropriate - drive=$(find /proc/ide/ide* -name "hd*" 2>/dev/null | /usr/bin/awk -F"/" '{ print $5 }') - - # now exclude all drives but disks - for drive in $drive - do - media=$(cat /proc/ide/$drive/media) - if [ "$media" = "disk" ]; then - output=$(mount | grep $drive) - if [ -z "$output" ]; then - output=$(parted /dev/$DRIVE p) - fi - fi - done -} - -# Takes an argument to display text before choice -# Sets INSTALL_DRIVE. Note that select_drive should be wrapped -# in the verification loop, not the included get_response. -select_drive () { - # list the drives in /proc/partitions. Remove partitions and empty lines. - drives=$(cat /proc/partitions | awk '{ if ($4!="name") { print $4 } }' | egrep -v "[0-9]$" | egrep -v "^$") - - # take the first drive as the default - INSTALL_DRIVE=$(echo $drives | /usr/bin/awk '{ print $1 }') - - # Add the drive sizes to the display to help the user decide - display='' - for drive in $drives - do - size=$(get_drive_size $drive) - display="$display $drive\t$size"MB"\n" - done - - # Display the drives and ask the user which one to install to - echo -e "$display" - echo - echo -n "$1 [$INSTALL_DRIVE]:" - - INSTALL_DRIVE=$(get_response "$INSTALL_DRIVE" "$drives") - echo - - # Assume no dma if the disk is smaller than 10G (such as a CF drive) - size=$(get_drive_size $INSTALL_DRIVE) - if [ $size -lt 11000 ] - then - ISCF="ide=nodma" - fi -} - -# Allow the user to select a partition to work with -# sets the global PARTITION -# $1 is the text to display before prompt -select_partition () { - minsize=$1 - text=$2 - - echo -n "Looking for appropriate partitions: " - progress_indicator start - - # initialize out global var. using globals in this way is bad form. I know. - PARTITION='' - - # list only the partitions in /proc/partitions. - parts=$(cat /proc/partitions | awk '{ if ($4!="name") { print $4 " "} }' | egrep "[0-9]" | egrep -v "loop" | tr -d '\n') - - # Get the partition sizes for display - # only show linux partitions that have sizes, i.e. remove loops - display='' - for part in $parts - do - rootdev=$(echo $part | sed 's/[0-9]//g') - parttype=$(fdisk -l /dev/$rootdev | grep $part | grep Linux) - if [ -n "$parttype" ]; then - lsize=$(get_drive_size $part) - if [ "$lsize" -a $lsize -ge $minsize ]; then - display="$display $part\t\t$lsize"MB"\n" - myparts="$myparts $part" - fi - fi - done - - progress_indicator stop - echo "OK" - - if [ -n "$myparts" ]; then - lpartition='' - while [ -z "$lpartition" ] - do - # take the first partition as the default - lpartition=$(echo $myparts | /usr/bin/awk '{ print $1 }') - - echo "I found the following partitions suitable for the Vyatta image:" - echo -e "Partition\tSize" - echo -e "$display" - echo - echo -n "$text [$lpartition]: " - - lpartition=$(get_response "$lpartition" "$myparts") - echo - done - else - echo "No suitable partition sizes found. Exiting..." | tee $INSTALL_LOG - exit 1 - fi - PARTITION=$lpartition -} - -rename_old_config() { - files=$(find /mnt/config -mindepth 1 -type f | grep -v pre-glendale) - for f in $files; do - if grep -q '/\*XORP Configuration File, v1.0\*/' $f >&/dev/null; then - CURTIME=$(date +%F-%H%M%S) - mv $f $f.pre-glendale.$CURTIME - fi - done -} - -## check_config_partition -# look to see if this partition contains a config file -# and back it up -check_config_partition() { - lpart=$1 - - # Look to see if this is a config partition - mkdir -p /mnt/tmp - output=$(mount /dev/$lpart /mnt/tmp 2>&1) - if [ $? != 0 ]; then - echo -e "Cannot mount /dev/$lpart"."\nmount /dev/$ldrive$part /mnt/tmp\nExiting..." >> $INSTALL_LOG - echo "$output" >> $INSTALL_LOG - else - # Look to see if there is a config partition there - if [ -f /mnt/tmp/opt/vyatta/etc/config/.vyatta_config ] || [ -f /mnt/tmp/.vyatta_config ]; then - response='' - while [ -z "$response" ] - do - echo "/dev/$lpart has an old configuration directory!" - echo -ne "Would you like me to save the data on it\nbefore I delete it? (Yes/No) [Yes]: " - response=$(get_response "Yes" "Yes No Y N") - if [ "$response" == "yes" ] || [ "$response" == "y" ]; then - mkdir -p /mnt/config - if [ -d /mnt/tmp/opt/vyatta/etc/config ]; then - output=$(cp -pR /mnt/tmp/opt/vyatta/etc/config/* /mnt/config) - else - output=$(cp -pR /mnt/tmp/* /mnt/config) - fi - if [ -n "$output" ]; then - echo -e "Warning: error in copying the old config partition.\nSee $INSTALL_LOG for more details." - echo -e "Warning: error in copying the old config partition.\ncp -pR /mnt/tmp/* /mnt/config\n$output\n" >> $INSTALL_LOG - fi - rename_old_config - fi - done - fi - umount /mnt/tmp - fi -} - -# Delete all existing partitions for an automated install -# $1 is the drive to delete partitions from -delete_partitions () { - ldrive=$1 - - # get the partitions on the drive - partitions=$(cat /proc/partitions | grep $ldrive[0-9] | awk '{ print $4 }' | sed 's/[a-z]//g') - - # now for each part, blow it away - for part in $partitions - do - # Look to see if this is a config partition - check_config_partition "$ldrive$part" - - echo "Removing partition $part on /dev/$ldrive" >> $INSTALL_LOG - output=$(parted /dev/$ldrive rm $part) - status=$? - if [ "$status" != 0 ]; then - echo -e "Warning: cannot delete partition $part on $ldrive.\nPlease see $INSTALL_LOG for more details." - echo -e "Warning: cannot delete partition $part on $ldrive.\nparted /dev/$ldrive rm $part\n$output" >> $INSTALL_LOG - fi - - # We add a bogus sleep here because the loop needs to wait for udev - sleep 5 - done -} - -# make a filesystem on the drive -# $1 is the drive to format -make_filesystem () { - ldrive=$1 - - echo -n "Creating filesystem on /dev/$ldrive: " - echo "Creating filesystem on /dev/$ldrive..." >> $INSTALL_LOG - - progress_indicator start - output=$(mke2fs -j /dev/$ldrive 2>&1) - status=$? - if [ "$status" != 0 ]; then - echo -e "Error: couldn't create the root filesystem.\nSee $INSTALL_LOG for further details.\nExiting..." - echo -e "Error: couldn't create the root filesystem.\n/sbin/mke2fs -j /dev/$lDRIVE\n$output" - exit 1 - fi - progress_indicator stop - echo "OK" -} - -# create the root partition -# $1 is the install drive e.g. sda -# $2 is the partition size e.g. 512 -# This will set the global ROOT_PARTITION -create_partitions() { - ldrive=$1 - root_part_size=$2 - - # Make sure there is enough space on drive - size=$(get_drive_size "$ldrive") - if [ "$root_part_size" -gt "$size" ]; then - echo "Error: $ldrive is only $size"MB" large." - exit 1 - fi - - echo "Creating root partition on /dev/$ldrive" >> $INSTALL_LOG - - # make the root partition - output=$(parted /dev/$ldrive mkpart primary 0 $root_part_size) - status=$? - if [ "$status" != 0 ]; then - echo -e "Error creating primary partition on $ldrive.\nPlease see $INSTALL_LOG for more details.\nExiting..." - echo -e "Error creating primary partition on $ldrive.\nparted /dev/$ldrive mkpart primary 0 $root_part_size\n$output" >> $INSTALL_LOG - exit 1 - fi - - ROOT_PARTITION=$ldrive"1" - # udev takes time to re-add the device file, so wait for it - while [ ! -b "/dev/$ROOT_PARTITION" ] - do - sleep 1 - done - - # make the root and config ext3 file systems. - make_filesystem "$ROOT_PARTITION" -} - -# Install the root filesystem -# $1 is the partition to install on -install_root_filesystem () { - ldrive=$1 - - dpkg="/usr/bin/dpkg --force-all --root=$rootfsdir" - echo "Mounting /dev/$ldrive " - echo "Mounting /dev/$ldrive..." >> $INSTALL_LOG - - # make the mount point - output=$(/bin/mkdir -p $rootfsdir) - - # mount the partition - output=$(mount -t ext3 /dev/$ldrive $rootfsdir) - status=$? - - if [ "$status" != 0 ]; then - echo -e "Error trying to mount the new root partition.\nPlease see $INSTALL_LOG for details.\nExiting..." - echo -e "Error trying to mount the new root partition.\nmount -t ext3 /dev/$ldrive $rootfsdir\n$output" >> $INSTALL_LOG - exit 1 - fi - - echo -n "Copying system image files to /dev/$ROOT_PARTITION: " - progress_indicator start - # Mount the squashfs for copying - output=$(mkdir -p /mnt/squashfs) - output=$(mount /live/image/live/filesystem.squashfs /mnt/squashfs -t squashfs -o loop) - status=$? - - if [ "$status" != 0 ]; then - echo -e "Error trying to mount the squashfs.\nPlease see install log for more details.\nExiting..." - echo -e "Error trying to mount the squashfs.\nmount /live/image/live/filesystem.squashfs /mnt/squashfs -t squashfs -o loop\n$output" >> $INSTALL_LOG - exit 1 - fi - - output=$(cp -pR /mnt/squashfs/* $rootfsdir/) - status=$? - - if [ "$status" != 0 ]; then - echo -e "Error trying to copy the rootfs.\nPlease see install log for more details.\nExiting. -.." - echo -e "Error trying to copy the rootfs.\ncp -pR /mnt/squashfs/* $rootfsdir/\n$output" >> $INSTALL_LOG - exit 1 - fi - - # unmount the squashfs. No big deal if it fails. - output=$(umount /mnt/squashfs) - - # make the dir for the boot files and copy em' over - mkdir -p $rootfsdir/boot - output=$(cp -pR /boot/* $rootfsdir/boot/) - status=$? - output+=$(cp /live/image/live/initrd1.img $rootfsdir/boot/initrd.img) - status=$status$? - if [ "$status" -ne 0 ]; then - echo -e "Error trying to copy the bootfiles.\nPlease see install log for more details.\nExiting..." - echo -e "Error trying to copy the bootfiles.\ncp /boot/initrd.img $rootfsdir/boot/\n$output" >> $INSTALL_LOG - exit 1 - fi - - # create the fstab - echo -e "/dev/$ROOT_PARTITION\t/\text3\tdefaults\t0 1" >> $rootfsdir/etc/fstab - - #setup the hostname file - cp /etc/hostname $rootfsdir/etc/ - cp /etc/hosts $rootfsdir/etc/ - - progress_indicator stop - echo "OK" -} - -# copy the configuration to the config partition -# $1 is the config partition device -copy_config () { - config_partition=$1 - lerror='' - config_default=$vyatta_sysconfdir/config.boot.default - tmp_config_default=/tmp/${vyatta_sysconfdir//\//__} - - # create the config directory on the union file system - mkdir -p $rootfsdir$ofrconfdir - - # create the proper perms on the new config partition - chgrp vyattacfg $rootfsdir$ofrconfdir - chmod 775 $rootfsdir$ofrconfdir - - # create our config partition marker - touch $rootfsdir$ofrconfdir/.vyatta_config - - if [ -d /mnt/config ]; then - echo "Copying old configurations to config partition." - cp -pR /mnt/config/* $rootfsdir$ofrconfdir - else - # Find the config files and give the user the option to copy config files - # TODO: this needs cleaned up - if [ -f $ofrconfdir/config.boot ]; then - config=$ofrconfdir/config.boot - fi - if [ -f $fdconfdir/config.boot ]; then - if [ -z "$config" ]; then - config="$fdconfdir/config.boot" - else - config="$config\n$fdconfdir/config.boot" - fi - fi - - if [ -n "$config" ]; then - echo "I found the following configuration files" - echo -e "$config" - default=$(echo -e $config| head -1) - - resp='' - while [ -z "$configfile" ] - do - echo -n "Which one should I copy to $INSTALL_DRIVE? [$default]: " - configfile=$(get_response "$default" "$config") - done - - echo - output=$(cp $configfile $rootfsdir$ofrconfdir) - if [ -n "$output" ]; then - echo "Error copying file $configfile to config directory. Exiting..." >> $INSTALL_LOG - exit 1 - fi - fi - fi - - # set the permissions on the new config file - if [ -f $rootfsdir$ofrconfdir/config.boot ]; then - chgrp vyattacfg $rootfsdir$ofrconfdir/config.boot - chmod 775 $rootfsdir$ofrconfdir/config.boot - fi -} - -# setup grub on the boot sector of a user queried drive -install_grub () { - orig_install_drive="$INSTALL_DRIVE" - # we now use INSTALL_DRIVE to reference the grub boot drive. - # that way I can re-use select_drive. I'm lazy that way. - INSTALL_DRIVE='' - - mkdir -p $rootfsdir/boot/grub - # Let the user choose the boot sector - - while [ -z "$INSTALL_DRIVE" ] - do - echo "I need to install the GRUB bootloader." - echo "I found the following drives on your system:" - select_drive "Which drive should GRUB modify the boot partition on?" - done - - echo -n "Setting up grub: " - echo "Setting up grub..." >> $INSTALL_LOG - - # Install grub in the boot sector of the primary drive - progress_indicator start - grub-install --no-floppy --root-directory=$rootfsdir /dev/$INSTALL_DRIVE >>$INSTALL_LOG 2>&1 - progress_indicator stop - - # TODO: This needs to be changed to map to the correct drive - part=$(echo $ROOT_PARTITION | sed 's/[^0-9]//g') - part=$(($part - 1)) - if [ "$(cat /sys/block/$orig_install_drive/removable)" == 0 ]; then - root=$(grep $orig_install_drive $rootfsdir/boot/grub/device.map | /usr/bin/awk -F')' '{ print $1 }') - root="$root,$part)" - else - echo "This looks like a removable device. Setting root grub device to (0,0)." - echo "This looks like a removable device. Setting root grub device to (0,0)." >> $INSTALL_LOG - root="(hd0,$part)" - fi - - # Figure out whether we are running on the serial or KVM console: - if [ "`tty`" == "/dev/ttyS0" ]; then - # Since user is running on serial console, make that the default. - DEFAULT_CONSOLE="1" - else - # Since user is running on KVM console, make that the default - DEFAULT_CONSOLE="0" - fi - - # create the menu.lst file for grub - # The "default=" line selects which boot option will be used by default. - # Numbering starts at 0 for the first option. - grub_file="$rootfsdir/boot/grub/menu.lst" - echo -e "default=$DEFAULT_CONSOLE\ntimeout=5\n#splashimage=(hd0,0)/grub/splash.xpm.gz\nhiddenmenu" > $grub_file - # set serial console options - echo -e "serial --unit=0 --speed=9600\nterminal --timeout=5 console serial\n\n" >> $grub_file - - # Set first system boot option. Make KVM the default console in this one. - echo -e "title Vyatta OFR (KVM console)\n\troot $root" >> $grub_file - echo -en "\tkernel /boot/vmlinuz root=/dev/$ROOT_PARTITION $ISCF console=ttyS0,9600 console=tty0 \n" >> $grub_file - echo -e "\tinitrd /boot/initrd.img" >> $grub_file - - # Set the second system boot option. Make the serial port be the default - # console in this one. - echo >> $grub_file - echo -e "title Vyatta OFR (Serial console)\n\troot $root" >> $grub_file - echo -en "\tkernel /boot/vmlinuz root=/dev/$ROOT_PARTITION $ISCF console=tty0 console=ttyS0,9600 \n" >> $grub_file - echo -e "\tinitrd /boot/initrd.img" >> $grub_file - - # Set third and fourth boot options for root password reset. Offer - # options for both serial and KVM console. - - echo >> $grub_file - echo -e "title Root password reset to factory (KVM console)" >> $grub_file - echo -e "\troot $root" >> $grub_file - echo -e "\tkernel /boot/vmlinuz root=/dev/$ROOT_PARTITION $ISCF console=ttyS0,9600 console=tty0 init=$PWRESET" >> $grub_file - echo -e "\tinitrd /boot/initrd.img" >> $grub_file - - echo >> $grub_file - echo -e "title Root password reset to factory (Serial console)" >> $grub_file - echo -e "\troot $root" >> $grub_file - echo -e "\tkernel /boot/vmlinuz root=/dev/$ROOT_PARTITION $ISCF console=tty0 console=ttyS0,9600 init=$PWRESET" >> $grub_file - echo -e "\tinitrd /boot/initrd.img" >> $grub_file - - echo "OK" -} - -# ask for user input on the parted and skip setup methods -# $1 is whether or not to run parted -# sets globals INSTALL_DRIVE, ROOT_PARTITION, CONFIG_PARTITION -setup_method_manual() { - parted=$1 - - echo "The Vyatta install needs a minimum ${ROOT_MIN}MB root" - echo "with partiton type 83 (Linux)." - echo -e "\n\n" - - # if this is parted, let the user create the partitions - if [ "$method" == "parted" ] || [ "$method" == "p" ]; then - while [ -z "$INSTALL_DRIVE" ] - do - # TODO: right now we only run parted on a single drive - echo -e "\nI found the following drives on your system:" - select_drive "Which drive would you like to run parted on?" - - done - - # Unmount the install drive if it is mounted - unmount "$INSTALL_DRIVE" - - # Run parted and let the user configure - parted /dev/$INSTALL_DRIVE - fi - - # Ask for the root partition and make sure it's valid - while [ -z "$ROOT_PARTITION" ] - do - select_partition 500 "Which partition should I install the root on?" - # Note that PARTITION is defined in select partition - ROOT_PARTITION=$PARTITION - unmount "$ROOT_PARTITION" - vd=$(grep $ROOT_PARTITION /proc/partitions | awk '{ print $4 }') - - if [ -z "$vd" ]; then - echo - echo "$ROOT_PARTITION is an invalid partition. Please try again." - ROOT_PARTITION="" - fi - done - - # check for an old config on the partition - check_config_partition "$ROOT_PARTITION" - - # create the ext3 fs on the part - make_filesystem "$ROOT_PARTITION" - - # We need to set the INSTALL_DRIVE if it wasn't set when the user ran parted - # We assume that we will use the boot sector of the same drive that the partition is on - # TODO: Allow different drives to function as the boot device - if [ -z "$INSTALL_DRIVE" ]; then - INSTALL_DRIVE=$(echo $ROOT_PARTITION | sed 's/[0-9]//g') - fi -} - -# Walk the user through the auto setup method -# sets globals INSTALL_DRIVE, ROOT_PARTITION, CONFIG_PARTITION -setup_method_auto() { - while [ -z "$INSTALL_DRIVE" ] - do - echo "I found the following drives on your system:" - select_drive "Install the image on?" - - # check to make sure the drive is large enough to hold the image - if [ -n "$INSTALL_DRIVE" ]; then - lsize=$(get_drive_size "$INSTALL_DRIVE") - total=$ROOT_MIN - if [ "$total" -gt "$lsize" ]; then - echo "Unfortunately, the OFR requires a total of at least $total"MB" to properly install." - echo "$INSTALL_DRIVE is below the minimum required capacity and therefore, cannot be used to" - echo -e "complete the installation.\n" - echo "If other drives are present" - echo -e "Please select another drive...\n" - - INSTALL_DRIVE='' - fi - fi - done - - # Give the user a requisite warning that we are about to nuke their drive - response='' - while [ -z $response ] - do - echo "This will destroy all data on /dev/$INSTALL_DRIVE." - echo -n "Continue? (Yes/No) [No]: " - response=$(get_response "No" "Yes No Y N") - - if [ "$response" == "no" ] || [ "$response" == "n" ]; then - echo "Ok then. Exiting..." - exit 1 - fi - done - - echo - - # make sure we aren't working on a mounted part - unmount "$INSTALL_DRIVE" - - # remove any existing partitions on that drive - delete_partitions "$INSTALL_DRIVE" - - # Enforce minimum partion size requirement. - ROOT_PARTITION_SIZE=0 - while [ $ROOT_MIN -gt $ROOT_PARTITION_SIZE ]; do - # Get the size of the drive - size=$(get_drive_size $INSTALL_DRIVE) - echo -n "How big of a root partition should I create? ($ROOT_MIN"MB" - $size"MB") [$size]MB: " - response=$(get_response "$size") - # TODO: need to have better error checking on this value - ROOT_PARTITION_SIZE=$(echo "$response" | sed 's/[^0-9]//g') - if [ $ROOT_PARTITION_SIZE -lt $ROOT_MIN ] || [ $ROOT_PARTITION_SIZE -gt $size ]; then - echo "Root partion must be between $ROOT_MIN"MB" and $size"MB"" - echo - ROOT_PARTITION_SIZE=0 - fi - done - - echo - - # now take the data and create the partitions - create_partitions "$INSTALL_DRIVE" "$ROOT_PARTITION_SIZE" -} - -unmount () { - # grab the list of mounted drives - # make sure to reverse sort so as to unmount up the tree - mounted=$(mount | grep "$1" | cut -f3 -d' ' | sort -r) - if [ -n "$mounted" ]; then - echo "I need to unmount: " - echo "$mounted" - - response='' - while [ -z $response ] - do - echo -n "Continue (Yes/No) [No]: " - response=$(get_response "No" "Yes No Y N") - if [ "$response" == "no" ] || [ "$response" == "n" ]; then - echo -e "Ok then. Need to unmount to continue.\nExiting..." - exit 1 - fi - done - - for parts in "$mounted" - do - echo "umount $parts" >> $INSTALL_LOG - output=$(umount $parts) - status=$? - if [ "$status" != 0 ]; then - echo -e "Exiting: error unmounting $parts.\nPlease see $INSTALL_LOG for more details." - echo -e "Exiting: error unmounting $parts.\numount $parts\n$output" >> $INSTALL_LOG - exit 1 - fi - done - fi -} - -progress_indicator () { - case "$1" in - start) $vyatta_bindir/progress-indicator $SPID & - ;; - *) - if ! rm /tmp/pi.$SPID 2>/dev/null - then - sleep 1 - rm /tmp/pi.$SPID 2>/dev/null - fi - - sleep 1 - echo -n -e "\b" - ;; - esac -} - -##### Main -## -# clean up existing log files -if [ -f $INSTALL_LOG.old ]; then - rm -f $INSTALL_LOG.old -fi -if [ -f $INSTALL_LOG ]; then - mv $INSTALL_LOG $INSTALL_LOG.old - rm -f $INSTALL_LOG -fi - -# turn off any mounted swap files -turnoffswap - -# Print welcome and instructions. -echo "Welcome to the Vyatta install program. This script" -echo "will walk you through the process of installing the" -echo "Vyatta image to a local hard drive." -echo - -response='' -while [ -z $response ] -do - echo -n "Would you like to continue? (Yes/No) [Yes]: " - response=$(get_response "Yes" "Yes No Y N") - if [ "$response" == "no" ] || [ "$response" == "n" ]; then - echo "Ok then. Exiting..." - exit 1 - fi -done - -# some drives don't show up in /proc/partitions so we need to bootstrap them -echo -n "Probing drives: " -progress_indicator start -probe_drives -progress_indicator stop -echo "OK" - -echo "The Vyatta image will require a minimum ${ROOT_MIN}MB root." -echo "Would you like me to try to partition a drive automatically" -echo "or would you rather partition it manually with parted? If" -echo "you have already setup your partitions, you may skip this step." -echo - -method='' -while [ -z $method ] -do - echo -n "Partition (Auto/Parted/Skip) [Auto]: " - method=$(get_response "Auto" "Auto Parted Skip A P S") -done - -echo - -# TODO: Note installs assume an LBA BIOS. So no boot partition currently. -# also note that we are not creating a swap partition right now. -if [ "$method" == "parted" ] || [ "$method" == "p" ]; then - setup_method_manual "parted" -elif [ "$method" == "skip" ] || [ "$method" == "s" ]; then - setup_method_manual "skip" -elif [ "$method" == "auto" ] || [ "$method" == "a" ]; then - setup_method_auto -elif [ "$method" == "vyatta" ]; then - echo "Automated install..." - echo "unmounting $INSTALL_DRIVE" - unmount "$INSTALL_DRIVE" - echo "deleting partitions on $INSTALL_DRIVE" - delete_partitions "$INSTALL_DRIVE" - echo "creating config partition" - create_partitions "$INSTALL_DRIVE" "$ROOT_PARTITION_SIZE" -fi - -# Install the root filesystem -install_root_filesystem "$ROOT_PARTITION" - -# Copy the config files -copy_config "$CONFIG_PARTITION" - -# Install grub -install_grub - -cp $INSTALL_LOG $rootfsdir/install.log - -umount $rootfsdir - -echo "Done!" -echo "Done!" >> $INSTALL_LOG - -exit 0 diff --git a/scripts/keepalived/vyatta-keepalived.pl b/scripts/keepalived/vyatta-keepalived.pl index fff1acf1..55d53715 100755 --- a/scripts/keepalived/vyatta-keepalived.pl +++ b/scripts/keepalived/vyatta-keepalived.pl @@ -86,6 +86,21 @@ sub keepalived_get_values { } } + $config->setLevel("$path vrrp vrrp-group $group run-transition-scripts"); + my $run_backup_script = $config->returnValue("backup"); + if(!defined $run_backup_script){ + $run_backup_script = "null"; + } + my $run_fault_script = $config->returnValue("fault"); + if(!defined $run_fault_script){ + $run_fault_script = "null"; + } + my $run_master_script = $config->returnValue("master"); + if(!defined $run_master_script){ + $run_master_script = "null"; + } + + $output .= "vrrp_instance $vrrp_instance \{\n"; if ($preempt eq "false") { $output .= "\tstate BACKUP\n"; @@ -110,11 +125,11 @@ sub keepalived_get_values { } $output .= "\t\}\n"; $output .= "\tnotify_master "; - $output .= "\"$state_transition_script master $intf $group @vips\" \n"; + $output .= "\"$state_transition_script master $intf $group $run_master_script @vips\" \n"; $output .= "\tnotify_backup "; - $output .= "\"$state_transition_script backup $intf $group @vips\" \n"; + $output .= "\"$state_transition_script backup $intf $group $run_backup_script @vips\" \n"; $output .= "\tnotify_fault "; - $output .= "\"$state_transition_script fault $intf $group @vips\" \n"; + $output .= "\"$state_transition_script fault $intf $group $run_fault_script @vips\" \n"; $output .= "\}\n"; } diff --git a/scripts/keepalived/vyatta-show-vrrp.pl b/scripts/keepalived/vyatta-show-vrrp.pl index eacba25c..86dbef3d 100755 --- a/scripts/keepalived/vyatta-show-vrrp.pl +++ b/scripts/keepalived/vyatta-show-vrrp.pl @@ -64,17 +64,26 @@ sub elapse_time { return $string; } -sub link_updown { - my ($intf) = @_; - - my $status = `sudo /usr/sbin/ethtool $intf | grep Link`; - if ($status =~ m/yes/) { - return "up"; +sub get_state_link { + my $intf = shift; + + my $IFF_UP = 0x1; + my ($state, $link); + my $flags = `cat /sys/class/net/$intf/flags 2> /dev/null`; + my $carrier = `cat /sys/class/net/$intf/carrier 2> /dev/null`; + chomp $flags; chomp $carrier; + my $hex_flags = hex($flags); + if ($hex_flags & $IFF_UP) { + $state = "up"; + } else { + $state = "admin down"; } - if ($status =~ m/no/) { - return "down"; + if ($carrier eq "1") { + $link = "up"; + } else { + $link = "down"; } - return "unknown"; + return ($state, $link); } sub get_master_info { @@ -102,13 +111,33 @@ sub get_master_info { } } +sub vrrp_showsummary { + my ($file) = @_; + + my ($start_time, $intf, $group, $state, $ltime) = + VyattaKeepalived::vrrp_state_parse($file); + my ($interface_state, $link) = get_state_link($intf); + if ($state eq "master" || $state eq "backup" || $state eq "fault") { + my ($primary_addr, $priority, $preempt, $advert_int, $auth_type, + @vips) = VyattaKeepalived::vrrp_get_config($intf, $group); + print "\n$intf\t\t$group\tint\t$primary_addr\t$link\t\t$state"; + foreach my $vip (@vips){ + print "\n\t\t\tvip\t$vip"; + + } + } else { + print "Physical interface $intf, State: unknown\n"; + } +} + + sub vrrp_show { my ($file) = @_; my $now_time = time; my ($start_time, $intf, $group, $state, $ltime) = VyattaKeepalived::vrrp_state_parse($file); - my $link = link_updown($intf); + my ($interface_state, $link) = get_state_link($intf); if ($state eq "master" || $state eq "backup" || $state eq "fault") { my ($primary_addr, $priority, $preempt, $advert_int, $auth_type, @vips) = VyattaKeepalived::vrrp_get_config($intf, $group); @@ -146,9 +175,18 @@ sub vrrp_show { # my $intf = "eth"; my $group = "all"; +my $showsummary = 0; + if ($#ARGV >= 0) { - $intf = $ARGV[0]; + + if ($ARGV[0] eq "summary") { + $showsummary = 1; + } else { + $intf = $ARGV[0]; + } + } + if ($#ARGV == 1) { $group = $ARGV[1]; } @@ -158,9 +196,22 @@ if (!VyattaKeepalived::is_running()) { exit 1; } +if ($showsummary == 1) { + + print "\t\tVRRP\tAddr\t\t\tInterface\tVRRP\n"; + print "Interface\tGroup\tType\tAddress\t\tState\t\tState\n"; + print "---------\t-----\t----\t-------\t\t-----\t\t-----"; + + +} + my @state_files = VyattaKeepalived::get_state_files($intf, $group); foreach my $state_file (@state_files) { - vrrp_show($state_file); + if ($showsummary == 1) { + vrrp_showsummary($state_file); + } else { + vrrp_show($state_file); + } } exit 0; diff --git a/scripts/keepalived/vyatta-vrrp-state.pl b/scripts/keepalived/vyatta-vrrp-state.pl index 8b813529..9e11b649 100755 --- a/scripts/keepalived/vyatta-vrrp-state.pl +++ b/scripts/keepalived/vyatta-vrrp-state.pl @@ -55,7 +55,8 @@ sub vrrp_state_log { my $vrrp_state = $ARGV[0]; my $vrrp_intf = $ARGV[1]; my $vrrp_group = $ARGV[2]; -my $vrrp_vip = $ARGV[3]; +my $vrrp_transitionscript = $ARGV[3]; +my $vrrp_vip = $ARGV[4]; my $sfile = VyattaKeepalived::get_state_file($vrrp_intf, $vrrp_group); my ($old_time, $old_intf, $old_group, $old_state, $old_ltime) = @@ -77,6 +78,12 @@ if ($vrrp_state eq "backup") { system("rm -f $mfile"); } + +if (!($vrrp_transitionscript eq "null")){ + exec("$vrrp_transitionscript"); +} + + exit 0; # end of file diff --git a/scripts/quick-install b/scripts/quick-install deleted file mode 100755 index 347cafd2..00000000 --- a/scripts/quick-install +++ /dev/null @@ -1,904 +0,0 @@ -#!/bin/sh -# -# Module: install-system -# -# **** License **** -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 as -# published by the Free Software Foundation. -# -# 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. -# -# This code was originally developed by Vyatta, Inc. -# Portions created by Vyatta are Copyright (C) 2006, 2007 Vyatta, Inc. -# All Rights Reserved. -# -# Author: Robert Bays -# Date: 2006 -# Description: -# -# **** End License **** -# -# Vyatta system installer script. -# -# -# If you set VYATTA_AUTO_INSTALL I will try to do an automated install for you - -INSTALL_LOG="install.log" # install log file name -ROOT_MIN="450" # root partition minimum size in MB -CONFIG_MIN="10" # config partition minium size in MB -VYATTA_CONFIG_DIRECTORY="/opt/vyatta/etc/config/" # the configuration directory - -# environmental variables -#$INSTALL_DRIVE the base install drive e.g. sda -#$ROOT_PARTITION the install partition e.g. sda1 -#$CONFIG_PARTITION the config partition e.g. sda2 -#$ROOT_PARTITION_SIZE the size of the root partition -#$CONFIG_PARTITION_SIZE the size of the config partition - -# Use "classic" prompts? -CLASSIC=$1 - -# global holding variable used in the select_partition sub -PARTITION='' - -# Process ID of this script for the lame marketing spinner -SPID=$$ - -# trap signals so we can kill runaway progress indicators -trap 'progress_indicator "stop"; exit 1' 1 -trap 'progress_indicator "stop"; exit 1' 2 - -# turn off any mounted swap partitions -turnoffswap () { - if [ -f "/proc/swaps" ]; then - myresponse=$(cat /proc/swaps) - if [ -n "$myresponse" ]; then - echo "turning off swaps..." >> $INSTALL_LOG - swapoff -a - fi - fi -} - -# Validates a user response. Returns the response if valid. -# Returns the default is the user just hits enter. -# Returns nothing if not valid. Default parameter is $1. -# Options are in $2. If options are defined return must be a member -# of the enum. -get_response () { - ldefault=$(echo "$1" | tr [:upper:] [:lower:]) - loptions=$(echo "$2" | tr [:upper:] [:lower:]) - - # get the response from the user - read myresponse - myresponse=$(echo "$myresponse" | awk '{ printf (tolower($0)) }') - - # Check to see if the user accepts the default - if [ -z "$myresponse" ]; then - echo -n $ldefault - # if we are passing in options to check, make sure response is a valid option - elif [ -n "$loptions" ]; then - for token in $loptions - do - if [ "$token" == "$myresponse" ]; then - echo -n "$myresponse" - return 0 - fi - done - return 1 - else - echo -n "$myresponse" - fi - - return 0 -} - -# Return the size of the drive in MB -get_drive_size () { - ldrive=$1 - - # Make sure you can print disk info using parted - parted /dev/$ldrive p >/dev/null 2>&1 - - # If unable to read disk, it's likely it needs a disklabel - if [ "$?" != "0" ]; then - echo "Creating a new disklabel on $ldrive" >> $INSTALL_LOG - echo "parted /dev/$ldrive mklabel msdos" >> $INSTALL_LOG - output=$(parted /dev/$ldrive mklabel msdos) - - # Get the drive size from parted - lsize=$(parted /dev/$ldrive p | grep "^Disk" | awk '{ print $3 }') - - if [ $(echo $lsize | grep error) ]; then - echo "Unable to read disk label. Exiting." - exit 1 - fi - fi - - # Get the drive size from parted - lsize=$(parted /dev/$ldrive p | grep "^Disk" | awk '{ print $3 }') - # Get the reported units (mB, GB, kB) - lmodifier=$(echo $lsize | sed 's/[0-9\.]//g') - # remove the modifier - lsize=$(echo $lsize | sed 's/[a-z,A-Z]//g') - # Remove any fractions - lsize=$(echo $lsize | cut -f1 -d'.') - # Translate our size into mB if not there already - if [ $lmodifier = "GB" ]; then - lsize=$(($lsize * 1000)) - elif [ $lmodifier = "kB" ]; then - lsize=$(($lsize / 1000)) - fi - - echo $lsize -} - -# Probe hardrives not shown in /proc/partitions by default -probe_drives () { - # find IDE drives. Not all drives show up in /proc/partitions for - # some reason. - # TODO: not sure we have to do this for anything but compact flash - # when we test on other platforms, we will find out and modify this section - # as appropriate - drive=$(find /proc/ide/ide* -name "hd*" 2>/dev/null | /usr/bin/awk -F"/" '{ print $5 }') - - # now exclude all drives but disks - for drive in $drive - do - media=$(cat /proc/ide/$drive/media) - if [ "$media" = "disk" ]; then - output=$(mount | grep $drive) - if [ -z "$output" ]; then - output=$(parted /dev/$DRIVE p) - fi - fi - done -} - -# Takes an argument to display text before choice -# Sets INSTALL_DRIVE. Note that select_drive should be wrapped -# in the verification loop, not the included get_response. -select_drive () { - # list the drives in /proc/partitions. Remove partitions and empty lines. - drives=$(cat /proc/partitions | awk '{ if ($4!="name") { print $4 } }' | egrep -v "[0-9]$" | egrep -v "^$") - - # take the first drive as the default - INSTALL_DRIVE=$(echo $drives | /usr/bin/awk '{ print $1 }') - - # Add the drive sizes to the display to help the user decide - display='' - for drive in $drives - do - size=$(get_drive_size $drive) - display="$display $drive\t$size"MB"\n" - done - - n=`echo $drives|wc -w` - if [ $n = 1 -a x$CLASSIC != xCLASSIC ] - then - # Only one drive to choose from, no need to ask - INSTALL_DRIVE=$drives - else - # Display the drives and ask the user which one to install to - echo -e "$display" - echo - echo -ne "$1 [$INSTALL_DRIVE]:" - - INSTALL_DRIVE=$(get_response "$INSTALL_DRIVE" "$drives") - echo - fi - - # Assume no dma if the disk is smaller than 10G (such as a CF drive) - size=$(get_drive_size $INSTALL_DRIVE) - if [ $size -lt 11000 ] - then - ISCF="ide=nodma" - fi -} - -# Allow the user to select a partition to work with -# sets the global PARTITION -# $1 is the text to display before prompt -select_partition () { - minsize=$1 - text=$2 - - echo -n "Looking for appropriate partitions: " - progress_indicator "start" - - # initialize out global var. using globals in this way is bad form. I know. - PARTITION='' - - # list only the partitions in /proc/partitions. - parts=$(cat /proc/partitions | awk '{ if ($4!="name") { print $4 " "} }' | egrep "[0-9]" | egrep -v "loop" | tr -d '\n') - - # Get the partition sizes for display - # only show partitions that have sizes, i.e. remove loops - display='' - for part in $parts - do - lsize=$(get_drive_size $part) - if [ "$lsize" -a $lsize -ge $minsize ]; then - display="$display $part\t\t$lsize"MB"\n" - fi - done - - progress_indicator "stop" - echo "OK" - - if [ -n "$parts" ]; then - lpartition='' - while [ -z "$lpartition" ] - do - # take the first partition as the default - lpartition=$(echo $parts | /usr/bin/awk '{ print $1 }') - - echo "I found the following partitions suitable for the Vyatta image:" - echo -e "Partition\tSize" - echo -e "$display" - echo - echo -n "$text [$lpartition]: " - - lpartition=$(get_response "$lpartition" "$parts") - echo - done - else - echo "No suitable partition sizes found. Exiting..." | tee $INSTALL_LOG - exit 1 - fi - PARTITION=$lpartition -} - -# Delete all existing partitions for an automated install -# $1 is the drive to delete partitions from -delete_partitions () { - ldrive=$1 - - # get the partitions on the drive - partitions=$(cat /proc/partitions | grep $ldrive[0-9] | awk '{ print $4 }' | sed 's/[a-z]//g') - - # now for each part, blow it away - for part in $partitions - do - # Look to see if this is a config partition - mkdir -p /mnt/tmp - output=$(mount /dev/$ldrive$part /mnt/tmp 2>&1) - if [ $? != 0 ]; then - echo -e "Cannot mount /dev/$ldrive$part"."\nPlease see $INSTALL_LOG for more details.\nExiting.." - echo -e "Cannot mount /dev/$ldrive$part"."\nmount /dev/$ldrive$part /mnt/tmp\nExiting..." >> $INSTALL_LOG - echo "$output" >> $INSTALL_LOG - exit 1 - fi - - # Look to see if the old config marker file is there. - if [ -f /mnt/tmp/.vyatta_config ]; then - response='' - while [ -z "$response" ] - do - echo "/dev/$ldrive$part is a config partition!" - echo -ne "Would you like me to save the data on it before I delete it? (Yes/No) [Yes]: " - response=$(get_response "Yes" "Yes No Y N") - if [ "$response" == "yes" ] || [ "$response" == "y" ]; then - mkdir -p /mnt/config - output=$(cp -pR /mnt/tmp/* /mnt/config) - if [ -n "$output" ]; then - echo -e "Warning: error in copying the old config partition.\nSee $INSTALL_LOG for more details." - echo -e "Warning: error in copying the old config partition.\ncp -pR /mnt/tmp/* /mnt/config\n$output\n" >> $INSTALL_LOG - fi - fi - done - fi - umount /mnt/tmp - - echo "Removing partition $part on /dev/$ldrive" >> $INSTALL_LOG - output=$(parted /dev/$ldrive rm $part) - status=$? - if [ "$status" != 0 ]; then - echo -e "Warning: cannot delete partition $part on $ldrive.\nPlease see $INSTALL_LOG for more details." - echo -e "Warning: cannot delete partition $part on $ldrive.\nparted /dev/$ldrive rm $part\n$output" >> $INSTALL_LOG - fi - - # We add a bogus sleep here because the loop needs to wait for udev - sleep 5 - done -} - -# make a filesystem on the drive -# $1 is the drive to format -make_filesystem () { - ldrive=$1 - - echo -n "Creating filesystem on /dev/$ldrive: " - echo "Creating filesystem on /dev/$ldrive..." >> $INSTALL_LOG - - progress_indicator "start" - output=$(mke2fs -j /dev/$ldrive 2>&1) - status=$? - if [ "$status" != 0 ]; then - echo -e "Error: couldn't create the root filesystem.\nSee $INSTALL_LOG for further details.\nExiting..." - echo -e "Error: couldn't create the root filesystem.\n/sbin/mke2fs -j /dev/$lDRIVE\n$output" - exit 1 - fi - progress_indicator "stop" - echo "OK" -} - -# create the root partition -# $1 is the install drive e.g. sda -# $2 is the partition size e.g. 512 -# $3 config partition size e.g. 100 -# This will set the globals ROOT_PARTITION and CONFIG_PARTITION -create_partitions() { - ldrive=$1 - root_part_size=$2 - config_part_size=$3 - - total=$(($root_part_size + $config_part_size)) - head=$(($root_part_size)) - tail=$(($root_part_size + $config_part_size)) - - # Make sure there is enough space on drive - size=$(get_drive_size "$ldrive") - if [ "$total" -gt "$size" ]; then - echo "Error: $ldrive is only $size"MB" large." - exit 1 - fi - - echo "Creating root partition on /dev/$ldrive" >> $INSTALL_LOG - - # make the root partition - output=$(parted /dev/$ldrive mkpart primary 0 $root_part_size) - status=$? - if [ "$status" != 0 ]; then - echo -e "Error creating primary partition on $ldrive.\nPlease see $INSTALL_LOG for more details.\nExiting..." - echo -e "Error creating primary partition on $ldrive.\nparted /dev/$ldrive mkpart primary 0 $root_part_size\n$output" >> $INSTALL_LOG - exit 1 - fi - - ROOT_PARTITION=$ldrive"1" - # udev takes time to re-add the device file, so wait for it - while [ ! -b "/dev/$ROOT_PARTITION" ] - do - sleep 1 - done - - echo "Creating configuration partition on /dev/$ldrive" >> $INSTALL_LOG - echo "parted /dev/$ldrive mkpart primary $root_part_size $config_part_size" >> $INSTALL_LOG - - output=$(parted /dev/$ldrive mkpart primary $head $tail) - status=$? - if [ "$status" != 0 ]; then - echo -e "Error creating primary partition on $ldrive.\nPlease see $INSTALL_LOG for more details.\nExiting..." - echo -e "Error creating primary partition on $ldrive.\nparted /dev/$ldrive mkpart primary $root_part_size $config_part_size\n$output" - exit 1 - fi - - CONFIG_PARTITION=$ldrive"2" - # udev takes time to re-add the device file, so wait for it - while [ ! -b "/dev/$CONFIG_PARTITION" ] - do - sleep 1 - done - - # make the root and config ext3 file systems. - make_filesystem "$ROOT_PARTITION" - make_filesystem "$CONFIG_PARTITION" -} - -# Install the root filesystem -# $1 is the partition to install on -install_root_filesystem () { - ldrive=$1 - - dpkg="/usr/bin/dpkg --force-all --root=/mnt/rootfs" - echo "Mounting /dev/$ldrive..." | tee $INSTALL_LOG - - # make the mount point - output=$(/bin/mkdir -p /mnt/rootfs) - - # mount the partition - output=$(mount -t ext3 /dev/$ldrive /mnt/rootfs) - status=$? - - if [ "$status" != 0 ]; then - echo -e "Error trying to mount the new root partition.\nPlease see $INSTALL_LOG for details.\nExiting..." - echo -e "Error trying to mount the new root partition.\nmount -t ext3 /dev/$ldrive /mnt/rootfs\n$output" >> $INSTALL_LOG - exit 1 - fi - - echo -n "Copying system image files to /dev/$ROOT_PARTITION: " - progress_indicator "start" - # Mount the squashfs for copying - output=$(mkdir -p /mnt/squashfs) - output=$(mount /live_media/casper/filesystem.squashfs /mnt/squashfs -t squashfs -o loop) - status=$? - - if [ "$status" != 0 ]; then - echo -e "Error trying to mount the squashfs.\nPlease see install log for more details.\nExiting..." - echo -e "Error trying to mount the squashfs.\nmount /live_media/casper/filesystem.squashfs /mnt/squashfs -t squashfs -o loop\n$output" >> $INSTALL_LOG - exit 1 - fi - - output=$(cp -pR /mnt/squashfs/* /mnt/rootfs/) - status=$? - - if [ "$status" != 0 ]; then - echo -e "Error trying to copy the rootfs.\nPlease see install log for more details.\nExiting. -.." - echo -e "Error trying to copy the rootfs.\ncp -pR /mnt/squashfs/* /mnt/rootfs/\n$output" >> $INSTALL_LOG - exit 1 - fi - - # unmount the squashfs. No big deal if it fails. - output=$(umount /mnt/squashfs) - - # make the dir for the boot files and copy em' over - mkdir -p /mnt/rootfs/boot - output=$(cp -pR /boot/* /mnt/rootfs/boot/) - status=$? - output+=$(cp /live_media/boot/initrd.img /mnt/rootfs/boot/) - status=$status || $? - if [ "$status" != 0 ]; then - echo -e "Error trying to copy the bootfiles.\nPlease see install log for more details.\nExiting. -.." - echo -e "Error trying to copy the bootfiles.\ncp /live_media/boot/initrd.img /mnt/rootfs/boot/\n$output" >> $INSTALL_LOG - exit 1 - fi - - # create the fstab - echo -e "/dev/$CONFIG_PARTITION\t/opt/vyatta/etc/config\text3\tdefaults\t1 2" >> /mnt/rootfs/etc/fstab - echo -e "/dev/$ROOT_PARTITION\t/\text3\tdefaults\t0 1" >> /mnt/rootfs/etc/fstab - progress_indicator "stop" - echo "OK" -} - -# copy the configuration to the config partition -# $1 is the config partition device -copy_config () { - config_partition=$1 - lerror='' - - # Copy the config.boot.default to tmp - output=$(cp $VYATTA_CONFIG_DIRECTORY/config.boot.default /tmp/config.boot.default.install) - - # create the config directory on the union file system - output=$(mount -t ext3 /dev/$config_partition /mnt/rootfs/$VYATTA_CONFIG_DIRECTORY) - status=$? - - if [ "$status" != 0 ]; then - echo -e "Error trying to mount the new config partition.\nPlease see $INSTALL_LOG for details.\nExiting..." - echo -e "Error trying to mount the new config partition.\nmount -t ext3 /dev/$config_partition /mnt/rootfs/$VYATTA_CONFIG_DIRECTORY\n$output" >> $INSTALL_LOG - exit 1 - fi - - # create the proper perms on the new config partition - chgrp xorp /mnt/rootfs/$VYATTA_CONFIG_DIRECTORY - chmod 775 /mnt/rootfs/$VYATTA_CONFIG_DIRECTORY - - # Copy /tmp/config.boot.default to new config partition - cp /tmp/config.boot.default.install /mnt/rootfs/$VYATTA_CONFIG_DIRECTORY/config.boot.default - rm -f /tmp/config.boot.default.install - - # create our config partition marker - touch /mnt/rootfs/$VYATTA_CONFIG_DIRECTORY/.vyatta_config - - if [ -d /mnt/config ]; then - echo "Copying old configurations to config partition." - cp -pR /mnt/config/* /mnt/rootfs/$VYATTA_CONFIG_DIRECTORY - else - # Find the config files and give the user the option to copy config files - # TODO: this needs cleaned up - [ -f $VYATTA_CONFIG_DIRECTORY/config.boot ] && config="$VYATTA_CONFIG_DIRECTORY/config.boot" - fd_config=/media/floppy/config/config.boot - if [ ! -f $fd_config ]; then - configfile="$config" - else - if [ "$config" ]; then - config="$config\n$fd_config" - else - config="$fd_config" - configfile="$config" - fi - fi - - if [ "$config" -a ! $configfile ]; then - echo "I found the following configuration files:" - echo -e "$config" - default=$(echo -e $config| head -1) - - resp='' - while [ -z "$configfile" ] - do - echo -n "Which one should I copy to $INSTALL_DRIVE? [$default]: " - configfile=$(get_response "$default" "$config") - done - - echo - if ! cp $configfile /mnt/rootfs/$VYATTA_CONFIG_DIR; then - echo "Error copying file $configfile to config directory. Exiting..." >> $INSTALL_LOG - exit 1 - fi - fi - fi - - # set the permissions on the new config file - if [ -f "/mnt/rootfs/$VYATTA_CONFIG_DIR/config.boot" ]; then - chgrp xorp /mnt/rootfs/$VYATTA_CONFIG_DIR/config.boot - chmod 775 /mnt/rootfs/$VYATTA_CONFIG_DIR/config.boot - fi -} - -# setup grub on thje boot sector of a user queried drive -install_grub () { - orig_install_drive="$INSTALL_DRIVE" - # we now use INSTALL_DRIVE to reference the grub boot drive. - # that way I can re-use select_drive. I'm lazy that way. - INSTALL_DRIVE='' - - mkdir -p /mnt/rootfs/boot/grub - # Let the user choose the boot sector - - while [ -z "$INSTALL_DRIVE" ] - do - select_drive "I need to install the GRUB bootloader.\nI found the following drives on your system:\nWhich drive should GRUB modify the boot partition on?" - done - - echo -n "Setting up grub: " - echo "Setting up grub..." >> $INSTALL_LOG - - # Install grub in the boot sector of the primary drive - progress_indicator "start" - grub-install --no-floppy --root-directory=/mnt/rootfs /dev/$INSTALL_DRIVE >>$INSTALL_LOG 2>&1 - progress_indicator "stop" - - # TODO: This needs to be changed to map to the correct drive - part=$(echo $ROOT_PARTITION | sed 's/[^0-9]//g') - part=$(($part - 1)) - if [ $(cat /sys/block/$orig_install_drive/removable) == 0 ]; then - root=$(grep $orig_install_drive /mnt/rootfs/boot/grub/device.map | /usr/bin/awk -F')' '{ print $1 }') - root="$root,$part)" - else - echo "This looks like a removable device. Setting root grub device to (0,0)." | tee $INSTALL_LOG - root="(hd0,$part)" - fi - - # create the menu.lst file for grub - grub_file="/mnt/rootfs/boot/grub/menu.lst" - echo -e "default=0\ntimeout=5\n#splashimage=(hd0,0)/grub/splash.xpm.gz\nhiddenmenu" > $grub_file - # set serial console options - echo -e "serial --unit=0 --speed=9600\nterminal --timeout=5 console serial\n\n" >> $grub_file - # set primary boot option - echo -e "title Vyatta OFR\n\troot $root" >> $grub_file - echo -en "\tkernel /boot/vmlinuz root=/dev/$ROOT_PARTITION $ISCF console=ttyS0,9600 console=tty0\n" >> $grub_file - echo -e "\tinitrd /boot/initrd.img" >> $grub_file - - echo "OK" -} - -# ask for user input on the parted and skip setup methods -# $1 is whether or not to run parted -# sets globals INSTALL_DRIVE, ROOT_PARTITION, CONFIG_PARTITION -setup_method_manual() { - parted=$1 - - echo "The Vyatta install needs a minimum $ROOT_MIN"MB" root" - echo "and a minimum $CONFIG_MIN"MB" config partition. These" - echo "partitions need to be set to partiton type 83 (Linux)." - echo -e "\n\n" - - # if this is parted, let the user create the partitions - if [ "$method" == "parted" ] || [ "$method" == "p" ]; then - while [ -z "$INSTALL_DRIVE" ] - do - # TODO: right now we only run parted on a single drive - select_drive "\nI found the following drives on your system:\nWhich drive would you like to run parted on?" - done - - # Unmount the install drive if it is mounted - unmount "$INSTALL_DRIVE" - - # Run parted and let the user configure - parted /dev/$INSTALL_DRIVE - fi - - # Ask for the root partition and make sure it's valid - while [ -z "$ROOT_PARTITION" ] - do - select_partition 500 "Which partition should I install the root on?" - # Note that PARTITION is defined in select partition - ROOT_PARTITION=$PARTITION - unmount "$ROOT_PARTITION" - vd=$(grep $ROOT_PARTITION /proc/partitions | awk '{ print $4 }') - - if [ -z "$vd" ]; then - echo - echo "$ROOT_PARTITION is an invalid partition. Please try again." - ROOT_PARTITION="" - fi - done - - # Ask for the config partition and make sure it's valid - # TODO: need to do better error checking here to insure - # the user doesn't select the same part for both drives. - while [ -z "$CONFIG_PARTITION" ] - do - while true - do - select_partition 5 "Which partition should I use for configurations?" - # Note that PARTITION is defined in select partition - if [ "$PARTITION" != "$ROOT_PARTITION" ] - then - break - fi - echo "The config partition cannot be the same as the root partition ($ROOT_PARTITION)!" - echo - done - - # Note that PARTITION is defined in select partition - CONFIG_PARTITION=$PARTITION - unmount "$CONFIG_PARTITION" - vd=$(grep $CONFIG_PARTITION /proc/partitions | awk '{ print $4 }') - - if [ -z "$vd" ]; then - echo - echo "$CONFIG_PARTITION is an invalid partition. Please try again." - CONFIG_PARTITION="" - fi - done - - # create the ext3 fs on the part - make_filesystem "$ROOT_PARTITION" - - # Create the ext3 fs on the part - make_filesystem $CONFIG_PARTITION - - # We need to set the INSTALL_DRIVE if it wasn't set when the user ran parted - # We assume that we will use the boot sector of the same drive that the partition is on - # TODO: Allow different drives to function as the boot device - if [ -z "INSTALL_DRIVE" ]; then - INSTALL_DRIVE=$(echo $ROOT_PARTITION | sed 's/[0-9]//g') - fi -} - -# Walk the user through the auto setup method -# sets globals INSTALL_DRIVE, ROOT_PARTITION, CONFIG_PARTITION -setup_method_auto() { - while [ -z "$INSTALL_DRIVE" ] - do - select_drive "I found the following drives on your system:\nInstall the image on?" - - # check to make sure the drive is large enough to hold the image - if [ -n "$INSTALL_DRIVE" ]; then - lsize=$(get_drive_size "$INSTALL_DRIVE") - total=$(($ROOT_MIN + $CONFIG_MIN)) - if [ "$total" -gt "$lsize" ]; then - echo "Unfortunately, the OFR requires a total of at least $total"MB" to properly install." - echo "$INSTALL_DRIVE is below the minimum required capacity and therefore, cannot be used to" - echo -e "complete the installation.\n" - echo "If other drives are present" - echo -e "Please select another drive...\n" - - INSTALL_DRIVE='' - fi - fi - done - - # Give the user a requisite warning that we are about to nuke their drive - response='' - while [ -z $response ] - do - echo -n "This will destroy all data on /dev/$INSTALL_DRIVE. Continue? (Yes/No) [No]: " - response=$(get_response "No" "Yes No Y N") - - if [ "$response" == "no" ] || [ "$response" == "n" ]; then - echo "Ok then. Exiting..." - exit 1 - fi - done - - echo - - # make sure we aren't working on a mounted part - unmount "$INSTALL_DRIVE" - - # remove any existing partitions on that drive - delete_partitions "$INSTALL_DRIVE" - - # Enforce minimum partion size requirement. - ROOT_PARTITION_SIZE=0 - while [ $ROOT_MIN -gt $ROOT_PARTITION_SIZE ]; do - # Get the size of the drive - size=$(get_drive_size $INSTALL_DRIVE) - # Subtract our minimum config part so the user doesn't fill the entire drive - size=$(($size - $CONFIG_MIN)) - if [ $ROOT_MIN = $size ] - then - response=$size - else - echo -ne "\nHow big of a root partition should I create? ($ROOT_MIN"MB" - $size"MB") [$size]MB: " - response=$(get_response "$size") - fi - - # TODO: need to have better error checking on this value - ROOT_PARTITION_SIZE=$(echo "$response" | sed 's/[^0-9]//g') - if [ $ROOT_PARTITION_SIZE -lt $ROOT_MIN ] || [ $ROOT_PARTITION_SIZE -gt $size ]; then - echo "Root partion must be between $ROOT_MIN"MB" and $size"MB"" - echo - ROOT_PARTITION_SIZE=0 - fi - done - - # Enforce minimum partion size requirement. - CONFIG_PARTITION_SIZE=0 - while [ $CONFIG_MIN -gt $CONFIG_PARTITION_SIZE ]; do - # Get the size of the drive - size=$(get_drive_size $INSTALL_DRIVE) - # Subtract our minimum config part so the user doesn't fill the entire drive - size=$(($size - $ROOT_PARTITION_SIZE)) - if [ $CONFIG_MIN = $size ] - then - response=$size - else - echo -n "How big of a config partition should I create? ($CONFIG_MIN"MB" - $size"MB") [$CONFIG_MIN]MB: " - response=$(get_response "$CONFIG_MIN") - fi - CONFIG_PARTITION_SIZE=$(echo "$response" | sed 's/[^0-9]//g') - if [ $CONFIG_PARTITION_SIZE -lt $CONFIG_MIN ] || [ $CONFIG_PARTITION_SIZE -gt $size ]; then - echo "Config partion must be between $CONFIG_MIN"MB" and $size"MB"" - echo - CONFIG_PARTITION_SIZE=0 - fi - done - - echo - - # now take the data and create the partitions - create_partitions "$INSTALL_DRIVE" "$ROOT_PARTITION_SIZE" "$CONFIG_PARTITION_SIZE" -} - -unmount () { - # grab the list of mounted drives - # make sure to reverse sort so as to unmount up the tree - mounted=$(mount | grep "$1" | cut -f3 -d' ' | sort -r) - if [ -n "$mounted" ]; then - echo "I need to unmount: " - echo "$mounted" - - response='' - while [ -z $response ] - do - echo -n "Continue (yes/No) [No]: " - response=$(get_response "No" "Yes No Y N") - if [ "$response" == "no" ] || [ "$response" == "n" ]; then - echo -e "Ok then. Need to unmount to continue.\nExiting..." - exit 1 - fi - done - - for parts in "$mounted" - do - echo "umount $parts" >> $INSTALL_LOG - output=$(umount $parts) - status=$? - if [ "$status" != 0 ]; then - echo -e "Exiting: error unmounting $parts.\nPlease see $INSTALL_LOG for more details." - echo -e "Exiting: error unmounting $parts.\numount $parts\n$output" >> $INSTALL_LOG - exit 1 - fi - done - fi -} - -progress_indicator () { - case "$1" in - "start") /usr/bin/progress-indicator $SPID & - ;; - "stop") rm -f /tmp/pi.$SPID - sleep 1 - echo -n -e "\b" - ;; - esac -} - -##### Main -## -# clean up existing log files -if [ -f $INSTALL_LOG.old ]; then - rm -f $INSTALL_LOG.old -fi -if [ -f $INSTALL_LOG ]; then - mv $INSTALL_LOG $INSTALL_LOG.old - rm -f $INSTALL_LOG -fi - -# turn off any mounted swap files -turnoffswap - -# Print welcome and instructions. -echo "Welcome to the Vyatta install program. This script will walk you through" -echo "the process of installing the Vyatta image to a local hard drive." -echo - -if [ x$CLASSIC = xCLASSIC ] -then - response='' - while [ -z $response ] - do - echo -n "Would you like to continue? (Yes/No) [Yes]: " - response=$(get_response "Yes" "Yes No Y N") - if [ "$response" == "no" ] || [ "$response" == "n" ]; then - echo "Ok then. Exiting..." - exit 1 - fi - done -fi - -echo "The image will require a minimum $ROOT_MIN"MB" root partition and" -echo "a minimum $CONFIG_MIN"MB" configuration partition." -echo -echo "Disk partitioning can be done automatically or manually (with parted)." -echo "If you have already set up your partitions, you may skip the Partition step." -echo - -# some drives don't show up in /proc/partitions so we need to bootstrap them -echo -n "Probing drives: " -progress_indicator "start" -probe_drives -progress_indicator "stop" -echo "OK" - -method='' -while [ -z $method ] -do - echo -n "Partition (Auto/parted/skip) [Auto]: " - method=$(get_response "Auto" "Auto Parted Skip A P S") -done - -echo - -# TODO: Note installs assume an LBA BIOS. So no boot partition currently. -# also note that we are not creating a swap partition right now. -if [ "$method" == "parted" ] || [ "$method" == "p" ]; then - setup_method_manual "parted" -elif [ "$method" == "skip" ] || [ "$method" == "s" ]; then - setup_method_manual "skip" -elif [ "$method" == "auto" ] || [ "$method" == "a" ]; then - setup_method_auto -elif [ "$method" == "vyatta" ]; then - echo "Automated install..." - echo "unmounting $INSTALL_DRIVE" - unmount "$INSTALL_DRIVE" - echo "deleting partitions on $INSTALL_DRIVE" - delete_partitions "$INSTALL_DRIVE" - echo "creating config partition" - create_partitions "$INSTALL_DRIVE" "$ROOT_PARTITION_SIZE" "$CONFIG_PARTITION_SIZE" -fi - -# Install the root filesystem -install_root_filesystem "$ROOT_PARTITION" - -# Copy the config files -copy_config "$CONFIG_PARTITION" - -# Install grub -install_grub - -cp $INSTALL_LOG /mnt/rootfs/install.log - -umount /mnt/rootfs/opt/vyatta/etc/config -umount /mnt/rootfs - -echo "Done!" | tee $INSTALL_LOG -echo "Don't forget to remove the live CD after system shutdown" - -echo -ne "Reboot the system now? (Yes/No) [Yes]: " -response=$(get_response "Yes" "Yes No Y N") -if [ $response = yes -o $response = y ] -then - reboot -fi - -exit 0 diff --git a/scripts/rl-system.init b/scripts/rl-system.init index a70c0a46..5b81a4fd 100755 --- a/scripts/rl-system.init +++ b/scripts/rl-system.init @@ -50,8 +50,7 @@ fi syslog () { - - date -u "+%b %d %H:%M:%S $hostname $progname: $*" >> $LOGFILE + logger -p user.warning -t "$progname" "$*" } shopt -s extglob nullglob @@ -158,8 +157,6 @@ start () { log_failure_msg "can\'t set reboot on panic" add_new_serial_if || \ log_failure_msg "can\'t add serial interfaces" - proc_flags || \ - log_failure_msg "can\'t reset proc flags" update_version_info clear_apt_config add_snmp_stats_module diff --git a/templates/interfaces/bridge/node.def b/templates/interfaces/bridge/node.def index 6af845f3..0dc3670c 100644 --- a/templates/interfaces/bridge/node.def +++ b/templates/interfaces/bridge/node.def @@ -1,6 +1,6 @@ tag: type: txt -help: Configure a bridge interface +help: Set bridge interface syntax:expression: $VAR(@) in "br0", "br1", "br2", "br3", "br4", "br5", "br6", "br7", "br8", "br9" ; "Must be (br0 - br9)" diff --git a/templates/interfaces/bridge/node.tag/address/node.def b/templates/interfaces/bridge/node.tag/address/node.def index 23b1262f..52188386 100644 --- a/templates/interfaces/bridge/node.tag/address/node.def +++ b/templates/interfaces/bridge/node.tag/address/node.def @@ -1,11 +1,11 @@ multi: type: txt -help: Configure an IP address for this interface +help: Set an IP address for this interface syntax:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl --valid-addr $VAR(@) --dev $VAR(../@)"; "Invalid IP address/prefix [$VAR(@)] for interface $VAR(../@)" update:expression: "sudo /opt/vyatta/sbin/vyatta-interfaces.pl --eth-addr-update $VAR(@) --dev $VAR(../@)"; "Error setting address $VAR(@) on interface $VAR(../@)" delete:expression: "sudo /opt/vyatta/sbin/vyatta-interfaces.pl --eth-addr-delete $VAR(@) --dev $VAR(../@)"; "Error deleting address $VAR(@) on interface $VAR(../@)" allowed: echo "dhcp <>" comp_help:Possible completions: - <IP address>/<prefix length>\tSet the IP address and prefix length + <x.x.x.x/x> Set the IP address and prefix length dhcp\t\t\t\tSet the IP address and prefix length via DHCP diff --git a/templates/interfaces/bridge/node.tag/description/node.def b/templates/interfaces/bridge/node.tag/description/node.def index d01f83a7..50250a24 100644 --- a/templates/interfaces/bridge/node.tag/description/node.def +++ b/templates/interfaces/bridge/node.tag/description/node.def @@ -1,2 +1,2 @@ type: txt -help: Add a human-readable description of an interface +help: Set a description of the interface diff --git a/templates/interfaces/ethernet/node.tag/bridge-group/bridge/node.def b/templates/interfaces/ethernet/node.tag/bridge-group/bridge/node.def index c6d2934a..79609a86 100644 --- a/templates/interfaces/ethernet/node.tag/bridge-group/bridge/node.def +++ b/templates/interfaces/ethernet/node.tag/bridge-group/bridge/node.def @@ -1,11 +1,11 @@ type: txt -help: Add this interface to a bridge-group +help: Set this interface to a bridge-group syntax:expression: exec " \ if [ -z \"`sudo brctl show | grep $VAR(@) `\" ]; then \ echo bridge interface $VAR(@) doesn\\'t exist on this system ; \ exit 1 ; \ fi ; " -delete:expression: "sudo brctl delif $VAR(@) $VAR(../../@)" +delete: echo $VAR(@) > /tmp/bridge-no.$PPID allowed: local -a array ; array=( /sys/class/net/br* ) ; echo -n ${array[@]##*/} diff --git a/templates/interfaces/ethernet/node.tag/bridge-group/node.def b/templates/interfaces/ethernet/node.tag/bridge-group/node.def index 0f4e9b2c..9309f683 100644 --- a/templates/interfaces/ethernet/node.tag/bridge-group/node.def +++ b/templates/interfaces/ethernet/node.tag/bridge-group/node.def @@ -6,6 +6,9 @@ delete: touch /tmp/eth-$VAR(../@)-bridge.$PPID; end: if [ -f "/tmp/eth-$VAR(../@)-bridge.$PPID" ]; then rm -f /tmp/eth-$VAR(../@)-bridge.$PPID; + brno=$(cat /tmp/bridge-no.$PPID); + sudo brctl delif $brno $VAR(../@); + rm -f /tmp/bridge-no.$PPID; else if [ -z "$VAR(./bridge/@)" ]; then echo "Must set the bridge interface"; diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/bridge-group/bridge/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/bridge-group/bridge/node.def index 9c65ff16..e3674bcd 100644 --- a/templates/interfaces/ethernet/node.tag/vif/node.tag/bridge-group/bridge/node.def +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/bridge-group/bridge/node.def @@ -1,5 +1,5 @@ type: txt -help: Add this interface to a bridge-group +help: Set this interface to a bridge-group syntax:expression: exec " \ if [ -z \"`sudo brctl show | grep $VAR(@) `\" ]; then \ echo bridge interface $VAR(@) doesn\\'t exist on this system ; \ diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/bridge-group/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/bridge-group/node.def index af1c0e85..45be5f48 100644 --- a/templates/interfaces/ethernet/node.tag/vif/node.tag/bridge-group/node.def +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/bridge-group/node.def @@ -1,4 +1,4 @@ -help: Add this interface to a bridge group +help: Set this interface to a bridge group commit:expression: $VAR(./bridge/) != ""; "Must set the bridge interface" create:expression: "sudo brctl addif $VAR(./bridge/@) $VAR(../../@).$VAR(../@)" delete:expression: "touch /tmp/eth-$VAR(../@)-bridge.$PPID" diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/node.def index e4892540..26fdf457 100644 --- a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/node.def +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/node.def @@ -1,3 +1,3 @@ -help: Configure VRRP +help: Configure Virtual Router Redundancy Protocol (VRRP) parameters commit:expression: $VAR(../address/) != ""; "Must define a primary IP address on $VAR(../../@) vif $VAR(../@)" end:expression: "sudo /opt/vyatta/sbin/vyatta-keepalived.pl --vrrp-action update --intf $VAR(../../@).$VAR(../@) " diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.def index d59bf682..d87ad6b7 100644 --- a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.def +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.def @@ -2,7 +2,7 @@ tag: type: u32 syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 255; "VRRP group must be between 1-255" commit:expression: $VAR(virtual-address/) != ""; "Must define the virtual-address for vrrp-group $VAR(@)" -help: Configure VRRP group number +help: Set VRRP group number delete:expression: "sudo /opt/vyatta/sbin/vyatta-keepalived.pl --vrrp-action delete --intf $VAR(../../../@).$VAR(../../@) --group $VAR(@) " comp_help: possible completions <1-255> VRRP group number diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/advertise-interval/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/advertise-interval/node.def index f033aa5d..59f2b451 100644 --- a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/advertise-interval/node.def +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/advertise-interval/node.def @@ -1,6 +1,6 @@ type: u32 default: 1 -help: Configure advertise interval +help: Set advertise interval syntax:expression: $VAR(@) >= 1 && $VAR(@) <=255; "Advertise interval must be between 1-255" comp_help: possible completions <1-255> Set advertise interval (default 1) diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/authentication/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/authentication/node.def index 8e924a0e..adf78b3f 100644 --- a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/authentication/node.def +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/authentication/node.def @@ -1,3 +1,3 @@ -help: Configure authentication +help: Set authentication commit:expression: $VAR(./type/@) != ""; "You must set a authentication type" commit:expression: $VAR(./password/@) != ""; "You must set a authentication password" diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/authentication/password/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/authentication/password/node.def index 63f1bc32..9bd2e98d 100644 --- a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/authentication/password/node.def +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/authentication/password/node.def @@ -1,5 +1,5 @@ type: txt -help: Password text +help: Set password syntax:expression: exec " \ if [ `echo -n $VAR(@) | wc -c` -gt 8 ]; then \ echo Password must be 8 characters or less ; \ diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/authentication/type/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/authentication/type/node.def index d8e157d3..b531afee 100644 --- a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/authentication/type/node.def +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/authentication/type/node.def @@ -1,5 +1,5 @@ type: txt -help: Authentication type +help: Set authentication type syntax:expression: $VAR(@) in "plaintext-password", "ah"; \ "authentication must be simple or ah" comp_help: possible completions: diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/description/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/description/node.def index 835ad401..aeb40f0b 100644 --- a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/description/node.def +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/description/node.def @@ -1,2 +1,2 @@ type: txt -help: Description for this interface +help: Set description for this interface diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/node.def index 95761590..240924db 100644 --- a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/node.def +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/node.def @@ -1 +1 @@ -help: VRRP configuration for this VRRP group +help: Set VRRP parameters for this VRRP group diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/preempt/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/preempt/node.def index c3dc66cd..7b3b9cbd 100644 --- a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/preempt/node.def +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/preempt/node.def @@ -1,5 +1,5 @@ type: txt -help: Preempt mode +help: Set preempt mode (default: true) default: "true" syntax:expression: $VAR(@) in "true", "false"; "preempt must be true or false" comp_help: possible completions: diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/priority/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/priority/node.def index 504eebc4..54de02c7 100644 --- a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/priority/node.def +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/priority/node.def @@ -1,5 +1,5 @@ type: u32 syntax:expression: $VAR(@) >= 0 &&$VAR(@) <= 255; "priority must be between 1-255" -help: Priority +help: Set priority comp_help: possible completions: <1-255> Set Priority diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/backup/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/backup/node.def new file mode 100644 index 00000000..44be2a7f --- /dev/null +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/backup/node.def @@ -0,0 +1,4 @@ +help: Set an executable script to run on VRRP state-transition to backup +type: txt +syntax:expression: exec "[ -x $VAR(@) ] || exit 1"; "Backup Script should be an existing executable" + diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/fault/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/fault/node.def new file mode 100644 index 00000000..9f2557b3 --- /dev/null +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/fault/node.def @@ -0,0 +1,4 @@ +help: Set an executable script to run on VRRP state-transition to fault +type: txt +syntax:expression: exec "[ -x $VAR(@) ] || exit 1"; "Fault Script should be an existing executable" + diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/master/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/master/node.def new file mode 100644 index 00000000..7f7d8895 --- /dev/null +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/master/node.def @@ -0,0 +1,4 @@ +help: Set an executable script to run on VRRP state-transition to master +type: txt +syntax:expression: exec "[ -x $VAR(@) ] || exit 1"; "Master Script should be an existing executable" + diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/node.def new file mode 100644 index 00000000..ed959156 --- /dev/null +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/node.def @@ -0,0 +1,2 @@ +help: Set scripts to run on VRRP state-transitions + diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/sync-group/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/sync-group/node.def index a7d2e1fd..9602a842 100644 --- a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/sync-group/node.def +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/sync-group/node.def @@ -1,2 +1,2 @@ type: txt -help: Add this vrrp group to a sync group +help: Set to add this vrrp group to a sync group diff --git a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/virtual-address/node.def b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/virtual-address/node.def index c40c5f47..d4e5aac5 100644 --- a/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/virtual-address/node.def +++ b/templates/interfaces/ethernet/node.tag/vif/node.tag/vrrp/vrrp-group/node.tag/virtual-address/node.def @@ -1,6 +1,6 @@ multi: type: ipv4 -help: Configure virtual address +help: Set virtual address create: sudo /opt/vyatta/sbin/vyatta-watchlink-exclude.pl --id=vrrp --action=add --intf="$VAR(../../../../@).$VAR(../../../@)" --ipadd=$VAR(@) --signal diff --git a/templates/interfaces/ethernet/node.tag/vrrp/node.def b/templates/interfaces/ethernet/node.tag/vrrp/node.def index 05cfb986..d88c9745 100644 --- a/templates/interfaces/ethernet/node.tag/vrrp/node.def +++ b/templates/interfaces/ethernet/node.tag/vrrp/node.def @@ -1,3 +1,3 @@ -help: Configure VRRP +help: Configure Virtual Router Redundancy Protocol (VRRP) commit:expression: $VAR(../address/) != ""; "Must define a primary IP address on $VAR(../@)" end:expression: "sudo /opt/vyatta/sbin/vyatta-keepalived.pl --vrrp-action update --intf $VAR(../@) " diff --git a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.def b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.def index 90bf0d5c..a3ce1395 100644 --- a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.def +++ b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.def @@ -2,7 +2,7 @@ tag: type: u32 syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 255; "VRRP group must be between 1-255" commit:expression: $VAR(virtual-address/) != ""; "Must define the virtual-address for vrrp-group $VAR(@)" -help: Configure VRRP group number +help: Set VRRP group number delete:expression: "sudo /opt/vyatta/sbin/vyatta-keepalived.pl --vrrp-action delete --intf $VAR(../../@) --group $VAR(@) " comp_help: possible completions <1-255> VRRP group number diff --git a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/advertise-interval/node.def b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/advertise-interval/node.def index f033aa5d..59f2b451 100644 --- a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/advertise-interval/node.def +++ b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/advertise-interval/node.def @@ -1,6 +1,6 @@ type: u32 default: 1 -help: Configure advertise interval +help: Set advertise interval syntax:expression: $VAR(@) >= 1 && $VAR(@) <=255; "Advertise interval must be between 1-255" comp_help: possible completions <1-255> Set advertise interval (default 1) diff --git a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/authentication/node.def b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/authentication/node.def index 8e924a0e..adf78b3f 100644 --- a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/authentication/node.def +++ b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/authentication/node.def @@ -1,3 +1,3 @@ -help: Configure authentication +help: Set authentication commit:expression: $VAR(./type/@) != ""; "You must set a authentication type" commit:expression: $VAR(./password/@) != ""; "You must set a authentication password" diff --git a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/authentication/password/node.def b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/authentication/password/node.def index 63f1bc32..9bd2e98d 100644 --- a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/authentication/password/node.def +++ b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/authentication/password/node.def @@ -1,5 +1,5 @@ type: txt -help: Password text +help: Set password syntax:expression: exec " \ if [ `echo -n $VAR(@) | wc -c` -gt 8 ]; then \ echo Password must be 8 characters or less ; \ diff --git a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/authentication/type/node.def b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/authentication/type/node.def index 32a802d5..1547d62c 100644 --- a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/authentication/type/node.def +++ b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/authentication/type/node.def @@ -1,5 +1,5 @@ type: txt -help: Authentication type +help: Set authentication type syntax:expression: $VAR(@) in "plaintext-password", "ah"; \ "authentication must be simple or ah" comp_help: possible completions: diff --git a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/description/node.def b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/description/node.def index 835ad401..aeb40f0b 100644 --- a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/description/node.def +++ b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/description/node.def @@ -1,2 +1,2 @@ type: txt -help: Description for this interface +help: Set description for this interface diff --git a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/node.def b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/node.def index 95761590..240924db 100644 --- a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/node.def +++ b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/node.def @@ -1 +1 @@ -help: VRRP configuration for this VRRP group +help: Set VRRP parameters for this VRRP group diff --git a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/preempt/node.def b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/preempt/node.def index c3dc66cd..4ed282ed 100644 --- a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/preempt/node.def +++ b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/preempt/node.def @@ -1,5 +1,5 @@ type: txt -help: Preempt mode +help: Set preempt mode default: "true" syntax:expression: $VAR(@) in "true", "false"; "preempt must be true or false" comp_help: possible completions: diff --git a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/priority/node.def b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/priority/node.def index 504eebc4..54de02c7 100644 --- a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/priority/node.def +++ b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/priority/node.def @@ -1,5 +1,5 @@ type: u32 syntax:expression: $VAR(@) >= 0 &&$VAR(@) <= 255; "priority must be between 1-255" -help: Priority +help: Set priority comp_help: possible completions: <1-255> Set Priority diff --git a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/backup/node.def b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/backup/node.def new file mode 100644 index 00000000..44be2a7f --- /dev/null +++ b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/backup/node.def @@ -0,0 +1,4 @@ +help: Set an executable script to run on VRRP state-transition to backup +type: txt +syntax:expression: exec "[ -x $VAR(@) ] || exit 1"; "Backup Script should be an existing executable" + diff --git a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/fault/node.def b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/fault/node.def new file mode 100644 index 00000000..9f2557b3 --- /dev/null +++ b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/fault/node.def @@ -0,0 +1,4 @@ +help: Set an executable script to run on VRRP state-transition to fault +type: txt +syntax:expression: exec "[ -x $VAR(@) ] || exit 1"; "Fault Script should be an existing executable" + diff --git a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/master/node.def b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/master/node.def new file mode 100644 index 00000000..7f7d8895 --- /dev/null +++ b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/master/node.def @@ -0,0 +1,4 @@ +help: Set an executable script to run on VRRP state-transition to master +type: txt +syntax:expression: exec "[ -x $VAR(@) ] || exit 1"; "Master Script should be an existing executable" + diff --git a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/node.def b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/node.def new file mode 100644 index 00000000..3abc1696 --- /dev/null +++ b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/run-transition-scripts/node.def @@ -0,0 +1,2 @@ +help: Set scripts for VRRP state-transitions + diff --git a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/sync-group/node.def b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/sync-group/node.def index a7d2e1fd..9602a842 100644 --- a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/sync-group/node.def +++ b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/sync-group/node.def @@ -1,2 +1,2 @@ type: txt -help: Add this vrrp group to a sync group +help: Set to add this vrrp group to a sync group diff --git a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/virtual-address/node.def b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/virtual-address/node.def index af8b4624..2f94aef9 100644 --- a/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/virtual-address/node.def +++ b/templates/interfaces/ethernet/node.tag/vrrp/vrrp-group/node.tag/virtual-address/node.def @@ -1,6 +1,6 @@ multi: type: ipv4 -help: Configure virtual address +help: Set virtual address create: sudo /opt/vyatta/sbin/vyatta-watchlink-exclude.pl --id=vrrp --action=add --intf=$VAR(../../../@) --ipadd=$VAR(@) --signal diff --git a/templates/interfaces/tunnel/node.def b/templates/interfaces/tunnel/node.def index 9ebb581c..aefd5935 100644 --- a/templates/interfaces/tunnel/node.def +++ b/templates/interfaces/tunnel/node.def @@ -1,6 +1,6 @@ tag: type: txt -help: Configure a tunnel interface +help: Set tunnel interface syntax:expression: $VAR(@) in "tun0", "tun1", "tun2", "tun3", "tun4", "tun5", "tun6", "tun7", "tun8", "tun9" ; "Must be (tun0 - tun9)" commit:expression: $VAR(./local-ip/) != "" ; \ diff --git a/templates/interfaces/tunnel/node.tag/address/node.def b/templates/interfaces/tunnel/node.tag/address/node.def index 4d91c9ba..07ea4a0e 100644 --- a/templates/interfaces/tunnel/node.tag/address/node.def +++ b/templates/interfaces/tunnel/node.tag/address/node.def @@ -1,6 +1,6 @@ multi: type: txt -help: Configure an IP address for this interface +help: Set an IP address for this interface syntax:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl --valid-addr $VAR(@) --dev $VAR(../@)"; "Invalid IP address/prefix [$VAR(@)] for interface $VAR(../@)" @@ -9,4 +9,4 @@ update:expression: "sudo /opt/vyatta/sbin/vyatta-interfaces.pl --eth-addr-update delete:expression: "sudo /opt/vyatta/sbin/vyatta-interfaces.pl --eth-addr-delete $VAR(@) --dev $VAR(../@)"; "Error deleting address $VAR(@) on interface $VAR(../@)" comp_help:Possible completions: - <IP address>/<prefix length> Set the IP address and prefix length + <x.x.x.x/x> Set the IP address and prefix length diff --git a/templates/interfaces/tunnel/node.tag/description/node.def b/templates/interfaces/tunnel/node.tag/description/node.def index e00ed857..b53ae684 100644 --- a/templates/interfaces/tunnel/node.tag/description/node.def +++ b/templates/interfaces/tunnel/node.tag/description/node.def @@ -1,2 +1,2 @@ type: txt -help: Description of this tunnel interface +help: Set description of this tunnel interface diff --git a/templates/interfaces/tunnel/node.tag/key/node.def b/templates/interfaces/tunnel/node.tag/key/node.def index ae244529..1ece7642 100644 --- a/templates/interfaces/tunnel/node.tag/key/node.def +++ b/templates/interfaces/tunnel/node.tag/key/node.def @@ -2,6 +2,11 @@ type: u32 help: Set the tunnel key syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 999999; \ "Must be between 0-999999 for $VAR(../@)" +syntax:expression: exec " \ + if [ -n \"`sudo ip tunnel show $VAR(../@) | grep $VAR(../@) `\" ]; then \ + echo Key can only be set at tunnel creation for $VAR(../@); \ + exit 1 ; \ + fi ; " commit:expression: $VAR(../encapsulation/@) in "gre" ; \ "Key only valid for GRE for $VAR(../@)" diff --git a/templates/interfaces/tunnel/node.tag/local-ip/node.def b/templates/interfaces/tunnel/node.tag/local-ip/node.def index 6cdaf2a5..9f9d52c0 100644 --- a/templates/interfaces/tunnel/node.tag/local-ip/node.def +++ b/templates/interfaces/tunnel/node.tag/local-ip/node.def @@ -1,6 +1,10 @@ type: ipv4 -help: Enter the local IP address for this tunnel +help: Set the local IP address for this tunnel syntax:expression: exec "if [ -z \"`ip addr list | grep $VAR(@) `\" ]; then \ echo IP address $VAR(@) doesn\\'t exist on this system ; \ exit 1 ; \ fi ; " +create:expression: "true" +update:expression: "false" ; \ + "Local IP can only be set at tunnel creation for $VAR(../@)" + diff --git a/templates/interfaces/tunnel/node.tag/mtu/node.def b/templates/interfaces/tunnel/node.tag/mtu/node.def index 47dc34cf..f1fdf39b 100644 --- a/templates/interfaces/tunnel/node.tag/mtu/node.def +++ b/templates/interfaces/tunnel/node.tag/mtu/node.def @@ -1,5 +1,5 @@ type: u32 -help: Set the tunnel MTU +help: Set the tunnel Maximum Transmission Unit (MTU) syntax:expression: $VAR(@) >= 64 && $VAR(@) <= 8024; "Must be between 64-8024" update:expression: "sudo ip link set $VAR(../@) mtu $VAR(@)" delete:expression: "sudo ip link set $VAR(../@) mtu 1476" diff --git a/templates/interfaces/tunnel/node.tag/remote-ip/node.def b/templates/interfaces/tunnel/node.tag/remote-ip/node.def index e5ee1ffd..e8bb2ef0 100644 --- a/templates/interfaces/tunnel/node.tag/remote-ip/node.def +++ b/templates/interfaces/tunnel/node.tag/remote-ip/node.def @@ -1,2 +1,6 @@ type: ipv4 -help: Enter the remote IP address for this tunnel +help: Set the remote IP address for this tunnel +create:expression: "true" +update:expression: "false" ; \ + "Remote IP can only be set at tunnel creation for $VAR(../@)" + diff --git a/templates/interfaces/tunnel/node.tag/tos/node.def b/templates/interfaces/tunnel/node.tag/tos/node.def index 8cc69360..1f739966 100644 --- a/templates/interfaces/tunnel/node.tag/tos/node.def +++ b/templates/interfaces/tunnel/node.tag/tos/node.def @@ -1,5 +1,5 @@ type: u32 -help: Set the tunnel type of service +help: Set the tunnel Type of Service (TOS) syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 99; "Must be between 0-99" update:expression: "sudo ip tunnel change $VAR(../@) tos $VAR(@)" delete:expression: "sudo ip tunnel change $VAR(../@) tos inherit" diff --git a/templates/interfaces/tunnel/node.tag/ttl/node.def b/templates/interfaces/tunnel/node.tag/ttl/node.def index 1d194508..298c4d61 100644 --- a/templates/interfaces/tunnel/node.tag/ttl/node.def +++ b/templates/interfaces/tunnel/node.tag/ttl/node.def @@ -1,5 +1,5 @@ type: u32 -help: Set the tunnel time to live +help: Set the tunnel time to live field default: 255 syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 255; "Must be between 0-255" update:expression: "sudo ip tunnel change $VAR(../@) ttl $VAR(@)" diff --git a/templates/protocols/snmp/community/node.def b/templates/protocols/snmp/community/node.def index 07bedcd1..6dd23349 100644 --- a/templates/protocols/snmp/community/node.def +++ b/templates/protocols/snmp/community/node.def @@ -1,3 +1,3 @@ tag: type: txt -help: Community name +help: Set community name diff --git a/templates/protocols/snmp/community/node.tag/authorization/node.def b/templates/protocols/snmp/community/node.tag/authorization/node.def index 005e9b39..c8918d43 100644 --- a/templates/protocols/snmp/community/node.tag/authorization/node.def +++ b/templates/protocols/snmp/community/node.tag/authorization/node.def @@ -1,6 +1,6 @@ type: txt default: "ro" -help: Authorization type (rw or ro) +help: Set authorization type (rw or ro) (default: ro) syntax:expression: $VAR(@) in "ro", "rw"; "Authorization type must be either rw or ro" diff --git a/templates/protocols/snmp/community/node.tag/client/node.def b/templates/protocols/snmp/community/node.tag/client/node.def index 134698ef..828faa97 100644 --- a/templates/protocols/snmp/community/node.tag/client/node.def +++ b/templates/protocols/snmp/community/node.tag/client/node.def @@ -1,3 +1,3 @@ multi: type: ipv4 -help: IP address of SNMP client allowed to contact system +help: Set IP address of SNMP client allowed to contact system diff --git a/templates/protocols/snmp/community/node.tag/network/node.def b/templates/protocols/snmp/community/node.tag/network/node.def index 1afdb2a1..00a77d4b 100644 --- a/templates/protocols/snmp/community/node.tag/network/node.def +++ b/templates/protocols/snmp/community/node.tag/network/node.def @@ -1,4 +1,4 @@ multi: type: ipv4net -help: Subnet of SNMP client(s) allowed to contact system +help: Set subnet of SNMP client(s) allowed to contact system syntax:expression: exec "/opt/vyatta/sbin/vyatta_quagga_utils.pl --check-prefix-boundry $VAR(@)" diff --git a/templates/protocols/snmp/community/node.tag/node.def b/templates/protocols/snmp/community/node.tag/node.def index 20430928..dd44d5ec 100644 --- a/templates/protocols/snmp/community/node.tag/node.def +++ b/templates/protocols/snmp/community/node.tag/node.def @@ -1 +1 @@ -help: Community options +help: Set community options diff --git a/templates/protocols/snmp/contact/node.def b/templates/protocols/snmp/contact/node.def index 039cd548..4251291e 100644 --- a/templates/protocols/snmp/contact/node.def +++ b/templates/protocols/snmp/contact/node.def @@ -1,2 +1,2 @@ type: txt -help: Contact information +help: Set contact information diff --git a/templates/protocols/snmp/description/node.def b/templates/protocols/snmp/description/node.def index 61ec96b6..6324a96b 100644 --- a/templates/protocols/snmp/description/node.def +++ b/templates/protocols/snmp/description/node.def @@ -1,2 +1,2 @@ type: txt -help: Description information +help: Set description information diff --git a/templates/protocols/snmp/location/node.def b/templates/protocols/snmp/location/node.def index a5b234ea..f4bcef7c 100644 --- a/templates/protocols/snmp/location/node.def +++ b/templates/protocols/snmp/location/node.def @@ -1,3 +1,3 @@ type: txt -help: Location information +help: Set location information diff --git a/templates/protocols/snmp/node.def b/templates/protocols/snmp/node.def index 62adc534..3612f2b6 100644 --- a/templates/protocols/snmp/node.def +++ b/templates/protocols/snmp/node.def @@ -1,4 +1,4 @@ -help: Configure SNMP +help: Configure Simple Network Management Protocol (SNMP) commit:expression: $VAR(community/) != ""; "must configure a community" create:expression: "/opt/vyatta/sbin/vyatta-snmp.pl --init-snmp" delete:expression: "touch /tmp/snmp.$PPID" diff --git a/templates/protocols/snmp/trap-target/node.def b/templates/protocols/snmp/trap-target/node.def index bfb450fd..c041d108 100644 --- a/templates/protocols/snmp/trap-target/node.def +++ b/templates/protocols/snmp/trap-target/node.def @@ -1,3 +1,3 @@ multi: type: ipv4 -help: IPv4 address of trap target +help: Set IP address of trap target diff --git a/templates/service/node.def b/templates/service/node.def index f2dbf0c6..a2441db9 100644 --- a/templates/service/node.def +++ b/templates/service/node.def @@ -1 +1 @@ -help: Service configuration +help: Configure specified service diff --git a/templates/service/ssh/node.def b/templates/service/ssh/node.def index a16f5d15..fbb29687 100644 --- a/templates/service/ssh/node.def +++ b/templates/service/ssh/node.def @@ -1,4 +1,4 @@ -help: Enable/disable SSH protocol +help: Enable/disable Secure SHell (SSH) protocol delete:expression: "sudo /usr/sbin/invoke-rc.d ssh stop && \ sudo sh -c \"echo 'SSHD_OPTS=' > /etc/default/ssh\" " end:expression: "if [ -z \"$VAR(port/@)\" ]; then exit 0; fi; \ diff --git a/templates/service/ssh/port/node.def b/templates/service/ssh/port/node.def index 1b1248f4..db07b07a 100644 --- a/templates/service/ssh/port/node.def +++ b/templates/service/ssh/port/node.def @@ -1,3 +1,3 @@ type: u32 default: 22 -help: Port for SSH service +help: Set port for SSH service diff --git a/templates/service/ssh/protocol-version/node.def b/templates/service/ssh/protocol-version/node.def index a4efc602..051ea062 100644 --- a/templates/service/ssh/protocol-version/node.def +++ b/templates/service/ssh/protocol-version/node.def @@ -1,3 +1,3 @@ type: txt default: "v2" -help: SSH version +help: Set SSH version (default: v2) diff --git a/templates/service/telnet/node.def b/templates/service/telnet/node.def index a1cc9680..5976addd 100644 --- a/templates/service/telnet/node.def +++ b/templates/service/telnet/node.def @@ -1,4 +1,4 @@ -help: Enable/disable telnet protocol +help: Enable/disable Network Virtual Terminal Protocol (TELNET) protocol delete:expression: " \ if ! env | grep -q SSH_TTY=; then \ if [[ \"`tty`\" == /dev/pts/* ]]; then \ diff --git a/templates/service/telnet/port/node.def b/templates/service/telnet/port/node.def index 81b2ff91..2613f413 100644 --- a/templates/service/telnet/port/node.def +++ b/templates/service/telnet/port/node.def @@ -1,3 +1,3 @@ type: u32 default: 23 -help: Port for telnet service +help: Set port for TELNET service diff --git a/templates/system/domain-name/node.def b/templates/system/domain-name/node.def index 9101f2f3..2ddc8e44 100644 --- a/templates/system/domain-name/node.def +++ b/templates/system/domain-name/node.def @@ -1,5 +1,5 @@ type: txt -help: Configure system domain name +help: Set system domain name syntax:expression: pattern $VAR(@) "^[-a-zA-Z0-9.]{0,63}$" ; "invalid domain name $VAR(@)" # also add localhost line into /etc/hosts (see host-name template)? diff --git a/templates/system/domain-search/domain/node.def b/templates/system/domain-search/domain/node.def index bd3e51bf..8af03fa4 100644 --- a/templates/system/domain-search/domain/node.def +++ b/templates/system/domain-search/domain/node.def @@ -1,6 +1,6 @@ multi: type: txt -help: Configure DNS domain completion order +help: Set DNS domain completion order syntax:expression: pattern $VAR(@) "^[-a-zA-Z0-9.]+$" ; "invalid domain name $VAR(@)" update:expression: "sudo /opt/vyatta/sbin/vyatta_update_resolv.pl" delete:expression: "sudo /opt/vyatta/sbin/vyatta_update_resolv.pl" diff --git a/templates/system/domain-search/node.def b/templates/system/domain-search/node.def index ce28442d..b51158e6 100644 --- a/templates/system/domain-search/node.def +++ b/templates/system/domain-search/node.def @@ -1 +1 @@ -help: Configure DNS domain completion order +help: Set Domain Name Server (DNS) domain completion order diff --git a/templates/system/host-name/node.def b/templates/system/host-name/node.def index 1aba2174..97b9f9a6 100644 --- a/templates/system/host-name/node.def +++ b/templates/system/host-name/node.def @@ -1,5 +1,5 @@ type: txt -help: Configure system host name +help: Set system host name (default: vyatta) default: "vyatta" syntax:expression: pattern $VAR(@) "^[[:alpha:]][-.[:alnum:]]*[[:alnum:]]$" ; "invalid host name $VAR(@)" diff --git a/templates/system/login/node.def b/templates/system/login/node.def index d98c03c6..62e693e2 100644 --- a/templates/system/login/node.def +++ b/templates/system/login/node.def @@ -1,3 +1,3 @@ -help: Configure user access +help: Set user access delete:expression: "echo User root cannot be deleted 1>&2 && exit 1" end: /opt/vyatta/sbin/vyatta_update_login.pl diff --git a/templates/system/login/radius-server/node.def b/templates/system/login/radius-server/node.def index 85ca4cc5..137a92a0 100644 --- a/templates/system/login/radius-server/node.def +++ b/templates/system/login/radius-server/node.def @@ -1,6 +1,6 @@ tag: type: ipv4 -help: Radius server authentication configuration +help: Set radius server authentication commit:expression: $VAR(port) != "" && $VAR(secret) != "" && $VAR(timeout) != "" ; "Port, secret, and timeout must be specified for Radius" diff --git a/templates/system/login/radius-server/node.tag/port/node.def b/templates/system/login/radius-server/node.tag/port/node.def index 002bc8a0..a0873552 100644 --- a/templates/system/login/radius-server/node.tag/port/node.def +++ b/templates/system/login/radius-server/node.tag/port/node.def @@ -1,4 +1,4 @@ type: u32 -help: Configure radius port +help: Set radius port syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" default: 1812 diff --git a/templates/system/login/radius-server/node.tag/secret/node.def b/templates/system/login/radius-server/node.tag/secret/node.def index 71176843..6ed802ef 100644 --- a/templates/system/login/radius-server/node.tag/secret/node.def +++ b/templates/system/login/radius-server/node.tag/secret/node.def @@ -1,2 +1,2 @@ type: txt -help: Secret for radius access +help: Set secret for radius access diff --git a/templates/system/login/radius-server/node.tag/timeout/node.def b/templates/system/login/radius-server/node.tag/timeout/node.def index 23a964a6..423051d3 100644 --- a/templates/system/login/radius-server/node.tag/timeout/node.def +++ b/templates/system/login/radius-server/node.tag/timeout/node.def @@ -1,3 +1,3 @@ type: u32 -help: Timeout for radius session +help: Set timeout for radius session default: 2 diff --git a/templates/system/login/user/node.def b/templates/system/login/user/node.def index 205a4b7a..d23a397f 100644 --- a/templates/system/login/user/node.def +++ b/templates/system/login/user/node.def @@ -1,6 +1,6 @@ tag: type: txt -help: User account information +help: Set user account information commit:expression: $VAR(authentication/encrypted-password) != "" || ($VAR(authentication/plaintext-password) != "" && $VAR(authentication/plaintext-password/@) != "") diff --git a/templates/system/login/user/node.tag/authentication/encrypted-password/node.def b/templates/system/login/user/node.tag/authentication/encrypted-password/node.def index cd800ce4..3c12bdc3 100644 --- a/templates/system/login/user/node.tag/authentication/encrypted-password/node.def +++ b/templates/system/login/user/node.tag/authentication/encrypted-password/node.def @@ -1,2 +1,2 @@ type: txt -help: Configure encrypted password +help: Set encrypted password diff --git a/templates/system/login/user/node.tag/authentication/node.def b/templates/system/login/user/node.tag/authentication/node.def index 4306d008..488acd8c 100644 --- a/templates/system/login/user/node.tag/authentication/node.def +++ b/templates/system/login/user/node.tag/authentication/node.def @@ -1 +1 @@ -help: Authentication password +help: Set authentication password diff --git a/templates/system/login/user/node.tag/authentication/plaintext-password/node.def b/templates/system/login/user/node.tag/authentication/plaintext-password/node.def index 1ac3c203..4f309e72 100644 --- a/templates/system/login/user/node.tag/authentication/plaintext-password/node.def +++ b/templates/system/login/user/node.tag/authentication/plaintext-password/node.def @@ -1,5 +1,5 @@ type: txt -help: Configure plaintext password for encryption +help: Sete plaintext password for encryption # if plaintext is empty, assume this is left-over from blanking the plaintext # and do nothing. to set password to empty, user needs to set the # "encrypted-password" to an empty string (which actually allows login without diff --git a/templates/system/login/user/node.tag/full-name/node.def b/templates/system/login/user/node.tag/full-name/node.def index 42d9dfac..c3cba58b 100644 --- a/templates/system/login/user/node.tag/full-name/node.def +++ b/templates/system/login/user/node.tag/full-name/node.def @@ -1,3 +1,3 @@ type: txt -help: Full name of the user (use quotes for names with spaces) +help: Set full name of the user (use quotes for names with spaces) syntax:expression: pattern $VAR(@) "^[^:]*$"; "Cannot use ':' in full name" diff --git a/templates/system/login/user/node.tag/level/node.def b/templates/system/login/user/node.tag/level/node.def index 2596bd7a..d64a6441 100644 --- a/templates/system/login/user/node.tag/level/node.def +++ b/templates/system/login/user/node.tag/level/node.def @@ -1,5 +1,5 @@ type: txt -help: User privilege level +help: Set user privilege level default: "admin" syntax:expression: $VAR(@) in "admin", "operator"; "Allowed levels are \"admin\" and \"operator\"" comp_help:Possible completions: diff --git a/templates/system/name-server/node.def b/templates/system/name-server/node.def index 7b688a37..0ed43351 100644 --- a/templates/system/name-server/node.def +++ b/templates/system/name-server/node.def @@ -1,6 +1,6 @@ multi: type: ipv4 -help: Configure domain name server +help: Set Domain Name Server (DNS) update:expression: "sudo sh -c \"touch /etc/resolv.conf && \ if grep -q '$VAR(@)' /etc/resolv.conf; then \ exit 0; \ diff --git a/templates/system/node.def b/templates/system/node.def index 3f4d0643..3e437873 100644 --- a/templates/system/node.def +++ b/templates/system/node.def @@ -1 +1 @@ -help: System configuration +help: Configure system parameters diff --git a/templates/system/ntp-server/node.def b/templates/system/ntp-server/node.def index e61ef918..485cf774 100644 --- a/templates/system/ntp-server/node.def +++ b/templates/system/ntp-server/node.def @@ -1,6 +1,6 @@ multi: type: txt -help: Name or IP address of NTP server +help: Set name or IP address of Network Time Protocol (NTP) server update:sudo sh -c \ "touch /etc/ntp.conf if ! grep -q 'server.*$VAR(@)' /etc/ntp.conf; then diff --git a/templates/system/options/node.def b/templates/system/options/node.def index 005684e6..96cb8037 100644 --- a/templates/system/options/node.def +++ b/templates/system/options/node.def @@ -1 +1 @@ -help: Configure system options +help: Set system options diff --git a/templates/system/options/reboot-on-panic/node.def b/templates/system/options/reboot-on-panic/node.def index d16df48c..f75f4c68 100644 --- a/templates/system/options/reboot-on-panic/node.def +++ b/templates/system/options/reboot-on-panic/node.def @@ -1,5 +1,5 @@ type: bool -help: Configure if kernel panic causes reboot +help: Set if kernel panic causes reboot default: true update:expression: "sudo sh -c \"if [ x$VAR(@) == xfalse ]; \ then \ diff --git a/templates/system/package/auto-sync/node.def b/templates/system/package/auto-sync/node.def index 9300848e..3d14ab04 100644 --- a/templates/system/package/auto-sync/node.def +++ b/templates/system/package/auto-sync/node.def @@ -3,7 +3,7 @@ # the /etc/crontab file must have the daily line for daily to be run type: u32 default: 1 -help: Update the the repository cache every n days. 0 disables auto-update. +help: Set to update the the repository cache every n days (0 disables auto-update) syntax:expression: $VAR(@) >= 0 && $VAR(@) < 32 ; "auto-sync must be between 0 and 32 days" update:expression: "sudo sh -c \"touch /etc/apt/apt.conf && \ sed -i '/APT::Periodic::Update-Package-Lists*/d' /etc/apt/apt.conf && \ diff --git a/templates/system/package/node.def b/templates/system/package/node.def index 3330033a..f0debd11 100644 --- a/templates/system/package/node.def +++ b/templates/system/package/node.def @@ -1 +1 @@ -help: Package Update Repository Configuration +help: Set package update repository parameters diff --git a/templates/system/package/repository/node.def b/templates/system/package/repository/node.def index d2e4cf38..8d753918 100644 --- a/templates/system/package/repository/node.def +++ b/templates/system/package/repository/node.def @@ -2,7 +2,7 @@ tag: type: txt -help: Name a debian archive +help: Set name of a debian archive commit:expression: $VAR(./url/) != ""; "Must configure the repository URL" commit:expression: $VAR(./distribution/) != ""; "Must configure the repository distribution" diff --git a/templates/system/package/repository/node.tag/components/node.def b/templates/system/package/repository/node.tag/components/node.def index 51ab9580..60605b89 100644 --- a/templates/system/package/repository/node.tag/components/node.def +++ b/templates/system/package/repository/node.tag/components/node.def @@ -1,4 +1,4 @@ type: txt -help: Repository component names +help: Set repository component names # need to prohibit '!' in repo name (sed delimiter) syntax:expression: pattern $VAR(@) "^[^!]+$" ; "Do not use '!' in component name" diff --git a/templates/system/package/repository/node.tag/description/node.def b/templates/system/package/repository/node.tag/description/node.def index e187f9e4..8ebfacb0 100644 --- a/templates/system/package/repository/node.tag/description/node.def +++ b/templates/system/package/repository/node.tag/description/node.def @@ -1,2 +1,2 @@ type: txt -help: Repository description +help: Set repository description diff --git a/templates/system/package/repository/node.tag/distribution/node.def b/templates/system/package/repository/node.tag/distribution/node.def index 39235a6a..ce5219bc 100644 --- a/templates/system/package/repository/node.tag/distribution/node.def +++ b/templates/system/package/repository/node.tag/distribution/node.def @@ -1,4 +1,4 @@ type: txt -help: Distribution name +help: Set distribution name # need to prohibit '!' in repo name (sed delimiter) syntax:expression: pattern $VAR(@) "^[^!]+$" ; "Do not use '!' in distribution name" diff --git a/templates/system/package/repository/node.tag/url/node.def b/templates/system/package/repository/node.tag/url/node.def index 7c84afce..9cb3a472 100644 --- a/templates/system/package/repository/node.tag/url/node.def +++ b/templates/system/package/repository/node.tag/url/node.def @@ -1,4 +1,4 @@ type: txt -help: Repository URL +help: Set repository URL # need to prohibit '!' in url (sed delimiter) syntax:expression: pattern $VAR(@) "^[^!]+$" ; "Do not use '!' in url" diff --git a/templates/system/static-host-mapping/host-name/node.def b/templates/system/static-host-mapping/host-name/node.def index 99f66fb7..189025e3 100644 --- a/templates/system/static-host-mapping/host-name/node.def +++ b/templates/system/static-host-mapping/host-name/node.def @@ -1,6 +1,6 @@ tag: type: txt -help: Map DNS names to system interfaces +help: Set to map DNS names to system interfaces syntax:expression: pattern $VAR(@) "^[-a-zA-Z0-9.]+$" ; "invalid host name $VAR(@)" commit:expression: $VAR(./inet) != ""; "IP address for the static mapping must be set" end:expression: "sudo sh -c \"\ diff --git a/templates/system/static-host-mapping/host-name/node.tag/alias/node.def b/templates/system/static-host-mapping/host-name/node.tag/alias/node.def index 2f340fc7..7b07ff1a 100644 --- a/templates/system/static-host-mapping/host-name/node.tag/alias/node.def +++ b/templates/system/static-host-mapping/host-name/node.tag/alias/node.def @@ -1,3 +1,3 @@ multi: type: txt -help: Alias for this address +help: Set alias for this address diff --git a/templates/system/static-host-mapping/host-name/node.tag/inet/node.def b/templates/system/static-host-mapping/host-name/node.tag/inet/node.def index 727c0411..dff601a5 100644 --- a/templates/system/static-host-mapping/host-name/node.tag/inet/node.def +++ b/templates/system/static-host-mapping/host-name/node.tag/inet/node.def @@ -1,2 +1,2 @@ type: ipv4 -help: Internet address +help: Set Internet address diff --git a/templates/system/static-host-mapping/node.def b/templates/system/static-host-mapping/node.def index e72527ae..0eeace02 100644 --- a/templates/system/static-host-mapping/node.def +++ b/templates/system/static-host-mapping/node.def @@ -1 +1 @@ -help: Map DNS names to system interfaces +help: Set to map DNS names to system interfaces diff --git a/templates/system/syslog/console/facility/node.def b/templates/system/syslog/console/facility/node.def index 26b736cf..fa44b2f2 100644 --- a/templates/system/syslog/console/facility/node.def +++ b/templates/system/syslog/console/facility/node.def @@ -1,6 +1,6 @@ tag: type: txt -help: Configure facility for console logging +help: Set facility for console logging syntax:expression: $VAR(@) in "auth", "authpriv", "cron", "daemon", "kern", "lpr", "mail", "mark", "news", "security", "syslog", "user", "uucp", "local0", "local1", "local2", "local3", "local4", "local5", "local6", "local7", "all"; "\"$VAR(@)\" is not a valid logging facility" update:expression: "sudo sh -c \"LVL=`echo -n $VAR(level/@) | tr '[a-z]' '[A-Z]'` && \ FAC='$VAR(@)' ; if [ x\\$FAC == xall ]; then FAC='*'; fi && \ diff --git a/templates/system/syslog/console/facility/node.tag/level/node.def b/templates/system/syslog/console/facility/node.tag/level/node.def index d690ecd2..42e6c148 100644 --- a/templates/system/syslog/console/facility/node.tag/level/node.def +++ b/templates/system/syslog/console/facility/node.tag/level/node.def @@ -1,5 +1,5 @@ type: txt -help: Configure the logging level +help: Set the logging level syntax:expression: $VAR(@) in "emerg", "alert", "crit", "err", "warning", "notice", "info", "debug"; "\"$VAR(@)\" is not a valid logging level" default: "err" comp_help:Logging levels in descending order of severity: diff --git a/templates/system/syslog/console/node.def b/templates/system/syslog/console/node.def index b4a2fc3b..ec620885 100644 --- a/templates/system/syslog/console/node.def +++ b/templates/system/syslog/console/node.def @@ -1 +1 @@ -help: Configure console logging +help: Set console logging diff --git a/templates/system/syslog/file/node.def b/templates/system/syslog/file/node.def index fa4fd7d0..e2c7759f 100644 --- a/templates/system/syslog/file/node.def +++ b/templates/system/syslog/file/node.def @@ -1,5 +1,5 @@ tag: type: txt -help: Name of the syslog file to save log messages to +help: Set the name of syslog file to save log messages to syntax:expression: pattern $VAR(@) "^[-a-zA-Z0-9_.]+$" ; "invalid file name $VAR(@)" commit:expression: $VAR(./facility/) != "" || $VAR(./archive/) != ""; "Must specify either facility or archive for syslog file" diff --git a/templates/system/syslog/file/node.tag/archive/files/node.def b/templates/system/syslog/file/node.tag/archive/files/node.def index 86fc3808..59869a51 100644 --- a/templates/system/syslog/file/node.tag/archive/files/node.def +++ b/templates/system/syslog/file/node.tag/archive/files/node.def @@ -1,3 +1,3 @@ type: u32 -help: Number of saved files +help: Set number of saved files default: 5 diff --git a/templates/system/syslog/file/node.tag/archive/node.def b/templates/system/syslog/file/node.tag/archive/node.def index 002003f4..ad1d239f 100644 --- a/templates/system/syslog/file/node.tag/archive/node.def +++ b/templates/system/syslog/file/node.tag/archive/node.def @@ -1,4 +1,4 @@ -help: Configure log file size and rotation characteristics +help: Set log file size and rotation characteristics # need mandatory files & size update:expression: "sudo sh -c \"/opt/vyatta/sbin/vyatta_update_logrotate.pl \ '$VAR(../@)' '$VAR(files/@)' '$VAR(size/@)' 1\" " diff --git a/templates/system/syslog/file/node.tag/archive/size/node.def b/templates/system/syslog/file/node.tag/archive/size/node.def index 57955185..11cde386 100644 --- a/templates/system/syslog/file/node.tag/archive/size/node.def +++ b/templates/system/syslog/file/node.tag/archive/size/node.def @@ -1,3 +1,3 @@ type: u32 -help: Size of log files (kbytes) +help: Set size of log files (kbytes) default: 0 diff --git a/templates/system/syslog/file/node.tag/facility/node.def b/templates/system/syslog/file/node.tag/facility/node.def index 7711d6a0..bfa6341d 100644 --- a/templates/system/syslog/file/node.tag/facility/node.def +++ b/templates/system/syslog/file/node.tag/facility/node.def @@ -1,6 +1,6 @@ tag: type: txt -help: Configure facility for file logging +help: Set facility for file logging syntax:expression: $VAR(@) in "auth", "authpriv", "cron", "daemon", "kern", "lpr", "mail", "mark", "news", "security", "syslog", "user", "uucp", "local0", "local1", "local2", "local3", "local4", "local5", "local6", "local7", "all"; "\"$VAR(@)\" is not a valid logging facility" update:expression: "sudo sh -c \"LVL=`echo -n $VAR(level/@) | tr '[a-z]' '[A-Z]'` && \ FAC='$VAR(@)' ; if [ x\\$FAC == xall ]; then FAC='*'; fi && \ diff --git a/templates/system/syslog/file/node.tag/facility/node.tag/level/node.def b/templates/system/syslog/file/node.tag/facility/node.tag/level/node.def index dd03ec9d..a8eaa0e6 100644 --- a/templates/system/syslog/file/node.tag/facility/node.tag/level/node.def +++ b/templates/system/syslog/file/node.tag/facility/node.tag/level/node.def @@ -1,5 +1,5 @@ type: txt -help: Configure the logging level +help: Set the logging level syntax:expression: $VAR(@) in "emerg", "alert", "crit", "err", "warning", "notice", "info", "debug"; "\"$VAR(@)\" is not a valid logging level" default: "err" comp_help:Logging levels in descending order of severity: diff --git a/templates/system/syslog/global/archive/files/node.def b/templates/system/syslog/global/archive/files/node.def index 86fc3808..59869a51 100644 --- a/templates/system/syslog/global/archive/files/node.def +++ b/templates/system/syslog/global/archive/files/node.def @@ -1,3 +1,3 @@ type: u32 -help: Number of saved files +help: Set number of saved files default: 5 diff --git a/templates/system/syslog/global/archive/node.def b/templates/system/syslog/global/archive/node.def index 3691bbe0..17d6c996 100644 --- a/templates/system/syslog/global/archive/node.def +++ b/templates/system/syslog/global/archive/node.def @@ -1,4 +1,4 @@ -help: Configure log file size and rotation characteristics +help: Set log file size and rotation characteristics # need mandatory files & size update:expression: "sudo sh -c \"/opt/vyatta/sbin/vyatta_update_logrotate.pl \ '$VAR(files/@)' '$VAR(size/@)' 1\" " diff --git a/templates/system/syslog/global/archive/size/node.def b/templates/system/syslog/global/archive/size/node.def index c02fd0f1..bf83546f 100644 --- a/templates/system/syslog/global/archive/size/node.def +++ b/templates/system/syslog/global/archive/size/node.def @@ -1,3 +1,3 @@ type: u32 -help: Size of log files (kbytes) +help: Set size of log files (kbytes) default: 250 diff --git a/templates/system/syslog/global/facility/node.def b/templates/system/syslog/global/facility/node.def index 1fdaad00..cff98650 100644 --- a/templates/system/syslog/global/facility/node.def +++ b/templates/system/syslog/global/facility/node.def @@ -1,6 +1,6 @@ tag: type: txt -help: Configure facility for system logging +help: Set facility for system logging syntax:expression: $VAR(@) in "auth", "authpriv", "cron", "daemon", "kern", "lpr", "mail", "mark", "news", "security", "syslog", "user", "uucp", "local0", "local1", "local2", "local3", "local4", "local5", "local6", "local7", "all"; "\"$VAR(@)\" is not a valid logging facility" update:expression: "sudo sh -c \"LVL=`echo -n $VAR(level/@) | tr '[a-z]' '[A-Z]'` && \ FAC='$VAR(@)' ; if [ x\\$FAC == xall ]; then FAC='*'; fi && \ diff --git a/templates/system/syslog/global/facility/node.tag/level/node.def b/templates/system/syslog/global/facility/node.tag/level/node.def index d690ecd2..42e6c148 100644 --- a/templates/system/syslog/global/facility/node.tag/level/node.def +++ b/templates/system/syslog/global/facility/node.tag/level/node.def @@ -1,5 +1,5 @@ type: txt -help: Configure the logging level +help: Set the logging level syntax:expression: $VAR(@) in "emerg", "alert", "crit", "err", "warning", "notice", "info", "debug"; "\"$VAR(@)\" is not a valid logging level" default: "err" comp_help:Logging levels in descending order of severity: diff --git a/templates/system/syslog/global/node.def b/templates/system/syslog/global/node.def index 5fcf45b8..175d85e1 100644 --- a/templates/system/syslog/global/node.def +++ b/templates/system/syslog/global/node.def @@ -1 +1 @@ -help: Configure system logging +help: Set system logging diff --git a/templates/system/syslog/host/node.def b/templates/system/syslog/host/node.def index 5f669a59..0e757cbc 100644 --- a/templates/system/syslog/host/node.def +++ b/templates/system/syslog/host/node.def @@ -1,3 +1,3 @@ tag: type: txt -help: IP address or hostname of remote syslog server +help: Set IP address or hostname of remote syslog server diff --git a/templates/system/syslog/host/node.tag/facility/node.def b/templates/system/syslog/host/node.tag/facility/node.def index 04b32e2e..c91a6df8 100644 --- a/templates/system/syslog/host/node.tag/facility/node.def +++ b/templates/system/syslog/host/node.tag/facility/node.def @@ -1,6 +1,6 @@ tag: type: txt -help: Configure facility for host logging +help: Set facility for host logging syntax:expression: $VAR(@) in "auth", "authpriv", "cron", "daemon", "kern", "lpr", "mail", "mark", "news", "security", "syslog", "user", "uucp", "local0", "local1", "local2", "local3", "local4", "local5", "local6", "local7", "all"; "\"$VAR(@)\" is not a valid logging facility" update:expression: "sudo sh -c \"LVL=`echo -n $VAR(level/@) | tr '[a-z]' '[A-Z]'` && \ FAC='$VAR(@)' ; if [ x\\$FAC == xall ]; then FAC='*'; fi && \ diff --git a/templates/system/syslog/host/node.tag/facility/node.tag/level/node.def b/templates/system/syslog/host/node.tag/facility/node.tag/level/node.def index d690ecd2..42e6c148 100644 --- a/templates/system/syslog/host/node.tag/facility/node.tag/level/node.def +++ b/templates/system/syslog/host/node.tag/facility/node.tag/level/node.def @@ -1,5 +1,5 @@ type: txt -help: Configure the logging level +help: Set the logging level syntax:expression: $VAR(@) in "emerg", "alert", "crit", "err", "warning", "notice", "info", "debug"; "\"$VAR(@)\" is not a valid logging level" default: "err" comp_help:Logging levels in descending order of severity: diff --git a/templates/system/syslog/node.def b/templates/system/syslog/node.def index 012a71ba..72a82d78 100644 --- a/templates/system/syslog/node.def +++ b/templates/system/syslog/node.def @@ -1,3 +1,3 @@ -help: Configure syslog daemon +help: Set syslog daemon delete:expression: "sudo sh -c \"/opt/vyatta/sbin/vyatta_update_syslog.pl \ '' '\\/var\\/log\\/messages' '*.warning\t/var/log/messages \n'\" " diff --git a/templates/system/syslog/user/node.def b/templates/system/syslog/user/node.def index df0c4e6f..a432f326 100644 --- a/templates/system/syslog/user/node.def +++ b/templates/system/syslog/user/node.def @@ -1,5 +1,5 @@ tag: type: txt -help: Configure logging to specific user's terminal +help: Set logging to specific user's terminal comp_help: Possible completions: <username> Send log messages to this user's terminal diff --git a/templates/system/syslog/user/node.tag/facility/node.def b/templates/system/syslog/user/node.tag/facility/node.def index 1d349e16..93afe631 100644 --- a/templates/system/syslog/user/node.tag/facility/node.def +++ b/templates/system/syslog/user/node.tag/facility/node.def @@ -1,6 +1,6 @@ tag: type: txt -help: Configure facility for user logging +help: Set facility for user logging syntax:expression: $VAR(@) in "auth", "authpriv", "cron", "daemon", "kern", "lpr", "mail", "mark", "news", "security", "syslog", "user", "uucp", "local0", "local1", "local2", "local3", "local4", "local5", "local6", "local7", "all"; "\"$VAR(@)\" is not a valid logging facility" update:expression: "sudo sh -c \"LVL=`echo -n $VAR(level/@) | tr '[a-z]' '[A-Z]'` && \ FAC='$VAR(@)' ; if [ x\\$FAC == xall ]; then FAC='*'; fi && \ diff --git a/templates/system/syslog/user/node.tag/facility/node.tag/level/node.def b/templates/system/syslog/user/node.tag/facility/node.tag/level/node.def index d690ecd2..42e6c148 100644 --- a/templates/system/syslog/user/node.tag/facility/node.tag/level/node.def +++ b/templates/system/syslog/user/node.tag/facility/node.tag/level/node.def @@ -1,5 +1,5 @@ type: txt -help: Configure the logging level +help: Set the logging level syntax:expression: $VAR(@) in "emerg", "alert", "crit", "err", "warning", "notice", "info", "debug"; "\"$VAR(@)\" is not a valid logging level" default: "err" comp_help:Logging levels in descending order of severity: diff --git a/templates/system/time-zone/node.def b/templates/system/time-zone/node.def index 450429d0..e271e3e6 100644 --- a/templates/system/time-zone/node.def +++ b/templates/system/time-zone/node.def @@ -1,5 +1,5 @@ type: txt -help: Configure local timezone +help: Set local timezone default: "GMT" update:expression: "LTF=\"/usr/share/zoneinfo\" && \ case \"$VAR(@)\" in \ |