├── README.md ├── license.key └── update1613-CentOS7.sh /README.md: -------------------------------------------------------------------------------- 1 | # Directadmin 1.61.3 License 2038 2 | 3 | Centos 7 minimum 4 | 5 | **Install the necessary applications before the installation DA 2038** 6 | 7 | yum install wget tar gcc gcc-c++ flex bison make bind bind-libs bind-utils openssl openssl-devel perl quota libaio \ 8 | libcom_err-devel libcurl-devel gd zlib-devel zip unzip libcap-devel cronie bzip2 cyrus-sasl-devel perl-ExtUtils-Embed \ 9 | autoconf automake libtool which patch mailx bzip2-devel lsof glibc-headers kernel-devel expat-devel \ 10 | psmisc net-tools systemd-devel libdb-devel perl-DBI perl-Perl4-CoreLibs perl-libwww-perl xfsprogs rsyslog logrotate crontabs file kernel-headers net-tools 11 | 12 | **Install DirectAdmin 2038** 13 | 14 | wget https://raw.githubusercontent.com/NOTAD/DirectAdmin-1.61.3-key-2038/main/update1613-CentOS7.sh 15 | 16 | chmod 755 update1613-CentOS7.sh 17 | 18 | ./update1613-CentOS7.sh 19 | 20 | **Config IP License** 21 | 22 | *If your interface is **ensXXX** change **eth0** to **ensXXX*** 23 | 24 | ifconfig eth0:100 176.99.3.34 netmask 255.255.255.0 up 25 | 26 | echo 'DEVICE=eth0:100' >> /etc/sysconfig/network-scripts/ifcfg-eth0:100 27 | 28 | echo 'IPADDR=176.99.3.34' >> /etc/sysconfig/network-scripts/ifcfg-eth0:100 29 | 30 | echo 'NETMASK=255.255.255.0' >> /etc/sysconfig/network-scripts/ifcfg-eth0:100 31 | 32 | service network restart 33 | 34 | /usr/bin/perl -pi -e 's/^ethernet_dev=.*/ethernet_dev=eth0:100/' /usr/local/directadmin/conf/directadmin.conf 35 | 36 | **Get Key 2038** 37 | 38 | service directadmin stop 39 | 40 | cd /usr/local/directadmin/conf 41 | 42 | wget -O license.key https://raw.githubusercontent.com/NOTAD/DirectAdmin-1.61.3-key-2038/main/license.key 43 | 44 | chown diradmin:diradmin license.key 45 | 46 | chmod 600 license.key 47 | 48 | **Complete the installation** 49 | 50 | service directadmin start 51 | 52 | systemctl disable firewalld 53 | 54 | systemctl stop firewalld 55 | 56 | init 6 57 | 58 | -------------------------------------------------------------------------------- /license.key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NOTAD/DirectAdmin-1.61.3-key-2038/58d3a636f8fec44795356ad01683efcef40e8af5/license.key -------------------------------------------------------------------------------- /update1613-CentOS7.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ############################################################################### 4 | # setup.sh 5 | # DirectAdmin setup.sh file is the first file to download when doing a 6 | # DirectAdmin Install. It will ask you for relevant information and will 7 | # download all required files. If you are unable to run this script with 8 | # ./setup.sh then you probably need to set it's permissions. You can do this 9 | # by typing the following: 10 | # 11 | # chmod 755 setup.sh 12 | # 13 | # after this has been done, you can type ./setup.sh to run the script. 14 | # 15 | ############################################################################### 16 | 17 | OS=`uname`; 18 | 19 | if [ "$(id -u)" != "0" ]; then 20 | echo "You must be root to execute the script. Exiting." 21 | exit 1 22 | fi 23 | 24 | #For FreeBSD 11 25 | if [ ! -e /usr/bin/perl ] && [ -e /usr/local/bin/perl ]; then 26 | ln -s /usr/local/bin/perl /usr/bin/perl 27 | fi 28 | 29 | if [ "$OS" = "FreeBSD" ]; then 30 | WGET_PATH=/usr/local/bin/wget 31 | else 32 | WGET_PATH=/usr/bin/wget 33 | fi 34 | 35 | if [ ! -e /usr/bin/perl ] || [ ! -e ${WGET_PATH} ]; then 36 | 37 | if [ "${OS}" = "FreeBSD" ]; then 38 | pkg install -y perl5 wget 39 | rehash 40 | elif [ -e /etc/debian_version ]; then 41 | apt-get -y install perl wget 42 | else 43 | yum -y install perl wget 44 | fi 45 | 46 | if [ ! -e /usr/bin/perl ]; then 47 | echo "Cannot find perl. Please run pre-install commands:"; 48 | echo " https://help.directadmin.com/item.php?id=354"; 49 | exit 1; 50 | fi 51 | 52 | if [ ! -e ${WGET_PATH} ]; then 53 | echo "Cannot find ${WGET_PATH}. Please run pre-install commands:"; 54 | echo " https://help.directadmin.com/item.php?id=354"; 55 | exit 80; 56 | fi 57 | fi 58 | 59 | #For FreeBSD 11 60 | if [ ! -e /usr/bin/perl ] && [ -e /usr/local/bin/perl ]; then 61 | ln -s /usr/local/bin/perl /usr/bin/perl 62 | fi 63 | 64 | random_pass() { 65 | PASS_LEN=`perl -le 'print int(rand(6))+9'` 66 | START_LEN=`perl -le 'print int(rand(8))+1'` 67 | END_LEN=$(expr ${PASS_LEN} - ${START_LEN}) 68 | SPECIAL_CHAR=`perl -le 'print map { (qw{@ ^ _ - /})[rand 6] } 1'`; 69 | NUMERIC_CHAR=`perl -le 'print int(rand(10))'`; 70 | PASS_START=`perl -le "print map+(A..Z,a..z,0..9)[rand 62],0..$START_LEN"`; 71 | PASS_END=`perl -le "print map+(A..Z,a..z,0..9)[rand 62],0..$END_LEN"`; 72 | PASS=${PASS_START}${SPECIAL_CHAR}${NUMERIC_CHAR}${PASS_END} 73 | echo $PASS 74 | } 75 | 76 | ADMIN_USER=admin 77 | DB_USER=da_admin 78 | #ADMIN_PASS=`perl -le'print map+(A..Z,a..z,0..9)[rand 62],0..9'`; 79 | ADMIN_PASS=`random_pass` 80 | #RAND_LEN=`perl -le'print 16+int(rand(9))'` 81 | #DB_ROOT_PASS=`perl -le"print map+(A..Z,a..z,0..9)[rand 62],0..$RAND_LEN"`; 82 | DB_ROOT_PASS=`random_pass` 83 | DOWNLOAD_BETA=false 84 | if [ "$1" = "beta" ] || [ "$2" = "beta" ]; then 85 | DOWNLOAD_BETA=true 86 | fi 87 | 88 | FTP_HOST=files.directadmin.com 89 | 90 | WGET_OPTION="--no-dns-cache"; 91 | COUNT=`$WGET_PATH --help | grep -c no-check-certificate` 92 | if [ "$COUNT" -ne 0 ]; then 93 | WGET_OPTION="--no-check-certificate ${WGET_OPTION}"; 94 | fi 95 | 96 | SYSTEMD=no 97 | SYSTEMDDIR=/etc/systemd/system 98 | if [ -d ${SYSTEMDDIR} ]; then 99 | if [ -e /bin/systemctl ] || [ -e /usr/bin/systemctl ]; then 100 | SYSTEMD=yes 101 | fi 102 | fi 103 | 104 | CID=0 105 | LID=0 106 | HOST=`hostname -f`; 107 | if [ "${HOST}" = "" ]; then 108 | if [ -x /usr/bin/hostnamectl ]; then 109 | HOST=`/usr/bin/hostnamectl status | grep 'hostname:' | grep -v 'n/a' | head -n1 | awk '{print $3}'` 110 | fi 111 | fi 112 | 113 | CMD_LINE=0 114 | AUTO=0 115 | ETH_DEV=eth0 116 | IP=0 117 | OS_OVERRIDE_FILE=/root/.os_override 118 | 119 | GET_LICENSE=1 120 | if [ -s /root/.skip_get_license ]; then 121 | GET_LICENSE=0 122 | fi 123 | 124 | if [ $# -gt 0 ]; then 125 | case "$1" in 126 | --help|help|\?|-\?|h) 127 | echo ""; 128 | echo "Usage: $0"; 129 | echo "" 130 | echo "or" 131 | echo "" 132 | echo "Usage: $0 auto" 133 | echo "" 134 | echo "or" 135 | echo "" 136 | echo "Usage: $0 ()"; 137 | echo " : Your Client ID"; 138 | echo " : Your License ID"; 139 | echo " : Your server's hostname (FQDN)"; 140 | echo " : Your ethernet device with the server IP"; 141 | echo " : Optional. Use to override the IP in "; 142 | echo ""; 143 | echo ""; 144 | echo "Common pre-install commands:"; 145 | echo " http://help.directadmin.com/item.php?id=354"; 146 | exit 0; 147 | ;; 148 | esac 149 | 150 | if [ "$1" = "auto" ]; then 151 | AUTO=1 152 | CMD_LINE=1 153 | LID_INFO=/root/.lid_info 154 | 155 | #cleanup 156 | rm -f /root/.lan 157 | rm -f ${LID_INFO} 158 | 159 | ${WGET_PATH} ${WGET_OPTION} -O ${LID_INFO} https://www.directadmin.com/clients/my_license_info.php 160 | if [ ! -s ${LID_INFO} ]; then 161 | echo "Error getting license info. Empty ${LID_INFO} file. Check for errors, else try the UID/LID method, eg: $0" 162 | exit 70 163 | fi 164 | if grep -m1 -q error=1 ${LID_INFO}; then 165 | if [ "${OS}" = "FreeBSD" ]; then 166 | for ip_address in `ifconfig | grep 'inet[0-9]* ' | awk '{print $2}' | grep -v '^127\.0\.0\.1' | grep -v '^::1' | grep -v '^fe80'`; do { 167 | ${WGET_PATH} ${WGET_OPTION} --bind-address="${ip_address}" -O ${LID_INFO} https://www.directadmin.com/clients/my_license_info.php 168 | if ! grep -m1 -q error=1 ${LID_INFO} && [ -s ${LID_INFO} ]; then 169 | BIND_ADDRESS=--bind-address=${ip_address} 170 | BIND_ADDRESS_IP=${ip_address} 171 | break 172 | fi 173 | }; 174 | done 175 | else 176 | for ip_address in `ip -o addr | awk '!/^[0-9]*: ?lo|link\/ether/ {print $4}' | cut -d/ -f1 | grep -v ^fe80`; do { 177 | ${WGET_PATH} ${WGET_OPTION} --bind-address="${ip_address}" -O ${LID_INFO} https://www.directadmin.com/clients/my_license_info.php 178 | if ! grep -m1 -q error=1 ${LID_INFO} && [ -s ${LID_INFO} ]; then 179 | BIND_ADDRESS=--bind-address=${ip_address} 180 | BIND_ADDRESS_IP=${ip_address} 181 | break 182 | fi 183 | }; 184 | done 185 | fi 186 | fi 187 | if grep -m1 -q error=1 ${LID_INFO}; then 188 | echo "An error has occured. Info about the error:" 189 | grep ^text= ${LID_INFO} | cut -d= -f2 190 | 191 | if [ "${GET_LICENSE}" = "1" ]; then 192 | exit 71 193 | fi 194 | echo "However, we're skipping the license download, so we'll continue anyway" 195 | fi 196 | CID=`grep ^uid= ${LID_INFO} |cut -d= -f2` 197 | LID=`grep ^lid= ${LID_INFO} |cut -d= -f2` 198 | IP=`grep ^ip= ${LID_INFO} |cut -d= -f2` 199 | HOST=`grep ^hostname= ${LID_INFO} |cut -d= -f2` 200 | LID_OS=`grep ^os= ${LID_INFO} |cut -d= -f2` 201 | 202 | USE_HOST=/root/.use_hostname 203 | if [ -e ${USE_HOST} ]; then 204 | HOST=`cat ${USE_HOST} | head -n 1` 205 | fi 206 | 207 | if [ "${HOST}" = "" ]; then 208 | HOST=`hostname -f` 209 | fi 210 | if [ "${HOST}" = "localhost" ]; then 211 | echo "'localhost' is not valid for the hostname. Setting it to server.hostname.com, you can change it later in Admin Settings" 212 | HOST=server.hostname.com 213 | fi 214 | if [ "${HOST}" != "" ]; then 215 | C=`echo ${HOST} | grep -o '\.' | grep -c '\.'` 216 | if [ "${C}" = "0" ]; then 217 | echo "'${HOST}' is not valid for the hostname. Setting it to server.hostname.com, you can change it later in Admin Settings" 218 | HOST=server.hostname.com 219 | fi 220 | fi 221 | 222 | if [ "$OS" = "FreeBSD" ]; then 223 | EDEVS=`ifconfig -l` 224 | for i in $EDEVS; do 225 | { 226 | DC=`ifconfig $i | grep -c "inet $IP "` 227 | if [ "${DC}" -gt 0 ]; then 228 | ETH_DEV=$i 229 | break 230 | fi 231 | }; 232 | done; 233 | else 234 | ETH_DEV=`ip addr | grep " $IP/" | awk '{print $NF}'` 235 | fi 236 | if [ -z "${ETH_DEV}" ]; then 237 | if [ "${OS}" != "FreeBSD" ]; then 238 | ETH_DEV_TEMP=`ip link | grep -v 'lo:' | grep -m1 '^[0-9]:' | cut -d: -f2 | awk '{print $1}'` 239 | if [ ! -z "${ETH_DEV_TEMP}" ]; then 240 | ETH_DEV="${ETH_DEV_TEMP}" 241 | LAN_AUTO=1 242 | echo 1 > /root/.lan 243 | fi 244 | fi 245 | fi 246 | if [ "${LID_OS}" = "Linux+64+static" ] && [ "${OS}" != "FreeBSD" ]; then 247 | echo -n "${LID_OS}" > ${OS_OVERRIDE_FILE} 248 | fi 249 | 250 | if [ "${GET_LICENSE}" = "0" ]; then 251 | if [ "${CID}" = "" ]; then 252 | CID=0 253 | fi 254 | if [ "${LID}" = "" ]; then 255 | LID=0 256 | fi 257 | if [ "${IP}" = "" ]; then 258 | IP=`wget -q -O - http://myip.directadmin.com` 259 | fi 260 | fi 261 | else 262 | CID=$1; 263 | LID=$2; 264 | HOST=$3; 265 | if [ $# -lt 4 ]; then 266 | $0 --help 267 | exit 56; 268 | fi 269 | 270 | ETH_DEV=$4; 271 | CMD_LINE=1; 272 | if [ $# -gt 4 ]; then 273 | IP=$5; 274 | fi 275 | fi 276 | fi 277 | 278 | B64=0 279 | if [ "$OS" = "FreeBSD" ]; then 280 | B64=`uname -m | grep -c 64` 281 | 282 | if [ "$B64" -gt 0 ]; then 283 | echo "*** 64-bit OS ***"; 284 | echo "*** that being said, this should be a FreeBSD 7, 8, 9, 11, or 12 system. ***"; 285 | sleep 2; 286 | B64=1 287 | fi 288 | else 289 | B64=`uname -m | grep -c 64` 290 | if [ "$B64" -gt 0 ]; then 291 | echo "*** 64-bit OS ***"; 292 | echo ""; 293 | sleep 2; 294 | B64=1 295 | fi 296 | fi 297 | 298 | if [ -e /usr/local/directadmin/conf/directadmin.conf ]; then 299 | echo ""; 300 | echo ""; 301 | echo "*** DirectAdmin already exists ***"; 302 | echo " Press Ctrl-C within the next 10 seconds to cancel the install"; 303 | echo " Else, wait, and the install will continue, but will destroy existing data"; 304 | echo ""; 305 | echo ""; 306 | sleep 10; 307 | fi 308 | 309 | if [ -e /usr/local/cpanel ]; then 310 | echo ""; 311 | echo ""; 312 | echo "*** CPanel exists on this system ***"; 313 | echo " Press Ctrl-C within the next 10 seconds to cancel the install"; 314 | echo " Else, wait, and the install will continue overtop (as best it can)"; 315 | echo ""; 316 | echo ""; 317 | sleep 10; 318 | fi 319 | 320 | OS_VER=; 321 | 322 | REDHAT_RELEASE=/etc/redhat-release 323 | DEBIAN_VERSION=/etc/debian_version 324 | DA_PATH=/usr/local/directadmin 325 | CB_VER=2.0 326 | CB_OPTIONS=${DA_PATH}/custombuild/options.conf 327 | SCRIPTS_PATH=$DA_PATH/scripts 328 | PACKAGES=$SCRIPTS_PATH/packages 329 | SETUP=$SCRIPTS_PATH/setup.txt 330 | 331 | SERVER=http://files.directadmin.com/services 332 | BFILE=$SERVER/custombuild/${CB_VER}/custombuild/build 333 | CBPATH=$DA_PATH/custombuild 334 | BUILD=$CBPATH/build 335 | 336 | if [ $OS = "FreeBSD" ]; then 337 | OS_VER=`uname -r | cut -d- -f1` 338 | elif [ -e $DEBIAN_VERSION ]; then 339 | OS=debian 340 | OS_VER=`cat $DEBIAN_VERSION | head -n1` 341 | if [ "$OS_VER" = "testing/unstable" ]; then 342 | OS_VER=3.1 343 | fi 344 | if [ "$OS_VER" = "lenny/sid" ]; then 345 | OS_VER=5.0 346 | fi 347 | if [ "$OS_VER" = "squeeze/sid" ]; then 348 | OS_VER=6.0 349 | #should be 6.0, but used to be 5. 350 | fi 351 | if [ "$OS_VER" = "wheezy/sid" ]; then 352 | OS_VER=7.0 353 | fi 354 | 355 | if [ "$OS_VER" = "jessie/sid" ]; then 356 | OS_VER=8.0 357 | fi 358 | 359 | if [ "$OS_VER" = "stretch/sid" ]; then 360 | OS_VER=9.0 361 | fi 362 | 363 | if [ "$OS_VER" = "buster/sid" ]; then 364 | echo "This appears to be Debian version $OS_VER which is Debian 10"; 365 | OS_VER=10.0 366 | fi 367 | 368 | if [ "$OS_VER" = "bullseye/sid" ]; then 369 | echo "This appears to be Debian version $OS_VER which is Debian 11"; 370 | OS_VER=11.0 371 | fi 372 | 373 | else 374 | OS_VER=`cat /etc/redhat-release | head -n1 | cut -d\ -f5` 375 | fi 376 | 377 | if [ "$OS_VER" = "release" ]; then 378 | OS=Enterprise 379 | OS_VER=`cat /etc/redhat-release | cut -d\ -f6 | cut -d. -f1,2` 380 | elif [ "$OS_VER" = "ES" ]; then 381 | OS=Enterprise 382 | OS_VER=`cat /etc/redhat-release | cut -d\ -f7` 383 | elif [ "$OS_VER" = "WS" ]; then 384 | OS=Enterprise 385 | OS_VER=`cat /etc/redhat-release | cut -d\ -f7` 386 | elif [ "$OS_VER" = "AS" ]; then 387 | OS=Enterprise 388 | OS_VER=`cat /etc/redhat-release | cut -d\ -f7` 389 | elif [ "$OS_VER" = "Server" ]; then 390 | OS=Enterprise 391 | OS_VER=`cat /etc/redhat-release | head -n1 | cut -d\ -f7` 392 | elif [ "`cat /etc/redhat-release 2>/dev/null| cut -d\ -f1`" = "CentOS" ]; then 393 | OS=Enterprise 394 | OS_VER=`cat /etc/redhat-release |cut -d\ -f3`; 395 | if [ "$OS_VER" = "release" ]; then 396 | OS_VER=`cat /etc/redhat-release | cut -d\ -f4` 397 | fi 398 | OS_VER=`echo $OS_VER | cut -d. -f1,2` 399 | elif [ "`cat /etc/redhat-release 2>/dev/null| cut -d\ -f3`" = "Enterprise" ]; then 400 | OS=Enterprise 401 | OS_VER=`cat /etc/redhat-release 2>/dev/null| cut -d\ -f7` 402 | elif [ "`cat /etc/redhat-release 2>/dev/null| cut -d\ -f1,2`" = "CloudLinux Server" ]; then 403 | OS=Enterprise 404 | OS_VER=`cat /etc/redhat-release 2>/dev/null| cut -d\ -f4` 405 | elif [ "`cat /etc/redhat-release 2>/dev/null| cut -d\ -f1,2`" = "CloudLinux release" ]; then 406 | OS=Enterprise 407 | OS_VER=`cat /etc/redhat-release 2>/dev/null| cut -d\ -f3` 408 | elif [ "`cat /etc/redhat-release 2>/dev/null| cut -d\ -f1,2`" = "Scientific Linux" ]; then 409 | OS=Enterprise 410 | OS_VER=`cat /etc/redhat-release 2>/dev/null| cut -d\ -f4` 411 | elif [ "`cat ${REDHAT_RELEASE} 2>/dev/null| cut -d\ -f5`" = "Enterprise" ]; then 412 | #Derived from Red Hat Enterprise Linux 7.1 (Source) 413 | OS=Enterprise 414 | OS_VER=`cat ${REDHAT_RELEASE} 2>/dev/null| cut -d\ -f7` 415 | fi 416 | 417 | OS_MAJ_VER=`echo $OS_VER | cut -d. -f1` 418 | 419 | # Get the services file name: 420 | # services72.tar.gz 421 | # services73.tar.gz 422 | # services80.tar.gz 423 | # services90.tar.gz 424 | # services_freebsd48.tar.gz 425 | 426 | SERVICES=""; 427 | OS_NAME= 428 | if [ "$OS" = "debian" ]; then 429 | OS_VER=`echo $OS_VER | cut -d. -f1,2` 430 | if [ "$B64" -eq 1 ]; then 431 | case "$OS_MAJ_VER" in 432 | 5) SERVICES=services_debian50_64.tar.gz 433 | ;; 434 | 6) SERVICES=services_debian60_64.tar.gz 435 | ;; 436 | 7) SERVICES=services_debian70_64.tar.gz 437 | OS_NAME=Debian+7+64 438 | ;; 439 | 8) SERVICES=services_debian80_64.tar.gz 440 | OS_NAME=Debian+8+64 441 | ;; 442 | 9) SERVICES=services_debian90_64.tar.gz 443 | OS_NAME=Debian+9+64 444 | ;; 445 | 10) SERVICES=services_debian100_64.tar.gz 446 | OS_NAME=Debian+10+64 447 | ;; 448 | 11) SERVICES=services_debian110_64.tar.gz 449 | OS_NAME=Debian+11+64 450 | ;; 451 | *) SERVICES=services_debian100_64.tar.gz 452 | OS_NAME=Debian+10+64 453 | ;; 454 | esac 455 | else 456 | case "$OS_MAJ_VER" in 457 | 5) SERVICES=services_debian50.tar.gz 458 | ;; 459 | 6) SERVICES=services_debian60.tar.gz 460 | ;; 461 | 7) SERVICES=services_debian70.tar.gz 462 | OS_NAME=Debian+7 463 | ;; 464 | 8) SERVICES=services_debian80.tar.gz 465 | echo "************"; 466 | echo "This is a 32-bit install of Debian 8."; 467 | echo "We currently only support the 64-bit version of Debian 8."; 468 | echo "If you wish to use this OS version, please install the 64-bit version."; 469 | echo ""; 470 | exit 1; 471 | ;; 472 | 9|10) SERVICES=services_debian90.tar.gz 473 | echo "************"; 474 | echo "This is a 32-bit install of Debian $OS_VER."; 475 | echo "We currently only support the 64-bit version of Debian $OS_VER."; 476 | echo "If you wish to use this OS version, please install the 64-bit version."; 477 | echo ""; 478 | exit 1; 479 | ;; 480 | *) SERVICES=services_debian70.tar.gz 481 | OS_NAME=Debian+7 482 | ;; 483 | esac 484 | fi 485 | 486 | elif [ "$OS" = "FreeBSD" ] && [ "$B64" -eq 0 ]; then 487 | case "$OS_MAJ_VER" in 488 | 9) SERVICES=services_freebsd90.tar.gz 489 | OS_NAME=FreeBSD+9.1+32 490 | ;; 491 | esac 492 | elif [ "$OS" = "FreeBSD" ] && [ "$B64" -eq 1 ]; then 493 | case "$OS_MAJ_VER" in 494 | 7) SERVICES=services_freebsd71_64.tar.gz 495 | ;; 496 | 8) SERVICES=services_freebsd80_64.tar.gz 497 | ;; 498 | 9) SERVICES=services_freebsd90_64.tar.gz 499 | OS_NAME=FreeBSD+9.0+64 500 | ;; 501 | 11) SERVICES=services_freebsd110_64.tar.gz 502 | OS_NAME=FreeBSD+11.0+64 503 | ;; 504 | 12) SERVICES=services_freebsd120_64.tar.gz 505 | OS_NAME=FreeBSD+12.0+64 506 | ;; 507 | esac 508 | elif [ $B64 -eq 1 ]; then 509 | case "$OS_MAJ_VER" in 510 | 4) SERVICES=services_es41_64.tar.gz 511 | ;; 512 | 5) SERVICES=services_es50_64.tar.gz 513 | OS_NAME=ES+5.0+64 514 | ;; 515 | 6) SERVICES=services_es60_64.tar.gz 516 | OS_NAME=ES+6.0+64 517 | ;; 518 | 7) SERVICES=services_es70_64.tar.gz 519 | OS_NAME=ES+7.0+64 520 | ;; 521 | 8) SERVICES=services_es80_64.tar.gz 522 | OS_NAME=ES+8.0+64 523 | ;; 524 | esac 525 | else 526 | case "$OS_MAJ_VER" in 527 | 5) SERVICES=services_es50.tar.gz 528 | OS_NAME=ES+5.0 529 | ;; 530 | 6) SERVICES=services_es60.tar.gz 531 | OS_NAME=ES+6.0 532 | ;; 533 | 7) SERVICES=services_es70.tar.gz 534 | ;; 535 | esac 536 | 537 | fi 538 | 539 | if [ "$SERVICES" = "" ]; then 540 | 541 | yesno="n"; 542 | while [ $yesno = "n" ]; 543 | do 544 | { 545 | echo ""; 546 | echo "*** Unable to determine which services pack to use ***"; 547 | echo ""; 548 | echo "Please type in the file name closest to your system from the following list:"; 549 | echo ""; 550 | echo "RHEL/CentOS:"; 551 | echo " services_es60.tar.gz"; 552 | echo " services_es60_64.tar.gz"; 553 | echo " services_es70_64.tar.gz"; 554 | echo " services_es80_64.tar.gz"; 555 | echo ""; 556 | echo "FreeBSD:"; 557 | echo " services_freebsd90_64.tar.gz"; 558 | echo " services_freebsd110_64.tar.gz"; 559 | echo ""; 560 | echo "Debian:"; 561 | echo " services_debian80_64.tar.gz"; 562 | echo " services_debian90_64.tar.gz"; 563 | echo " services_debian100_64.tar.gz"; 564 | echo ""; 565 | 566 | echo -n "Type the filename: "; 567 | read SERVICES 568 | 569 | echo ""; 570 | echo "Value entered: $SERVICES"; 571 | 572 | echo -n "Is this correct? (y,n) : "; 573 | read yesno; 574 | } 575 | done; 576 | 577 | fi 578 | 579 | /bin/mkdir -p $PACKAGES 580 | 581 | yesno=n; 582 | preinstall=n; 583 | if [ "$CMD_LINE" -eq 1 ] || [ "${AUTO}" -eq 1 ]; then 584 | yesno=y; 585 | if [ -e /root/.preinstall ] || [ "${AUTO}" -eq 1 ]; then 586 | preinstall=y; 587 | fi 588 | else 589 | echo "*****************************************************"; 590 | echo "*"; 591 | echo "* DirectAdmin requires certain packages, described here:"; 592 | echo "* http://help.directadmin.com/item.php?id=354"; 593 | echo "*"; 594 | echo -n "* Would you like to install these required pre-install packages? (y/n): "; 595 | 596 | read preinstall; 597 | 598 | echo "*"; 599 | fi 600 | 601 | if [ "$preinstall" = "y" ]; then 602 | echo "* Installing pre-install packages ...."; 603 | if [ "$OS" = "FreeBSD" ]; then 604 | if [ "${OS_MAJ_VER}" -ge 12 ]; then 605 | pkg install -y gcc gmake perl5 wget bison flex cyrus-sasl cmake python autoconf libtool libarchive iconv bind911 mailx webalizer gettext-runtime udns sudo psmisc tar openssl krb5 606 | elif [ "${OS_MAJ_VER}" -ge 11 ]; then 607 | pkg install -y gcc gmake perl5 wget bison flex cyrus-sasl cmake python autoconf libtool libarchive iconv bind911 mailx webalizer gettext-runtime psmisc tar 608 | elif [ "${OS_MAJ_VER}" -ge 10 ]; then 609 | pkg install -y gcc gmake perl5 wget bison flex cyrus-sasl cmake python autoconf libtool libarchive iconv bind99 mailx psmisc 610 | else 611 | pkg_add -r gmake perl wget bison flex gd cyrus-sasl2 cmake python autoconf libtool libarchive mailx 612 | fi 613 | elif [ "$OS" = "debian" ]; then 614 | if [ "${OS_MAJ_VER}" -ge 10 ]; then 615 | apt-get -y update 616 | apt-get -y install gcc g++ make flex bison openssl libssl-dev perl perl-base perl-modules libperl-dev libperl4-corelibs-perl libwww-perl libaio1 libaio-dev \ 617 | zlib1g zlib1g-dev libcap-dev cron bzip2 zip automake autoconf libtool cmake pkg-config python libdb-dev libsasl2-dev \ 618 | libncurses5 libncurses5-dev libsystemd-dev bind9 dnsutils quota patch logrotate rsyslog libc6-dev libexpat1-dev \ 619 | libcrypt-openssl-rsa-perl libnuma-dev libnuma1 620 | elif [ "${OS_MAJ_VER}" -ge 9 ]; then 621 | apt-get -y update 622 | apt-get -y install gcc g++ make flex bison openssl libssl-dev perl perl-base perl-modules libperl-dev libperl4-corelibs-perl libaio1 libaio-dev zlib1g zlib1g-dev libcap-dev cron bzip2 zip automake autoconf libtool cmake pkg-config python libdb-dev libsasl2-dev libncurses5-dev libsystemd-dev bind9 dnsutils quota patch libjemalloc-dev logrotate rsyslog libc6-dev libexpat1-dev libcrypt-openssl-rsa-perl libnuma-dev libnuma1 623 | elif [ "${OS_MAJ_VER}" -ge 8 ]; then 624 | apt-get -y install gcc g++ make flex bison openssl libssl-dev perl perl-base perl-modules libperl-dev libaio1 libaio-dev \ 625 | zlib1g zlib1g-dev libcap-dev cron bzip2 automake autoconf libtool cmake pkg-config python libdb-dev libsasl2-dev \ 626 | libncurses5-dev libsystemd-dev bind9 dnsutils quota libsystemd-daemon0 patch libjemalloc-dev logrotate rsyslog libc6-dev systemd systemd-sysv 627 | elif [ "${OS_MAJ_VER}" -eq 7 ]; then 628 | apt-get -y install gcc g++ make flex bison openssl libssl-dev perl perl-base perl-modules libperl-dev libaio1 libaio-dev zlib1g zlib1g-dev libcap-dev cron bzip2 automake autoconf libtool cmake pkg-config python libdb-dev libsasl2-dev libncurses5-dev patch libjemalloc-dev 629 | else 630 | apt-get -y install gcc g++ make flex bison openssl libssl-dev perl perl-base perl-modules libperl-dev libaio1 libaio-dev zlib1g zlib1g-dev libcap-dev cron bzip2 automake autoconf libtool cmake pkg-config python libreadline-dev libdb4.8-dev libsasl2-dev patch 631 | fi 632 | else 633 | if [ "${OS_MAJ_VER}" -ge 8 ]; then 634 | yum -y install wget tar gcc gcc-c++ flex bison make bind bind-libs bind-utils openssl openssl-devel perl quota libaio \ 635 | libcom_err-devel libcurl-devel gd zlib-devel zip unzip libcap-devel cronie bzip2 cyrus-sasl-devel perl-ExtUtils-Embed \ 636 | autoconf automake libtool which patch mailx bzip2-devel lsof glibc-headers kernel-devel expat-devel \ 637 | psmisc net-tools systemd-devel libdb-devel perl-DBI perl-libwww-perl xfsprogs rsyslog logrotate crontabs file \ 638 | kernel-headers hostname 639 | elif [ "${OS_MAJ_VER}" -ge 7 ]; then 640 | yum -y install wget tar gcc gcc-c++ flex bison make bind bind-libs bind-utils openssl openssl-devel perl quota libaio \ 641 | libcom_err-devel libcurl-devel gd zlib-devel zip unzip libcap-devel cronie bzip2 cyrus-sasl-devel perl-ExtUtils-Embed \ 642 | autoconf automake libtool which patch mailx bzip2-devel lsof glibc-headers kernel-devel expat-devel \ 643 | psmisc net-tools systemd-devel libdb-devel perl-DBI perl-Perl4-CoreLibs perl-libwww-perl xfsprogs rsyslog logrotate crontabs file kernel-headers 644 | else 645 | yum -y install wget tar gcc gcc-c++ flex bison make bind bind-libs bind-utils openssl openssl-devel perl quota libaio \ 646 | libcom_err-devel libcurl-devel gd zlib-devel zip unzip libcap-devel cronie bzip2 cyrus-sasl-devel perl-ExtUtils-Embed \ 647 | autoconf automake libtool which patch mailx bzip2-devel lsof glibc-headers kernel-devel expat-devel db4-devel 648 | fi 649 | fi 650 | else 651 | echo "* skipping pre-install packages."; 652 | echo "* We then assume that you've already installed them."; 653 | echo "* If you have not, then ctrl-c and install them (or-rerun the setup.sh):"; 654 | echo "* http://help.directadmin.com/item.php?id=354"; 655 | 656 | fi 657 | echo "*"; 658 | echo "*****************************************************"; 659 | echo ""; 660 | 661 | while [ "$yesno" = "n" ]; 662 | do 663 | { 664 | echo -n "Please enter your Client ID : "; 665 | read CID; 666 | 667 | echo -n "Please enter your License ID : "; 668 | read LID; 669 | 670 | echo "Please enter your hostname (server.domain.com)"; 671 | echo "It must be a Fully Qualified Domain Name"; 672 | echo "Do *not* use a domain you plan on using for the hostname:"; 673 | echo "eg. don't use domain.com. Use server.domain.com instead."; 674 | echo "Do not enter http:// or www"; 675 | echo ""; 676 | 677 | echo "Your current hostname is: ${HOST}"; 678 | echo "Leave blank to use your current hostname"; 679 | OLD_HOST=$HOST 680 | echo ""; 681 | echo -n "Enter your hostname (FQDN) : "; 682 | read HOST; 683 | if [ "$HOST" = "" ]; then 684 | HOST=$OLD_HOST 685 | fi 686 | 687 | echo "Client ID: $CID"; 688 | echo "License ID: $LID"; 689 | echo "Hostname: $HOST"; 690 | echo -n "Is this correct? (y,n) : "; 691 | read yesno; 692 | } 693 | done; 694 | 695 | 696 | ############ 697 | 698 | # Get the other info 699 | EMAIL=${ADMIN_USER}@${HOST} 700 | if [ -s /root/.email.txt ]; then 701 | EMAIL=`cat /root/.email.txt | head -n 1` 702 | fi 703 | 704 | TEST=`echo $HOST | cut -d. -f3` 705 | if [ "$TEST" = "" ] 706 | then 707 | NS1=ns1.`echo $HOST | cut -d. -f1,2` 708 | NS2=ns2.`echo $HOST | cut -d. -f1,2` 709 | else 710 | NS1=ns1.`echo $HOST | cut -d. -f2,3,4,5,6` 711 | NS2=ns2.`echo $HOST | cut -d. -f2,3,4,5,6` 712 | fi 713 | 714 | if [ -s /root/.ns1.txt ] && [ -s /root/.ns2.txt ]; then 715 | NS1=`cat /root/.ns1.txt | head -n1` 716 | NS2=`cat /root/.ns2.txt | head -n1` 717 | fi 718 | 719 | ## Get the ethernet_dev 720 | 721 | clean_dev() 722 | { 723 | C=`echo $1 | grep -o ":" | wc -l` 724 | 725 | if [ "${C}" -eq 0 ]; then 726 | echo $1; 727 | return; 728 | fi 729 | 730 | if [ "${C}" -ge 2 ]; then 731 | echo $1 | cut -d: -f1,2 732 | return; 733 | fi 734 | 735 | TAIL=`echo $1 | cut -d: -f2` 736 | if [ "${TAIL}" = "" ]; then 737 | echo $1 | cut -d: -f1 738 | return; 739 | fi 740 | 741 | echo $1 742 | } 743 | 744 | 745 | if [ "$OS" = "FreeBSD" ]; then 746 | 747 | if [ $CMD_LINE -eq 0 ]; then 748 | 749 | DEVS=`/sbin/ifconfig -a | grep -e "^[a-z]" | cut -d: -f1 |grep -v lp0|grep -v lo0|grep -v tun0|grep -v sl0|grep -v ppp0|grep -v faith0` 750 | 751 | COUNT=0; 752 | for i in $DEVS; do 753 | { 754 | COUNT=$(($COUNT+1)); 755 | }; 756 | done; 757 | 758 | if [ $COUNT -eq 0 ]; then 759 | echo "Could not find your ethernet device."; 760 | echo -n "Please enter the name of your ethernet device: "; 761 | read ETH_DEV; 762 | elif [ $COUNT -eq 1 ]; then 763 | echo -n "Is $DEVS your network adaptor with the license IP? (y,n) : "; 764 | read yesno; 765 | if [ "$yesno" = "n" ]; then 766 | echo -n "Enter the name of the ethernet device you wish to use : "; 767 | read ETH_DEV; 768 | else 769 | ETH_DEV=$DEVS 770 | fi 771 | else 772 | # more than one 773 | echo "The following ethernet devices were found. Please enter the name of the one you wish to use:"; 774 | echo ""; 775 | echo $DEVS; 776 | echo ""; 777 | echo -n "Enter the device name: "; 778 | read ETH_DEV; 779 | fi 780 | fi 781 | 782 | echo "Using $ETH_DEV"; 783 | 784 | if [ "$IP" = "0" ]; then 785 | 786 | IP=`/sbin/ifconfig $ETH_DEV | grep 'inet ' | head -n1 | cut -d\ -f2` 787 | fi 788 | 789 | echo "Using $IP"; 790 | 791 | NM_HEX=`/sbin/ifconfig $ETH_DEV | grep 'inet ' | head -n1 | cut -d\ -f4 | cut -dx -f2 | tr '[a-f]' '[A-F]'` 792 | 793 | NMH1=`echo $NM_HEX | awk '{print substr($1,1,2)}'` 794 | NMH2=`echo $NM_HEX | awk '{print substr($1,3,2)}'` 795 | NMH3=`echo $NM_HEX | awk '{print substr($1,5,2)}'` 796 | NMH4=`echo $NM_HEX | awk '{print substr($1,7,2)}'` 797 | 798 | NM1=`echo "ibase=16; $NMH1" | bc` 799 | NM2=`echo "ibase=16; $NMH2" | bc` 800 | NM3=`echo "ibase=16; $NMH3" | bc` 801 | NM4=`echo "ibase=16; $NMH4" | bc` 802 | 803 | NM=$NM1.$NM2.$NM3.$NM4; 804 | 805 | else 806 | if [ $CMD_LINE -eq 0 ]; then 807 | DEVS=`ip link show | grep -e "^[1-9]" | awk '{print $2}' | cut -d: -f1 | grep -v lo | grep -v sit0 | grep -v ppp0 | grep -v faith0` 808 | if [ -z "${DEVS}" ] && [ -x /sbin/ifconfig ]; then 809 | DEVS=`/sbin/ifconfig -a | grep -e "^[a-z]" | awk '{ print $1; }' | grep -v lo | grep -v sit0 | grep -v ppp0 | grep -v faith0` 810 | fi 811 | COUNT=0; 812 | for i in $DEVS; do 813 | { 814 | COUNT=$(($COUNT+1)); 815 | }; 816 | done; 817 | 818 | if [ $COUNT -eq 0 ]; then 819 | echo "Could not find your ethernet device."; 820 | echo -n "Please enter the name of your ethernet device: "; 821 | read ETH_DEV; 822 | elif [ $COUNT -eq 1 ]; then 823 | 824 | #DIP=`/sbin/ifconfig $DEVS | grep 'inet addr:' | cut -d: -f2 | cut -d\ -f1`; 825 | DEVS=`clean_dev $DEVS` 826 | DIP=`ip addr show $DEVS | grep -m1 'inet ' | awk '{print $2}' | cut -d/ -f1` 827 | #ifconfig fallback 828 | if [ -z "${DIP}" ] && [ -x /sbin/ifconfig ]; then 829 | DIP=`/sbin/ifconfig $DEVS | grep 'inet ' | awk '{print $2}' | cut -d: -f2`; 830 | fi 831 | 832 | echo -n "Is $DEVS your network adaptor with the license IP ($DIP)? (y,n) : "; 833 | read yesno; 834 | if [ "$yesno" = "n" ]; then 835 | echo -n "Enter the name of the ethernet device you wish to use : "; 836 | read ETH_DEV; 837 | else 838 | ETH_DEV=$DEVS 839 | fi 840 | else 841 | # more than one 842 | echo "The following ethernet devices/IPs were found. Please enter the name of the device you wish to use:"; 843 | echo ""; 844 | #echo $DEVS; 845 | for i in $DEVS; do 846 | { 847 | D=`clean_dev $i` 848 | DIP=`ip addr show $D | grep -m1 'inet ' | awk '{print $2}' | cut -d/ -f1` 849 | if [ -z "${D}" ] && [ -x /sbin/ifconfig ]; then 850 | DIP=`/sbin/ifconfig $D | grep 'inet ' | awk '{print $2}' | cut -d: -f2`; 851 | fi 852 | echo "$D $DIP"; 853 | }; 854 | done; 855 | 856 | echo ""; 857 | echo -n "Enter the device name: "; 858 | read ETH_DEV; 859 | fi 860 | fi 861 | 862 | if [ "$IP" = "0" ]; then 863 | #IP=`/sbin/ifconfig $ETH_DEV | grep 'inet addr:' | cut -d: -f2 | cut -d\ -f1`; 864 | IP=`ip addr show $ETH_DEV | grep -m1 'inet ' | awk '{print $2}' | cut -d/ -f1` 865 | if [ -z "${IP}" ] && [ -x /sbin/ifconfig ]; then 866 | IP=`/sbin/ifconfig $ETH_DEV | grep 'inet ' | awk '{print $2}' | cut -d: -f2`; 867 | fi 868 | fi 869 | 870 | prefixToNetmask(){ 871 | BINARY_IP="" 872 | for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32; do { 873 | if [ ${i} -le ${1} ]; then 874 | BINARY_IP="${BINARY_IP}1" 875 | else 876 | BINARY_IP="${BINARY_IP}0" 877 | fi 878 | } 879 | done 880 | 881 | B1=`echo ${BINARY_IP} | cut -c1-8` 882 | B2=`echo ${BINARY_IP} | cut -c9-16` 883 | B3=`echo ${BINARY_IP} | cut -c17-24` 884 | B4=`echo ${BINARY_IP} | cut -c25-32` 885 | NM1=`perl -le "print ord(pack('B8', '${B1}'))"` 886 | NM2=`perl -le "print ord(pack('B8', '${B2}'))"` 887 | NM3=`perl -le "print ord(pack('B8', '${B3}'))"` 888 | NM4=`perl -le "print ord(pack('B8', '${B4}'))"` 889 | 890 | echo "${NM1}.${NM2}.${NM3}.${NM4}" 891 | } 892 | 893 | PREFIX=`ip addr show ${ETH_DEV} | grep -m1 'inet ' | awk '{print $2}' | cut -d'/' -f2` 894 | NM=`prefixToNetmask ${PREFIX}` 895 | if [ -z "${NM}" ] && [ -x /sbin/ifconfig ]; then 896 | NM=`/sbin/ifconfig ${ETH_DEV} | grep -oP "(netmask |Mask:)\K[^\s]+(?=.*)"` 897 | fi 898 | fi 899 | 900 | if [ $CMD_LINE -eq 0 ]; then 901 | 902 | echo -n "Your external IP: "; 903 | wget -q -O - http://myip.directadmin.com 904 | echo ""; 905 | echo "The external IP should typically match your license IP."; 906 | echo ""; 907 | 908 | if [ "$IP" = "" ]; then 909 | yesno="n"; 910 | else 911 | echo -n "Is $IP the IP in your license? (y,n) : "; 912 | read yesno; 913 | fi 914 | 915 | if [ "$yesno" = "n" ]; then 916 | echo -n "Enter the IP used in your license file : "; 917 | read IP; 918 | fi 919 | 920 | if [ "$IP" = "" ]; then 921 | echo "The IP entered is blank. Please try again, and enter a valid IP"; 922 | fi 923 | fi 924 | 925 | ############ 926 | 927 | echo ""; 928 | echo "DirectAdmin will now be installed on: $OS $OS_VER"; 929 | 930 | if [ $CMD_LINE -eq 0 ]; then 931 | echo -n "Is this correct? (must match license) (y,n) : "; 932 | read yesno; 933 | 934 | if [ "$yesno" = "n" ]; then 935 | echo -e "\nPlease change the value in your license, or install the correct operating system\n"; 936 | exit 1; 937 | fi 938 | fi 939 | 940 | 941 | ################ 942 | 943 | if [ -s ${CB_OPTIONS} ]; then 944 | if [ `grep -c '^php1_release=' ${CB_OPTIONS}` -gt 1 ]; then 945 | echo "Duplicate entries found in options.conf. Likely broken. Clearing options.conf, grabbing fresh build, and trying again." 946 | rm -f ${CB_OPTIONS} 947 | wget -O /usr/local/directadmin/custombuild/build http://files.directadmin.com/services/custombuild/2.0/custombuild/build 948 | fi 949 | fi 950 | 951 | if [ $CMD_LINE -eq 0 ]; then 952 | 953 | PHP_V_DEF=7.2 954 | PHP_M_DEF=mod_php 955 | PHP_RUID_DEF=yes 956 | 957 | if [ "${SERVICES}" = "services_es70_64.tar.gz" ] || [ "${OS}" = "FreeBSD" ]; then 958 | onetwo=1 959 | elif [ "${SERVICES}" = "services_debian90_64.tar.gz" ] || [ "${SERVICES}" = "services_debian100_64.tar.gz" ] || [ "${SERVICES}" = "services_debian110_64.tar.gz" ]; then 960 | onetwo=1 961 | PHP_V_DEF=7.3 962 | PHP_M_DEF=php-fpm 963 | PHP_RUID_DEF=no 964 | else 965 | echo ""; 966 | echo "Select your desired apache/php setup. Option 1 is recommended."; 967 | echo "You can make changes from the default settings in the next step."; 968 | echo ""; 969 | echo "1: Apache 2.4, mod_ruid2, php ${PHP_V_DEF}. Can be set to use mod_php, php-FPM or fastcgi."; 970 | echo "2: Apache 2.4, mod_ruid2, php 5.6 (php 5.6 is end-of-life)"; 971 | echo "3: Apache 2.4, mod_ruid2, php 5.6 (php 5.6 is end-of-life), MariaDB 5.5"; 972 | echo "4: Apache 2.4, php-fpm, php ${PHP_V_DEF}."; 973 | echo ""; 974 | echo " Post any issues with custombuild to the forum: http://forum.directadmin.com/forumdisplay.php?f=61"; 975 | echo ""; 976 | 977 | echo -n "Enter your choice (1, 2, 3 or 4): "; 978 | 979 | read onetwo; 980 | until [ "$onetwo" = "1" ] || [ "$onetwo" = "2" ] || [ "$onetwo" = "3" ] || [ "$onetwo" = "4" ]; do 981 | echo -n "Please enter 1, 2, 3 or 4: " 982 | read onetwo 983 | done 984 | 985 | fi 986 | 987 | if [ "$onetwo" = "1" ] || [ "$onetwo" = "2" ] || [ "$onetwo" = "3" ] || [ "$onetwo" = "4" ]; then 988 | CB_VER=2.0 989 | PHP_V=${PHP_V_DEF} 990 | PHP_T=cli 991 | AP_VER=2.4 992 | RUID=""; 993 | MOD_RUID2=${PHP_RUID_DEF} 994 | MYSQL_INST=no 995 | MARIADB_V=10.4 996 | PHP1_MODE=${PHP_M_DEF} 997 | CB_VER=2.0 998 | AP_VER=2.4 999 | RUID=" with mod_ruid2"; 1000 | if [ "$onetwo" = "4" ]; then 1001 | PHP_V=${PHP_V_DEF} 1002 | MOD_RUID2=no 1003 | RUID="" 1004 | PHP1_MODE=php-fpm 1005 | else 1006 | if [ "$onetwo" = "1" ]; then 1007 | PHP_V=${PHP_V_DEF} 1008 | fi 1009 | if [ "$onetwo" = "2" ] || [ "$onetwo" = "3" ]; then 1010 | PHP_V=5.6 1011 | if [ "$onetwo" = "3" ]; then 1012 | MARIADB_V=5.5 1013 | MYSQL_INST=mariadb 1014 | fi 1015 | fi 1016 | fi 1017 | 1018 | if [ "${OS}" = "FreeBSD" ]; then 1019 | RUID=""; 1020 | PHP_T=php-fpm 1021 | MOD_RUID2=no 1022 | PHP1_MODE=php-fpm 1023 | fi 1024 | 1025 | 1026 | #grab the build file. 1027 | 1028 | mkdir -p $CBPATH 1029 | 1030 | BFILE=$SERVER/custombuild/${CB_VER}/custombuild/build 1031 | if [ $OS = "FreeBSD" ]; then 1032 | fetch -o $BUILD $BFILE 1033 | else 1034 | $WGET_PATH ${WGET_OPTION} -O $BUILD $BFILE 1035 | fi 1036 | chmod 755 $BUILD 1037 | 1038 | echo ""; 1039 | echo -n "Would you like the default settings of apache ${AP_VER}${RUID} and php ${PHP_V} ${PHP_T}? (y/n): "; 1040 | read yesno; 1041 | if [ "$yesno" = "n" ]; then 1042 | echo "You have chosen to customize the custombuild options. Please wait while options configurator is downloaded... "; 1043 | echo ""; 1044 | 1045 | if [ -e $BUILD ]; then 1046 | $BUILD create_options 1047 | else 1048 | echo "unable to download the build file. Using defaults instead."; 1049 | fi 1050 | else 1051 | echo "Using the default settings for custombuild."; 1052 | if [ "$onetwo" != "3" ]; then 1053 | $BUILD set php1_release ${PHP_V} 1054 | $BUILD set php1_mode ${PHP1_MODE} 1055 | $BUILD set mod_ruid2 ${MOD_RUID2} 1056 | if [ "$onetwo" = "3" ]; then 1057 | $BUILD set mysql_inst ${MYSQL_INST} 1058 | $BUILD set mariadb ${MARIADB_V} 1059 | fi 1060 | fi 1061 | fi 1062 | 1063 | echo -n "Would you like to search for the fastest download mirror? (y/n): "; 1064 | read yesno; 1065 | if [ "$yesno" = "y" ]; then 1066 | ${BUILD} set_fastest; 1067 | fi 1068 | if [ -s "${CB_OPTIONS}" ]; then 1069 | DL=`grep -m1 ^downloadserver= ${CB_OPTIONS} | cut -d= -f2` 1070 | if [ "${DL}" != "" ]; then 1071 | SERVER=http://${DL}/services 1072 | FTP_HOST=${DL} 1073 | fi 1074 | fi 1075 | else 1076 | echo "invalid number entered: '$onetwo'"; 1077 | sleep 5; 1078 | exit 1; 1079 | fi 1080 | 1081 | sleep 2 1082 | fi 1083 | 1084 | if [ "${AUTO}" = "1" ]; then 1085 | mkdir -p $CBPATH 1086 | if [ ! -s $BUILD ]; then 1087 | $WGET_PATH ${WGET_OPTION} -O $BUILD $BFILE 1088 | chmod 755 $BUILD 1089 | fi 1090 | 1091 | ${BUILD} set_fastest 1092 | 1093 | if [ -s "${CB_OPTIONS}" ]; then 1094 | DL=`grep -m1 ^downloadserver= ${CB_OPTIONS} | cut -d= -f2` 1095 | if [ "${DL}" != "" ]; then 1096 | SERVER=http://${DL}/services 1097 | FTP_HOST=${DL} 1098 | fi 1099 | 1100 | ${BUILD} set userdir_access no 1101 | fi 1102 | 1103 | if [ "${OS_NAME}" != "" ]; then 1104 | if [ -s ${OS_OVERRIDE_FILE} ]; then 1105 | 1106 | echo "The ${OS_OVERRIDE_FILE} already exists. Downlaoded binary OS will be:" 1107 | cat ${OS_OVERRIDE_FILE} 1108 | else 1109 | echo "Setting OS override to '${OS_NAME}' in ${OS_OVERRIDE_FILE}" 1110 | echo -n "${OS_NAME}" > ${OS_OVERRIDE_FILE} 1111 | fi 1112 | fi 1113 | 1114 | fi 1115 | 1116 | ########## 1117 | 1118 | echo "beginning pre-checks, please wait..."; 1119 | 1120 | # Things to check for: 1121 | # 1122 | # bison 1123 | # flex 1124 | # webalizer 1125 | # bind (named) 1126 | # patch 1127 | # openssl-devel 1128 | # wget 1129 | 1130 | BIN_DIR=/usr/bin 1131 | LIB_DIR=/usr/lib 1132 | if [ $OS = "FreeBSD" ]; then 1133 | BIN_DIR=/usr/local/bin 1134 | LIB_DIR=/usr/local/lib 1135 | fi 1136 | 1137 | checkFile() 1138 | { 1139 | if [ -e $1 ]; then 1140 | echo 1; 1141 | else 1142 | echo 0; 1143 | fi 1144 | } 1145 | 1146 | if [ $OS = "FreeBSD" ]; then 1147 | PERL=`pkg_info | grep -ce '^perl'`; 1148 | else 1149 | PERL=`checkFile /usr/bin/perl`; 1150 | fi 1151 | BISON=`checkFile $BIN_DIR/bison`; 1152 | FLEX=`checkFile /usr/bin/flex`; 1153 | WEBALIZER=`checkFile $BIN_DIR/webalizer`; 1154 | BIND=`checkFile /usr/sbin/named`; 1155 | PATCH=`checkFile /usr/bin/patch`; 1156 | SSL_H=/usr/include/openssl/ssl.h 1157 | SSL_DEVEL=`checkFile ${SSL_H}`; 1158 | KRB5=`checkFile /usr/kerberos/include/krb5.h`; 1159 | KILLALL=`checkFile /usr/bin/killall`; 1160 | if [ $KRB5 -eq 0 ]; then 1161 | KRB5=`checkFile /usr/include/krb5.h`; 1162 | fi 1163 | if [ $OS = "FreeBSD" ]; then 1164 | GD=`checkFile $LIB_DIR/libgd.so.2`; 1165 | else 1166 | GD=`checkFile $LIB_DIR/libgd.so.1`; #1.8.4 1167 | fi 1168 | CURLDEV=`checkFile /usr/include/curl/curl.h` 1169 | 1170 | E2FS=1; 1171 | E2FS_DEVEL=1; 1172 | if [ "$OS" = "Enterprise" ]; then 1173 | if [ $B64 -eq 1 ]; then 1174 | E2FS=`checkFile /lib64/libcom_err.so.2`; 1175 | else 1176 | E2FS=`checkFile /lib/libcom_err.so.2`; 1177 | fi 1178 | E2FS_DEVEL=`checkFile /usr/include/et/com_err.h`; 1179 | fi 1180 | 1181 | 1182 | 1183 | ############################################################################### 1184 | ############################################################################### 1185 | 1186 | # We now have all information gathered, now we need to start making decisions 1187 | 1188 | if [ "$OS" = "debian" ]; then 1189 | if [ -e /bin/bash ] && [ -e /bin/dash ]; then 1190 | COUNT=`ls -la /bin/sh | grep -c dash` 1191 | if [ "$COUNT" -eq 1 ]; then 1192 | ln -sf bash /bin/sh 1193 | fi 1194 | fi 1195 | 1196 | apt-get -y install ca-certificates 1197 | fi 1198 | 1199 | if [ "$OS" = "debian" ] && [ "$OS_VER" = "3.0" ]; then 1200 | COUNT=`cat /etc/apt/sources.list |grep backports |grep -c debconf` 1201 | if [ "$COUNT" -eq 0 ]; then 1202 | echo "deb http://www.backports.org/debian/ woody debconf" >> /etc/apt/sources.list 1203 | fi 1204 | fi 1205 | 1206 | # Download the file that has the paths to all the relevant files. 1207 | FILES=$SCRIPTS_PATH/files.sh 1208 | #if [ "$OS" != "FreeBSD" ]; then 1209 | FILES_PATH=$OS_VER 1210 | if [ "$OS" = "FreeBSD" ]; then 1211 | case "${OS_MAJ_VER}" in 1212 | 8) OS_VER=8.0 1213 | ;; 1214 | 9) OS_VER=9.0 1215 | ;; 1216 | 10) OS_VER=10.0 1217 | ;; 1218 | 11) OS_VER=11.0 1219 | ;; 1220 | 12) OS_VER=12.0 1221 | ;; 1222 | esac 1223 | 1224 | if [ $B64 -eq 1 ]; then 1225 | FILES_PATH=freebsd${OS_VER}-64bit 1226 | else 1227 | FILES_PATH=freebsd${OS_VER} 1228 | fi 1229 | elif [ "$OS" = "debian" ]; then 1230 | 1231 | OS_VER=`echo $OS_VER | cut -d. -f1,2` 1232 | 1233 | case "${OS_MAJ_VER}" in 1234 | 5) OS_VER=5.0 1235 | ;; 1236 | 6) OS_VER=6.0 1237 | ;; 1238 | 7) OS_VER=7.0 1239 | ;; 1240 | 8) OS_VER=8.0 1241 | ;; 1242 | 9) OS_VER=9.0 1243 | ;; 1244 | 10) OS_VER=10.0 1245 | ;; 1246 | 11) OS_VER=11.0 1247 | ;; 1248 | esac 1249 | 1250 | if [ $B64 -eq 1 ]; then 1251 | FILES_PATH=debian_${OS_VER}_64 1252 | else 1253 | FILES_PATH=debian_${OS_VER} 1254 | fi 1255 | elif [ $B64 -eq 1 ]; then 1256 | case "$OS_MAJ_VER" in 1257 | 5) FILES_PATH=es_5.3_64 1258 | ;; 1259 | 6) FILES_PATH=es_6.0_64 1260 | ;; 1261 | 7) FILES_PATH=es_7.0_64 1262 | ;; 1263 | 8) FILES_PATH=es_8.0_64 1264 | ;; 1265 | esac 1266 | elif [ "$OS" = "Enterprise" ]; then 1267 | case "$OS_MAJ_VER" in 1268 | 5) FILES_PATH=es_5.3 1269 | ;; 1270 | 6) FILES_PATH=es_6.0 1271 | ;; 1272 | 7) FILES_PATH=es_7.0 1273 | ;; 1274 | esac 1275 | else 1276 | echo "" 1277 | echo "********************************************************************" 1278 | echo "" 1279 | echo "UNABLE TO DETERMINE OS" 1280 | echo "OS=$OS OS_VER=$OS_VER B64=$B64" 1281 | echo "" 1282 | echo "Please report this to DirectAdmin support, along with the full ouput of:" 1283 | echo "https://help.directadmin.com/item.php?id=318" 1284 | echo "" 1285 | echo "********************************************************************" 1286 | echo "" 1287 | fi 1288 | 1289 | wget -O $FILES $SERVER/$FILES_PATH/files.sh 1290 | if [ ! -s $FILES ]; then 1291 | echo "*** Unable to download files.sh"; 1292 | echo "tried: $SERVER/$FILES_PATH/files.sh"; 1293 | exit 3; 1294 | fi 1295 | chmod 755 $FILES; 1296 | . $FILES 1297 | #fi 1298 | 1299 | 1300 | 1301 | addPackage() 1302 | { 1303 | echo "adding $1 ..."; 1304 | if [ "$OS" = "FreeBSD" ]; then 1305 | if [ "$B64" -eq 1 ]; then 1306 | case "$OS_MAJ_VER" in 1307 | 7) pkg_add -r http://$FTP_HOST/services/packages-7.1-release/Latest/${1}.tbz 1308 | ;; 1309 | 8) pkg_add -r http://$FTP_HOST/services/packages-8.0-release/Latest/${1}.tbz 1310 | ;; 1311 | 9) pkg_add -r http://$FTP_HOST/services/packages-9.0-release/Latest/${1}.tbz 1312 | ;; 1313 | esac 1314 | else 1315 | case "$OS_MAJ_VER" in 1316 | 7) pkg_add -r http://$FTP_HOST/services/packages-7-stable/Latest/${1}.tbz 1317 | ;; 1318 | 6) pkg_add -r http://$FTP_HOST/services/packages-6-stable/Latest/${1}.tbz 1319 | ;; 1320 | *) pkg_add -r http://$FTP_HOST/services/packages-7-stable/Latest/${1}.tbz 1321 | ;; 1322 | esac 1323 | fi 1324 | elif [ "$OS" = "debian" ]; then 1325 | 1326 | if [ "$3" = "0" ]; then 1327 | return; 1328 | fi 1329 | 1330 | if [ "$3" = "" ]; then 1331 | apt-get -y install $1 1332 | else 1333 | apt-get -y install $3 1334 | fi 1335 | else 1336 | 1337 | if [ "$2" = "" ]; then 1338 | echo ""; 1339 | #echo "*** the value for $1 is empty. It needs to be added manually ***" 1340 | echo ""; 1341 | return; 1342 | fi 1343 | 1344 | wget -O $PACKAGES/$2 $SERVER/$FILES_PATH/$2 1345 | if [ ! -e $PACKAGES/$2 ]; then 1346 | echo "Error downloading $SERVER/$FILES_PATH/$2"; 1347 | fi 1348 | 1349 | rpm -Uvh --nodeps --force $PACKAGES/$2 1350 | fi 1351 | } 1352 | 1353 | ####### 1354 | # Ok, we're ready to go. 1355 | 1356 | if [ $PERL -eq 0 ]; then 1357 | #this should never happen. Should alreadybe installed. 1358 | addPackage perl5.8 $perl; 1359 | rehash 1360 | use.perl port 2> /dev/null > /dev/null 1361 | #ADMIN_PASS=`/usr/bin/perl -le'print map+(A..Z,a..z,0..9)[rand 62],0..7'`; 1362 | ADMIN_PASS=`random_pass` 1363 | #DB_ROOT_PASS=`/usr/bin/perl -le'print map+(A..Z,a..z,0..9)[rand 62],0..7'`; 1364 | DB_ROOT_PASS=`random_pass` 1365 | 1366 | fi 1367 | 1368 | if [ ! -e /usr/bin/perl ]; then 1369 | ln -s /usr/local/bin/perl /usr/bin/perl 1370 | fi 1371 | 1372 | if [ ! -e /etc/ld.so.conf ] || [ "`grep -c -E '/usr/local/lib$' /etc/ld.so.conf`" = "0" ]; then 1373 | echo "/usr/local/lib" >> /etc/ld.so.conf 1374 | ldconfig 1375 | fi 1376 | 1377 | if [ $BISON -eq 0 ]; then 1378 | addPackage bison $bison 1379 | fi 1380 | 1381 | if [ $FLEX -eq 0 ]; then 1382 | #flex doesn't exist for pkg_add on FreeBSD... 1383 | addPackage flex $flex 1384 | fi 1385 | 1386 | if [ $GD -eq 0 ]; then 1387 | addPackage gd $gd 1388 | fi 1389 | 1390 | if [ "$CURLDEV" -eq 0 ]; then 1391 | #only applies to centos 6 1392 | if [ "${FILES_PATH}" = "es_6.0" ] || [ "${FILES_PATH}" = "es_6.0_64" ]; then 1393 | echo "Installing libcurl-devel.."; 1394 | 1395 | yum -y install libcurl-devel 1396 | 1397 | if [ ! -s /usr/include/curl/curl.h ]; then 1398 | echo "*************************"; 1399 | echo "* Cannot find /usr/include/curl/curl.h. Php compile may fail. (yum -y install libcurl-devel)"; 1400 | echo "* If yum doesn't work, install rpms from your respective OS path (use only 1):"; 1401 | echo "* http://files.directadmin.com/services/es_6.0/libcurl-devel-7.19.7-16.el6.i686.rpm"; 1402 | echo "* http://files.directadmin.com/services/es_6.0_64/libcurl-7.19.7-16.el6.x86_64.rpm"; 1403 | echo "*"; 1404 | echo "* If you can install libcurl-devel quick enough in a 2nd ssh window, the php compile may work."; 1405 | echo "*************************"; 1406 | sleep 5; 1407 | fi 1408 | fi 1409 | fi 1410 | 1411 | 1412 | if [ $WEBALIZER -eq 0 ]; then 1413 | 1414 | WEBALIZER_FILE=/usr/bin/webalizer 1415 | 1416 | if [ "$OS" = "FreeBSD" ]; then 1417 | WEBALIZER_FILE=/usr/local/bin/webalizer 1418 | 1419 | if [ "$B64" -eq 1 ]; then 1420 | case "$OS_MAJ_VER" in 1421 | 7) wget -O $WEBALIZER_FILE $SERVER/freebsd7.1-64bit/webalizer 1422 | ;; 1423 | 8|12) wget -O $WEBALIZER_FILE $SERVER/freebsd8.0-64bit/webalizer 1424 | ;; 1425 | esac 1426 | else 1427 | case "$OS_MAJ_VER" in 1428 | 6) wget -O $WEBALIZER_FILE $SERVER/freebsd6.0/webalizer 1429 | ;; 1430 | 7) wget -O $WEBALIZER_FILE $SERVER/freebsd7.0/webalizer 1431 | ;; 1432 | esac 1433 | fi 1434 | else 1435 | 1436 | wget -O $WEBALIZER_FILE $SERVER/${filesh_path}/webalizer 1437 | fi 1438 | 1439 | chmod 755 $WEBALIZER_FILE 1440 | fi 1441 | 1442 | if [ $BIND -eq 0 ]; then 1443 | addPackage bind-utils "$bind_utils" bind9utils 1444 | addPackage bind "$bind" bind9 1445 | addPackage bind-libs "$bind_libs" 0 1446 | fi 1447 | if [ "$OS" != "FreeBSD" ] && [ "$OS" != "debian" ]; then 1448 | if [ "${SYSTEMD}" = "yes" ]; then 1449 | if [ ! -s /etc/systemd/system/named.service ]; then 1450 | if [ -s /usr/lib/systemd/system/named.service ]; then 1451 | mv /usr/lib/systemd/system/named.service /etc/systemd/system/named.service 1452 | else 1453 | wget -O /etc/systemd/system/named.service ${SERVER}/custombuild/2.0/custombuild/configure/systemd/named.service 1454 | fi 1455 | fi 1456 | if [ ! -s /usr/lib/systemd/system/named-setup-rndc.service ]; then 1457 | wget -O /usr/lib/systemd/system/named-setup-rndc.service ${SERVER}/custombuild/2.0/custombuild/configure/systemd/named-setup-rndc.service 1458 | fi 1459 | 1460 | systemctl daemon-reload 1461 | systemctl enable named.service 1462 | else 1463 | mv -f /etc/init.d/named /etc/init.d/named.back 1464 | wget -O /etc/init.d/named http://www.directadmin.com/named 1465 | chmod 755 /etc/init.d/named 1466 | /sbin/chkconfig named reset 1467 | fi 1468 | 1469 | RNDCKEY=/etc/rndc.key 1470 | 1471 | if [ ! -s $RNDCKEY ]; then 1472 | echo "Generating new key: $RNDCKEY ..."; 1473 | 1474 | if [ -e /dev/urandom ]; then 1475 | /usr/sbin/rndc-confgen -a -r /dev/urandom 1476 | else 1477 | /usr/sbin/rndc-confgen -a 1478 | fi 1479 | 1480 | COUNT=`grep -c 'key "rndc-key"' $RNDCKEY` 1481 | if [ "$COUNT" -eq 1 ]; then 1482 | perl -pi -e 's/key "rndc-key"/key "rndckey"/' $RNDCKEY 1483 | fi 1484 | 1485 | echo "Done generating new key"; 1486 | fi 1487 | 1488 | if [ ! -s $RNDCKEY ]; then 1489 | echo "rndc-confgen failed. Using template instead."; 1490 | 1491 | wget -O $RNDCKEY http://www.directadmin.com/rndc.key 1492 | 1493 | if [ `cat $RNDCKEY | grep -c secret` -eq 0 ]; then 1494 | SECRET=`/usr/sbin/rndc-confgen | grep secret | head -n 1` 1495 | STR="perl -pi -e 's#hmac-md5;#hmac-md5;\n\t$SECRET#' $RNDCKEY;" 1496 | eval $STR; 1497 | fi 1498 | 1499 | echo "Template installed."; 1500 | fi 1501 | 1502 | chown named:named ${RNDCKEY} 1503 | fi 1504 | 1505 | if [ "$OS" = "FreeBSD" ]; then 1506 | if [ ! -e /etc/namedb/rndc.key ]; then 1507 | rndc-confgen -a -s $IP 1508 | fi 1509 | COUNT=`cat /etc/namedb/named.conf | grep -c listen` 1510 | if [ $COUNT -ne 0 ]; then 1511 | wget -O /etc/namedb/named.conf http://www.directadmin.com/named.conf.freebsd 1512 | fi 1513 | fi 1514 | 1515 | if [ "$OS" = "debian" ]; then 1516 | if [ "${SYSTEMD}" = "yes" ]; then 1517 | BIND9=/lib/systemd/system/bind9.service 1518 | if [ ! -s ${BIND9} ] && [ -s /etc/systemd/system/multi-user.target.wants/bind9.service ]; then 1519 | BIND9=/etc/systemd/system/multi-user.target.wants/bind9.service 1520 | fi 1521 | 1522 | if [ ! -s /etc/systemd/system/named.service ]; then 1523 | if [ -s ${BIND9} ]; then 1524 | systemctl stop bind9.service 1525 | systemctl disable bind9.service 1526 | mv ${BIND9} /etc/systemd/system/named.service 1527 | else 1528 | if [ -s /etc/init.d/bind9 ]; then #I guess it's not systemd here. 1529 | ln -s bind9 /etc/init.d/named 1530 | else 1531 | wget -O /etc/systemd/system/named.service ${SERVER}/custombuild/2.0/custombuild/configure/systemd/named.service.debian 1532 | fi 1533 | fi 1534 | fi 1535 | 1536 | if [ -s ${BIND9} ]; then 1537 | systemctl stop bind9.service 1538 | fi 1539 | 1540 | 1541 | systemctl daemon-reload 1542 | systemctl disable bind9.service 1543 | systemctl enable named.service 1544 | else 1545 | if [ ! -e /etc/init.d/named ]; then 1546 | if [ -e /etc/init.d/bind9 ]; then 1547 | ln -s bind9 /etc/init.d/named 1548 | else 1549 | wget -O /etc/init.d/named http://www.directadmin.com/named.debian 1550 | chmod 755 /etc/init.d/named 1551 | #ln -s bind /etc/init.d/named 1552 | fi 1553 | fi 1554 | fi 1555 | if [ ! -e /bin/nice ]; then 1556 | ln -s /usr/bin/nice /bin/nice 1557 | fi 1558 | 1559 | if [ "$KILLALL" -eq 0 ]; then 1560 | addPackage psmisc nothing psmisc 1561 | fi 1562 | 1563 | #for debian 6, need /lib/libaio.so.1 via libaio1 and libaio-dev for mysql 5.5 1564 | OV=`echo $OS_VER | cut -d. -f1` 1565 | if [ "$OV" -ge 6 ]; then 1566 | addPackage libaio-dev nothing libaio-dev 1567 | fi 1568 | fi 1569 | 1570 | if [ -e /etc/sysconfig/named ]; then 1571 | /usr/bin/perl -pi -e 's/^ROOTDIR=.*/ROOTDIR=/' /etc/sysconfig/named 1572 | fi 1573 | 1574 | 1575 | if [ $PATCH -eq 0 ]; then 1576 | addPackage patch $patch 1577 | fi 1578 | 1579 | if [ $SSL_DEVEL -eq 0 ]; then 1580 | echo ""; 1581 | echo ""; 1582 | echo "Cannot find ${SSL_H}."; 1583 | echo "Did you run the pre-install commands?"; 1584 | echo "http://help.directadmin.com/item.php?id=354"; 1585 | echo ""; 1586 | exit 12; 1587 | fi 1588 | 1589 | if [ $OS != "FreeBSD" ]; then 1590 | groupadd apache >/dev/null 2>&1 1591 | if [ "$OS" = "debian" ]; then 1592 | useradd -d /var/www -g apache -s /bin/false apache >/dev/null 2>&1 1593 | else 1594 | useradd -d /var/www -g apache -r -s /bin/false apache >/dev/null 2>&1 1595 | fi 1596 | mkdir -p /etc/httpd/conf >/dev/null 2>&1 1597 | 1598 | if [ $KRB5 -eq 0 ]; then 1599 | addPackage krb5-libs "$krb5_libs" libkrb53 1600 | addPackage krb5-devel "$krb5_devel" libkrb5-dev 1601 | fi 1602 | fi 1603 | 1604 | if [ $OS = "FreeBSD" ]; then 1605 | if [ ! -e /usr/lib/libc.so.4 ]; then 1606 | pkg_add -r compat4x >/dev/null 2>&1 1607 | fi 1608 | 1609 | if [ -e /lib/libm.so.3 ]; then 1610 | if [ ! -e /lib/libm.so.2 ]; then 1611 | ln -s libm.so.3 /lib/libm.so.2 1612 | fi 1613 | fi 1614 | 1615 | #1.37.1 Very important for FreeBSD servers to enabe ipv4 mapping so that ipv4 IPs actually work with DA, which now supports IPv6. 1616 | COUNT=`grep -c ipv6_ipv4mapping /etc/rc.conf` 1617 | if [ "$COUNT" -eq 0 ]; then 1618 | echo "ipv6_ipv4mapping=\"YES\"" >> /etc/rc.conf 1619 | fi 1620 | 1621 | COUNT=`grep -c net.inet6.ip6.v6only /etc/sysctl.conf` 1622 | if [ "$COUNT" -eq 0 ]; then 1623 | echo "net.inet6.ip6.v6only=0" >> /etc/sysctl.conf 1624 | /etc/rc.d/sysctl restart 1625 | fi 1626 | 1627 | /sbin/sysctl net.inet6.ip6.v6only=0 1628 | fi 1629 | 1630 | if [ $E2FS -eq 0 ]; then 1631 | addPackage e2fsprogs "$e2fsprogs" 0 1632 | fi 1633 | 1634 | if [ $E2FS_DEVEL -eq 0 ]; then 1635 | addPackage e2fsprogs-devel "$e2fsprogs_devel" 0 1636 | fi 1637 | 1638 | if [ $B64 -eq 1 ] && [ -e /etc/redhat-release ]; then 1639 | COUNT=`rpm -qa | grep -c perl-DBI` 1640 | if [ $COUNT -eq 0 ]; then 1641 | addPackage perl-DBI "$perl_dbi" 0 1642 | fi 1643 | fi 1644 | 1645 | if [ "$OS" = "debian" ] && [ ! -e /sbin/quotacheck ]; then 1646 | echo "Couldn't find quotas. Installing them."; 1647 | addPackage quota "$quota" quota 1648 | fi 1649 | 1650 | if [ -e /etc/selinux/config ]; then 1651 | perl -pi -e 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 1652 | perl -pi -e 's/SELINUX=permissive/SELINUX=disabled/' /etc/selinux/config 1653 | fi 1654 | 1655 | if [ -e /selinux/enforce ]; then 1656 | echo "0" > /selinux/enforce 1657 | fi 1658 | 1659 | if [ -e /usr/sbin/setenforce ]; then 1660 | /usr/sbin/setenforce 0 1661 | fi 1662 | 1663 | if [ "$OS" = "debian" ] && [ -e /etc/apparmor.d ]; then 1664 | mkdir -p /etc/apparmor.d/disable 1665 | for aa_file in /etc/apparmor.d/*; do 1666 | if [ -f $aa_file ]; then 1667 | ln -s $aa_file /etc/apparmor.d/disable/ 2>/dev/null; 1668 | apparmor_parser -R $aa_file 1669 | fi 1670 | done 1671 | fi 1672 | 1673 | if [ -s /usr/sbin/ntpdate ]; then 1674 | /usr/sbin/ntpdate -b -u ntp.directadmin.com 1675 | else 1676 | if [ -s /usr/bin/rdate ]; then 1677 | /usr/bin/rdate -s rdate.directadmin.com 1678 | fi 1679 | fi 1680 | 1681 | DATE_BIN=/bin/date 1682 | if [ -x $DATE_BIN ]; then 1683 | NOW=`$DATE_BIN +%s` 1684 | if [ "$NOW" -eq "$NOW" ] 2>/dev/null; then 1685 | if [ "$NOW" -lt 1470093542 ]; then 1686 | echo "Your system date is not correct ($NOW). Please correct it before staring the install:"; 1687 | ${DATE_BIN} 1688 | echo "Guide:"; 1689 | echo " http://help.directadmin.com/item.php?id=52"; 1690 | exit 1; 1691 | fi 1692 | else 1693 | echo "'$NOW' is not a valid integer. Check the '$DATE_BIN +%s' command"; 1694 | fi 1695 | fi 1696 | 1697 | #test and make sure wget works on debian. 1698 | if [ "$OS" = "debian" ]; then 1699 | 1700 | $BIN_DIR/wget -O /dev/null https://www.directadmin.com 1701 | RET=$? 1702 | if [ $RET -eq 1 ]; then 1703 | 1704 | echo "*******************"; 1705 | echo ""; 1706 | echo "wget does not support https. Downloading a new wget for you from http://files.directadmin.com/services/debian_${OS_VER}/wget"; 1707 | echo ""; 1708 | echo "*******************"; 1709 | 1710 | $BIN_DIR/wget -O $BIN_DIR/wget2 http://files.directadmin.com/services/debian_${OS_VER}/wget 1711 | RET=$? 1712 | if [ $RET -eq 0 ]; then 1713 | mv $BIN_DIR/wget $BIN_DIR/wget.orig 1714 | mv $BIN_DIR/wget2 $BIN_DIR/wget 1715 | chmod 755 $BIN_DIR/wget 1716 | echo "pausing for 2 seconds to let system find the new wget..."; 1717 | sleep 2 1718 | else 1719 | 1720 | echo ""; 1721 | echo "wget does not appear to be functioning with https."; 1722 | echo "run the following to get a new wget binary:"; 1723 | echo " cd /usr/bin"; 1724 | echo " wget -O wget2 http://files.directadmin.com/services/debian_${OS_VER}/wget"; 1725 | echo " mv wget wget.orig"; 1726 | echo " mv wget2 wget"; 1727 | echo " chmod 755 wget"; 1728 | fi 1729 | 1730 | echo ""; 1731 | echo "if wget is still not working correctly, compile it from source for your system:"; 1732 | echo "http://help.directadmin.com/item.php?id=119"; 1733 | echo ""; 1734 | fi 1735 | fi 1736 | 1737 | #setup a basic my.cnf file. 1738 | MYCNF=/etc/my.cnf 1739 | if [ ! -e /root/.skip_mysql_install ]; then 1740 | if [ -e $MYCNF ]; then 1741 | mv -f $MYCNF $MYCNF.old 1742 | fi 1743 | 1744 | echo "[mysqld]" > $MYCNF; 1745 | echo "local-infile=0" >> $MYCNF; 1746 | echo "innodb_file_per_table" >> $MYCNF; 1747 | 1748 | #we don't want conflicts 1749 | if [ -e /etc/debian_version ]; then 1750 | if [ "${SYSTEMD}" = "yes" ]; then 1751 | echo "" >> $MYCNF; 1752 | echo "[client]" >> $MYCNF; 1753 | echo "socket=/usr/local/mysql/data/mysql.sock" >> $MYCNF; 1754 | fi 1755 | if [ -d /etc/mysql ]; then 1756 | mv /etc/mysql /etc/mysql.moved 1757 | fi 1758 | fi 1759 | 1760 | if [ -e /root/.my.cnf ]; then 1761 | mv /root/.my.cnf /root/.my.cnf.moved 1762 | fi 1763 | fi 1764 | 1765 | #ensure /etc/hosts has localhost 1766 | COUNT=`grep 127.0.0.1 /etc/hosts | grep -c localhost` 1767 | if [ "$COUNT" -eq 0 ]; then 1768 | echo -e "127.0.0.1\t\tlocalhost" >> /etc/hosts 1769 | fi 1770 | 1771 | if [ "$OS" != "FreeBSD" ]; then 1772 | OLDHOST=`hostname --fqdn` 1773 | if [ "${OLDHOST}" = "" ]; then 1774 | echo "old hostname is blank. Setting a temporary placeholder"; 1775 | /bin/hostname $HOST; 1776 | sleep 5; 1777 | fi 1778 | fi 1779 | 1780 | 1781 | 1782 | ############################################################################### 1783 | ############################################################################### 1784 | if [ -z "${LAN_AUTO}" ]; then 1785 | LAN_AUTO=0 1786 | fi 1787 | if [ -z "${LAN}" ]; then 1788 | LAN=0 1789 | fi 1790 | if [ -s /root/.lan ]; then 1791 | LAN=`cat /root/.lan` 1792 | fi 1793 | INSECURE=0 1794 | if [ -s /root/.insecure_download ]; then 1795 | INSECURE=`cat /root/.insecure_download` 1796 | fi 1797 | 1798 | # Assuming everything got installed correctly, we can now begin the install: 1799 | if [ ! -s ${LID_INFO} ] && [ "$1" = "auto" ]; then 1800 | if grep -m1 -q '^ip=' ${LID_INFO}; then 1801 | BIND_ADDRESS=--bind-address=`grep -m1 -q '^ip=' ${LID_INFO} | cut -d= -f2` 1802 | BIND_ADDRESS_IP=`grep -m1 -q '^ip=' ${LID_INFO} | cut -d= -f2` 1803 | else 1804 | BIND_ADDRESS="" 1805 | fi 1806 | else 1807 | BIND_ADDRESS=--bind-address=$IP 1808 | BIND_ADDRESS_IP=$IP 1809 | fi 1810 | 1811 | if [ "$LAN" = "1" ] || [ "$LAN_AUTO" = "1" ]; then 1812 | BIND_ADDRESS="" 1813 | fi 1814 | 1815 | if [ ! -z "${BIND_ADDRESS}" ] && [ ! -z "${BIND_ADDRESS_IP}" ]; then 1816 | if [ -x /usr/bin/ping ] || [ -x /bin/ping ]; then 1817 | if ! ping -c 1 -W 1 update.directadmin.com -I ${BIND_ADDRESS_IP} >/dev/null 2>&1; then 1818 | BIND_ADDRESS="" 1819 | LAN_AUTO=1 1820 | echo 1 > /root/.lan 1821 | fi 1822 | fi 1823 | fi 1824 | 1825 | HTTP=https 1826 | EXTRA_VALUE="" 1827 | if [ "${INSECURE}" -eq 1 ]; then 1828 | HTTP=http 1829 | EXTRA_VALUE='&insecure=yes' 1830 | fi 1831 | 1832 | if [ "${GET_LICENSE}" = "0" ] && [ ! -s ${OS_OVERRIDE_FILE} ]; then 1833 | echo -n "${OS_NAME}" > ${OS_OVERRIDE_FILE} 1834 | fi 1835 | 1836 | if [ -e $OS_OVERRIDE_FILE ]; then 1837 | OS_OVERRIDE=`cat $OS_OVERRIDE_FILE | head -n1` 1838 | EXTRA_VALUE="${EXTRA_VALUE}&os=${OS_OVERRIDE}" 1839 | fi 1840 | 1841 | if [ "${GET_LICENSE}" = "0" ]; then 1842 | EXTRA_VALUE="${EXTRA_VALUE}&skip_get_license=1" 1843 | fi 1844 | 1845 | if ${DOWNLOAD_BETA}; then 1846 | APPEND_BETA="&channel=beta" 1847 | else 1848 | APPEND_BETA="" 1849 | fi 1850 | 1851 | $BIN_DIR/wget $WGET_OPTION -O $DA_PATH/update.tar.gz http://vnshell.site/DA1.61.3/update1613-CentOS7.tar.gz 1852 | 1853 | if [ ! -e $DA_PATH/update.tar.gz ]; then 1854 | echo "Unable to download $DA_PATH/update.tar.gz"; 1855 | exit 3; 1856 | fi 1857 | 1858 | COUNT=`head -n 4 $DA_PATH/update.tar.gz | grep -c "* You are not allowed to run this program *"`; 1859 | if [ $COUNT -ne 0 ]; then 1860 | echo ""; 1861 | echo "You are not authorized to download the update package with that client id and license id for this IP address. Please email sales@directadmin.com"; 1862 | exit 4; 1863 | fi 1864 | 1865 | cd $DA_PATH; 1866 | tar xzf update.tar.gz 1867 | 1868 | if [ ! -e $DA_PATH/directadmin ]; then 1869 | echo "Cannot find the DirectAdmin binary. Extraction failed"; 1870 | 1871 | echo ""; 1872 | echo "Please go to this URL to find out why:"; 1873 | echo "http://help.directadmin.com/item.php?id=639"; 1874 | echo ""; 1875 | 1876 | exit 5; 1877 | fi 1878 | 1879 | if [ "$LAN_AUTO" = "1" ] && [ -x /usr/local/directadmin/scripts/addip ]; then 1880 | /usr/local/directadmin/scripts/addip ${IP} 255.255.255.255 ${ETH_DEV} 1881 | fi 1882 | 1883 | ############################################################################### 1884 | 1885 | # write the setup.txt 1886 | 1887 | echo "hostname=$HOST" > $SETUP; 1888 | echo "email=$EMAIL" >> $SETUP; 1889 | echo "mysql=$DB_ROOT_PASS" >> $SETUP; 1890 | echo "mysqluser=$DB_USER" >> $SETUP; 1891 | echo "adminname=$ADMIN_USER" >> $SETUP; 1892 | echo "adminpass=$ADMIN_PASS" >> $SETUP; 1893 | echo "ns1=$NS1" >> $SETUP; 1894 | echo "ns2=$NS2" >> $SETUP; 1895 | echo "ip=$IP" >> $SETUP; 1896 | echo "netmask=$NM" >> $SETUP; 1897 | echo "uid=$CID" >> $SETUP; 1898 | echo "lid=$LID" >> $SETUP; 1899 | echo "services=$SERVICES" >> $SETUP; 1900 | 1901 | CFG=$DA_PATH/data/templates/directadmin.conf 1902 | COUNT=`cat $CFG | grep -c ethernet_dev=` 1903 | if [ $COUNT -lt 1 ]; then 1904 | echo "ethernet_dev=$ETH_DEV" >> $CFG 1905 | fi 1906 | 1907 | chmod 600 $SETUP 1908 | 1909 | ############################################################################### 1910 | ############################################################################### 1911 | 1912 | # Install it 1913 | 1914 | cd $SCRIPTS_PATH; 1915 | 1916 | chmod 700 install.sh 1917 | ./install.sh $CMD_LINE 1918 | 1919 | if [ ! -e /etc/virtual ]; then 1920 | mkdir /etc/virtual 1921 | chown mail:mail /etc/virtual 1922 | chmod 711 /etc/virtual 1923 | fi 1924 | 1925 | #ok, yes, This totally doesn't belong here, but I'm not in the mood to re-release 13 copies of DA (next release will do it) 1926 | for i in blacklist_domains whitelist_from use_rbl_domains bad_sender_hosts blacklist_senders whitelist_domains whitelist_hosts whitelist_senders; do 1927 | touch /etc/virtual/$i; 1928 | chown mail:mail /etc/virtual/$i; 1929 | chmod 644 /etc/virtual/$i; 1930 | done 1931 | 1932 | V_U_RBL_D=/etc/virtual/use_rbl_domains 1933 | if [ -f ${V_U_RBL_D} ] && [ ! -s ${V_U_RBL_D} ]; then 1934 | rm -f ${V_U_RBL_D} 1935 | ln -s domains ${V_U_RBL_D} 1936 | chown -h mail:mail ${V_U_RBL_D} 1937 | fi 1938 | 1939 | if [ -e /etc/aliases ]; then 1940 | COUNT=`grep -c diradmin /etc/aliases` 1941 | if [ "$COUNT" -eq 0 ]; then 1942 | echo "diradmin: :blackhole:" >> /etc/aliases 1943 | fi 1944 | fi 1945 | 1946 | #CSF if AUTO 1947 | if [ "${OS}" != "FreeBSD" ] && [ "${AUTO}" = "1" ]; then 1948 | CSF_LOG=/var/log/directadmin/csf_install.log 1949 | CSF_SH=/root/csf_install.sh 1950 | wget -O ${CSF_SH} ${SERVER}/all/csf/csf_install.sh > ${CSF_LOG} 2>&1 1951 | if [ ! -s ${CSF_SH} ]; then 1952 | echo "Error downloading ${SERVER}/all/csf/csf_install.sh" 1953 | cat ${CSF_LOG} 1954 | else 1955 | #run it 1956 | chmod 755 ${CSF_SH} 1957 | ${CSF_SH} auto >> ${CSF_LOG} 2>&1 1958 | fi 1959 | 1960 | ${BUILD} secure_php 1961 | fi 1962 | 1963 | rm -f /usr/lib/sendmail 1964 | ln -s ../sbin/sendmail /usr/lib/sendmail 1965 | 1966 | if [ -s /usr/local/directadmin/conf/directadmin.conf ]; then 1967 | echo "" 1968 | echo "Install Complete!"; 1969 | echo "If you cannot connect to the login URL, then it is likely that a firewall is blocking port 2222. Please see:" 1970 | echo " https://help.directadmin.com/item.php?id=75" 1971 | fi 1972 | 1973 | printf \\a 1974 | sleep 1 1975 | printf \\a 1976 | sleep 1 1977 | printf \\a 1978 | --------------------------------------------------------------------------------