#########################
#    Common settings    #
#########################

# Game Type (JS, DJ, FN, GD, LH, FF, DS, AR, M2, LA, ...)
GAME_TYPE="G2"

# Country Code(ISO 3166-1, UPPER CASE)for example: "TW"
COUNTRY_CODE_DISPLAY="Steam"
COUNTRY_CODE="GL"

# Mobile Game or not
MOBILE="1"

# Unity Engine or not
UNITY="0"

# SDK App Key
SDK_APP_KEY="100131"

# HTTPAgent URL
#XLURL="en-g2-api.x-legend.com/api/m_api.php"
XLURL="xhg-api.himefun.com/api/m_api.php"

# Language number
LANGUAGE="X"

# Hostname for this machine(This will automatically change on every server)
HOST_NAME="TEST"

# Servers working directory(DO NOT CHANGE)
WORKING_DIRECTORY="$HOME"

# The username to login the live servers
LOGINUSER="$USER"

# The username to login the test servers
TEST_SERVER_LOGINUSER="$USER"

# NTP time server
NTP_SERVER="time1.google.com"

# NTP check
NTP_CHECK="0"

# Web root directory
WEB_ROOT_DIRECTORY="$HOME/www/"

# Webtool root directory
WEBTOOL_ROOT_DIRECTORY="$WEB_ROOT_DIRECTORY/webtool/"

# Do not ask y/n on these command:
DONT_ASK_YES_NO="LIVEStatus IP start stop LogRotate Build CheckAlive Channels GMList LIVEBackup GMCmds GMToolCmds DiskSpace WZTraffic status Build BuildIfNotExist DBConnCheck APEXLogPack dbbackup item2db GCPFW"

# Database name
ACCOUNT_DB_NAME="${GAME_TYPE}Account"
MEMBER_DB_NAME="${GAME_TYPE}Member"
GAME_DB_NAME="${GAME_TYPE}DB"
GLOBAL_DB_NAME="${GAME_TYPE}Global"

# Channel name prefix
CHANNEL_PREFIX=""

# Channel name suffix
CHANNEL_SUFFIX=""

# Country Code (lower case)
COUNTRY_CODE_LOWER="`tr '[:upper:]' '[:lower:]' <<< $COUNTRY_CODE`"

# Game Type (lower case)
GAME_TYPE_LOWER="`tr '[:upper:]' '[:lower:]' <<< $GAME_TYPE`"

# Patch variables
REMOTE_PATCH_SERVER="34.80.212.52"
REMOTE_PATCH_DIRS="~/$COUNTRY_CODE"
LOCAL_PATCH_DIR="$WORKING_DIRECTORY/patch"
PATCH_TARGET_SERVER_DIR="$WORKING_DIRECTORY/common"
PATCH_TARGET_CLIENT_DIR="$WEB_ROOT_DIRECTORY/$GAME_TYPE"
CLIENT_PATCH_DIR="$GAME_TYPE"

# Push TEST client patch to CDN(This will run with "TestCtrl patch ...")
TEST_PATCH_CDN_SYNC_CMDLINE=""

# Push LIVE client patch to CDN(This will run with "Ctrl gmsync")
LIVE_PATCH_CDN_SYNC_CMDLINE=""

# Push the translation files to CDN(This will run with "Ctrl synctranslate")
LIVE_TRANSLATE_CDN_SYNC_CMDLINE=""

# Server data common directories
SERVER_DATA_COMMON_DIRECTORIES="bin Data db"

# Core dump backup path
CORE_DUMP_BACKUP_PATH_LIVE="$TEST_SERVER_LOGINUSER@TEST:~/www/core/"
CORE_DUMP_BACKUP_PATH_TEST="$TEST_SERVER_LOGINUSER@TEST:~/www/core/test/"

# Server stop timeout in seconds. If timeout, send SIGTERM instead.
SERVER_STOP_TIMEOUT="20"

# Colors on command line prompt (0=black, 1=red, 2=green, 3=yellow,
# 4=blue, 5=magenta, 6=cyan, 7=white)
SHELL_PROMPT_GAME_TYPE_COLOR="3"
SHELL_PROMPT_COUNTRY_CODE_COLOR="5"

# Max Character Numbers
# You will need to do "Ctrl LIVEBuild noreset nosync" once after change this.
MAX_CHARACTER_NUMBER="9"

# TicketServer port(If left empty will use default 7777)
TICKETSERVER_PORT=""

# GatewayServer port(If left empty, will use default 5560)
GATEWAYSERVER_PORT=""

# HTTPAgent port(If left empty, will use default 1234)
HTTPAGENT_PORT=""

# AccountDBServer port(If left empty, will use default 7553)
ACCOUNTDBSERVER_PORT=""

# GameAgentServer port(If left empty, will use default 6969)
GAMEAGENT_PORT=""

# Delete DB backup files that total size excced $MAX_DB_BACKUP_TOTAL_SIZE(in MB)
# This setting will keep old backup files generated every Friday
MAX_DB_BACKUP_TOTAL_SIZE="20000"

# Delete DB backup files that total size excced $MAX_DB_BACKUP_TOTAL_SIZE_HARD_LIMIT(in MB)
MAX_DB_BACKUP_TOTAL_SIZE_HARD_LIMIT="30000"

# DBbackup backup custom format only?
DBBACKUP_BACKUP_CUSTOM_FORMAT_ONLY="1"

# Do not backup custom format
DBBACKUP_DO_NOT_BACKUP_CUSTOM_FORMAT=""

# CGI Key
CGI_KEY="0KjaM85BjfqjA"

# Check PostgreSQL error log with pg_error_log?
POSTGRESQL_ERROR_CHECK_ON_LOGIN="0"

# Use xz instead of gzip for log rotate?
USE_XZ_INSTEAD_OF_GZIP="1"

# Disable setup.ini check between TEST and LIVE
DISABLE_SETUP_INI_CHECK_AFTER_GMSYNC="0"

# Disable S_RootCmds.ini check between TEST and LIVE
DISABLE_SROOTCMD_INI_CHECK_AFTER_GMSYNC="0"

# Enable VersionDef.h check between Prevous and Current Patch
ENABLE_VERSIONDEF_CHECK="1"

# MissionServer mapping GameDB manually
MS_MAPPING_GAMEDB_MANUALLY="1"

# Enable Perf Monitor
ENABLE_PERF_MONITOR="0"


###########################
# Cloud Services Settings #
###########################
# Servers has only one network interface
ONLY_ONE_NETWORK_INTERFACE="1"

# GCP Bucket Path
# See the URL https://console.cloud.google.com/storage/browser from YOUR GCP PROJECT
GCP_BUCKET_STORAGE_NAME="xlegend-backup"
GCP_BUCKET_PATH="$GCP_BUCKET_STORAGE_NAME/DBbackup/$GAME_TYPE/$COUNTRY_CODE_DISPLAY/"

# RSYNC Directory in CTRL
GCP_DBBACKUP_DIR="$HOME/DBbackup2GCP"

# DBbackup files reserved days' setting
CTRL_DBBACKUP_CUR_RESERVED_DAYS="7"
CTRL_DBBACKUP_OLD_RESERVED_DAYS="14"

# Google Chat Webhook
GOOGLE_CHAT_WEBHOOK_URL="https://chat.googleapis.com/v1/spaces/AAQAHE37Zoo/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=BHRjL4BZyJ4Hrkt5GmunOWsllAU71wssRWrgIEDi7Xo"

#################################
# Server ID generating settings #
#################################
# S = Set number
# C = Channel number
# W = World/Zone(0/1)
# Order = S -> C -> W
SERVER_ID_FORMAT="SCCW"

# Set number of set 1 show on server ID
SET_NUMBER_SEQUENCE_START_WITH="1"


#################################
# Promotion file/table settings #
#################################
# Promotion FILE location(Itemmall/Lottery/Fortune Bag/....)
ITEMMALL_FILE="Data/itemmall/itemmall"
FORTUNE_BAG_FILE="Data/itemmall/fortune_bag"
IAP_FILE="Data/itemmall/iap"
DAILYLOGINREWORD_FILE="Data/itemmall/daily_login_reward"
SUGGEST_BUY_FILE="Data/itemmall/suggest_buy"
REWARDBOX_FILE="Data/itemmall/rewardbox"
BA_ITEMS_FILE="Data/itemmall/bonus_activity_items"
BA_MISSION_FILE="Data/itemmall/bonus_activity_mission"
BA_EXANGE_FILE="Data/itemmall/bonus_activity_exchange"
BA_PLUS_FILE="Data/itemmall/bonus_activity_plus"
BA_NEWS_FILE="Data/itemmall/bonus_activity_news"
BA_ACTIVE_FILE="Data/itemmall/bonus_activity_active"
BA_LOGIN_FILE="Data/itemmall/bonus_activity_login"
BA_SPIN1_FILE="Data/itemmall/bonus_activity_spin1"
BA_SPIN2_FILE="Data/itemmall/bonus_activity_spin2"
BA_GACHA_FILE="Data/itemmall/bonus_activity_gacha"
BA_COLLE_FILE="Data/itemmall/bonus_activity_colle"
BA_ACCU_FILE="Data/itemmall/bonus_activity_accu"
BA_SALE_FILE="Data/itemmall/bonus_activity_sale"
BA_USAGE_FILE="Data/itemmall/bonus_activity_usage"

# What promotion FILES to update to the test server?
PROMOTION_FILES_APPLY_TO_TEST=""

# What is the mode to apply promotion data?
# 1 = Database table(on TEST) -->  Database table(on LIVE)
# 2 = File(on TEST)           -->  Database table(on LIVE)
# 3 = File(on LIVE)           -->  Database table(on LIVE)
PROMOTION_DATA_APPLY_TO_LIVE_MODE="1"

# Mode 1: What promotion TABLES will sync from TEST to LIVE?
#PROMOTION_TABLES_APPLY_TO_LIVE="advertisement_page bonus_activity_blessing bonus_activity_daypass bonus_activity_exchange bonus_activity_festival bonus_activity_gacha bonus_activity_game01 bonus_activity_game02 bonus_activity_gemspin1 bonus_activity_gemspin2 bonus_activity_items bonus_activity_mission bonus_activity_monopoly bonus_activity_monopoly_minigame bonus_activity_monopoly_question bonus_activity_pass01 bonus_activity_pass02 bonus_activity_plus bonus_activity_spin1 bonus_activity_title fortune_bag iap itemmall layout_appearance rewardbox rewardboxgroup rewardboxinside suggest_trigger_info bonus_activity_payback bonus_activity_seasonal_ability bonus_activity_seasonal_rewards bonus_activity_seasonal_shop daily_login_reward"
PROMOTION_TABLES_APPLY_TO_LIVE="advertisement_page bonus_activity_blessing bonus_activity_daypass bonus_activity_exchange bonus_activity_festival bonus_activity_gacha bonus_activity_game01 bonus_activity_game02 bonus_activity_gemspin1 bonus_activity_gemspin2 bonus_activity_items bonus_activity_mission bonus_activity_monopoly bonus_activity_monopoly_minigame bonus_activity_monopoly_question bonus_activity_pass01 bonus_activity_pass02 bonus_activity_plus bonus_activity_spin1 bonus_activity_title fortune_bag iap itemmall layout_appearance rewardbox rewardboxgroup rewardboxinside suggest_trigger_info bonus_activity_payback bonus_activity_seasonal_ability bonus_activity_seasonal_rewards bonus_activity_seasonal_shop daily_login_reward bonus_center bonus_center_stepuppack"

# Mode 2/3: What promotion FILES to update to the LIVE server?
PROMOTION_FILES_APPLY_TO_LIVE=""


################################
# Test/Control server settings #
################################
# The password of database on test server
TEST_SERVER_DB_PASSWORD="tU0jWDA"

# Global IP of the TEST server
TEST_SERVER_GLOBAL_IP="138.2.103.91"

# Private IP of the TEST server
TEST_SERVER_PRIVATE_IP="10.160.22.2"

# Global IP of this control server(Deprecated)
CTRL_SERVER_GLOBAL_IP="$TEST_SERVER_GLOBAL_IP"

# Private IP of this control server(Deprecated)
CTRL_SERVER_PRIVATE_IP="$TEST_SERVER_PRIVATE_IP"

# The file name of TEST controller script
TEST_CONTROL_SCRIPT="TestCtrl"

# Client patch backup command line
CLIENT_PATCH_BACKUP_COMMAND_LINE="ibackup backup clientpatch"

# TEST server channels for each set
TEST_SERVER_CHANNELS="2"

# Set every character's privilege on TEST server(apply after patch)
SET_EVERY_CHARACTERS_PRIVILEGE_AFTER_PATCH="0"

# Set every characters privilege level(0~5)
SET_EVERY_CHARACTERS_PRIVILEGE_TO="0"


################################
#     LIVE server settings     #
################################
# The password of database on LIVE servers
# This better same as $TEST_SERVER_DB_PASSWORD
LIVE_SERVER_DB_PASSWORD="u6Y3KxVbsdfx"

# The source of 'sync to live' (DO NOT EDIT WITHOUT X-LEGEND)
SOURCE_OF_SYNC_TO_LIVE="TEST"

# World/Zone servers external interface
WZ_EXT_IF="enp0s5"

# World/Zone servers internal interface
WZ_INT_IF="enp0s5"

# Servers under NAT or DMZ?
NAT="1"

# URL to get the external IP address(for NAT mode)
URL_TO_GET_NAT_EXT_IP="http://icanhazip.com"

# Do not try to get the external IP from the URL above
DONT_GET_NAT_EXT_IP="0"

# How many LoginServer will you run?
LIVE_LOGIN_SERVERS="4"

# Webtool remapping command line
WEBTOOL_REMAPPING_CMDLINE="wget -O/dev/null -q http://127.0.0.1/fn_admin/install2.php"

# Kick bots(1 = Real kick, 0 = Demo mode)(Deprecated)
KICK_BOTTING="0"

# Do not run DBbackup when dbpatch
DO_NOT_RUN_DBBACKUP_BEFORE_DBPATCH="0"

# Do not run DBvacuum when dbpatch
DO_NOT_RUN_DBVACUUM_AFTER_DBPATCH="0"

# PvP channel WZ number
PVP_CHANNEL_WZ_NUMBER=""

# PvP channel name prefix
PVP_CHANNEL_NAME_PREFIX=""

# PvP channel name suffix
PVP_CHANNEL_NAME_SUFFIX="(PvP)"

# CrossRouter Set ID on LIVE
CROSS_ROUTER_SID_LIVE=""

# Enable Cross Set IDs on LIVE
ENABLE_CROSS_SID_LIVE=""

# CentralServer Set ID on LIVE
CENTRAL_SID_LIVE="$CROSS_ROUTER_SID_LIVE"

# Client Patch NFS Start Number
CLIENT_PATCH_NFS_START=""

# Client Patch File Name Initial Lists
CLIENT_PATCH_FILENAME_LISTS="g2h_steam.txt"

# Client Patch Domain Name
#CLIENT_PATCH_DOMAIN_NAME="patch.global.ff.x-legend.com.tw"
CLIENT_PATCH_DOMAIN_NAME="d276ow0icvjsn7.cloudfront.net"

# SetID Public ( is_commercial )
SET_ID_PUBLIC="1|2|31"

################################
#  Translation Tool Settings   #
################################
# The directory of the translated ini upload to
#TRANSLATED_INI_UPLOAD_DIR="/home/translate/localize/"
TRANSLATED_INI_UPLOAD_DIR_US="/home/translate/localize_us/"
TRANSLATED_INI_UPLOAD_DIR_KR="/home/translate/localize_kr/"
TRANSLATED_INI_UPLOAD_DIR_CN="/home/translate/localize_cn/"
TRANSLATED_INI_UPLOAD_DIR_JP="/home/translate/localize_jp/"
TRANSLATED_INI_UPLOAD_DIR_TH="/home/translate/localize_th/"

# The worlds that will apply the translated files (DO NOT EDIT WITHOUT X-LEGEND)
TRANSLATED_INI_APPLY_TO="TEST"
BANNER_APPLY_TO="TEST"

# What translations to run with localize2db?
LOCALIZE2DB_TRANSLATIONS="Title Mission Node Spell Item ItemMall"


################################
#     Login Firewall(LGFW)     #
################################
# LGFW has 3 modes:
# 1 = IP Tables RESTORE/SAVE mode(by iptables-save and iptables-restore)
# 2 = Port/IP list mode
# 3 = /etc/init.d/iptables stop/start
LGFW_MODE="2"

# LGFW: IP Tables RESTORE/SAVE mode: LGFW OFF iptables-save file
IPTABLES_LGFW_OFF_CONFIG_FILE="/etc/sysconfig/iptables.public"
# LGFW: IP Tables RESTORE/SAVE mode: LGFW ON iptables-save file
IPTABLES_LGFW_ON_CONFIG_FILE="/etc/sysconfig/iptables.close"

# LGFW: Port/IP list mode: Login Server Ports (NOTE: stop and start LGFW after change)
LOGIN_SERVER_PORTS="6543 6544 6545 6546"
# LGFW: Port/IP list mode: IPs for allow when under maintenance (NOTE: stop and start LGFW after change)
LOGIN_SERVER_ALLOW_IP="210.71.206.190 60.251.182.68 211.75.14.135 118.163.100.133 60.248.153.109 123.252.116.13"


#################################
#      Log Rotate settings      #
#################################
# Choose the log type to delete
WORLD_TO_DELETE=""
ZONE_TO_DELETE=""
MISSION_TO_DELETE=""
LOGIN_TO_DELETE=""
GATEWAY_TO_DELETE=""

# Leave how many log files in directory and don't do gzip or delete
LOG_LEAVE_IN_DIR="4"

# How many days to check the log file date?
CHECK_LOG_FILE_DATE_IN_DAYS="3"


##########################################
#    GMTool Config Generator settings    #
##########################################
# Default game client install path
GAME_CLIENT_DEFAULT_INSTALL_PATH="C:\Winner\LHOnline"

# Log Data Limit
GM_TOOL_LOG_DATA_LIMIT="1000"


#####################################
#   Third-party Service Settings    #
#####################################
# Apex base path, which contains ax_itemsvr and ax_part
# (Not recommended to put into the "common" directory)
APEX_BASE_PATH="$HOME/ApexItemServer/"

# ApexItemServer path
APEXITEMSERVER_PATH="$HOME/ApexItemServer/ax_itemsvr/"

# ApexItemServer binary
APEXITEMSERVER_BIN="AHNetServer"


############################
#   Low Disk Space Check   #
############################
# Check disk space on login?
LOW_DISK_SPACE_CHECK_ON_LOGIN="1"

# Warning disk space too low for game server directory when under this setting.(in MB)
LOW_DISK_SPACE_WARNING_SERVER_DIR="20000"

# Warning disk space too low for /var when under this setting.(in MB)
LOW_DISK_SPACE_WARNING_VAR="1000"

# Warning disk space too low for PGDATA when under this setting.(in MB)
LOW_DISK_SPACE_WARNING_PGDATA="3000"

# Warning disk space size too low for TEST when under this setting.(in GB)
LOW_DISK_SPACE_WARNING_SIZE_TEST="10"

# Warning disk space percentage too low for TEST when under this setting.(in %)
LOW_DISK_SPACE_WARNING_PERCENTAGE_TEST="95"

# Warning disk space size too low for LIVE when under this setting.(in GB)
LOW_DISK_SPACE_WARNING_SIZE_LIVE="50"

# Warning disk space percentage too low for LIVE when under this setting.(in %)
LOW_DISK_SPACE_WARNING_PERCENTAGE_LIVE="85"

# Check the mounted directory
LOW_DISK_SPACE_WARNING_DIR="/"


##########################
#   Dealine Days Check   #
##########################
# Warning deadline when uder this setting.(in Days)
DEADLINE_DAY_NOTICE="30"


########################
# Automation Functions #
########################
source $HOME/.functions


######################
# setup.ini settings #
######################
# Guild/Terrtory/BattleField/Hidden Channel
if [ "$GAME_TYPE" == "JS" ] ; then
   # JS
   CROSS_CHANNEL="0"
   HIDDEN_CHANNEL="0"
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
elif [ "$GAME_TYPE" == "DJ" ] ; then
   # DJ
   CROSS_CHANNEL="9"
   HIDDEN_CHANNEL="0"
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="1000"
elif [ "$GAME_TYPE" == "FN" ] ; then
   # FN
   CROSS_CHANNEL="3"
   HIDDEN_CHANNEL="0"
   TERRITORY_CHANNEL="0" # Terrirory war
   GREEDYISLAND_CHANNEL="$CROSS_CHANNEL"
   COLOSSEUM_CHANNEL="$TERRITORY_CHANNEL" # 3 vs 3, can same as TERRITORY_CHANNEL
   PLAYERROOM_CHANNEL="$CROSS_CHANNEL" # Player's room, must same as CROSS_CHANNEL
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="1000"
elif [ "$GAME_TYPE" == "GD" ] ; then
   # GD
   CROSS_CHANNEL="4"
   HIDDEN_CHANNEL="0"
   TERRITORY_CHANNEL="5" # Terrirory war
   COLOSSEUM_CHANNEL="$CROSS_CHANNEL" # 3 vs 3, must same as CROSS_CHANNEL
   FIGHTZONE_CHANNEL="$CROSS_CHANNEL" # FightZone, must same as CROSS_CHANNEL
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="250"
elif [ "$GAME_TYPE" == "LH" ] ; then
   # LH
   CROSS_CHANNEL="9"
   HIDDEN_CHANNEL="9"
   TERRITORY_CHANNEL="9" # Terrirory war
   COLOSSEUM_CHANNEL="$TERRITORY_CHANNEL" # 3 vs 3, can same as TERRITORY_CHANNEL
   PLAYERROOM_CHANNEL="$CROSS_CHANNEL" # Player's room, must same as CROSS_CHANNEL
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="800"
elif [ "$GAME_TYPE" == "FF" ] ; then
   # FF
   CROSS_CHANNEL="9"
   HIDDEN_CHANNEL="9"
   TERRITORY_CHANNEL="9" # Terrirory war
   COLOSSEUM_CHANNEL="$CROSS_CHANNEL" # 3 vs 3, must same as CROSS_CHANNEL
   FIGHTZONE_CHANNEL="$CROSS_CHANNEL" # FightZone, must same as CROSS_CHANNEL
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="800"
elif [ "$GAME_TYPE" == "DS" ] ; then
   # DS
   CROSS_CHANNEL="9"
   HIDDEN_CHANNEL="9"
   TERRITORY_CHANNEL="9" # Terrirory war
   COLOSSEUM_CHANNEL="$CROSS_CHANNEL" # 3 vs 3, must same as CROSS_CHANNEL
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="800"
elif [ "$GAME_TYPE" == "M2" ] ; then
   # M2
   CROSS_CHANNEL="9"
   HIDDEN_CHANNEL="9"
   TERRITORY_CHANNEL="9" # Terrirory war
   COLOSSEUM_CHANNEL="$CROSS_CHANNEL" # 3 vs 3, must same as CROSS_CHANNEL
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="800"
elif [ "$GAME_TYPE" == "AR" ] ; then
   # AR
   CROSS_CHANNEL="9"
   HIDDEN_CHANNEL="9"
   TERRITORY_CHANNEL="9" # Terrirory war
   COLOSSEUM_CHANNEL="$CROSS_CHANNEL" # 3 vs 3, must same as CROSS_CHANNEL
   FIGHTZONE_CHANNEL="$CROSS_CHANNEL" # FightZone, must same as CROSS_CHANNEL
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="800"
elif [ "$GAME_TYPE" == "LA" ] ; then
   # LA
   CROSS_CHANNEL="9"
   HIDDEN_CHANNEL="9"
   TERRITORY_CHANNEL="9" # Terrirory war
   COLOSSEUM_CHANNEL="$CROSS_CHANNEL" # 3 vs 3, must same as CROSS_CHANNEL
   FIGHTZONE_CHANNEL="$CROSS_CHANNEL" # FightZone, must same as CROSS_CHANNEL
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="800"
elif [ "$GAME_TYPE" == "AK" ] ; then
   # LA
   CROSS_CHANNEL="9"
   HIDDEN_CHANNEL="9"
   TERRITORY_CHANNEL="9" # Terrirory war
   COLOSSEUM_CHANNEL="$CROSS_CHANNEL" # 3 vs 3, must same as CROSS_CHANNEL
   FIGHTZONE_CHANNEL="$CROSS_CHANNEL" # FightZone, must same as CROSS_CHANNEL
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="800"
elif [ "$GAME_TYPE" == "M3" ] ; then
   # M3
   CROSS_CHANNEL="9"
   HIDDEN_CHANNEL="9"
   TERRITORY_CHANNEL="9" # Terrirory war
   COLOSSEUM_CHANNEL="$CROSS_CHANNEL" # 3 vs 3, must same as CROSS_CHANNEL
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="800"
elif [ "$GAME_TYPE" == "M11" ] ; then
   # M11
   CROSS_CHANNEL="9"
   HIDDEN_CHANNEL="9"
   TERRITORY_CHANNEL="9" # Terrirory war
   COLOSSEUM_CHANNEL="$CROSS_CHANNEL" # 3 vs 3, must same as CROSS_CHANNEL
   FIGHTZONE_CHANNEL="$CROSS_CHANNEL" # FightZone, must same as CROSS_CHANNEL
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="800"
elif [ "$GAME_TYPE" == "M12" ] ; then
   # M12
   CROSS_CHANNEL="9"
   HIDDEN_CHANNEL="9"
   TERRITORY_CHANNEL="9" # Terrirory war
   COLOSSEUM_CHANNEL="$CROSS_CHANNEL" # 3 vs 3, must same as CROSS_CHANNEL
   FIGHTZONE_CHANNEL="$CROSS_CHANNEL" # FightZone, must same as CROSS_CHANNEL
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="800"
elif [ "$GAME_TYPE" == "UG1" ] ; then
   # UG1
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="800"
elif [ "$GAME_TYPE" == "G1" ] ; then
   # G1
   CROSS_CHANNEL="0"
   HIDDEN_CHANNEL="0"
   TERRITORY_CHANNEL="0" # Terrirory war
   COLOSSEUM_CHANNEL="$CROSS_CHANNEL" # 3 vs 3, must same as CROSS_CHANNEL
   FIGHTZONE_CHANNEL="$CROSS_CHANNEL" # FightZone, must same as CROSS_CHANNEL
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="800"
elif [ "$GAME_TYPE" == "G2" ] ; then
   # G2
   CROSS_CHANNEL="0"
   HIDDEN_CHANNEL="0"
   TERRITORY_CHANNEL="0" # Terrirory war
   COLOSSEUM_CHANNEL="$CROSS_CHANNEL" # 3 vs 3, must same as CROSS_CHANNEL
   FIGHTZONE_CHANNEL="$CROSS_CHANNEL" # FightZone, must same as CROSS_CHANNEL
   CHANNEL_NUMBER_SEQUENCE_START_WITH="1"
   MAX_PLAYER_PER_CHANNEL="800"
   VISIBLE_TIME="1900000000"
fi

CrossWorldID=$(get_server_id $SET_NUM $CROSS_CHANNEL world)
TerritoryWorldID=$(get_server_id $SET_NUM $TERRITORY_CHANNEL world)
ColosseumWorldID=$(get_server_id $SET_NUM $COLOSSEUM_CHANNEL world)
PlayerRoomWorldID=$(get_server_id $SET_NUM $PLAYERROOM_CHANNEL world)
FightZoneWroldID=$(get_server_id $SET_NUM $FIGHTZONE_CHANNEL world)
GreedyIslandWorldID=$(get_server_id $SET_NUM $GREEDYISLAND_CHANNEL world)

# Redefine the function of generating setup.ini
generate_setup_ini () {
   if [ "$HOST_NAME" == "TEST" -o "$HOST_NAME" == "SUB" -o "$HOST_NAME" == "SUBMIT" -o "$HOST_NAME" == "DATA" -o "$HOST_NAME" == "DLC" -o "$HOST_NAME" == "TIME1" -o "$HOST_NAME" == "MEDIA" ] ; then
      WorldServerIP=$(echo $(wget -q -O- --header="Metadata-Flavor: Google" http://icanhazip.com))
      GAMEDBSERVER_IP="127.0.0.1"
      GAMEAGENT_IP="127.0.0.1"
      CROSS_ROUTER_IP="127.0.0.1"
      CROSS_ROUTER_SID=$CROSS_ROUTER_SID_TEST
      CENTRALSERVER_IP="127.0.0.1"
      CENTRAL_SID=$CENTRAL_SID_TEST
   else
      WorldServerIP_INT=$(cat /etc/hosts | egrep "WZ${SET_NUM}0[19] |WZ${SET_NUM}0[19]$" | awk -F" " '{print $1}')
      WorldServerIP=$(ssh ${WorldServerIP_INT} -o StrictHostKeyChecking=no "wget -qO - icanhazip.com") < /dev/null
      GAMEDBSERVER_IP=$(cat /etc/hosts | egrep "GDS$SET_NUM | GDS$SET_NUM\$" | awk -F" " '{print $1}')
      GAMEAGENT_IP=$(cat /etc/hosts | egrep "GAG$SET_NUM | GAG$SET_NUM\$" | awk -F" " '{print $1}')
      CROSS_ROUTER_IP=$(cat /etc/hosts | egrep "CRS" | awk -F" " '{print $1}')
      CROSS_ROUTER_SID=$CROSS_ROUTER_SID_LIVE
      CENTRALSERVER_IP=$(cat /etc/hosts | egrep "CES" | awk -F" " '{print $1}')
      CENTRAL_SID=$CENTRAL_SID_LIVE
   fi

   sed "   s/__GameDBIP__/$GAME_DB_IP/g
           s/__GameDB__/$GAME_DB_NAME$SET_NUM/g
           s/__CrossWorldID__/$CrossWorldID/g
           s/__TerritoryWorldID__/$TerritoryWorldID/g
           s/__ColosseumWorldID__/$ColosseumWorldID/g
	   s/__PlayerRoomWorldID__/$PlayerRoomWorldID/g
	   s/__FightZoneWroldID__/$FightZoneWroldID/g
           s/__GreedyIslandWorldID__/$GreedyIslandWorldID/g
	   s/__GameDBPassword__/$DATABASE_PASSWORD/g
	   s/__MaxCharacterNumber__/$MAX_CHARACTER_NUMBER/g
	   s/__Language__/$LANGUAGE/g
           s/__Locate__/TW/g
           s/__AccountDBIP__/$ACCOUNT_DB_IP/g
           s/__AccountDBName__/$ACCOUNT_DB_NAME/g
           s/__AccountDBPW__/$DATABASE_PASSWORD/g
           s/__TicketServerIP__/$TicketServerIP/g
	   s/__TicketServerPort__/$TICKETSERVER_PORT/g
           s/__BillingGatewayIP__/$BillingGatewayIP/g
	   s/__BillingGatewayPort__/$GATEWAYSERVER_PORT/g
           s/__NAT__/$NAT/g
           s/__NATListen__/$NAT/g
           s/__SDKAppKey__/$SDK_APP_KEY/g
           s/__MissionServerID__/$SET_NUM/g
           s/__GlobalDBIP__/$GLOBAL_DB_IP/g
           s/__GlobalDBName__/$GLOBAL_DB_NAME/g
           s/__GlobalDBPW__/$DATABASE_PASSWORD/g
           s/__HttpAgentServerIP__/$HttpAgentServerIP/g
	   s/__AcctDBPort__/$ACCOUNTDBSERVER_PORT/g
	   s/__GameAgentPort__/$GAMEAGENT_PORT/g
	   s/__CertServerIP__/$CertServerIP/g
           s/__LoginHttpIP__/$LoginHttpIP/g
	   s/__WorldServerIP__/$WorldServerIP/g
	   s/__WorldServerID__/${SET_NUM}010/g
	   s/__GameDBSIP__/$GAMEDBSERVER_IP/g
	   s/__GameAgentIP__/$GAMEAGENT_IP/g
	   s/__CrossRouterIP__/$CROSS_ROUTER_IP/g
           s/__CentralServerIP__/$CENTRALSERVER_IP/g
	   s/__CrossWorldServerID__/${CROSS_ROUTER_SID}990/g
           s/__SocietyServerIP_Ext__/$SOCIETY_EXT_IPADDR/g
           s/__SocietyServerIP_Int__/$SOCIETY_INT_IPADDR/g" \
    $HOME/bin/setup.ini_$GAME_TYPE_LOWER
}


########
# shrc #
########

#[ -f $HOME/.hosts ] && cat $HOME/.hosts $HOME/bin/hosts > /etc/hosts 2> /dev/null

if [ "$UID" == "0" ] ; then
	ulimit -n 1048576
	ulimit -c unlimited
fi
export LS_COLORS='no=00:fi=00:di=01;33:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:*.xz=49;35;01:*.txz=49;35;01:*.lzma=49;35;01:*.tlz=49;35;01'
export PATH="$PATH:$HOME/bin/:/sbin/"
export HISTSIZE="1000000"
export HISTFILESIZE="1000000000"
export HISTTIMEFORMAT="%Y-%m-%dT%H:%M:%S "
unset HISTCONTROL
shopt -s histappend
shopt -s expand_aliases
#export PAGER="less"
#export LESS="-S -g -f -i -N -p[^|]*"
#export LC_ALL=C
export EDITOR="vi"
alias rm="rm -i"
alias ssh="ssh -o StrictHostKeyChecking=no"
alias ssh-no-ask="ssh -o StrictHostKeyChecking=no"
alias pl="ps -Ao pid,lstart,cmd f|grep '[A-Za-z]\+Server'|grep -v SKServer"
alias pa='sendscript allall nosave <<< "cat /proc/loadavg;ps -Ao pid,lstart,pcpu,s,cmd f|grep \"[A-Za-z]\+Server\"|grep -v SKServer"'
alias xz="$HOME/bin/xz"
export PGUSER="spiritking"

if [ "$HOST_NAME" == "TEST" -o "$HOST_NAME" == "SUB" -o "$HOST_NAME" == "SUBMIT" -o "$HOST_NAME" == "DATA" -o "$HOST_NAME" == "DLC" ] ; then
   export PGPASSWORD="$TEST_SERVER_DB_PASSWORD"
   PS1="\
\[\033[1;31m\]\$?\
\[\033[1;32m\]\!\
\[\033[1;34m\]\D{%H:%M:%S}\
\[\033[1;36m\]\u\
\[\033[1;30m\]@\
\[\033[1;32m\]\$HOST_NAME\
\[\033[1;30m\]:\
\[\033[1;35m\]\w\
\[\033[1;30m\][\
\[\033[1;3"$SHELL_PROMPT_GAME_TYPE_COLOR"m\]\$GAME_TYPE\
\[\033[1;30m\]-\
\[\033[1;3"$SHELL_PROMPT_COUNTRY_CODE_COLOR"m\]\$COUNTRY_CODE_DISPLAY\
\[\033[1;30m\]]\
\[\033[1;34m\]\\$\[\033[0m\] "
else
   export PGPASSWORD="$LIVE_SERVER_DB_PASSWORD"
   PS1="\
\[\033[1;31m\]\$?\
\[\033[1;32m\]\!\
\[\033[1;34m\]\D{%H:%M:%S}\
\[\033[1;31m\]\u\
\[\033[1;30m\]@\
\[\033[1;31m\]\$HOST_NAME\
\[\033[1;30m\]:\
\[\033[1;35m\]\w\
\[\033[1;30m\][\
\[\033[1;3"$SHELL_PROMPT_GAME_TYPE_COLOR"m\]\$GAME_TYPE\
\[\033[1;30m\]-\
\[\033[1;3"$SHELL_PROMPT_COUNTRY_CODE_COLOR"m\]\$COUNTRY_CODE_DISPLAY\
\[\033[1;33m\]LIVE\
\[\033[1;30m\]]\
\[\033[1;31m\]\\$\[\033[0m\] "
fi

