2016-04-27 22:48:27 +02:00
|
|
|
#!/bin/bash
|
|
|
|
########################################################################
|
|
|
|
# Copyright (C) 2016 Max Mehl <mail [at] mehl [dot] mx>
|
|
|
|
########################################################################
|
|
|
|
#
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
|
|
# it under the terms of the GNU Affero General Public License as
|
|
|
|
# published by the Free Software Foundation, either version 3 of the
|
|
|
|
# License, or (at your option) any later version.
|
|
|
|
#
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
# GNU Affero General Public License for more details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU Affero General Public
|
|
|
|
# License along with this program. If not, see
|
|
|
|
# <http://www.gnu.org/licenses/>.
|
|
|
|
#
|
|
|
|
########################################################################
|
|
|
|
#
|
|
|
|
# This file uses the data forwarded by update.php, validates the given
|
|
|
|
# login data in the user database, and does the API call to the INWX
|
|
|
|
# API.
|
|
|
|
#
|
|
|
|
########################################################################
|
|
|
|
|
|
|
|
|
|
|
|
cd "$(dirname "$(readlink -f "$0")")"
|
|
|
|
|
|
|
|
# Test if config.cfg exists and set needed variables
|
|
|
|
if [ ! -e config.cfg ]; then echo "Missing config.cfg file. Edit and rename config.cfg.sample"; exit 1; fi
|
|
|
|
source config.cfg
|
|
|
|
|
2020-10-27 11:32:02 +01:00
|
|
|
# Check dependencies
|
|
|
|
deperrors=''
|
|
|
|
for depend in curl; do
|
2020-10-27 11:48:50 +01:00
|
|
|
if ! command -v "$depend" >/dev/null 2>&1; then
|
2020-10-27 11:32:02 +01:00
|
|
|
deperrors="$depend $deperrors"
|
2016-04-27 22:48:27 +02:00
|
|
|
fi
|
2020-10-27 11:32:02 +01:00
|
|
|
done
|
|
|
|
if [ -n "$deperrors" ]; then
|
|
|
|
cat <<-EOF
|
|
|
|
This program depends on some other programs to function.
|
|
|
|
Not all of those programs could be located on your system.
|
|
|
|
Please use your package manager to install the following programs:
|
|
|
|
EOF
|
|
|
|
echo "$deperrors"
|
|
|
|
exit 1
|
|
|
|
fi
|
2016-04-27 22:48:27 +02:00
|
|
|
|
|
|
|
USERDB=users.db
|
|
|
|
|
|
|
|
DOMAIN="$1"
|
|
|
|
NEWIP="$2"
|
|
|
|
U_USER="$3"
|
|
|
|
U_PASS="$4"
|
|
|
|
|
|
|
|
E=$(grep "^$DOMAIN;" $USERDB)
|
|
|
|
|
|
|
|
if [ "$E" != "" ]; then
|
|
|
|
DNSID=$(echo $E | cut -d";" -f2)
|
|
|
|
E_USER=$(echo $E | cut -d";" -f3)
|
|
|
|
E_PASS=$(echo $E | cut -d";" -f4)
|
|
|
|
|
|
|
|
# Check if user as given correct user and password
|
|
|
|
if [ "$U_USER" == "$E_USER" ] && [ "$U_PASS" == "$E_PASS" ]; then
|
|
|
|
DATA=$(cat update.api | sed "s/%PASSWD%/$PASSWORD/g;s/%USER%/$USERNAME/g;s/%DNSID%/$DNSID/g;s/%NEWIP%/$NEWIP/g")
|
|
|
|
curl -X POST -d "$DATA" "$APIHOST" --header "Content-Type:text/xml" --insecure > update.log
|
|
|
|
echo "" >> update.log
|
|
|
|
echo "Updated IP address for $DNSID ($DOMAIN) to $NEWIP." >> update.log
|
|
|
|
echo "Success: Updated $DOMAIN to $NEWIP."
|
|
|
|
else
|
|
|
|
echo "Wrong user or password."
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
echo "Domain does not exist in database"
|
|
|
|
fi
|
|
|
|
|
|
|
|
|