Author Topic: install-urtded.sh  (Read 4306 times)

slackin

  • PUGBOT CREATOR
  • Head Admins
  • PUGBOT User
  • ****
  • Posts: 549
    • MSN Messenger - slackin@live.com
    • AOL Instant Messenger - slackin35
    • Yahoo Instant Messenger - slackin35
    • View Profile
    • PUGBOT Homepage
    • Email
install-urtded.sh
« on: July 17, 2011, 08:32:07 pm »
So I made a little urban terror server install script for larger servers that might like to be able to create a new server very easily, and save space in the process. You need the .sh file and filelist, filelist is included in http://pugbot.com/slack-stuff/install-urtded-0.1.tar.gz

http://pastebin.com/geY66jQ2



Code: [Select]
#!/bin/bash
#----------------------------------------------------------------------------|
#    This program is free software: you can redistribute it and/or modify    |
#    it under the terms of the GNU 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 General Public License for more details.                            |
#                                                                            |
#    You should have received a copy of the GNU General Public License       |
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.   |
#----------------------------------------------------------------------------|

#----------------------------------------------------------------------------|
# slackin's UrT dedicated server install script!       Version: 0.1          |
# Justin Clark -- slackin35@yahoo.com                                        |
# slackin35 on AIM                                                           |
#                                                                            |
# See the bottom of the script for more information.                         |
#----------------------------------------------------------------------------|

### PLEASE EDIT! #############################################################
# source_dir should be the directory where the folder UrbanTerror            #
# is located. ie, if UrbanTerror is /usr/local/games/UrbanTerror             #
# then you would put: source_dir="/usr/local/games/"                         #
#                                                                            #

source_dir="/home/real_template/"

#                                                                            #
# That concludes the inscript config!                                        #
#                                                                            #
### END EDIT! ################################################################



# Read the username from stdin
function get_user {

# Ask user what user account to install to, and read reply into varible user
color_echo "yellow" "Please enter username:"
read user
}

# Read the port from stdin
function get_port {

# Ask user what port to use for this server, and read reply into varible port
color_echo "yellow" "Please enter port:"
read port
}

# Color echo function, for using echo with colors in bash, syntax: color_echo "color_name" "message to send"
function color_echo {

# Case statement to set ascii color code from named color
case "$1" in
"blue" )
color="\e[32m"
;;
"red" )
color="\e[31m"
;;
"yellow" )
color="\e[33m"
;;
"green" )
color="\e[34m"
;;
esac

# Do the actual echo, note the -e to use the escape codes
# and notice the color reset at the end, always use that.
echo -e "${color}${2}\e[0m"
}

# Install all the maps listed in the maplist file without prompting.
function map_install_all {
color_echo "green" "Installing all maps"

# Link each map listed in map filelist
for filename in $map_filelist
do
if ln -s ${source_dir}${filename} ${user_dir}/UrbanTerror/q3ut4 ; then
color_echo "green" "File linked: ${user_dir}/${filename}" ; else

# if link fails, produce error and exit program
color_echo "red" "File link FAILED: ${user_dir}/${filename}"
exit
fi
done
}

# Install all the maps listen in maplist file and prompt for each map.
function map_install_yes {
color_echo "green" "Selecting maps one by one"

# Link each map listed, prompting first.
for filename in $map_filelist
do

# Ask user if he want to copy this map, then read his reply.
color_echo "green" "Link map: ${filename}  (y)es / (n)o"
read yeno

# if replied "y" then link the map.
if [ $yeno == "y" ] ; then
if ln -s ${source_dir}${filename} ${user_dir}/UrbanTerror/q3ut4 ; then
color_echo "green" "File linked: ${user_dir}/${filename}" ; else

# if link fails, produce error and exit program
color_echo "red" "File link FAILED: ${user_dir}/${filename}"
exit
fi
fi
done
}

# Start of install script
function run_install {
color_echo "green" "slackin's Urban Terror server install script!"

# Load the used ports list, to make sure we don't use the same port twice!
. used_ports

# Check to see if the username was given at run time.
if [ -z $user ] ; then
get_user
fi

# Run loop until a valid username is given.
while [ -z $user_valid ]
do
color_echo "green" "Checking user directory."

# Check to see if the user name given has a home directory.
if [ -e "/home/${user}" ] ; then

# if user directory exists, set variable so while loop stops.
color_echo "blue" "User directory valid!"
user_valid="TRUE"
user_dir="/home/${user}" ; else

# if invalid, return error.
color_echo "red" "User directory invalid!"

# Run user prompt
get_user
fi
done

# Run loop until a valid port is given
while [ -z $port_valid ]
do
color_echo "green" "Checking port."

# Check to make sure port is within sane range, 1024 < port < 65535
# if port is not within that range, return port invalid and return to port prompt
if [[ $port -gt "1024" && $port -lt 65535 ]] ; then

# Case, if $port is in $port_list return taken and return to port prompt
# if not found, default, Tell them port is good.
case $port_list in
*"${port}"* )
color_echo "red" "Port taken! Try another."

# Run port prompt
get_port
;;
* )
port_valid="TRUE"
color_echo "blue" "Port valid!"
;;
esac ; else
color_echo "red" "Port invalid!"

# Run port prompt
get_port
fi
done

# Update used port list with new port
port_list="${port_list} ${port}"

# Write new used port list to file
echo "port_list=\"$port_list"\" 1> used_ports

# Create directory UrbanTerror in user's home folder
if mkdir ${user_dir}/UrbanTerror ; then
color_echo "blue" "Directory created: ${user_dir}/UrbanTerror" ; else

# if failed to create, exit program
color_echo "red" "Directory failed to create: ${user_dir}/UrbanTerror"
exit
fi

# Create q3ut4 directory in UrbanTerror
if mkdir ${user_dir}/UrbanTerror/q3ut4 ; then
color_echo "blue" "Directory created: ${user_dir}/UrbanTerror/q3ut4" ; else

# if failed to create, exit program
color_echo "red" "Directory failed to create: ${user_dir}/UrbanTerror/q3ut4"
exit
fi

# Load the list of files to be linked and copied
. filelist

# Create link for each file in /UrbanTerror/
for filename in $urt_filelist
do
if ln -s ${source_dir}${filename} ${user_dir}/UrbanTerror/ ; then
color_echo "blue" "File linked: ${user_dir}/${filename}" ; else

# if link fails, produce error and exit program
color_echo "red" "File link FAILED: ${user_dir}/${filename}"
exit
fi
done

# Create link for each file in /UrbanTerror/q3ut4 except configs and maplist
for filename in $q3ut4_filelist
do
if ln -s ${source_dir}${filename} ${user_dir}/UrbanTerror/q3ut4/ ; then
color_echo "blue" "File linked: ${user_dir}/${filename}" ; else

# if link fails, produce error and exit program
color_echo "red" "File link FAILED: ${user_dir}/${filename}"
exit
fi
done

# Copy baseline server configs and mapcycle.txt to server
for filename in $cp_filelist
do
if cp ${source_dir}${filename} ${user_dir}/UrbanTerror/q3ut4/ ; then
color_echo "blue" "File copied: ${user_dir}/${filename}" ; else

# if copy fails, produce error and exit.
color_echo "red" "File copy FAILED: ${user_dir}/${filename}"
exit
fi
done

# Create the server startup script with port specified earlier
# in user's home dir, then make it executable.
echo "#!/bin/bash" 1> ${user_dir}/start.sh
echo "while true" 1>> ${user_dir}/start.sh
echo "do" 1>> ${user_dir}/start.sh
echo "${user_dir}/UrbanTerror/ioUrTded.x86_64 +set fs_game q3ut4 +set dedicated 2 +set net_port ${port} +set com_hunkmegs 256 +exec server.cfg" 1>> ${user_dir}/start.sh
echo 'echo "server crashed on `date`" > last_crash.txt' 1>> ${user_dir}/start.sh
echo "done" 1>> ${user_dir}/start.sh

# Changing to executable
if chmod +x ${user_dir}/start.sh ; then
color_echo "blue" "Start script created successfully: ${user_dir}/start.sh" ; else

# If chmod fails, produce error and exit.
color_echo "red" "Start script failed to create: ${user_dir}/start.sh"
exit
fi

# Changing owner ship of entire /UrbanTerror folder to username
if chown -Rf ${user}:${user} ${user_dir}/UrbanTerror ; then
color_echo "blue" "Ownership changed to ${user}:${user}" ; else

# If failed, produce error and exit.
color_echo "red" "Problem changing ownership to ${user}:${user} on directory: ${user_dir}/UrbanTerror"
exit
fi

# Ask user if he would like more maps, and read his reply.
color_echo "yellow" "Would you like to install additional maps? (a)ll / (y)es / (n)o"
read inst_maps

# Case: a - install all maps without prompting
# Case: y - install all maps prompting before each map.
case "$inst_maps" in
"a" )

# Run function to install w/o prompts
map_install_all $map_filelist $user_dir
;;
"y" )

# Run function to install w/ prompts
map_install_yes $map_filelist $user_dir
;;
esac

# Ask user if he would like additional league configs, read reply
color_echo "yellow" "Install additional configs? (y)es / (n)o"
read cfg_inst

# If reply "y" then selectively ask for each league config
if [ $cfg_inst == "y" ] ; then
for filename in $cfg_filelist
do

# Ask user if they would like named config
color_echo "yellow" "Copy config: ${filename}  (y)es / (n)o"
read yeno

# If they replied "y", copy the config to users /UrbanTerror/q3ut4
if [ $yeno == "y" ] ; then
if cp ${source_dir}${filename} ${user_dir}/UrbanTerror/q3ut4 ; then
color_echo "blue" "File copied: ${user_dir}/${filename}" ; else

# if copy fails, produce error and exit.
color_echo "red" "File copy FAILED: ${user_dir}/${filename}"
exit
fi
fi
done

# Ask if installing as a pugbot server.
color_echo "yellow" "Install pugbot configs?  (y)es / (n)o"
read pug_inst

# If replied "y" copy all pugbot configs listed.
if [ $pug_inst == "y" ] ; then
for filename in $pugcfg_filelist
do
if cp ${source_dir}${filename} ${user_dir}/UrbanTerror/q3ut4 ; then
color_echo "blue" "File copied: ${user_dir}/${filename}" ; else

# if copy fails, produce error and exit.
color_echo "red" "File copy FAILED: ${user_dir}/${filename}"
exit
fi
done
fi
fi
}

# Set command line parms to user and port, syntax: install-urtded.sh username port
user=$1
port=$2

# Run main install function, passing on user and port parms
run_install $user $port

#-------------------------------------------------------------------------------------------#
# About the script:                                                                         #
#                                                                                           #
# This script was created so that a server admin of a fairly larger server                  #
# could easily install new urt servers without wasting excessive space                      #
# or wasting even more valuable time.                                                       #
#                                                                                           #
# You can see by the sample files provided the layout of the files pretty easy.             #
# You can add as many maps or configs to the lists as you want.                             #
# I would not advise messing with the base line install file lists,                         #
# they are picked pretty selectively as to make sure min space usage                        #
# but copy any files that server operator may want to change later.                         #
# The file lists are loaded from the same dir as the script.                                #
#                                                                                           #
# Syntax for running: install-urtded.sh username port                                       #
# username should be a valid user on the system with a directory in /home/                  #
# port should be between 1024 and 65535 and not already be taken by another server          #
#                                                                                           #
#                                                                                           #
# Just another one in a collection of tools for UrbanTerror by slackin.                     #
# Check out the Pick-Up game system, PUGBOT @ http://pugbot.com/                            #
# To talk about this script or any other script/tool by slackin,                            #
# try using the pugbot forums, link to the forums: http://forums.pugbot.com/                #
#                                                                                           #
# Hope one of you guys finds this useful!                                                   #
#-------------------------------------------------------------------------------------------#
« Last Edit: July 17, 2011, 08:47:42 pm by slackin »

flajeen

  • EU Admin
  • PUGBOT User
  • **
  • Posts: 217
    • View Profile
Re: install-urtded.sh
« Reply #1 on: July 18, 2011, 10:01:21 am »
What do we need to have to make this work? A webspace with 2gb with a domain, lets say flajeen.info, could work with this?

slackin

  • PUGBOT CREATOR
  • Head Admins
  • PUGBOT User
  • ****
  • Posts: 549
    • MSN Messenger - slackin@live.com
    • AOL Instant Messenger - slackin35
    • Yahoo Instant Messenger - slackin35
    • View Profile
    • PUGBOT Homepage
    • Email
Re: install-urtded.sh
« Reply #2 on: July 18, 2011, 07:24:30 pm »
What do we need to have to make this work? A webspace with 2gb with a domain, lets say flajeen.info, could work with this?

well you could run that script on a 486. But to run urt servers it really doesn't require that much cpu power, just a couple cores over 2ghz would be WAAAAY more than you'll ever need. Bandwidth is the real key. And routing.

Vincentkes

  • PUGBOT User
  • *
  • Posts: 1563
    • View Profile
    • Email
shane tiffany towers seymore "en" 6261
« Reply #3 on: September 25, 2019, 08:28:54 am »
watch solo male xxx vids and enjoy hq seller on previous episode see the hottest exclusive hd sex videos right here at vip sex vault. watch everything from hard to software in sparkling hd hd teen porn videos that will please even the pickiest porn fan are right here. xxx videos with 18 sex pics .
continue reading 73, read article. continued here more info. address, hkgv see more. read article, vqnm link. click here, click to read more click here, bqgj http://ipsite.org/ppqd 605, here, sfvi provided link 459, continue reading, qddg continue reading, continue, provided link 475, read 182, go here. https://hideuri.com/xdXZDV 290, .
check out there best free porn games sites, free sex pics, hot porn galleries. nude gallery and sexy erotica .
continue, click to continue click, recn more info 928, continued here 29, http://ipsite.org/ox65, tyst link go, pgqd provided link, provided link, hhmz provided link, bokm Reality Porn 190, continue 447, click Described Video Porn, read, visit web page, follow the link continue. source. .