first commit

This commit is contained in:
STP
2019-11-26 21:36:24 +01:00
commit d9ad30ccf3
2899 changed files with 168823 additions and 0 deletions

38
etc_org/dhcp/debug Normal file
View File

@ -0,0 +1,38 @@
#
# The purpose of this script is just to show the variables that are
# available to all the scripts in this directory. All these scripts are
# called from dhclient-script, which exports all the variables shown
# before. If you want to debug a problem with your DHCP setup you can
# enable this script and take a look at /tmp/dhclient-script.debug.
# To enable this script set the following variable to "yes"
RUN="no"
if [ "$RUN" = "yes" ]; then
echo "$(date): entering ${1%/*}, dumping variables." \
>> /tmp/dhclient-script.debug
# loop over the 4 possible prefixes: (empty), cur_, new_, old_
for prefix in '' 'cur_' 'new_' 'old_'; do
# loop over the DHCP variables passed to dhclient-script
for basevar in reason interface medium alias_ip_address \
ip_address host_name network_number subnet_mask \
broadcast_address routers static_routes \
rfc3442_classless_static_routes \
domain_name domain_search domain_name_servers \
netbios_name_servers netbios_scope \
ntp_servers \
ip6_address ip6_prefix ip6_prefixlen \
dhcp6_domain_search dhcp6_name_servers ; do
var="${prefix}${basevar}"
eval "content=\$$var"
# show only variables with values set
if [ -n "${content}" ]; then
echo "$var='${content}'" >> /tmp/dhclient-script.debug
fi
done
done
echo '--------------------------' >> /tmp/dhclient-script.debug
fi

View File

@ -0,0 +1,31 @@
#!/bin/sh
# This file is part of avahi.
#
# avahi is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# avahi 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 Lesser General Public
# License along with avahi; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
case "$reason" in
MEDIUM|ARPCHECK|ARPSEND|NBI)
;;
PREINIT|BOUND|RENEW|REBIND|REBOOT|STOP|RELEASE)
/usr/sbin/avahi-autoipd -k $interface 2> /dev/null
;;
EXPIRE|FAIL|TIMEOUT)
# Starting avahi-autoipd is left for the exit hook
;;
esac

View File

@ -0,0 +1 @@
../debug

View File

@ -0,0 +1,81 @@
#
# Script fragment to make dhclient supply nameserver information to resolvconf
#
# Tips:
# * Be careful about changing the environment since this is sourced
# * This script fragment uses bash features
# * As of isc-dhcp-client 4.2 the "reason" (for running the script) can be one of the following.
# (Listed on man page:) MEDIUM(0) PREINIT(0) BOUND(M) RENEW(M) REBIND(M) REBOOT(M) EXPIRE(D) FAIL(D) RELEASE(D) STOP(D) NBI(-) TIMEOUT(M)
# (Also used in master script:) ARPCHECK(0), ARPSEND(0)
# (Also used in master script:) PREINIT6(0) BOUND6(M) RENEW6(M) REBIND6(M) DEPREF6(0) EXPIRE6(D) RELEASE6(D) STOP6(D)
# (0) = master script does not run make_resolv_conf
# (M) = master script runs make_resolv_conf
# (D) = master script downs interface
# (-) = master script does nothing with this
if [ -x /sbin/resolvconf ] ; then
# For safety, first undefine the nasty default make_resolv_conf()
make_resolv_conf() { : ; }
case "$reason" in
BOUND|RENEW|REBIND|REBOOT|TIMEOUT)
# Define a resolvconf-compatible m_r_c() function
# It gets run later (or, in the TIMEOUT case, MAY get run later)
make_resolv_conf() {
local R
local N
R=""
if [ "$new_domain_name_servers" ] && [ "$new_domain_name" ] ; then
R="${R}domain $new_domain_name
"
fi
if [ "$new_domain_name_servers" ] && [ "$new_domain_search" ] ; then
R="${R}search $new_domain_search
"
fi
for N in $new_domain_name_servers ; do
R="${R}nameserver $N
"
done
[ ! "$interface" ] || echo -n "$R" | /sbin/resolvconf -a "${interface}.dhclient"
}
;;
BOUND6|RENEW6|REBIND6)
# Define a resolvconf-compatible m_r_c() function
# It gets run later (or, in the TIMEOUT case, MAY get run later)
make_resolv_conf() {
local R
local N
local N_LOW
local ZONE_ID
R=""
if [ "$new_dhcp6_name_servers" ] && [ "$new_dhcp6_domain_search" ] ; then
R="${R}search $new_dhcp6_domain_search
"
fi
for N in $new_dhcp6_name_servers ; do
# If the nameserver has a link-local address
# then add a zone ID (interface name) to it.
N_LOW="$(echo "$N" | tr '[:upper:]' '[:lower:]')"
if expr "$N_LOW" : ^fe80:: >/dev/null ; then
ZONE_ID="%$interface"
else
ZONE_ID=""
fi
R="${R}nameserver $N$ZONE_ID
"
done
[ ! "$interface" ] || echo -n "$R" | /sbin/resolvconf -a "${interface}.ip6.dhclient"
}
;;
EXPIRE|FAIL|RELEASE|STOP)
# Delete resolv.conf info
[ ! "$interface" ] || /sbin/resolvconf -d "${interface}.dhclient"
;;
EXPIRE6|RELEASE6|STOP6)
# Delete resolv.conf info
[ ! "$interface" ] || /sbin/resolvconf -d "${interface}.ip6.dhclient"
;;
esac
fi

View File

@ -0,0 +1,75 @@
#!/bin/sh
SAMBA_DHCP_CONF=/etc/samba/dhcp.conf
netbios_setup() {
# No need to continue if we're called with an unsupported option
case $reason in
BOUND|RENEW|REBIND|REBOOT|EXPIRE|FAIL|RELEASE|STOP)
;;
*)
return
;;
esac
umask 022
local other_servers=""
local serverlist=""
# the destination file won't exist yet on the first run after
# installing samba
if [ -e $SAMBA_DHCP_CONF ] && [ -s $SAMBA_DHCP_CONF ]
then
# don't continue if no settings have changed
if [ "$new_netbios_name_servers" = "$old_netbios_name_servers" ] \
&& [ "$new_netbios_scope" = "$old_netbios_scope" ] \
&& [ -n "$new_netbios_name_servers" ]
then
return
fi
# reparse our own file
other_servers=`sed -n -e"s/[[:space:]]$interface:[^[:space:]]*//g; \
s/^[[:space:]]*wins server[[:space:]]*=[[:space:]]*//pi" \
$SAMBA_DHCP_CONF`
serverlist="$other_servers"
fi
for server in $new_netbios_name_servers
do
serverlist="$serverlist $interface:$server"
done
echo -n > ${SAMBA_DHCP_CONF}.new
# If we're updating on failure/expire, AND there are no WINS
# servers for other interfaces, leave the file empty.
if [ -z "$other_servers" ]
then
if [ "$reason" = FAIL ] || [ "$reason" = EXPIRE ]
then
mv ${SAMBA_DHCP_CONF}.new $SAMBA_DHCP_CONF
return
fi
fi
if [ -n "$serverlist" ]
then
echo " wins server =$serverlist" >> ${SAMBA_DHCP_CONF}.new
fi
if [ -n "$new_netbios_scope" ]
then
echo " netbios scope = $new_netbios_scope" >> ${SAMBA_DHCP_CONF}.new
fi
mv ${SAMBA_DHCP_CONF}.new $SAMBA_DHCP_CONF
# reload the samba server
# We don't necessarily have the samba package installed. #414841
[ -x /etc/init.d/smbd ] && /usr/sbin/invoke-rc.d smbd reload
}
netbios_setup

View File

@ -0,0 +1 @@
../debug

View File

@ -0,0 +1,64 @@
NTP_CONF=/etc/ntp.conf
NTP_DHCP_CONF=/var/lib/ntp/ntp.conf.dhcp
ntp_server_restart() {
invoke-rc.d ntp try-restart
}
ntp_servers_setup_remove() {
if [ ! -e $NTP_DHCP_CONF ]; then
return
fi
rm -f $NTP_DHCP_CONF
ntp_server_restart
}
ntp_servers_setup_add() {
if [ -e $NTP_DHCP_CONF ] && [ "$new_ntp_servers" = "$old_ntp_servers" ]; then
return
fi
if [ -z "$new_ntp_servers" ]; then
ntp_servers_setup_remove
return
fi
tmp=$(mktemp "$NTP_DHCP_CONF.XXXXXX") || return
chmod --reference=$NTP_CONF $tmp
chown --reference=$NTP_CONF $tmp
(
echo "# This file was copied from $NTP_CONF with the server options changed"
echo "# to reflect the information sent by the DHCP server. Any changes made"
echo "# here will be lost at the next DHCP event. Edit $NTP_CONF instead."
echo
echo "# NTP server entries received from DHCP server"
for server in $new_ntp_servers; do
echo "server $server iburst"
done
echo
sed -r -e '/^ *(server|peer).*$/d' $NTP_CONF
) >>$tmp
mv $tmp $NTP_DHCP_CONF
ntp_server_restart
}
ntp_servers_setup() {
case $reason in
BOUND|RENEW|REBIND|REBOOT)
ntp_servers_setup_add
;;
EXPIRE|FAIL|RELEASE|STOP)
ntp_servers_setup_remove
;;
esac
}
ntp_servers_setup

View File

@ -0,0 +1,78 @@
# set classless routes based on the format specified in RFC3442
# e.g.:
# new_rfc3442_classless_static_routes='24 192 168 10 192 168 1 1 8 10 10 17 66 41'
# specifies the routes:
# 192.168.10.0/24 via 192.168.1.1
# 10.0.0.0/8 via 10.10.17.66.41
RUN="yes"
if [ "$RUN" = "yes" ]; then
if [ -n "$new_rfc3442_classless_static_routes" ]; then
if [ "$reason" = "BOUND" ] || [ "$reason" = "REBOOT" ]; then
set -- $new_rfc3442_classless_static_routes
while [ $# -gt 0 ]; do
net_length=$1
via_arg=''
case $net_length in
32|31|30|29|28|27|26|25)
if [ $# -lt 9 ]; then
return 1
fi
net_address="${2}.${3}.${4}.${5}"
gateway="${6}.${7}.${8}.${9}"
shift 9
;;
24|23|22|21|20|19|18|17)
if [ $# -lt 8 ]; then
return 1
fi
net_address="${2}.${3}.${4}.0"
gateway="${5}.${6}.${7}.${8}"
shift 8
;;
16|15|14|13|12|11|10|9)
if [ $# -lt 7 ]; then
return 1
fi
net_address="${2}.${3}.0.0"
gateway="${4}.${5}.${6}.${7}"
shift 7
;;
8|7|6|5|4|3|2|1)
if [ $# -lt 6 ]; then
return 1
fi
net_address="${2}.0.0.0"
gateway="${3}.${4}.${5}.${6}"
shift 6
;;
0) # default route
if [ $# -lt 5 ]; then
return 1
fi
net_address="0.0.0.0"
gateway="${2}.${3}.${4}.${5}"
shift 5
;;
*) # error
return 1
;;
esac
# take care of link-local routes
if [ "${gateway}" != '0.0.0.0' ]; then
via_arg="via ${gateway}"
fi
# set route (ip detects host routes automatically)
ip -4 route add "${net_address}/${net_length}" \
${via_arg} dev "${interface}" >/dev/null 2>&1
done
fi
fi
fi

View File

@ -0,0 +1,42 @@
TIMESYNCD_CONF=/run/systemd/timesyncd.conf.d/01-dhclient.conf
timesyncd_servers_setup_remove() {
if [ -e $TIMESYNCD_CONF ]; then
rm -f $TIMESYNCD_CONF
systemctl try-restart systemd-timesyncd.service || true
fi
}
timesyncd_servers_setup_add() {
if [ ! -d /run/systemd/system ]; then
return
fi
if [ -e $TIMESYNCD_CONF ] && [ "$new_ntp_servers" = "$old_ntp_servers" ]; then
return
fi
if [ -z "$new_ntp_servers" ]; then
timesyncd_servers_setup_remove
return
fi
mkdir -p $(dirname $TIMESYNCD_CONF)
cat <<EOF > ${TIMESYNCD_CONF}.new
# NTP server entries received from DHCP server
[Time]
NTP=$new_ntp_servers
EOF
mv ${TIMESYNCD_CONF}.new ${TIMESYNCD_CONF}
systemctl try-restart systemd-timesyncd.service || true
}
case $reason in
BOUND|RENEW|REBIND|REBOOT)
timesyncd_servers_setup_add
;;
EXPIRE|FAIL|RELEASE|STOP)
timesyncd_servers_setup_remove
;;
esac

View File

@ -0,0 +1,31 @@
#!/bin/sh
# This file is part of avahi.
#
# avahi is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# avahi 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 Lesser General Public
# License along with avahi; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
case "$reason" in
MEDIUM|ARPCHECK|ARPSEND|NBI)
;;
PREINIT|BOUND|RENEW|REBIND|REBOOT|STOP|RELEASE)
# Stopping avahi-autoipd is left for the enter hook
;;
EXPIRE|FAIL|TIMEOUT)
/usr/sbin/avahi-autoipd -wD $interface 2> /dev/null
;;
esac

View File

@ -0,0 +1,54 @@
# Configuration file for /sbin/dhclient.
#
# This is a sample configuration file for dhclient. See dhclient.conf's
# man page for more information about the syntax of this file
# and a more comprehensive list of the parameters understood by
# dhclient.
#
# Normally, if the DHCP server provides reasonable information and does
# not leave anything out (like the domain name, for example), then
# few changes must be made to this file, if any.
#
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers;
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;
#require subnet-mask, domain-name-servers;
timeout 300;
#retry 60;
#reboot 10;
#select-timeout 5;
#initial-interval 2;
#script "/sbin/dhclient-script";
#media "-link0 -link1 -link2", "link0 link1";
#reject 192.33.137.209;
#alias {
# interface "eth0";
# fixed-address 192.5.5.213;
# option subnet-mask 255.255.255.255;
#}
#lease {
# interface "eth0";
# fixed-address 192.33.137.200;
# medium "link0 link1";
# option host-name "andare.swiftmedia.com";
# option subnet-mask 255.255.255.0;
# option broadcast-address 192.33.137.255;
# option routers 192.33.137.250;
# option domain-name-servers 127.0.0.1;
# renew 2 2000/1/12 00:00:01;
# rebind 2 2000/1/12 00:00:01;
# expire 2 2000/1/12 00:00:01;
#}