This commit is contained in:
tuend-work
2025-11-12 23:10:39 +07:00
parent bd58de709f
commit 2e16431888
953 changed files with 57002 additions and 0 deletions

View File

@@ -0,0 +1,147 @@
#!/bin/sh
#Version: 0.1 ALPHA (use at your own risk!)
#Script is used to change the IP of all Users owned by Reseller on a DA server (including the Reseller himself).
#Written by DirectAdmin and Martynas Bendorius (smtalk)
#Usage: $0 <oldip> <newip> <reseller>
LOG=/var/log/directadmin/ipswap_reseller.log
MYUID=`/usr/bin/id -u`
if [ "$MYUID" != 0 ]; then
echo "You require Root Access to run this script";
exit 1;
fi
if [ $# != 2 ] && [ $# != 3 ] && [ $# != 4 ]; then
echo "Usage:";
echo "$0 <oldip> <newip> <reseller>";
echo "you gave #$#: $0 $1 $2 $3";
echo "";
echo "New IP must exist and be set as shared.";
exit 2;
fi
OLD_IP=$1
NEW_IP=$2
RESELLER=$3
HAVE_HTTPD=1
HAVE_NGINX=0
if [ -s ${DIRECTADMIN} ]; then
if [ "`${DIRECTADMIN} c | grep ^nginx= | cut -d= -f2`" -eq 1 ]; then
HAVE_HTTPD=0
HAVE_NGINX=1
fi
if [ "`${DIRECTADMIN} c | grep ^nginx_proxy= | cut -d= -f2`" -eq 1 ]; then
HAVE_HTTPD=1
HAVE_NGINX=1
fi
fi
log()
{
echo -e "$1";
echo -e "$1" >> $LOG;
}
swapfile()
{
if [ ! -e $1 ]; then
log "Cannot Find $1 to change the IPs. Skipping...";
return;
fi
TEMP="perl -pi -e 's/(^|[\s.=\/:])${OLD_IP}([\s.>:])/\${1}${NEW_IP}\${2}/g' $1"
eval $TEMP;
log "$1\t: $OLD_IP -> $NEW_IP";
}
IPFILE_OLD=/usr/local/directadmin/data/admin/ips/$OLD_IP
IPFILE_NEW=/usr/local/directadmin/data/admin/ips/$NEW_IP
if [ ! -e $IPFILE_NEW ]; then
echo -n "$IPFILE_NEW does not exist. Exiting... ";
exit 3;
fi
IP_STATUS=`grep status ${IPFILE_NEW} | cut -d= -f2`
if [ "${IP_STATUS}" != "shared" ]; then
echo "Please make the IP (${NEW_IP}) shared on reseller level."
exit 4;
fi
ULDDU=/usr/local/directadmin/data/users
if [ ! -e ${ULDDU}/${RESELLER}/users.list ]; then
echo "Reseller ${RESELLER} does not exist. Exiting... ";
exit 5;
fi
IP_LIST=${ULDDU}/${RESELLER}/ip.list
COUNT_IP=`grep -c ${NEW_IP} ${IP_LIST}`
if [ ${COUNT_IP} -eq 0 ]; then
echo "${NEW_IP} does not belong to ${RESELLER}. Please assign it to reseller and start the script again. Exiting."
exit 6;
fi
OS=`uname`
if [ $OS = "FreeBSD" ]; then
DB_PATH=/etc/namedb
else
if [ -e /etc/debian_version ]; then
DB_PATH=/etc/bind
else
DB_PATH=/var/named
fi
fi
for i in `cat ${ULDDU}/${RESELLER}/users.list && echo "${RESELLER}"`; do
{
if [ ! -d $ULDDU/$i ]; then
continue;
fi
swapfile $ULDDU/$i/user.conf
if [ "${HAVE_HTTPD}" -eq 1 ]; then
swapfile $ULDDU/$i/httpd.conf
fi
if [ "${HAVE_NGINX}" -eq 1 ]; then
swapfile $ULDDU/$i/nginx.conf
fi
if [ -e $ULDDU/$i/ip.list ]; then
swapfile $ULDDU/$i/ip.list
fi
swapfile $ULDDU/$i/user_ip.list
for j in `ls $ULDDU/$i/domains/*.conf; ls $ULDDU/$i/domains/*.ftp; ls $ULDDU/$i/domains/*.ip_list`; do
{
swapfile $j
};
done;
for d in `cat ${ULDDU}/$i/domains.list`; do
{
swapfile ${DB_PATH}/$d.db
echo "action=rewrite&value=named&domain=$d" >> /usr/local/directadmin/data/task.queue
for p in `cat ${ULDDU}/$i/domains/$d.pointers | cut -d= -f1 2>/dev/null`; do
{
swapfile ${DB_PATH}/$p.db
echo "action=rewrite&value=named&domain=$p" >> /usr/local/directadmin/data/task.queue
}
done;
};
done;
};
done;
echo "action=rewrite&value=ipcount" >> /usr/local/directadmin/data/task.queue
echo "action=rewrite&value=ips" >> /usr/local/directadmin/data/task.queue
echo "action=cache&value=showallusers" >> /usr/local/directadmin/data/task.queue
echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue
echo "Runing dataskq..."
/usr/local/directadmin/dataskq d
log "\n*** Done swapping $OLD_IP to $NEW_IP ***\n";
exit 0;