Commit 296e9fa1 authored by Natanael Copa's avatar Natanael Copa

added feature to revert the setup-alpine-web

parent f1b3b2d2
#!/bin/sh
PROGRAM=${0##*/}
BRNUM=0
CNET="10.$BRNUM.0"
HNAME=alpine
DOMAIN="bootstrap.invalid"
IFACE_LIST=/tmp/interfaces
get_interfaces() {
......@@ -16,7 +20,7 @@ make_dhcp_subnet() {
local network="$CNET.$num"
local netmask=255.255.255.240
local router="$CNET.$(( $num + 1 ))"
local poolstart="$CNET.$(( $num + 2 ))"
local poolstart="$CNET.$(( $num + 3 ))"
local poolend="$CNET.$(( $num + 14 ))"
echo "subnet $network netmask $netmask {"
echo " range $poolstart $poolend;"
......@@ -29,57 +33,113 @@ make_dhcp_subnet() {
}
make_dhcp_global() {
echo "option domain-name \"bootstrap.invalid\";"
echo "option domain-name \"$DOMAIN\";"
echo "option domain-name-servers $CNET.1;"
echo "ddns-update-style none;"
echo ""
}
do_setup() {
local i
local count
hostname $HNAME
# install needed packages
apk_add dhcp iptables "$@"
# config dhcp server
make_dhcp_global > /etc/dhcp/dhcpd.conf
count=0
for i in $(get_interfaces); do
# maximum 16 network interfaces
[ $count -ge 16 ] && break
make_dhcp_subnet $(( $count * 16 )) $i >> /etc/dhcp/dhcpd.conf
count=$(( $count + 1 ))
done
/etc/init.d/syslog start
/etc/init.d/dhcpd start
FORCE_SETUP_WEBCONF=yes setup-webconf apk "$@"
# set up http listener/forwarder
mkdir -p /var/www/redirect
cat <<EOF >/var/www/redirect/index.html
<html>
<head>
<meta HTTP-EQUIV="REFRESH" content="0; url=https://$(hostname)">
</head>
<body></body>
</html>
EOF
echo "E404:/var/www/redirect/index.html" > /etc/httpd.conf
echo "HTTPD_OPTS=\"-h /var/www/redirect\"" > /etc/conf.d/httpd
/etc/init.d/httpd start
# dummy dns
echo "* $CNET.1" > /etc/dnsd.conf
/etc/init.d/dnsd start
}
# reconf dhcp and kill all interfaces but $1
do_reset() {
local iface=$1
local i
local oldip=$(ip addr show dev $iface | awk '/inet / { print $2 } ' | head -n 1)
# setup new dhcpd.conf
make_dhcp_global > /etc/dhcp/dhcpd.conf
cat >> /etc/dhcp/dhcpd.conf <<EOF
subnet $CNET.0 netmask 255.255.255.0 {
range $CNET.3 $CNET.14;
option routers $CNET.1;
}
EOF
# shut down all interfaces
for i in $(get_interfaces); do
ip addr flush dev $i
[ "$i" = "$iface" ] && continue
ip link set dev $i down
done
# bring interface up again and flush iptables
ip addr add $oldip dev $iface
ip addr add $CNET.1/24 dev $iface
iptables -t nat -F PREROUTING
/etc/init.d/dhcpd restart
}
usage() {
cat <<EOF
usage: $PROGRAM [-c X.Y.Z] [-H HOSTNAME] [-R IFACE]
options:
-c Use X.Y.Z as network prefix rather than $CNET
-H set hostname
-R reset previously configured initerfaces and configure IFACE
EOF
exit 0
}
# parse args
while getopts "b:" opts; do
while getopts "b:c:d:H:hR:" opts; do
case "$opts" in
b) BRNUM="$OPTARG";;
c) CNET="$OPTARG";;
d) DOMAIN="$OPTARG";;
H) HNAME="$OPTARG";;
h) usage;;
R) KEEP_IFACE="$OPTARG";;
esac
done
shift $(( $OPTIND - 1 ))
hostname alpine
# install needed packages
apk_add dhcp iptables tinydns acf-apk "$@"
# config dhcp server
make_dhcp_global > /etc/dhcp/dhcpd.conf
count=0
for i in $(get_interfaces); do
# maximum 16 network interfaces
[ $count -ge 16 ] && break
make_dhcp_subnet $(( $count * 16 )) $i >> /etc/dhcp/dhcpd.conf
count=$(( $count + 1 ))
done
/etc/init.d/syslog start
/etc/init.d/dhcpd start
FORCE_SETUP_WEBCONF=yes setup-webconf apk "$@"
# set up http listener/forwarder
mkdir -p /var/www/redirect
cat <<EOF >/var/www/redirect/index.html
<html>
<head>
<meta HTTP-EQUIV="REFRESH" content="0; url=https://$(hostname)">
</head>
<body>
</body>
</html>
EOF
echo "E404:/var/www/redirect/index.html" > /etc/httpd.conf
echo "HTTPD_OPTS=\"-h /var/www/redirect\"" > /etc/conf.d/httpd
/etc/init.d/httpd start
if [ -z "$KEEP_IFACE" ]; then
do_setup "$@"
exit 0
fi
# dummy dns
echo "* $CNET.1" > /etc/dnsd.conf
/etc/init.d/dnsd start
do_reset "$KEEP_IFACE"
exit 0
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment