DieFeM 12 лет назад
Родитель
Сommit
537df0ea38
1 измененных файлов с 426 добавлено и 0 удалено
  1. 426 0
      agent_conf.sh

+ 426 - 0
agent_conf.sh

@@ -0,0 +1,426 @@
+#!/bin/bash
+#
+# OGP - Open Game Panel
+# Copyright (C) Copyright (C) 2008 - 2013 The OGP Development Team
+#
+# http://www.opengamepanel.org/
+#
+# 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 2
+# of the License, or 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+
+if [ ! -z "$1" ]; then
+	opType="$1"
+fi
+
+readonly DEFAULT_PORT=12679
+readonly DEFAULT_IP=0.0.0.0
+readonly AGENT_VERSION='v1.0'
+
+failed()
+{
+    echo "ERROR: ${1}"
+    exit 1
+}
+
+agent_home="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 
+
+cfgfile=${agent_home}/Cfg/Config.pm
+prefsfile=${agent_home}/Cfg/Preferences.pm
+bashprefsfile=${agent_home}/Cfg/bash_prefs.cfg
+
+overwrite_config=1
+
+if [ -z "$opType" ]; then
+
+	if [ -e ${cfgfile} ]; then
+		while [ 1 ]
+		do
+			echo "Overwrite old config file ($cfgfile)?"
+			echo -n "(yes/no) [Default yes]: " 
+			read octmp
+			if [ "$octmp" == "yes" -o -z "$octmp" ]
+			then
+				break
+			elif [ "$octmp" == "no" ]
+			then
+				overwrite_config=0
+				break
+			else
+				echo "You need to type 'yes', 'no' or leave empty for default value [yes].";
+			fi
+		done
+	fi
+
+else
+	overwrite_config=0
+fi
+
+if [ "X${overwrite_config}" == "X1" ]
+then
+    echo "#######################################################################"
+    echo ""
+    echo "OGP agent uses basic encryption to prevent unauthorized users from connecting"
+    echo "Enter a string of alpha-numeric characters for example 'abcd12345'"
+    echo "**** NOTE - Use the same key in your Open Game Panel webpage config file - they must match *****"
+    echo ""
+
+    while [ -z "${key}" ]
+    do 
+        echo -n "Set encryption key: "
+        read key
+    done
+
+    echo
+    echo "Set the listen port for the agent. The default should be fine for everyone."
+    echo "However, if you want to change it that can be done here, otherwise just press Enter."
+    echo -n "Set listen port [Default ${DEFAULT_PORT}]: "
+    read port
+
+    if [ -z "${port}" ]
+    then 
+        port=$DEFAULT_PORT
+    fi
+
+    echo 
+    echo "Set the listen IP for the agent."
+    echo "Use ${DEFAULT_IP} to bind on all interfaces."
+    echo -n "Set listen IP [Default ${DEFAULT_IP}]: "
+    read ip
+
+    if [ -z "${ip}" ]  
+    then 
+        ip=$DEFAULT_IP
+    fi 
+
+    while [ 1 ]
+    do
+        echo
+        echo "For some games the OGP panel is using Steam client."
+        echo "This client has its own license that you need to agree before continuing."
+        echo "This agreement is available at http://store.steampowered.com/subscriber_agreement/"
+        echo;
+		echo "Do you accept the terms of Steam(tm) Subscriber Agreement?"
+		echo -n "(Accept|Reject): "
+        read steam_license
+        if [ "$steam_license" == "Accept" -o "$steam_license" == "Reject" ]
+        then 
+            break;
+        fi
+
+        echo "You need to type either 'Accept' or 'Reject'.";
+    done
+    
+    echo "Writing Config file - $cfgfile"
+
+    echo "%Cfg::Config = (
+    logfile => '${agent_home}/ogp_agent.log',
+    listen_port  => '${port}',
+    listen_ip => '${ip}',
+    version => '${AGENT_VERSION}',
+    key => '${key}',
+    steam_license => '${steam_license}',
+    sudo_password => '${sudo_password}',
+    );" > $cfgfile
+	
+	if [ $? != 0 ]
+    then
+        failed "Failed to write config file."
+    fi 
+    
+    echo;
+	while [ 1 ]
+    do
+		echo "The agent should be updated when the service is restarted or started?"
+		echo -n "(yes|no) [Default yes]: "
+		read auto_update
+		if [ "${auto_update}" == "yes" -o "${auto_update}" == "no" -o -z "${auto_update}" ]
+		then 
+			if [ "${auto_update}" == "yes" ]
+			then
+				autoUpdate=1
+			elif [ -z "${auto_update}" ]
+			then
+				autoUpdate=1
+			else
+				autoUpdate=0
+			fi
+			break;
+		fi
+        echo "You need to type 'yes', 'no' or leave empty for default value [yes].";
+    done
+	
+    echo;
+	while [ 1 ]
+    do
+		echo "The agent should backup the server log files in the game server directory?"
+		echo -n "(yes|no) [Default yes]: "
+		read log_local_copy
+		if [ "${log_local_copy}" == "yes" -o "${log_local_copy}" == "no" -o -z "${log_local_copy}" ]
+		then 
+			if [ "${log_local_copy}" == "yes" ]
+			then
+				logLocalCopy=1
+			elif [ -z "${log_local_copy}" ]
+			then
+				logLocalCopy=1
+			else
+				logLocalCopy=0
+			fi
+			break;
+		fi
+		echo "You need to type 'yes', 'no' or leave empty for default value [yes].";
+    done
+	
+	echo;	
+    echo "After how many days should be deleted the old backups of server's logs?"
+	echo -n "[Default 30]: "
+    read delete_logs_after
+    case ${delete_logs_after} in
+    	''|*[!0-9]*) deleteLogsAfter=30 ;;
+    	*) deleteLogsAfter=${delete_logs_after} ;;
+    esac
+    
+    echo;
+	while [ 1 ]
+    do
+		echo "The agent should automatically restart game servers if they crash?"
+		echo -n "(yes|no) [Default yes]: "
+		read auto_restart
+		if [ "${auto_restart}" == "yes" -o "${auto_restart}" == "no" -o -z "${auto_restart}" ]
+		then 
+			if [ "${auto_restart}" == "yes" ]
+			then
+				autoRestart=1
+			elif [ -z "${auto_restart}" ]
+			then
+				autoRestart=1
+			else
+				autoRestart=0
+			fi
+			break;
+		fi
+		echo "You need to type 'yes', 'no' or leave empty for default value [yes].";
+    done
+	
+	echo;
+	echo "What mirror you want to use for updating the agent?: "
+	echo;
+	echo "1  - SourceForge, Inc. (Chicago, Illinois, US)"
+	echo "2  - AARNet (Melbourne, Australia, AU)"
+	echo "3  - CityLan (Moscow, Russian Federation, RU)"
+	echo "4  - Free France (Paris, France, FR)"
+	echo "5  - garr.it (Ancona, Italy, IT)"
+	echo "6  - HEAnet (Ireland, IE)"
+	echo "7  - HiVelocity (Tampa, FL, US)"
+	echo "8  - Internode (Adelaide, Australia, AU)"
+	echo "9  - Japan Advanced Institute of Science and Technology (Nomi, Japan, JP)"
+	echo "10 - kaz.kz (Almaty, Kazakhstan, KZ)"
+	echo "11 - University of Kent (Canterbury, United Kingdom, GB)"
+	echo "12 - NetCologne (Köln, Germany, DE)"
+	echo "13 - Optimate-Server (Germany, DE)"
+	echo "14 - Softlayer (Dallas, TX, US)"
+	echo "15 - SURFnet (Zurich, Switzerland, CH)"
+	echo "16 - SWITCH (Zurich, Switzerland, CH)"
+	echo "17 - Centro de Computacao Cientifica e Software Livre (Curitiba, Brazil, BR)"
+	read setmirror
+	case ${setmirror} in
+		1) mirror="master"
+		;;
+		2) mirror="aarnet"
+		;;
+		3) mirror="citylan"
+		;;
+		4) mirror="freefr"
+		;;
+		5) mirror="garr"
+		;;
+		6) mirror="heanet"
+		;;
+		7) mirror="hivelocity"
+		;;
+		8) mirror="internode"
+		;;
+		9) mirror="jaist"
+		;;
+		10) mirror="kaz"
+		;;
+		11) mirror="kent"
+		;;
+		12) mirror="netcologne"
+		;;
+		13) mirror="optimate"
+		;;
+		14) mirror="softlayer-dal"
+		;;
+		15) mirror="surfnet"
+		;;
+		16) mirror="switch"
+		;;
+		17) mirror="ufpr"
+		;;
+		*) mirror="master"
+		;;
+	esac
+	
+    
+	if [ "$(uname -o)" != "Cygwin" ]; then
+		echo;
+		while [ 1 ]
+		do
+			echo "Should Open Game Panel create and manage FTP accounts?"
+			echo -n "(yes|no) [Default yes]: "
+			read manage_ftp
+			if [ "${manage_ftp}" == "yes" -o "${manage_ftp}" == "no" -o -z "${manage_ftp}" ]
+			then
+				if [ "${manage_ftp}" == "yes" ]
+				then
+					ogpManagesFTP=1
+				elif [ -z "${manage_ftp}" ]
+				then
+					ogpManagesFTP=1
+				else
+					ogpManagesFTP=0
+				fi
+				break;
+			fi
+			echo "You need to type 'yes', 'no' or leave empty for default value [yes].";
+		done
+
+		echo;
+		# Only ask these install questions if users want OGP to manage FTP accounts    
+		if [ "$ogpManagesFTP" == "1" ]
+		then
+			while [ 1 ]
+			do
+				echo "If you are running ISPConfig 3 in this machine the agent"
+				echo "can use it to create FTP accounts instead of using Pure-FTPd."
+				echo "Would you like to configure this agent to use the API of ISPConfig 3?"
+				echo -n "(yes|no) [Default no]: "
+				read IspConfig
+				if [ "${IspConfig}" == "yes" -o "${IspConfig}" == "no" -o -z "${IspConfig}" ]
+				then
+					if [ "${IspConfig}" == "yes" ]
+					then
+						ftpMethod="IspConfig"
+					else
+						IspConfig="no"
+					fi
+					break;
+				fi
+				echo "You need to type 'yes', 'no' or leave empty for default value [no].";
+			done
+			
+			if [ "${IspConfig}" == "yes" ]
+			then
+				while [ 1 ]
+				do
+					echo "Do you use HTTPS to access to your ISPConfig 3 Panel?"
+					echo -n "(yes|no) [Default no]: "
+					read https
+					if [ "${https}" == "yes" -o "${https}" == "no" -o -z "${https}" ]
+					then
+						if [ "${https}" == "yes" ]
+						then
+							secure="s"
+						else
+							secure=""
+						fi
+						break;
+					fi
+					echo "You need to type 'yes', 'no' or leave empty for default value [no].";
+				done
+				
+				echo -n "What port do you use to connect to your ISPConfig 3 Panel? [Default 8080]: "
+				read setport
+				case ${setport} in
+					''|*[!0-9]*) port=8080 ;;
+					*) port=${setport} ;;
+				esac
+				
+				echo -n "Enter an user name to sing in remotelly (Remote user): "
+				read remote_login_username
+
+				echo -n "Enter password (Remote user): "
+				read remote_login_password
+				
+				echo -e "<?php\n\$username = '${remote_login_username}';" > ${agent_home}/IspConfig/soap_config.php
+				echo "\$password = '${remote_login_password}';" >> ${agent_home}/IspConfig/soap_config.php
+				echo "\$soap_location = 'http${secure}://127.0.0.1:${port}/remote/index.php';" >> ${agent_home}/IspConfig/soap_config.php
+				echo -e "\$soap_uri = 'http${secure}://127.0.0.1:${port}/remote/';\n?>" >> ${agent_home}/IspConfig/soap_config.php
+				
+			else
+			
+				while [ 1 ]
+				do
+					echo;
+					echo "If you have installed the Easy Hosting Control Panel (EHCP - www.ehcp.net),"
+					echo "the agent can use it to create FTP accounts instead of using Pure-FTPd."
+					echo "Would you like to configure this agent to use the API of EHCP?"
+					echo -n "(yes|no) [Default no]: "
+					read ehcp
+					if [ "${ehcp}" == "yes" -o "${ehcp}" == "no" -o -z "${ehcp}" ]
+					then 
+						if [ "${ehcp}" == "yes" ]
+						then
+							ftpMethod="EHCP"
+						fi
+						break;
+					fi
+					echo "You need to type 'yes', 'no' or leave empty for default value [no].";
+				done
+				
+				if [ "${ehcp}" == "yes" ]
+				then
+					echo "Please enter the MySQL database password for the ehcp user"
+					echo -n "(created during the install of EHCP): "
+					read ehcpDB
+						
+					ehcpConf=${agent_home}/EHCP/config.php
+					sed -i "s/changeme/${ehcpDB}/" $ehcpConf
+				else
+					ftpMethod="PureFTPd"
+				fi
+			fi
+		else
+			ftpMethod=""
+		fi
+	else
+		ftpMethod="PureFTPd"
+	fi
+	
+	echo "Writing Preferences file - $prefsfile"
+	
+    echo "%Cfg::Preferences = (
+    screen_log_local => '${logLocalCopy}',
+    delete_logs_after => '${deleteLogsAfter}',
+    ogp_manages_ftp => '${ogpManagesFTP}',
+    ftp_method => '${ftpMethod}',
+    ogp_autorestart_server => '${autoRestart}',
+    );" > $prefsfile 
+	
+	if [ $? != 0 ]
+    then
+        failed "Failed to write preferences file."
+    fi
+    
+    echo "Writing bash script preferences file - $bashprefsfile"
+	
+    echo -e "agent_auto_update=${autoUpdate}\nsf_update_mirror=${mirror}" > $bashprefsfile
+	
+	if [ $? != 0 ]
+    then
+        failed "Failed to write MISC configuration file used by bash scripts."
+    fi
+fi