summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/init/vyos-config16
-rwxr-xr-xscripts/init/vyos-router421
-rwxr-xr-xscripts/system-generators/vyos-generator94
3 files changed, 0 insertions, 531 deletions
diff --git a/scripts/init/vyos-config b/scripts/init/vyos-config
deleted file mode 100755
index 3564270..0000000
--- a/scripts/init/vyos-config
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-
-while [ ! -f /tmp/vyos-config-status ]
-do
- sleep 1
-done
-
-status=$(cat /tmp/vyos-config-status)
-
-if [ -z "$1" ]; then
- if [ $status -ne 0 ]; then
- echo "Configuration error"
- else
- echo "Configuration success"
- fi
-fi
diff --git a/scripts/init/vyos-router b/scripts/init/vyos-router
deleted file mode 100755
index 7b752b8..0000000
--- a/scripts/init/vyos-router
+++ /dev/null
@@ -1,421 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2021 VyOS maintainers and contributors
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 or later 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.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-. /lib/lsb/init-functions
-
-: ${vyatta_env:=/etc/default/vyatta}
-source $vyatta_env
-
-declare progname=${0##*/}
-declare action=$1; shift
-
-declare -x BOOTFILE=$vyatta_sysconfdir/config/config.boot
-
-# If vyos-config= boot option is present, use that file instead
-for x in $(cat /proc/cmdline); do
- [[ $x = vyos-config=* ]] || continue
- VYOS_CONFIG="${x#vyos-config=}"
-done
-
-if [ ! -z "$VYOS_CONFIG" ]; then
- if [ -r "$VYOS_CONFIG" ]; then
- echo "Config selected manually: $VYOS_CONFIG"
- declare -x BOOTFILE="$VYOS_CONFIG"
- else
- echo "WARNING: Could not read selected config file, using default!"
- fi
-fi
-
-declare -a subinit
-declare -a all_subinits=( firewall )
-
-if [ $# -gt 0 ] ; then
- for s in $@ ; do
- [ -x ${vyatta_sbindir}/${s}.init ] && subinit[${#subinit}]=$s
- done
-else
- for s in ${all_subinits[@]} ; do
- [ -x ${vyatta_sbindir}/${s}.init ] && subinit[${#subinit}]=$s
- done
-fi
-
-GROUP=vyattacfg
-
-# easy way to make empty file without any command
-empty()
-{
- >$1
-}
-
-# check if bootup of this portion is disabled
-disabled () {
- grep -q -w no-vyos-$1 /proc/cmdline
-}
-
-# if necessary, provide initial config
-init_bootfile () {
- if [ ! -r $BOOTFILE ] ; then
- if [ -f $vyatta_sysconfdir/config.boot.default ]; then
- cp $vyatta_sysconfdir/config.boot.default $BOOTFILE
- else
- $vyos_libexec_dir/system-versions-foot.py > $BOOTFILE
- fi
- chgrp ${GROUP} $BOOTFILE
- chmod 660 $BOOTFILE
- fi
-}
-
-# if necessary, migrate initial config
-migrate_bootfile ()
-{
- if [ -x $vyos_libexec_dir/run-config-migration.py ]; then
- log_progress_msg migrate
- sg ${GROUP} -c "$vyos_libexec_dir/run-config-migration.py $BOOTFILE"
- fi
-}
-
-# load the initial config
-load_bootfile ()
-{
- log_progress_msg configure
- (
- if [ -f /etc/default/vyatta-load-boot ]; then
- # build-specific environment for boot-time config loading
- source /etc/default/vyatta-load-boot
- fi
- if [ -x $vyos_libexec_dir/vyos-boot-config-loader.py ]; then
- sg ${GROUP} -c "$vyos_libexec_dir/vyos-boot-config-loader.py $BOOTFILE"
- fi
- )
-}
-
-# execute the pre-config script
-run_preconfig_script ()
-{
- if [ -x $vyatta_sysconfdir/config/scripts/vyos-preconfig-bootup.script ]; then
- $vyatta_sysconfdir/config/scripts/vyos-preconfig-bootup.script
- fi
-}
-
-# execute the post-config scripts
-run_postconfig_scripts ()
-{
- if [ -x $vyatta_sysconfdir/config/scripts/vyatta-postconfig-bootup.script ]; then
- $vyatta_sysconfdir/config/scripts/vyatta-postconfig-bootup.script
- fi
- if [ -x $vyatta_sysconfdir/config/scripts/vyos-postconfig-bootup.script ]; then
- $vyatta_sysconfdir/config/scripts/vyos-postconfig-bootup.script
- fi
-}
-
-run_postupgrade_script ()
-{
- if [ -f $vyatta_sysconfdir/config/.upgraded ]; then
- # Run the system script
- /usr/libexec/vyos/system/post-upgrade
-
- # Run user scripts
- if [ -d $vyatta_sysconfdir/config/scripts/post-upgrade.d ]; then
- run-parts $vyatta_sysconfdir/config/scripts/post-upgrade.d
- fi
- rm -f $vyatta_sysconfdir/config/.upgraded
- fi
-}
-
-#
-# On image booted machines, we need to mount /boot from the image-specific
-# boot directory so that kernel package installation will put the
-# files in the right place. We also have to mount /boot/grub from the
-# system-wide grub directory so that tools that edit the grub.cfg
-# file will find it in the expected location.
-#
-bind_mount_boot ()
-{
- persist_path=$(/opt/vyatta/sbin/vyos-persistpath)
- if [ $? == 0 ]; then
- if [ -e $persist_path/boot ]; then
- image_name=$(cat /proc/cmdline | sed -e s+^.*vyos-union=/boot/++ | sed -e 's/ .*$//')
-
- if [ -n "$image_name" ]; then
- mount --bind $persist_path/boot/$image_name /boot
- if [ $? -ne 0 ]; then
- echo "Couldn't bind mount /boot"
- fi
-
- if [ ! -d /boot/grub ]; then
- mkdir /boot/grub
- fi
-
- mount --bind $persist_path/boot/grub /boot/grub
- if [ $? -ne 0 ]; then
- echo "Couldn't bind mount /boot/grub"
- fi
- fi
- fi
- fi
-}
-
-clear_or_override_config_files ()
-{
- for conf in snmp/snmpd.conf snmp/snmptrapd.conf snmp/snmp.conf \
- keepalived/keepalived.conf cron.d/vyos-crontab \
- ipvsadm.rules default/ipvsadm resolv.conf
- do
- if [ -s /etc/$conf ] ; then
- empty /etc/$conf
- chmod 0644 /etc/$conf
- fi
- done
-}
-
-update_interface_config ()
-{
- if [ -d /run/udev/vyos ]; then
- $vyos_libexec_dir/vyos-interface-rescan.py $BOOTFILE
- fi
-}
-
-cleanup_post_commit_hooks () {
- # Remove links from the post-commit hooks directory.
- # note that this approach only supports hooks that are "configured",
- # i.e., it does not support hooks that need to always be present.
- cpostdir=$(cli-shell-api getPostCommitHookDir)
- # exclude commits hooks from vyatta-cfg
- excluded="10vyatta-log-commit.pl 99vyos-user-postcommit-hooks"
- if [ -d "$cpostdir" ]; then
- for f in $cpostdir/*; do
- if [[ ! $excluded =~ $(basename $f) ]]; then
- rm -f $cpostdir/$(basename $f)
- fi
- done
- fi
-}
-
-# These are all the default security setting which are later
-# overridden when configuration is read. These are the values the
-# system defaults.
-security_reset ()
-{
- # restore PAM back to virgin state (no radius/tacacs services)
- pam-auth-update --package --remove radius
- rm -f /etc/pam_radius_auth.conf
- pam-auth-update --package --remove tacplus
- rm -f /etc/tacplus_nss.conf /etc/tacplus_servers
-
- # Certain configuration files are re-generated by the configuration
- # subsystem and must reside under /etc and can not easily be moved to /run.
- # So on every boot we simply delete any remaining files and let the CLI
- # regenearte them.
-
- # PPPoE
- rm -f /etc/ppp/peers/pppoe* /etc/ppp/peers/wlm*
-
- # IPSec
- rm -rf /etc/ipsec.conf /etc/ipsec.secrets
- find /etc/swanctl -type f | xargs rm -f
-
- # limit cleanup
- rm -f /etc/security/limits.d/10-vyos.conf
-
- # iproute2 cleanup
- rm -f /etc/iproute2/rt_tables.d/vyos-*.conf
-
- # Container
- rm -f /etc/containers/storage.conf /etc/containers/registries.conf /etc/containers/containers.conf
- # Clean all networks and re-create them from our CLI
- rm -f /etc/containers/networks/*
-
- # System Options (SSH/cURL)
- rm -f /etc/ssh/ssh_config.d/*vyos*.conf
- rm -f /etc/curlrc
-}
-
-# XXX: T3885 - generate persistend DHCPv6 DUID (Type4 - UUID based)
-gen_duid ()
-{
- DUID_FILE="/var/lib/dhcpv6/dhcp6c_duid"
- UUID_FILE="/sys/class/dmi/id/product_uuid"
- UUID_FILE_ALT="/sys/class/dmi/id/product_serial"
- if [ ! -f ${UUID_FILE} ] && [ ! -f ${UUID_FILE_ALT} ]; then
- return 1
- fi
-
- # DUID is based on the BIOS/EFI UUID. We omit additional - characters
- if [ -f ${UUID_FILE} ]; then
- UUID=$(cat ${UUID_FILE} | tr -d -)
- fi
- if [ -z ${UUID} ]; then
- UUID=$(uuidgen --sha1 --namespace @dns --name $(cat ${UUID_FILE_ALT}) | tr -d -)
- fi
- # Add DUID type4 (UUID) information
- DUID_TYPE="0004"
-
- # The length-information (as per RFC6355 UUID is 128 bits long) is in big-endian
- # format - beware when porting to ARM64. The length field consists out of the
- # UUID (128 bit + 16 bits DUID type) resulting in hex 12.
- DUID_LEN="0012"
- if [ "$(echo -n I | od -to2 | head -n1 | cut -f2 -d" " | cut -c6 )" -eq 1 ]; then
- # true on little-endian (x86) systems
- DUID_LEN="1200"
- fi
-
- for i in $(echo -n ${DUID_LEN}${DUID_TYPE}${UUID} | sed 's/../& /g'); do
- echo -ne "\x$i"
- done > ${DUID_FILE}
-}
-
-start ()
-{
- # reset and clean config files
- security_reset || log_failure_msg "security reset failed"
-
- # some legacy directories migrated over from old rl-system.init
- mkdir -p /var/run/vyatta /var/log/vyatta
- chgrp vyattacfg /var/run/vyatta /var/log/vyatta
- chmod 775 /var/run/vyatta /var/log/vyatta
-
- log_daemon_msg "Waiting for NICs to settle down"
- # On boot time udev migth take a long time to reorder nic's, this will ensure that
- # all udev activity is completed and all nics presented at boot-time will have their
- # final name before continuing with vyos-router initialization.
- SECONDS=0
- udevadm settle
- STATUS=$?
- log_progress_msg "settled in ${SECONDS}sec."
- log_end_msg ${STATUS}
-
- # mountpoint for bpf maps required by xdp
- mount -t bpf none /sys/fs/bpf
-
- # Clear out Debian APT source config file
- empty /etc/apt/sources.list
-
- # Generate DHCPv6 DUID
- gen_duid || log_failure_msg "could not generate DUID"
-
- # Mount a temporary filesystem for container networks.
- # Configuration should be loaded from VyOS cli.
- cni_dir="/etc/cni/net.d"
- [ ! -d ${cni_dir} ] && mkdir -p ${cni_dir}
- mount -t tmpfs none ${cni_dir}
-
- # Init firewall
- nfct helper add rpc inet tcp
- nfct helper add rpc inet udp
- nfct helper add tns inet tcp
- nft -f /usr/share/vyos/vyos-firewall-init.conf || log_failure_msg "could not initiate firewall rules"
-
- rm -f /etc/hostname
- ${vyos_conf_scripts_dir}/host_name.py || log_failure_msg "could not reset host-name"
- systemctl start frr.service
-
- # As VyOS does not execute commands that are not present in the CLI we call
- # the script by hand to have a single source for the login banner and MOTD
- ${vyos_conf_scripts_dir}/system_console.py || log_failure_msg "could not reset serial console"
- ${vyos_conf_scripts_dir}/system-login.py || log_failure_msg "could not reset system login"
- ${vyos_conf_scripts_dir}/system-login-banner.py || log_failure_msg "could not reset motd and issue files"
- ${vyos_conf_scripts_dir}/system-option.py || log_failure_msg "could not reset system option files"
- ${vyos_conf_scripts_dir}/conntrack.py || log_failure_msg "could not reset conntrack subsystem"
- ${vyos_conf_scripts_dir}/container.py || log_failure_msg "could not reset container subsystem"
-
- clear_or_override_config_files || log_failure_msg "could not reset config files"
-
- # enable some debugging before loading the configuration
- if grep -q vyos-debug /proc/cmdline; then
- log_action_begin_msg "Enable runtime debugging options"
- touch /tmp/vyos.container.debug
- touch /tmp/vyos.ifconfig.debug
- touch /tmp/vyos.frr.debug
- touch /tmp/vyos.container.debug
- fi
-
- log_action_begin_msg "Mounting VyOS Config"
- # ensure the vyatta_configdir supports a large number of inodes since
- # the config hierarchy is often inode-bound (instead of size).
- # impose a minimum and then scale up dynamically with the actual size
- # of the system memory.
- local tmem=$(sed -n 's/^MemTotal: \+\([0-9]\+\) kB$/\1/p' /proc/meminfo)
- local tpages
- local tmpfs_opts="nosuid,nodev,mode=775,nr_inodes=0" #automatically allocate inodes
- mount -o $tmpfs_opts -t tmpfs none ${vyatta_configdir} \
- && chgrp ${GROUP} ${vyatta_configdir}
- log_action_end_msg $?
-
- disabled bootfile || init_bootfile
-
- cleanup_post_commit_hooks
-
- log_daemon_msg "Starting VyOS router"
- disabled migrate || migrate_bootfile
-
- run_preconfig_script
-
- run_postupgrade_script
-
- update_interface_config
-
- for s in ${subinit[@]} ; do
- if ! disabled $s; then
- log_progress_msg $s
- if ! ${vyatta_sbindir}/${s}.init start
- then log_failure_msg
- exit 1
- fi
- fi
- done
-
- bind_mount_boot
-
- disabled configure || load_bootfile
- log_end_msg $?
-
- telinit q
- chmod g-w,o-w /
-
- run_postconfig_scripts
-}
-
-stop()
-{
- local -i status=0
- log_daemon_msg "Stopping VyOS router"
- for ((i=${#sub_inits[@]} - 1; i >= 0; i--)) ; do
- s=${subinit[$i]}
- log_progress_msg $s
- ${vyatta_sbindir}/${s}.init stop
- let status\|=$?
- done
- log_end_msg $status
- log_action_begin_msg "Un-mounting VyOS Config"
- umount ${vyatta_configdir}
- log_action_end_msg $?
-
- systemctl stop frr.service
-}
-
-case "$action" in
- start) start ;;
- stop) stop ;;
- restart|force-reload) stop && start ;;
- *) log_failure_msg "usage: $progname [ start|stop|restart ] [ subinit ... ]" ;
- false ;;
-esac
-
-exit $?
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 4
-# End:
diff --git a/scripts/system-generators/vyos-generator b/scripts/system-generators/vyos-generator
deleted file mode 100755
index 34faab6..0000000
--- a/scripts/system-generators/vyos-generator
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/bin/sh
-set -f
-
-LOG=""
-DEBUG_LEVEL=1
-LOG_D="/run/vyos-router"
-ENABLE="enabled"
-DISABLE="disabled"
-FOUND="found"
-NOTFOUND="notfound"
-RUN_ENABLED_FILE="$LOG_D/$ENABLE"
-VYOS_SYSTEM_TARGET="/lib/systemd/system/vyos.target"
-VYOS_TARGET_NAME="vyos.target"
-
-debug() {
- local lvl="$1"
- shift
- [ "$lvl" -gt "$DEBUG_LEVEL" ] && return
- if [ -z "$LOG" ]; then
- local log="$LOG_D/${0##*/}.log"
- { [ -d "$LOG_D" ] || mkdir -p "$LOG_D"; } &&
- { : > "$log"; } >/dev/null 2>&1 && LOG="$log" ||
- LOG="/dev/kmsg"
- fi
- echo "$@" >> "$LOG"
-}
-
-default() {
- _RET="$ENABLE"
-}
-
-main() {
- local normal_d="$1" early_d="$2" late_d="$3"
- local target_name="multi-user.target" gen_d="$early_d"
- local link_path="$gen_d/${target_name}.wants/${VYOS_TARGET_NAME}"
- local ds="$NOTFOUND"
-
- debug 1 "$0 normal=$normal_d early=$early_d late=$late_d"
- debug 2 "$0 $*"
-
- local search result="error" ret=""
- for search in default; do
- if $search; then
- debug 1 "$search found $_RET"
- [ "$_RET" = "$ENABLE" -o "$_RET" = "$DISABLE" ] &&
- result=$_RET && break
- else
- ret=$?
- debug 0 "search $search returned $ret"
- fi
- done
-
- # enable AND ds=found == enable
- # enable AND ds=notfound == disable
- # disable || <any> == disabled
- if [ "$result" = "$ENABLE" ]; then
- if [ -e "$link_path" ]; then
- debug 1 "already enabled: no change needed"
- else
- [ -d "${link_path%/*}" ] || mkdir -p "${link_path%/*}" ||
- debug 0 "failed to make dir $link_path"
- if ln -snf "$VYOS_SYSTEM_TARGET" "$link_path"; then
- debug 1 "enabled via $link_path -> $VYOS_SYSTEM_TARGET"
- else
- ret=$?
- debug 0 "[$ret] enable failed:" \
- "ln $VYOS_SYSTEM_TARGET $link_path"
- fi
- fi
- : > "$RUN_ENABLED_FILE"
- elif [ "$result" = "$DISABLE" ]; then
- if [ -f "$link_path" ]; then
- if rm -f "$link_path"; then
- debug 1 "disabled. removed existing $link_path"
- else
- ret=$?
- debug 0 "[$ret] disable failed, remove $link_path"
- fi
- else
- debug 1 "already disabled: no change needed [no $link_path]"
- fi
- if [ -e "$RUN_ENABLED_FILE" ]; then
- rm -f "$RUN_ENABLED_FILE"
- fi
- else
- debug 0 "unexpected result '$result' 'ds=$ds'"
- ret=3
- fi
- return $ret
-}
-
-main "$@"
-
-# vi: ts=4 expandtab