Add example configuration for patchman

This commit is contained in:
kaetemi 2014-02-20 03:35:36 +01:00
parent 1114800455
commit a55ddcc00b
62 changed files with 5763 additions and 0 deletions

View file

@ -0,0 +1,16 @@
shard_ctrl_definitions.txt: Contains all macros for various shard services and shard configurations.
shard_ctrl_mini01.txt: Example configuration for a development domain with a single mainland and a single ring shard running on one machine.
terminal_mini01: Contains the terminal to control the patch managers of the mini01 domain. To deploy the shard configuration, install the patchman services on all services, run the terminal and hit Deploy. You may need to hit Deploy a second time if it gives an error. To install the patch version 1, run 'terminal.install mini01 1', this can be done while a previous version is still running. To launch the new version, stop the shard, then run 'terminal.launch mini01 1', this will swap the live version with the next version, and launch the shard immediately.
shard_ctrl_std01.txt: Example configuration for a full blown domain with multiple shards.
terminal_std01: Contains the terminal to control the patch managers of the mini01 domain.
default: Contains base configuration files of the services containing per-service non-domain non-shard specific values.
cfg: Contains base configuration files with domain and shard type specific values.
admin_install: Contains the scripts to launch the patch manager and the shard. This directory is built into admin_install.tgz by the build pipeline. Subdirectory patchman requires addition of the ryzom_patchman_service executable on the server, the build pipeline adds this file into the tgz archive automatically, do not add it manually. The patchman_service_local.cfg file must be installed manually per server to contain the hostname of the server. The contents of the admin_install.tgz must be installed manually to the server the first time a server is deployed. The working directory is assumed to be /srv/core, which will contain /srv/core/bin and /srv/core/patchman. The configurations under patchman must be modified to match your own domains. Launch /srv/core/bin/startup to launch the patchman services. Run '/srv/core/bin/admin stop' to stop the patchman services. There is one bridge server, which is tied to one domain, but is used by the other domains as well. The bridge server has a folder /srv/core/bridge_server, which is generated by the build pipeline when creating a new server patch.

View file

@ -0,0 +1,129 @@
#!/bin/sh
CMD=$*
if [ "$CMD" = "" ]
then
echo
echo Screen sessions currently running:
screen -list
echo
echo "Commands:"
echo " 'start' to start the admin"
echo " 'stop' to stop the admin"
echo " 'join' to join the admin's screen session"
echo " 'share' to join the admin if session is shared mode"
echo
printf "Enter a command: "
read CMD
fi
if [ "$CMD" = "stop" ]
then
for s in $(screen -list | grep "\.admin.*" | awk '{ print $1 }'); do screen -drR $s -X quit; done
fi
if [ "$CMD" = "start" ]
then
# force the ulimit just in case (so that we can generate cores)
ulimit -c unlimited
# stop any admin sessions that were already up
for s in $(screen -list | grep "\.admin.*" | awk '{ print $1 }'); do screen -drR $s -X quit; done
# start the main admin session
screen -d -m -S admin -c /srv/core/bin/admin.screen.rc
# decide which hostname to use...
HOSTNAME=$(hostname)
if [ $(grep $HOSTNAME /srv/core/patchman/special_patchman_list | wc -w) = 0 ]
then
HOSTNAME=$(hostname -s)
fi
# if this machine has associated special admin functins then start the appropriate admin sessions
echo Looking for sessions for host: $HOSTNAME
for ROLE in $(grep $HOSTNAME /srv/core/patchman/special_patchman_list | awk '{ print $1 }')
do
ROLE_DIR=/srv/core/$ROLE
SRC_CFG_FILE=/srv/core/patchman/patchman_service.$ROLE.cfg
# make sure the cfg file exists for the patchman we're to launch
if [ -e $SRC_CFG_FILE ]
then
# preliminary setup prior to launching special admin patchman
CFG_FILE=$ROLE_DIR/patchman_service.cfg
SCREEN_NAME=admin_$ROLE
mkdir -p $ROLE_DIR
cp -v $SRC_CFG_FILE $CFG_FILE
# wait 2 seconds before launching the next admin to reduce system conflict
sleep 2
# start the next patchman in its own screen session
pushd $ROLE_DIR > /dev/null
echo STARTING $SCREEN_NAME \($ROLE\)
screen -d -m -S $SCREEN_NAME /bin/sh /srv/core/patchman/loop_special_patchman.sh /srv/core/patchman/ryzom_patchman_service -L. -C.
popd > /dev/null
else
# the patchman\'s cfg couln\'t be found so complain and ignore
echo FILE NOT FOUND: $SRC_CFG_FILE
fi
done
# try launching the screen sessions that correspond to the machine type that we have...
# get the domain list
cd /srv/core/patchman/
if [ $(grep $(hostname) auto_start_domain_list |wc -l) -gt 0 ]
then
DOMAIN_LIST=$(grep $(hostname) auto_start_domain_list | cut -d\ -f2-)
elif [ $(grep $(hostname -s) auto_start_domain_list |wc -l) -gt 0 ]
then
DOMAIN_LIST=$(grep $(hostname -s) auto_start_domain_list | cut -d\ -f2-)
elif [ $(grep $(hostname -d) auto_start_domain_list |wc -l) -gt 0 ]
then
DOMAIN_LIST=$(grep $(hostname -d) auto_start_domain_list | cut -d\ -f2-)
else
echo "There are no domains to be autostarted here"
DOMAIN_LIST=none
fi
# if we have a domain list for this machine then deal with it...
if [ "$DOMAIN_LIST" != none ]
then
# iterate over the domain list...
for f in $DOMAIN_LIST
do
# see if we're setup to run this domain
if [ -e /srv/core/${f}.screen.rc ] && [ -e /srv/core/bin/${f} ]
then
# see whether the domain is alredy running
if [ $( screen -list | grep \( | cut -f2 | cut -d. -f2| grep \^$f\$ | wc -l) == 0 ]
then
# the domain isn't running yet so start it
echo '****' starting domain: $f '****'
/srv/core/bin/$f batchstart
else
echo '****' Domain is already running: $f '****'
fi
else
echo skipping domain: $f
fi
done
fi
fi
if [ "$CMD" = "join" ]
then
screen -r -S admin
fi
if [ "$CMD" = "share" ]
then
screen -r -x -S admin
fi

View file

@ -0,0 +1,19 @@
# ------------------------------------------------------------------------------
# SCREEN KEYBINDINGS
# ------------------------------------------------------------------------------
# Remove some stupid / dangerous key bindings
bind ^k
#bind L
bind ^\
# Make them better
bind \\ quit
bind K kill
bind I login on
bind O login off
# patchman
chdir "/srv/core/patchman/"
screen -t patchman /bin/sh ./loop_patchman.sh

View file

@ -0,0 +1,7 @@
if [ -z $1 ]
then
ps -edf | grep _service | grep -v grep
else
ps -edf | grep _service | grep -v grep | grep $*
fi

View file

@ -0,0 +1,30 @@
#!/bin/sh
while true
do
if [ "$2" == "" ]
then
echo
echo USAGE: $0 sleep_time command_line
echo
echo example:
echo $0 3 echo hello world
echo waits 3 seconds then displays 'hello world' repeatedly, asking player to hit enter between each line
echo
break
fi
sleep $1
shift
CMD=$*
while [ "$CMD" != "" ]
do
eval $CMD
echo "press enter"
read toto
done
break
done

View file

@ -0,0 +1,88 @@
#!/bin/sh
CMD=$1
DOMAIN=$(pwd|sed s%/srv/core/%%)
if [ "$CMD" = "" ]
then
echo
echo Screen sessions currently running:
screen -list
echo
echo "Commands:"
echo " 'start' to start the shard"
echo " 'stop' to stop the ${DOMAIN}"
echo " 'join' to join the ${DOMAIN}'s screen session"
echo " 'share' to join the screen session in shared mode"
echo " 'state' to view state information for the ${DOMAIN}"
echo
printf "Enter a command: "
read CMD
fi
if [ "$CMD" = "stop" ]
then
if [ $(screen -list | grep \\\.${DOMAIN} | wc -l) != 1 ]
then
echo Cannot stop domain \'${DOMAIN}\' because no screen by that name appears to be running
screen -list
else
screen -d -r $(screen -list | grep \\\.${DOMAIN}| sed 's/(.*)//') -X quit> /dev/null
rm -v */*.state
rm -v */*launch_ctrl ./global.launch_ctrl
fi
fi
STARTARGS=
if [ "$CMD" = "batchstart" ]
then
STARTARGS='-d -m'
CMD='start'
fi
if [ "$CMD" = "start" ]
then
ulimit -c unlimited
screen -wipe > /dev/null
if [ $( screen -list | grep \\\.${DOMAIN} | wc -w ) != 0 ]
then
echo Cannot start domain \'${DOMAIN}\' because this domain is already started
screen -list | grep $DOMAIN
else
screen $STARTARGS -S ${DOMAIN} -c /srv/core/${DOMAIN}.screen.rc
fi
fi
if [ "$CMD" = "join" ]
then
if [ $(screen -list | grep \\\.${DOMAIN} | wc -l) != 1 ]
then
echo Cannot join domain \'${DOMAIN}\' because no screen by that name appears to be running
screen -list
else
screen -r $(screen -list | grep \\\.${DOMAIN}| sed 's/(.*)//')
fi
fi
if [ "$CMD" = "share" ]
then
if [ $(screen -list | grep \\\.${DOMAIN} | wc -l) != 1 ]
then
echo Cannot join domain \'${DOMAIN}\' because no screen by that name appears to be running
screen -list
else
screen -r -x $(screen -list | grep \\\.${DOMAIN}| sed 's/(.*)//')
fi
fi
if [ "$CMD" = "state" ]
then
echo State of domain ${DOMAIN}:
if [ $(echo */*.state) = "*/*.state" ]
then
echo - No state files found
else
grep RUNNING *state
fi
fi

View file

@ -0,0 +1,4 @@
#!/bin/sh
cd /srv/core/mini01
/bin/sh /srv/core/bin/ryzom_domain_screen_wrapper.sh $*

View file

@ -0,0 +1,11 @@
#!/bin/sh
cd /srv/core
rm */*.state */*/*.launch_ctrl */*/*.state
/bin/bash /srv/core/bin/admin start
# special case for the "ep1.std01.ryzomcore.org" machine - start the admin tool graph sync script
if [ $(hostname) = "ep1.std01.ryzomcore.org" ]
then
nohup /bin/sh /srv/core/bin/sync_rrd_graphs.sh &
fi

View file

@ -0,0 +1,22 @@
#!/bin/sh
echo Launched: $(date)
while true
do
# retrieve ATS files from ATS admin tool machine
rsync -t ep1.std01.ryzomcore.org:ats/graph_datas/* /srv/core/mini01/rrd_graphs/
# deal with live files - duplicate files that correspond to unique services to aid with graphing of su & co
cd /srv/core/std01/rrd_graphs/
for f in $(ls *rrd | awk '/^[^_]*\./'); do cp $f $(cut -d. -f1)_unifier.$(cut -d. -f2-); done
rsync -t /srv/core/std01/rrd_graphs/* csr:std01_rrd_graphs/
# deal with test files files - see comment regarding live files above
cd /srv/core/mini01/rrd_graphs/
for f in $(ls *rrd | awk '/^[^_]*\./'); do cp $f $(echo $f|cut -d. -f1)_unifier.$(echo $f|cut -d. -f2-); done
rsync -t /srv/core/mini01/rrd_graphs/* csr:mini01_rrd_graphs/
# display a groovy message
echo Finished rsync: $(date)
sleep 60
done

View file

@ -0,0 +1,99 @@
// I'm the AES, I'll not connect to myself!
DontUseAES = 1;
// I don't need a connection to a naming service
DontUseNS = 1;
DontLog = 1;
AESAliasName= "aes";
//
DontUseStdIn = 0;
// Adress ofthe admin service (default port is 49996)
ASHost = "ep1.mini01.ryzomcore.org";
// Config for AES
AESPort = "46712";
AESHost = "localhost";
ASPort = "46711";
// in second, -1 for not restarting
RestartDelay = 60;
// how many second before aborting the request if not finished
RequestTimeout = 5;
// log path for advanced log report
LogPath = "/.";
// setup for deployment environment with external configuration system responsible for launching apps and
// for configuring AES services
DontLaunchServicesDirectly = 1;
UseExplicitAESRegistration = 1;
KillServicesOnDisconnect = 1;
// If the update loop is too slow, a thread will produce an assertion.
// By default, the value is set to 10 minutes.
// Set to 0 for no assertion.
UpdateAssertionThreadTimeout = 0;
DefaultMaxExpectedBlockSize = 200000000; // 200 M !
DefaultMaxSentBlockSize = 200000000; // 200 M !
// how to sleep between to network update
// 0 = pipe
// 1 = usleep
// 2 = nanosleep
// 3 = sched_yield
// 4 = nothing
UseYieldMethod = 0;
NegFiltersDebug = { "REQUEST", "GRAPH", "ADMIN", "NET", "ADMIN", "MIRROR", "NC", "PATH", "BSIF" };
NegFiltersInfo = { "REQUEST", "GRAPH", "ADMIN", "NET", "ADMIN", "MIRROR", "NC", "CF", " ping", " pong" };
NegFiltersWarning = { "CT_LRC" };
#include "./aes_alias_name.cfg"
StartCommands=
{
// Create a gateway module
"moduleManager.createModule StandardGateway gw",
// add a layer 5 transport
"gw.transportAdd L5Transport l5",
// open the transport
"gw.transportCmd l5(open)",
/// Create default connection with admin executor service
// Create a gateway module
"moduleManager.createModule StandardGateway gw_aes",
// create the admin executor service module
"moduleManager.createModule AdminExecutorServiceClient aes_client",
"aes_client.plug gw_aes",
// create a layer 3 client to connect to aes gateway
"gw_aes.transportAdd L3Client aes_l3c",
"gw_aes.transportCmd aes_l3c(connect addr="+AESHost+":"+AESPort+")",
// create the admin executor service module
"moduleManager.createModule AdminExecutorService aes",
// create a gateway to connect to as
"moduleManager.createModule StandardGateway asc_gw",
// create a layer 3 client
"asc_gw.transportAdd L3Client l3c",
"asc_gw.transportCmd l3c(connect addr="+ASHost+":"+ASPort+")",
// create a gateway for services to connect
"moduleManager.createModule StandardGateway aes_gw",
// create a layer 3 server
"aes_gw.transportAdd L3Server l3s",
"aes_gw.transportOptions l3s(PeerInvisible)",
"aes_gw.transportCmd l3s(open port="+AESPort+")",
// plug the as
"aes.plug asc_gw",
"aes.plug aes_gw",
};

View file

@ -0,0 +1,99 @@
// I'm the AES, I'll not connect to myself!
DontUseAES = 1;
// I don't need a connection to a naming service
DontUseNS = 1;
DontLog = 1;
AESAliasName= "aes";
//
DontUseStdIn = 0;
// Adress ofthe admin service (default port is 49996)
ASHost = "ep1.std01.ryzomcore.org";
// Config for AES
AESPort = "46702";
AESHost = "localhost";
ASPort = "46701";
// in second, -1 for not restarting
RestartDelay = 60;
// how many second before aborting the request if not finished
RequestTimeout = 5;
// log path for advanced log report
LogPath = "/.";
// setup for deployment environment with external configuration system responsible for launching apps and
// for configuring AES services
DontLaunchServicesDirectly = 1;
UseExplicitAESRegistration = 1;
KillServicesOnDisconnect = 1;
// If the update loop is too slow, a thread will produce an assertion.
// By default, the value is set to 10 minutes.
// Set to 0 for no assertion.
UpdateAssertionThreadTimeout = 0;
DefaultMaxExpectedBlockSize = 200000000; // 200 M !
DefaultMaxSentBlockSize = 200000000; // 200 M !
// how to sleep between to network update
// 0 = pipe
// 1 = usleep
// 2 = nanosleep
// 3 = sched_yield
// 4 = nothing
UseYieldMethod = 0;
NegFiltersDebug = { "REQUEST", "GRAPH", "ADMIN", "NET", "ADMIN", "MIRROR", "NC", "PATH", "BSIF" };
NegFiltersInfo = { "REQUEST", "GRAPH", "ADMIN", "NET", "ADMIN", "MIRROR", "NC", "CF", " ping", " pong" };
NegFiltersWarning = { "CT_LRC" };
#include "./aes_alias_name.cfg"
StartCommands=
{
// Create a gateway module
"moduleManager.createModule StandardGateway gw",
// add a layer 5 transport
"gw.transportAdd L5Transport l5",
// open the transport
"gw.transportCmd l5(open)",
/// Create default connection with admin executor service
// Create a gateway module
"moduleManager.createModule StandardGateway gw_aes",
// create the admin executor service module
"moduleManager.createModule AdminExecutorServiceClient aes_client",
"aes_client.plug gw_aes",
// create a layer 3 client to connect to aes gateway
"gw_aes.transportAdd L3Client aes_l3c",
"gw_aes.transportCmd aes_l3c(connect addr="+AESHost+":"+AESPort+")",
// create the admin executor service module
"moduleManager.createModule AdminExecutorService aes",
// create a gateway to connect to as
"moduleManager.createModule StandardGateway asc_gw",
// create a layer 3 client
"asc_gw.transportAdd L3Client l3c",
"asc_gw.transportCmd l3c(connect addr="+ASHost+":"+ASPort+")",
// create a gateway for services to connect
"moduleManager.createModule StandardGateway aes_gw",
// create a layer 3 server
"aes_gw.transportAdd L3Server l3s",
"aes_gw.transportOptions l3s(PeerInvisible)",
"aes_gw.transportCmd l3s(open port="+AESPort+")",
// plug the as
"aes.plug asc_gw",
"aes.plug aes_gw",
};

View file

@ -0,0 +1,18 @@
#!/bin/sh -
DOMAIN=$(pwd |sed "s%/srv/core/%%")
while(true)
do
echo AESAliasName= \"aes_$(hostname -s)\"\; > ./aes_alias_name.cfg
if [ $(grep "AESPort[ \t]*=" */*cfg | grep -v debug | sed "s/.*=[ \t]*//" | sort -u | wc -l) != 1 ] ; then echo - FIXME: services don\'t agree on AESPort ; read ; fi
echo AESPort=$(grep "AESPort[ \t]*=" */*cfg| grep -v debug | sed "s/.*=[ \t]*//" | sort -u) >> ./aes_alias_name.cfg
if [ $(grep "ASPort[ \t]*=" */*cfg | grep -v debug | sed "s/.*=[ \t]*//" | sort -u | wc -l) != 1 ] ; then echo - FIXME: services don\'t agree on ASPort ; read ; fi
echo ASPort=$(grep "ASPort[ \t]*=" */*cfg| grep -v debug | sed "s/.*=[ \t]*//" | sort -u) >> ./aes_alias_name.cfg
./live/service_ryzom_admin_service/ryzom_admin_service -A. -C. -L. --nobreak --fulladminname=admin_executor_service --shortadminname=AES
sleep 2
done

View file

@ -0,0 +1,47 @@
#!/bin/sh
while true
do
cd /srv/core/
if [ -e /srv/core/admin_install.tgz ]
then
tar xvzf admin_install.tgz
fi
cd /srv/core/patchman/
if [ $(grep $(hostname) patchman_list |wc -l) -gt 0 ]
then
export SERVER_TYPE=$(grep $(hostname) patchman_list | awk '{ print $1 }')
elif [ $(grep $(hostname -s) patchman_list |wc -l) -gt 0 ]
then
export SERVER_TYPE=$(grep $(hostname -s) patchman_list | awk '{ print $1 }')
elif [ $(grep $(hostname -d) patchman_list |wc -l) -gt 0 ]
then
export SERVER_TYPE=$(grep $(hostname -d) patchman_list | awk '{ print $1 }')
else
export SERVER_TYPE=default
echo "ERROR: Neither \'hostname\' \($(hostname)\) nor \'hostname -s\' \($(hostname -s)\) nor \'hostname -d\' \($(hostname -d)\) found in $(pwd)/patchman_list"
fi
CFGFILENAME=patchman_service.${SERVER_TYPE}.cfg
if [ ! -e $CFGFILENAME ]
then
echo ERROR: Failed to locate the following file: $CFGFILENAME
echo using default files
export SERVER_TYPE=default
CFGFILENAME=patchman_service.${SERVER_TYPE}.cfg
if [ ! -e $CFGFILENAME ]
then
echo ERROR: Failed to locate the following DEFAULT file: $CFGFILENAME
echo "press enter"
read toto
exit
fi
fi
echo ssh keys file: $KEYSFILENAME
echo cfg file: $CFGFILENAME
/bin/sh loop_patchman_once.sh
done

View file

@ -0,0 +1,39 @@
#!/bin/sh
CFGFILENAME=patchman_service.${SERVER_TYPE}.cfg
echo cfg file: $CFGFILENAME
AESCFGFILENAME=admin_executor_service_default.${SERVER_TYPE}.cfg
echo aes cfg file: $AESCFGFILENAME
cd /srv/core/patchman
if [ -e $CFGFILENAME ]
then
# setup the config file for the patchman
echo Using configuration file: $CFGFILENAME
cp $CFGFILENAME patchman_service.cfg
# setup the config file for the admin executor service
echo Using aes configuration file: $AESCFGFILENAME
if [ -e $AESCFGFILENAME ] ; then cp $AESCFGFILENAME admin_executor_service_default.cfg ; fi
# start the patchman service
echo Launching patchman...
./ryzom_patchman_service -C. -L.
sleep 2
if [ -e core* ]
then
if [ -e dont_keep_cores ]
then
rm core*
fi
fi
else
echo ERROR: Failed to locate config file: $CFGFILENAME
echo trying again in a few seconds...
sleep 10
fi
cd -

View file

@ -0,0 +1,19 @@
#!/bin/sh
if [ "$1" == "" ]
then
echo
echo USAGE: $0 command_line
echo
echo example:
echo $0 echo hello world
echo displays 'hello world' repeatedly, delaying 3 seconds between repeats
echo
exit
fi
while true
do
sleep 3
eval $*
done

View file

@ -0,0 +1,106 @@
#! /bin/sh -
# note: this script should be run from a domain directory such as /srv/core/std01 or /srv/core/mini01
DOMAIN=$(pwd |sed 's/\/srv\/core\///')
if [ "patchman" = "$DOMAIN" ]; then DOMAIN= ; fi
if [ "bin" = "$DOMAIN" ]; then DOMAIN= ; fi
if [ "$DOMAIN" != $(echo $DOMAIN|sed 's/\///g') ]; then DOMAIN= ; fi
if [ _"${DOMAIN}"_ = __ ]
then
echo This is not a valid directory for running this script
exit
fi
# tell the aes to shut everybody down
printf "0" > ./global.launch_ctrl
# before entering the 'Waiting for Services' loop, get rid of the ras/ras.state file because the ras doesn't stop properly otherwise
if [ -f ras/ras.state ]
then
rm ras/ras.state
fi
# while there are still services running, wait
while [ $(grep -i RUNNING . */*.state|wc -l) != 0 ]
do
echo $DOMAIN: Waiting for $(grep -i RUNNING . */*.state|wc -l) Services to stop
sleep 2
done
# stop the screen for the shard (if there is one)
screen -drR -S $DOMAIN -X quit> /dev/null
sleep 1
# rename any old core files
for COREFILE in */core*
do
mv $COREFILE $(echo $COREFILE|sed "s%/.*%%")/v$(cat live/version)_$(echo $COREFILE|sed "s%.*/%%")
done
# rename any old log files
for LOGFILE in */log*.log
do
mv $LOGFILE $(echo $LOGFILE|sed "s%/.*%%")/v$(cat live/version)_$(echo $LOGFILE|sed "s%.*/%%")
done
# swap the live and next directories
rm -r old_live/* 2> /dev/null
echo next=$(cat next/version) live=$(cat live/version)
mv live old_live
echo next=$(cat next/version) old_live=$(cat old_live/version)
mv next live
echo old_live=$(cat old_live/version) live=$(cat live/version)
mv old_live next
echo next=$(cat next/version) live=$(cat live/version)
# restore any old log files in case of return to previous version
for LOGFILE in */v$(cat live/version)_log*.log
do
mv $LOGFILE $(echo $LOGFILE|sed "s%/.*%%")/$(echo $LOGFILE|sed "s%.*/.*_%%")
done
# make the ryzom services executable
chmod 775 live/service_*/*_service 2> /dev/null
# special case to deal with www files that need a local cfg file to be properly setup
if [ -e ./live/data_www/config.php ]
then
echo \<?php >./live/data_www/config.php
echo >>./live/data_www/config.php
echo \$USERS_DIR = \'$(pwd)/www\'\; >>./live/data_www/config.php
echo \$TEMPLATE_DIR = \'./template\'\; >>./live/data_www/config.php
echo >>./live/data_www/config.php
echo \?\> >>./live/data_www/config.php
mkdir -p $(pwd)/save_shard/www
fi
# remove any launch ctrl files that are floating about
rm -v */*.*launch_ctrl *.*launch_ctrl 2> /dev/null
# initialise the state files for the new services to "xxxxx" and remove directories that are no longer of interest
for D in $(ls */log.log | sed "s%/.*%%" | sort -u)
do
if [ $(grep \"$D\" admin_executor_service.cfg | wc -l) == 1 ]
then
printf "xxxxx" > $D/$D.state
else
mkdir -p old
mv $D old/
fi
done
# tell the aes to launch everybody...
printf "1" > ./global.launch_ctrl
# create a script for accessing the screen for this shard
SCRIPT_FILE=/srv/core/bin/${DOMAIN}
echo "#!/bin/sh" > $SCRIPT_FILE
echo "cd "$(pwd) >> $SCRIPT_FILE
echo '/bin/sh /srv/core/bin/ryzom_domain_screen_wrapper.sh $*' >> $SCRIPT_FILE
chmod +x $SCRIPT_FILE
# launch the screen again now that were all done (aes will launch everybody when he comes online)
cp /srv/core/$DOMAIN/${DOMAIN}.screen.rc /srv/core/${DOMAIN}.screen.rc
#screen -S $DOMAIN -d -m -c /srv/core/${DOMAIN}.screen.rc
$SCRIPT_FILE batchstart

View file

@ -0,0 +1,6 @@
// default values for different sites
mini01 mini01.ryzomcore.org
mini01 ep1.mini01.ryzomcore.org
std01 std01.ryzomcore.org
std01 core.ryzomcore.org

View file

@ -0,0 +1,37 @@
#include "/srv/core/patchman/patchman_service_base_linux.cfg"
#include "/srv/core/patchman_service_local.cfg"
StartCommands =
{
//------------------------------------------------------------------------------
// Setup Bridge Gateway (for retrieving files)
// Create a gateway module on layer 3 transport and open it
"moduleManager.createModule StandardGateway bridge_gw",
"bridge_gw.transportAdd L3Client l3client",
"bridge_gw.transportCmd l3client(connect addr=ep1.mini01.ryzomcore.org:44749)",
//------------------------------------------------------------------------------
// Setup Manager Gateway (for deployment commands)
// Create a gateway module on layer 3 transport and open it
"moduleManager.createModule StandardGateway spm_gw",
"spm_gw.transportAdd L3Client l3client",
"spm_gw.transportCmd l3client(connect addr=ep1.mini01.ryzomcore.org:44752)",
//------------------------------------------------------------------------------
// Setup the PAM module
"moduleManager.createModule PatchmanAdminModule pam",
"pam.plug spm_gw",
"pam.plug bridge_gw",
};
SpaPreCmdLineText="/bin/sh /srv/core/patchman/service_launcher.sh";
DeploymentRootDirectory="/srv/core/patchman/";
MakeInstalledVersionLiveCmdLine="/bin/sh /srv/core/patchman/make_next_live.sh";
SpaLaunchAESCmdLine="/bin/sh /srv/core/patchman/loop_aes.sh";
InstallArchiveDirectory="/srv/core/";
InstallArchiveFileName="admin_install.tgz";

View file

@ -0,0 +1,45 @@
#include "/srv/core/patchman/patchman_service_base_linux.cfg"
#include "/srv/core/patchman_service_local.cfg"
StartCommands =
{
//------------------------------------------------------------------------------
// Setup Bridge Gateway (for retrieving files)
// Create a gateway module on layer 3 transport and open it
"moduleManager.createModule StandardGateway bridge_gw",
"bridge_gw.transportAdd L3Client l3client",
"bridge_gw.transportCmd l3client(connect addr=ep1.mini01.ryzomcore.org:44749)",
//------------------------------------------------------------------------------
// Setup Manager Gateway (for deployment commands)
// Create a gateway module on layer 3 transport and open it
"moduleManager.createModule StandardGateway spm_gw",
"spm_gw.transportAdd L3Client l3client",
"spm_gw.transportCmd l3client(connect addr=ep1.mini01.ryzomcore.org:44751)",
//------------------------------------------------------------------------------
// Setup patch applier
// setup an 'spa' module for applying patches as required
"moduleManager.createModule ServerPatchApplier spa path=/srv/core host=" + SPAHost,
"spa.plug bridge_gw",
"spa.plug spm_gw",
//------------------------------------------------------------------------------
// Setup the PAM module
"moduleManager.createModule PatchmanAdminModule pam",
"pam.plug spm_gw",
"pam.plug bridge_gw",
};
SpaPreCmdLineText="/bin/sh /srv/core/patchman/service_launcher.sh";
DeploymentRootDirectory="/srv/core/patchman/";
MakeInstalledVersionLiveCmdLine="/bin/sh /srv/core/patchman/make_next_live.sh";
SpaLaunchAESCmdLine="/bin/sh /srv/core/patchman/loop_aes.sh";
InstallArchiveDirectory="/srv/core/";
InstallArchiveFileName="admin_install.tgz";

View file

@ -0,0 +1,65 @@
// *****************************************************************************
// *** Setup for the mini01 entry point Machine
// *****************************************************************************
#include "/srv/core/patchman/patchman_service_base_linux.cfg"
#include "/srv/core/patchman_service_local.cfg"
//--------------------------------------------------------------------------------
// Displayed Variables...
DisplayedVariables +=
{
};
//--------------------------------------------------------------------------------
// Start Commands for configuring modules
StartCommands +=
{
//------------------------------------------------------------------------------
// Setup the mini01 hub
// Create a gateway modul on layer 3 transport and open it
"moduleManager.createModule StandardGateway hub_mini01",
"hub_mini01.transportAdd L3Server l3server",
"hub_mini01.transportCmd l3server(open port=44749)",
//------------------------------------------------------------------------------
// Setup the bridge hub
// Create a gateway module on layer 3 transport and open it
"moduleManager.createModule StandardGateway hub_bridge",
"hub_bridge.transportAdd L3Server l3server",
"hub_bridge.transportCmd l3server(open port=44745)",
//------------------------------------------------------------------------------
// Setup Manager Gateway (for deployment commands)
// Create a gateway module on layer 3 transport and open it
"moduleManager.createModule StandardGateway spm_gw",
"spm_gw.transportAdd L3Client l3client",
"spm_gw.transportCmd l3client(connect addr=ep1.mini01.ryzomcore.org:44751)",
//------------------------------------------------------------------------------
// Setup mini01 Bridge module
// setup a bridge module to relay files from internal to mini01 networks andd plug it in
"moduleManager.createModule ServerPatchBridge bridge path=/srv/core/bridge_server/",
"bridge.plug hub_mini01",
"bridge.plug hub_bridge",
"bridge.plug spm_gw",
//------------------------------------------------------------------------------
// Setup the PAM module
"moduleManager.createModule PatchmanAdminModule pam",
"pam.plug hub_mini01",
"pam.plug spm_gw",
};

View file

@ -0,0 +1,41 @@
// *****************************************************************************
// *** Setup for the mini01 entry point Machine
// *****************************************************************************
#include "/srv/core/patchman/patchman_service_base_linux.cfg"
#include "/srv/core/patchman_service_local.cfg"
//--------------------------------------------------------------------------------
// Displayed Variables...
DisplayedVariables +=
{
};
//--------------------------------------------------------------------------------
// Start Commands for configuring modules
StartCommands +=
{
//------------------------------------------------------------------------------
// Setup the mini01 spm hub
"moduleManager.createModule StandardGateway hub",
"hub.transportAdd L3Server l3server",
"hub.transportCmd l3server(open port=44751)",
//------------------------------------------------------------------------------
// Setup manager module for mini01 version numbers etc and plug it in
"moduleManager.createModule ServerPatchManager spm_mini01 name=spm_mini01",
"spm_mini01.plug hub",
//------------------------------------------------------------------------------
// Setup the PAM module
"moduleManager.createModule PatchmanAdminModule pam",
"pam.plug hub",
};

View file

@ -0,0 +1,45 @@
#include "/srv/core/patchman/patchman_service_base_linux.cfg"
#include "/srv/core/patchman_service_local.cfg"
StartCommands =
{
//------------------------------------------------------------------------------
// Setup Bridge Gateway (for retrieving files)
// Create a gateway module on layer 3 transport and open it
"moduleManager.createModule StandardGateway bridge_gw",
"bridge_gw.transportAdd L3Client l3client",
"bridge_gw.transportCmd l3client(connect addr=ep1.mini01.ryzomcore.org:44749)",
//------------------------------------------------------------------------------
// Setup Manager Gateway (for deployment commands)
// Create a gateway module on layer 3 transport and open it
"moduleManager.createModule StandardGateway spm_gw",
"spm_gw.transportAdd L3Client l3client",
"spm_gw.transportCmd l3client(connect addr=ep1.std01.ryzomcore.org:44752)",
//------------------------------------------------------------------------------
// Setup patch applier
// setup an 'spa' module for applying patches as required
"moduleManager.createModule ServerPatchApplier spa path=/srv/core host=" + SPAHost,
"spa.plug bridge_gw",
"spa.plug spm_gw",
//------------------------------------------------------------------------------
// Setup the PAM module
"moduleManager.createModule PatchmanAdminModule pam",
"pam.plug spm_gw",
"pam.plug bridge_gw",
};
SpaPreCmdLineText="/bin/sh /srv/core/patchman/service_launcher.sh";
DeploymentRootDirectory="/srv/core/patchman/";
MakeInstalledVersionLiveCmdLine="/bin/sh /srv/core/patchman/make_next_live.sh";
SpaLaunchAESCmdLine="/bin/sh /srv/core/patchman/loop_aes.sh";
InstallArchiveDirectory="/srv/core/";
InstallArchiveFileName="admin_install.tgz";

View file

@ -0,0 +1,41 @@
// *****************************************************************************
// *** Setup for the std01 entry point Machine
// *****************************************************************************
#include "/srv/core/patchman/patchman_service_base_linux.cfg"
#include "/srv/core/patchman_service_local.cfg"
//--------------------------------------------------------------------------------
// Displayed Variables...
DisplayedVariables +=
{
};
//--------------------------------------------------------------------------------
// Start Commands for configuring modules
StartCommands +=
{
//------------------------------------------------------------------------------
// Setup the std01 spm hub
"moduleManager.createModule StandardGateway hub",
"hub.transportAdd L3Server l3server",
"hub.transportCmd l3server(open port=44752)",
//------------------------------------------------------------------------------
// Setup manager module for std01 version numbers etc and plug it in
"moduleManager.createModule ServerPatchManager spm_std01 name=spm_std01",
"spm_std01.plug hub",
//------------------------------------------------------------------------------
// Setup the PAM module
"moduleManager.createModule PatchmanAdminModule pam",
"pam.plug hub",
};

View file

@ -0,0 +1,17 @@
//--------------------------------------------------------------------------------
// Stuff common to all patchman services
DontUseAES = 1;
DontUseTS = 1;
DontUseNS = 1;
UpdateAssertionThreadTimeout = 0;
//--------------------------------------------------------------------------------
// Common Filters
// where to save specific shard data (ie: player backup)
NegFiltersDebug = { "NET", "VERBOSE", "GUSREP" };
NegFiltersInfo = { "LNET" };
NegFiltersWarning = { "LNETL", "CT_LRC", "VAR:" };
FileReceiverDataBlockSize = 1000000;
FileReceiverMaxMessageCount = 10;

View file

@ -0,0 +1,17 @@
//--------------------------------------------------------------------------------
// Stuff for Linux (as opposed to Windows)
#include "patchman_service_base.cfg"
// For windows boxes we dissable out stdin thread
DontUseStdIn = 0;
// how to sleep between to network update
// 0 = pipe
// 1 = usleep
// 2 = nanosleep
// 3 = sched_yield
// 4 = nothing
UseYieldMethod = 0;

View file

@ -0,0 +1,16 @@
# ------------------------------------------------------------------------------
# SCREEN KEYBINDINGS
# ------------------------------------------------------------------------------
# Remove some stupid / dangerous key bindings
bind ^k
#bind L
bind ^\
# Make them better
bind \\ quit
bind K kill
bind I login on
bind O login off
screen -t aes /bin/sh /srv/core/patchman/loop_aes.sh

View file

@ -0,0 +1,97 @@
#!/bin/sh
# the object is to make a launcher script that works with a command file to determine when to launch the application that it is responsible for
DOMAIN=$(pwd |sed "s%/srv/core/%%" | sed "s%/.*%%")
NAME_BASE=$(pwd | sed 's/\/srv\/core\///' | sed 's/^.*\///')
#if [ _$DOMAIN == _pre_live ]
# then
CTRL_FILE=${NAME_BASE}.launch_ctrl
NEXT_CTRL_FILE=${NAME_BASE}.deferred_launch_ctrl
#elif [ _$DOMAIN == _pre_pre_live ]
# then
# CTRL_FILE=${NAME_BASE}.launch_ctrl
# NEXT_CTRL_FILE=${NAME_BASE}.deferred_launch_ctrl
#else
# CTRL_FILE=${NAME_BASE}_immediate.launch_ctrl
# NEXT_CTRL_FILE=${NAME_BASE}_waiting.launch_ctrl
#fi
STATE_FILE=${NAME_BASE}.state
START_COUNTER_FILE=${NAME_BASE}.start_count
CTRL_CMDLINE=$*
echo
echo ---------------------------------------------------------------------------------
echo Starting service launcher
echo ---------------------------------------------------------------------------------
printf "%-16s = " CMDLINE ; echo $CTRL_CMDLINE
printf "%-16s = " CTRL_FILE ; echo $CTRL_FILE
printf "%-16s = " NEXT_CTRL_FILE ; echo $NEXT_CTRL_FILE
printf "%-16s = " STATE_FILE ; echo $STATE_FILE
echo ---------------------------------------------------------------------------------
echo
# reinit the start counter
echo 0 > $START_COUNTER_FILE
START_COUNTER=0
echo Press ENTER to launch program
while true
do
# see if the conditions are right to launch the app
if [ -e $CTRL_FILE ]
then
# a control file exists so read it's contents
CTRL_COMMAND=_$(cat $CTRL_FILE)_
# do we have a 'launch' command?
if [ $CTRL_COMMAND = _LAUNCH_ ]
then
# update the start counter
START_COUNTER=$(( $START_COUNTER + 1 ))
echo $START_COUNTER > $START_COUNTER_FILE
# big nasty hack to deal with the special cases of ryzom_naming_service and ryzom_admin_service who have badly names cfg files
for f in ryzom_*cfg
do
cp $f $(echo $f | sed "s/ryzom_//")
done
# we have a launch command so prepare, launch, wait for exit and do the housekeeping
echo -----------------------------------------------------------------------
echo Launching ...
echo
printf RUNNING > $STATE_FILE
$CTRL_CMDLINE
echo -----------------------------------------------------------------------
printf STOPPED > $STATE_FILE
# consume (remove) the control file to allow start once
rm $CTRL_FILE
echo Press ENTER to relaunch
fi
fi
# either we haven't launched the app yet or we have launched and it has exitted
if [ -e $NEXT_CTRL_FILE ]
then
# we have some kind of relaunch directive lined up so deal with it
mv $NEXT_CTRL_FILE $CTRL_FILE
else
# give the terminal user a chance to press enter to provoke a re-launch
HOLD=`sh -ic '{ read a; echo "ENTER" 1>&3; kill 0; } | { sleep 2; kill 0; }' 3>&1 2>/dev/null`
if [ _${HOLD}_ != _HOLD_ ]
then
printf LAUNCH > $CTRL_FILE
fi
fi
done

View file

@ -0,0 +1,11 @@
// mini01 - mini manager
mini01_spm ep1.mini01.ryzomcore.org
mini01_bridge ep1.mini01.ryzomcore.org
// std01 - std manager
std01_spm ep1.std01.ryzomcore.org
std01_bridge ep1.std01.ryzomcore.org

View file

@ -0,0 +1 @@
SPAHost = "ep1.mini01.ryzomcore.org";

View file

@ -0,0 +1,125 @@
// Configure module gateway for layer 5 module comm
StartCommands +=
{
// Create a gateway module
"moduleManager.createModule StandardGateway gw",
// add a layer 5 transport
"gw.transportAdd L5Transport l5",
// open the transport
"gw.transportCmd l5(open)",
/// Create default connection with admin executor service
// Create a gateway module
"moduleManager.createModule StandardGateway gw_aes",
// create the admin executor service module
"moduleManager.createModule AdminExecutorServiceClient aes_client",
"aes_client.plug gw_aes",
// create a layer 3 client to connect to aes gateway
"gw_aes.transportAdd L3Client aes_l3c",
"gw_aes.transportCmd aes_l3c(connect addr="+AESHost+":"+AESPort+")",
};
/// A list of vars to graph for any service
GraphVars =
{
"ProcessUsedMemory", "60000", // every minute
};
/* Force default value for PDLib directory (e.g. SaveFilesDirectory...)
* PLEASE NOTICE THAT THIS LINE MUST BE LEFT TO ""
* Only log analyser must have the $shard parameter to find all shards root directory
*/
PDRootDirectory = "";
// Log PD updates to log file (1 enabled, 0 disabled), see PDLogSaveDirectory to choose where to log
PDEnableLog = 1;
// Log PD StringManager updates to log file (1 enabled, 0 disabled), see PDLogSaveDirectory to choose where to log
PDEnableStringLog = 0;
// Number of seconds between 2 logs to file
PDLogUpdate = 10;
// MySGL wrapper strict mode - controls use of asserts if SQL requests fail
MSWStrictMode=0;
// This is the mapping for logical continent to physical one
ContinentNameTranslator =
{
"matis_newbie", "matis",
"zorai_newbie", "zorai",
"terre", "terre_oubliee",
"sources", "sources_interdites"
};
NegFiltersDebug = { "ZZZZZZZZZZZ" };
NegFiltersInfo = { "ZZZZZZZZZZZ" };
NegFiltersWarning = { "ZZZZZZZZZZZ" };
//NegFiltersDebug = { "NET", "ADMIN", "MIRROR", "NC", "PATH" };
//NegFiltersInfo = { "NET", "ADMIN", "MIRROR", "NC", "CF", "TimerManagerUpdate" };
// NegFiltersWarning = { "CT_LRC", "AnimalSpawned" };
// Block the system in the tick service that provokes stalls when overloaded
WaitForBSThreshold=0;
// Only produce log*.log files and not <service name>*.log
DontLog=1;
IgnoredFiles = { "continent.cfg", "__read_me.txt", "bandit.html", "flora_primr.primitive" };
// If the update loop is too slow, a thread will produce an assertion.
// By default, the value is set to 10 minutes.
// Set to 0 for no assertion.
UpdateAssertionThreadTimeout = 6000000;
DefaultMaxExpectedBlockSize = 200000000; // 200 M !
DefaultMaxSentBlockSize = 200000000; // 200 M !
// MS Packet size limit in bytes, PER DATASET (warning: depending on the weights, limits per property may be very small)
MaxOutBandwidth = 100000000;
// how to sleep between 2 network updates
// 0 = pipe
// 1 = usleep
// 2 = nanosleep
// 3 = sched_yield
// 4 = nothing
UseYieldMethod = 0;
// The privileges needed to access any ring session
PrivilegeForSessionAccess = ":DEV:SGM:GM:SG:";
// The max number of ring points (aka ring access) for each ecosystem
MaxRingPoints = "A1:D7:F7:J8:L6:R13";
// Level limit for newb scenarios
FreeTrialSkillLimit=21;
// Level limit for newb scenarios
DefaultInterShardExchangeLevelCap=0;
// Configuration for DSS
MaxNpcs = 300;
MaxStaticObjects = 200;
// the following variable must be defined but should be empty - it's presence is used to change the behaviour
// of the packed sheet reader
GeorgePaths = { "" };
// Disable nel net verbose logging
VerboseNETTC = 0;
VerboseLNETL0 = 0;
VerboseLNETL1 = 0;
VerboseLNETL2 = 0;
VerboseLNETL3 = 0;
VerboseLNETL4 = 0;
VerboseLNETL5 = 0;
VerboseLNETL6 = 0;
// Disable ryzom verbose logging
VerboseMIRROR = 0;
VerboseRingRPLog = 0;
VerboseCDBGroup = 0;

View file

@ -0,0 +1,80 @@
// What to do with characters coming from another mainland shard?
// 0: teleport to the stored session id
// 1: let the character play anyway, but leave the stored session id unchanged
// 2: assign the stored session id with FixedSessionId and let play
AllowCharsFromAllSessions = 0;
// Use Shard Unifier or not
DontUseSU = 0;
// the domain's set of useful addresses
LSHost = SUHost;
RSMHost = SUHost;
// MFS config
WebSrvUsersDirectory = "";
HoFHDTDirectory = "/srv/core/www/hof/hdt";
// BS Specifics --------------------------------------------------------------------------
// BS - set to 1 if a BS is not part of a naming service group (then BS not disclosed
// to other services by the Layer 5, i.e. the services sending requests to BS have
// to know its/their address(es) by another mean)
BSDontUseNS = 1;
// BS - set the host of the naming service where the BS register
BSNSHost = "localhost";
UseBS = 1;
XMLSave = 0;
// Where to save specific shard data (ie: player backup), relatively to SaveShardRoot
SaveFilesDirectory = "";
// where to save generic shard data (ie: packed_sheet)
WriteFilesDirectory = "r2_shard/data_shard";
// Will SaveFilesDirectory will be converted to a full path?
ConvertSaveFilesDirectoryToFullPath = 0;
// BS - Root directory where data are backuped to
IncrementalBackupDirectory = "../incremental_backup";
// IOS - Directory to store ios.string_cache file
StringManagerCacheDirectory = "../data_shard_local";
// IOS - Directory to log chat into
LogChatDirectory = "../data_shard_local";
// MFS - Directories
WebRootDirectory = "../www";
// Root directory where data from shards are stored into
SaveShardRoot = "../save_shard/";
// SU Specifics --------------------------------------------------------------------------
// SU - set to 1 if SU didn't use a naming service
SUDontUseNS = 1;
// SU - host for the NS used by SU
SUNSHost = "localhost";
// SU - listen address of the SU service (for L5 connections)
SUAddress = SUHost+":"+SUPort;
// SU - nel and ring database names
DBNelName = "nel";
DBRingName = "ring_mini01";
// Nel DB user
DBNelUser = "su_agent";
// Ring DB user
DBRingUser = "su_agent";
// SU - password to access to the nel database with DBNelUseruser (default is no password)
DBNelPass = "p4ssw0rd";
// SU - password to access to the ring database with DBRingUser (default is no password)
DBRingPass = "p4ssw0rd";
// WS Specifics --------------------------------------------------------------------------
// WS - use or not the legacy WelcomeService from nel ns (only for backward compatibility during transition to ring)
DontUseLSService = 1;
// Global config --------------------------------------------------------------------------
// set to 0 if you want to use the admin system
DontUseAES = 1;
// Dissable generation / display of nldebug messages
DissableNLDebug = 1;

View file

@ -0,0 +1,81 @@
// What to do with characters coming from another mainland shard?
// 0: teleport to the stored session id
// 1: let the character play anyway, but leave the stored session id unchanged
// 2: assign the stored session id with FixedSessionId and let play
AllowCharsFromAllSessions = 0;
// Use Shard Unifier or not
DontUseSU = 0;
// the domain's set of useful addresses
LSHost = SUHost;
RSMHost = SUHost;
// MFS config
WebSrvUsersDirectory = "";
// WebRootDirectory = "/srv/core/std01/save_shard/www"; // DUPLICATE LOWER
HoFHDTDirectory = "/srv/core/www/hof/hdt";
// BS Specifics --------------------------------------------------------------------------
// BS - set to 1 if a BS is not part of a naming service group (then BS not disclosed
// to other services by the Layer 5, i.e. the services sending requests to BS have
// to know its/their address(es) by another mean)
BSDontUseNS = 1;
// BS - set the host of the naming service where the BS register
BSNSHost = "localhost";
UseBS = 1;
XMLSave = 0;
// Where to save specific shard data (ie: player backup), relatively to SaveShardRoot
SaveFilesDirectory = "";
// where to save generic shard data (ie: packed_sheet)
WriteFilesDirectory = "r2_shard/data_shard";
// Will SaveFilesDirectory will be converted to a full path?
ConvertSaveFilesDirectoryToFullPath = 0;
// BS - Root directory where data are backuped to
IncrementalBackupDirectory = "../incremental_backup";
// IOS - Directory to store ios.string_cache file
StringManagerCacheDirectory = "../data_shard_local";
// IOS - Directory to log chat into
LogChatDirectory = "../data_shard_local";
// MFS - Directories
WebRootDirectory = "../www";
// Root directory where data from shards are stored into
SaveShardRoot = "../save_shard/";
// SU Specifics --------------------------------------------------------------------------
// SU - set to 1 if SU didn't use a naming service
SUDontUseNS = 1;
// SU - host for the NS used by SU
SUNSHost = "localhost";
// SU - listen address of the SU service (for L5 connections)
SUAddress = SUHost+":"+SUPort;
// SU - nel and ring database names
DBNelName = "nel";
DBRingName = "ring_std01";
// Nel DB user
DBNelUser = "su_agent";
// Ring DB user
DBRingUser = "su_agent";
// SU - password to access to the nel database with DBNelUseruser (default is no password)
DBNelPass = "p4ssw0rd";
// SU - password to access to the ring database with DBRingUser (default is no password)
DBRingPass = "p4ssw0rd";
// WS Specifics --------------------------------------------------------------------------
// WS - use or not the legacy WelcomeService from nel ns (only for backward compatibility during transition to ring)
DontUseLSService = 1;
// Global config --------------------------------------------------------------------------
// set to 0 if you want to use the admin system
DontUseAES = 1;
// Dissable generation / display of nldebug messages
DissableNLDebug = 1;

View file

@ -0,0 +1,50 @@
// Player limits (AIS, EGS, WS, FS)
NbPlayersLimit = 1000;
NbGuildLimit = 15000;
PlayerLimit = NbPlayersLimit;
ClientLimit = 1000;
// Set this shard as a ring (1) or mainland (0) shard (main behavior switch)
IsRingShard = 0;
// Set a mainland SessionId.
// Live: Must be 0 for ring shards, non-zero (usually ShardId) for mainland shards
// Dev: Can be non-zero to initially connect a client to a ring shard
NoWSShardId = ShardId;
FixedSessionId = ShardId;
// Mirror limits
DatasetSizefe_temp = 300000;
DatasetSizefame = 26000;
// FS Specifics --------------------------------------------------------------------------
// Client bandwidth ratio, set to 1 for standard opration, more than one allocate more bandwidth
BandwidthRatio = 1;
// EGS Specifics --------------------------------------------------------------------------
// Entity Limits (EGS)
NbObjectsLimit = 2000;
NbNpcSpawnedByEGSLimit = 5;
NbForageSourcesLimit = 1000;
NbToxicCloudsLimit = 200;
// AIS Specifics --------------------------------------------------------------------------
// Entity Limits (AIS)
NbPetLimit = NbPlayersLimit*4;
NbFaunaLimit = 50000;
NbNpcLimit = 20000;
NbFxLimit = 500;
// This is the list of continent to use with their unique instance number
UsedContinents =
{
"indoors", "4", // NB : this is for uninstanciated indoors building.
"newbieland", "20"
};
// define the primitives configuration used.
UsedPrimitives =
{
"newbieland_all",
// "newbieland",
};

View file

@ -0,0 +1,51 @@
// Player limits (AIS, EGS, WS, FS)
NbPlayersLimit = 1000;
NbGuildLimit = 15000;
PlayerLimit = NbPlayersLimit;
ClientLimit = 1000;
// Set this shard as a ring (1) or mainland (0) shard (main behavior switch)
IsRingShard = 1;
// Set a mainland SessionId.
// Live: Must be 0 for ring shards, non-zero (usually ShardId) for mainland shards
// Dev: Can be non-zero to initially connect a client to a ring shard
NoWSShardId = ShardId;
FixedSessionId = 0;
// Mirror limits
DatasetSizefe_temp = 200000;
DatasetSizefame = 26000;
// FS Specifics --------------------------------------------------------------------------
// Client bandwidth ratio, set to 1 for standard operation, more than one allocate more bandwidth
BandwidthRatio = 2;
// EGS Specifics --------------------------------------------------------------------------
// Entity Limits (EGS)
NbObjectsLimit = 2000;
NbNpcSpawnedByEGSLimit = 5;
NbForageSourcesLimit = 100;
NbToxicCloudsLimit = 20;
// AIS Specifics --------------------------------------------------------------------------
// Entity Limits (AIS)
NbPetLimit = NbPlayersLimit*4;
NbFaunaLimit = 5000;
NbNpcLimit = 35000;
NbFxLimit = 500;
// This is the list of continent to use with their unique instance number
UsedContinents =
{
"r2_desert", "10000",
"r2_forest", "10001",
"r2_jungle", "10002",
"r2_lakes", "10003",
"r2_roots", "10004",
};
// define the primitives configuration used.
UsedPrimitives =
{
};

View file

@ -0,0 +1 @@
// This cfg file defines stuff that's common to all mini unifier shards

View file

@ -0,0 +1,50 @@
// Player limits (AIS, EGS, WS, FS)
NbPlayersLimit = 5000;
NbGuildLimit = 15000;
PlayerLimit = NbPlayersLimit;
ClientLimit = 1000;
// Set this shard as a ring (1) or mainland (0) shard (main behavior switch)
IsRingShard = 0;
// Set a mainland SessionId.
// Live: Must be 0 for ring shards, non-zero (usually ShardId) for mainland shards
// Dev: Can be non-zero to initially connect a client to a ring shard
NoWSShardId = ShardId;
FixedSessionId = ShardId;
// Mirror limits
DatasetSizefe_temp = 600000;
DatasetSizefame = 26000;
// FS Specifics --------------------------------------------------------------------------
// Client bandwidth ratio, set to 1 for standard opration, more than one allocate more bandwidth
BandwidthRatio = 1;
// EGS Specifics --------------------------------------------------------------------------
// Entity Limits (EGS)
NbObjectsLimit = 2000;
NbNpcSpawnedByEGSLimit = 5000;
NbForageSourcesLimit = 10000;
NbToxicCloudsLimit = 5000;
// AIS Specifics --------------------------------------------------------------------------
// Entity Limits (AIS)
NbPetLimit = NbPlayersLimit*4;
NbFaunaLimit = 50000;
NbNpcLimit = 20000;
NbFxLimit = 500;
// This is the list of continent to use with their unique instance number
UsedContinents =
{
"indoors", "4", // NB : this is for uninstanciated indoors building.
"newbieland", "20"
};
// define the primitives configuration used.
UsedPrimitives =
{
"newbieland_all",
// "newbieland",
};

View file

@ -0,0 +1,51 @@
// Player limits (AIS, EGS, WS, FS)
NbPlayersLimit = 5000;
NbGuildLimit = 15000;
PlayerLimit = NbPlayersLimit;
ClientLimit = 1000;
// Set this shard as a ring (1) or mainland (0) shard (main behavior switch)
IsRingShard = 1;
// Set a mainland SessionId.
// Live: Must be 0 for ring shards, non-zero (usually ShardId) for mainland shards
// Dev: Can be non-zero to initially connect a client to a ring shard
NoWSShardId = ShardId;
FixedSessionId = 0;
// Mirror limits
DatasetSizefe_temp = 600000;
DatasetSizefame = 26000;
// FS Specifics --------------------------------------------------------------------------
// Client bandwidth ratio, set to 1 for standard operation, more than one allocate more bandwidth
BandwidthRatio = 2;
// EGS Specifics --------------------------------------------------------------------------
// Entity Limits (EGS)
NbObjectsLimit = 2000;
NbNpcSpawnedByEGSLimit = 5000;
NbForageSourcesLimit = 10000;
NbToxicCloudsLimit = 5000;
// AIS Specifics --------------------------------------------------------------------------
// Entity Limits (AIS)
NbPetLimit = NbPlayersLimit*4;
NbFaunaLimit = 50000;
NbNpcLimit = 50000;
NbFxLimit = 500;
// This is the list of continent to use with their unique instance number
UsedContinents =
{
"r2_desert", "10000",
"r2_forest", "10001",
"r2_jungle", "10002",
"r2_lakes", "10003",
"r2_roots", "10004",
};
// define the primitives configuration used.
UsedPrimitives =
{
};

View file

@ -0,0 +1 @@
// This cfg file defines stuff that's common to all standard unifier shards

View file

@ -0,0 +1,353 @@
// a list of system command that run at server startup.
SystemCmd = {};
//NegFiltersDebug += { "LNET", "HNET", "FEVIS"};
//NegFiltersInfo += { "LNET", "HNET", "VISION_DELTA", "FEIMPE", "FEVIS" };
// NegFiltersWarning += { "LNET", "FEHACK", "FERECV"};
// NegFiltersWarning += { "positional", "faction", "pet" };
//////////////////////////////////////////////////////////////////////////////
//- Basic (specific) heal profile parameters ---------------------------------
// Downtime for normal heal (on other bots of the group)
HealSpecificDowntime = 100;
// Downtime for self heal
HealSpecificDowntimeSelf = 100;
//////////////////////////////////////////////////////////////////////////////
// Disable caching of ligo primitive in binary files
CachePrims = 0;
CachePrimsLog = 0;
// do not log the corrected position.
LogAcceptablePos = 0;
// do not log group creation failure
LogGroupCreationFailure = 0;
// do not log aliad tree owner construstion.
LogAliasTreeOwner = 0;
// do not log outpost info
LogOutpostDebug = 0;
// Speed factor, for debug purpose only. Don't set to high speed factor !
SpeedFactor = 1;
// Speep up the timer triggering. Set a value between 1 (normal) and INT_MAX.
TimerSpeedUp = 1;
// Default timer for wander behavior
DefaultWanderMinTimer = 50; // 5s
DefaultWanderMaxTimer = 100; // 10s
// Fame and guard behavior
// Fame value under witch the guard attack the player in sigth
FameForGuardAttack = -450000;
// The minimum of fame for guard to help the player
FameForGuardHelp = -200000;
// The default aggro distance for NPC
DefaultNpcAggroDist = 15;
// The default escort range for escort behavior
DefaultEscortRange = 10;
//////////////////////////////////////////////////////////////////////////////
// Aggro //
//////////////////////////////////////////////////////////////////////////////
AggroReturnDistCheck = 15.0;
AggroReturnDistCheckFauna = 15.0;
AggroReturnDistCheckNpc = 1.5;
AggroD1Radius = 250.0;
AggroD2Radius = 150.0;
AggroPrimaryGroupDist = 0.0;
AggroPrimaryGroupCoef = 0.0;
AggroSecondaryGroupDist = 0.0;
AggroSecondaryGroupCoef = 0.0;
AggroPropagationRadius = 60.0;
BotRepopFx = "";
// GROUP KEYWORDS
// used mainly in event handlers to determine to which groups events apply
KeywordsGroupNpc = {
"patrol", // a group of bots who guard a patrol route or point
"convoy", // a group with pack animals who follow roads from place to place
"with_players", // a group who may travel with players
};
// BOT KEYWORDS
// used mainly in npc_state_profile to determine which ai profiles to assign to which bots
KeywordsBotNpc = {
"team_leader", // a bot who leads the way in front of their team (and acts as leader
// in discussion with players)
"animal_leader", // a bot who leads pack animals
"guard", // a bot who is a guard of some sort (eg karavan guard)
"emissary", // eg karavan emissary
"preacher", // eg kami preacher
"guardian", // typically kami guardians
"vip", // someone who has an escort of players or NPCs (assumed to be harmless)
};
// STATE KEYWORDS
// used mainly in event handlers to determine to which state events apply
// eg: when a player goes link dead if the team that this player is escorting
// is in a dangerous area the team may enter a 'protect ourselves and wait for
// players' punctual state
KeywordsStateNpc = {
"safe", // eg the gathering point at town entrance
"dangerous", // eg a route through the wilds
};
ColourNames =
{
"red : 0",
"beige : 1",
"green : 2",
"turquoise : 3",
"blue : 4",
"violet : 5",
"white : 6",
"black : 7",
"redHair: 0",
"blackHair: 1",
};
StartCommandsWhenMirrorReady = {
};
//---------------------------------------------------------
// commands for multi IA configuration
// For multi IA config, use the -m command line switch folowed
// by a semicolon separated list of command block to run.
// ex :
// -mCommon:Matis:Post
// will execute the folowing command blocks in order :
// * StartCommandsWhenMirrorReadyCommon
// * StartCommandsWhenMirrorReadyMatis
// * StartCommandsWhenMirrorReadyPost
//---------------------------------------------------------
// common commands before loading continents
StartCommandsWhenMirrorReadyCommon =
{
"RandomPosMaxRetry 6400",
"fightRangeRange 4 60",
"LogOutpostDebug 1",
"grpHistoryRecordLog",
"verboseAIProfiles",
"verboseAliasNodeTreeParserLog",
"verboseCombatLog",
"verboseFaunaMgrLog",
"verboseFaunaParseLog",
"verboseNPCBotProfiles",
"verboseNPCMgrLog",
"verboseNPCParserLog",
"verboseNpcDescriptionMsgLog",
"verbosePrimitiveParserLog",
// "verboseSwitchMultipleChangesOfAProperty",
};
// commands for indoors continent
StartCommandsWhenMirrorReadyIndoors =
{
"loadContinent indoors",
"createStaticAIInstance indoors",
"loadMapsFromCommon indoors_all",
};
// commands for Matis continent
StartCommandsWhenMirrorReadyMatis =
{
"loadContinent matis",
"createStaticAIInstance matis",
"loadMapsFromCommon matis_all",
};
// commands for Matis newbie continent
StartCommandsWhenMirrorReadyMatisNewbie =
{
"loadContinent matis",
"createStaticAIInstance matis_newbie",
"loadMapsFromCommon matis_newbie_all",
};
// commands for Zorai continent
StartCommandsWhenMirrorReadyZorai =
{
"loadContinent zorai",
"createStaticAIInstance zorai",
"loadMapsFromCommon zorai_all",
};
// commands for Zorai newbie continent
StartCommandsWhenMirrorReadyZoraiNewbie =
{
"loadContinent zorai",
"createStaticAIInstance zorai_newbie",
"loadMapsFromCommon zorai_newbie_all",
};
// commands for Fyros continent
StartCommandsWhenMirrorReadyFyros =
{
"loadContinent fyros",
"createStaticAIInstance fyros",
"loadMapsFromCommon fyros_all",
};
// commands for Fyros newbie continent
StartCommandsWhenMirrorReadyFyrosNewbie =
{
"loadContinent fyros_newbie",
"createStaticAIInstance fyros_newbie",
"loadMapsFromCommon fyros_newbie_all",
};
// commands for Tryker continent
StartCommandsWhenMirrorReadyTryker =
{
"loadContinent tryker",
"createStaticAIInstance tryker",
"loadMapsFromCommon tryker_all",
};
// commands for Tryker newbie continent
StartCommandsWhenMirrorReadyTrykerNewbie =
{
"loadContinent tryker_newbie",
"createStaticAIInstance tryker_newbie",
"loadMapsFromCommon tryker_newbie_all",
};
// commands for bagne continents
StartCommandsWhenMirrorReadyBagne =
{
"loadContinent bagne",
"createStaticAIInstance bagne",
"loadMapsFromCommon bagne_all",
};
StartCommandsWhenMirrorReadyNexus =
{
"loadContinent nexus",
"createStaticAIInstance nexus",
"loadMapsFromCommon nexus_all",
};
StartCommandsWhenMirrorReadyRouteGouffre =
{
"loadContinent route_gouffre",
"createStaticAIInstance route_gouffre",
"loadMapsFromCommon route_gouffre_all",
};
StartCommandsWhenMirrorReadySources =
{
"loadContinent sources_interdites",
"createStaticAIInstance sources",
"loadMapsFromCommon sources_all",
};
StartCommandsWhenMirrorReadyTerre =
{
"loadContinent terre_oubliee",
"createStaticAIInstance terre",
"loadMapsFromCommon terre_all",
};
// commands for Fyros Island continent
StartCommandsWhenMirrorReadyFyrosIsland =
{
"loadContinent fyros_island",
"createStaticAIInstance fyros_island",
"loadMapsFromCommon fyros_island_all",
};
// commands for Zorai Island continent
StartCommandsWhenMirrorReadyZoraiIsland =
{
"loadContinent zorai_island",
"createStaticAIInstance zorai_island",
"loadMapsFromCommon zorai_island_all",
};
// commands for Tryker Island continent
StartCommandsWhenMirrorReadyTrykerIsland =
{
"loadContinent tryker_island",
"createStaticAIInstance tryker_island",
"loadMapsFromCommon tryker_island_all",
};
// commands for Matis island continent
StartCommandsWhenMirrorReadyMatisIsland =
{
"loadContinent matis_island",
"createStaticAIInstance matis_island",
"loadMapsFromCommon matis_island_all",
};
// commands for Newbieland continent
StartCommandsWhenMirrorReadyNewbieland =
{
"loadContinent newbieland",
"createStaticAIInstance newbieland",
"loadMapsFromCommon newbieland_all",
};
// commands for Kitiniere continent
StartCommandsWhenMirrorReadyKitiniere =
{
"loadContinent kitiniere",
"createStaticAIInstance kitiniere",
"loadMapsFromCommon kitiniere_all",
};
// commands for post continents loading
StartCommandsWhenMirrorReadyPost =
{
"spawnInstances",
"updateAI",
"updateAI",
};
// commands for Ring continents
StartCommandsWhenMirrorReadyRing =
{
"loadContinent r2_desert",
"createDynamicAIInstance 10000",
"loadPrimitiveFile dummy.primitive",
"loadContinent r2_forest",
"createDynamicAIInstance 10001",
"loadPrimitiveFile dummy.primitive",
"loadContinent r2_lakes",
"createDynamicAIInstance 10003",
"loadPrimitiveFile dummy.primitive",
"loadContinent r2_jungle",
"createDynamicAIInstance 10002",
"loadPrimitiveFile dummy.primitive",
"loadContinent r2_roots",
"createDynamicAIInstance 10004",
"loadPrimitiveFile dummy.primitive",
// "spawnInstances",
"updateAI",
"updateAI",
// L5 connect to the shard unifier
"unifiedNetwork.addService ShardUnifier ( address="+SUAddress+" sendId external autoRetry )",
// Create a shard AIS Module
"moduleManager.createModule AisControl ais",
// Connect AIS
"ais.plug gw"
};

View file

@ -0,0 +1,9 @@
DontUseNS = BSDontUseNS;
NSHost = BSNSHost;
// template path from SaveShardRoot to find character saves
SaveTemplatePath = "$shard/characters/account_$userid_$charid$ext";
// character saves possible extension list
SaveExtList = "_pdr.bin _pdr.xml .bin";

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,106 @@
// Configure module gateway for front end operation
StartCommands +=
{
// Add a security plugin (will add player info on player module proxy)
"gw.securityCreate FESecurity",
// create a front end service transport
"gw.transportAdd FEServer fes",
// set the transport option (need PeerInvisible and Firewalled)
"gw.transportOptions fes(PeerInvisible Firewalled)",
// open the transport
"gw.transportCmd fes(open)",
};
// UDP port for client communication
//FrontendPort = 47851;
ListenAddress = FSListenHost+":"+FSUDPPort;
// Maximum size that can be read from a client message
DatagramLength = 10000;
// Time-out before removing a client when it does not send any more data
ClientTimeOut = 600000; // 10 min
// Time-out before removing a limbo client when it does not send any more data
LimboTimeOut = 60000; // 1 min
// Maximum bytes per game cycle sent to all clients (currently not used/implemented)
TotalBandwidth = 536870911; // <512 MB : max value for 32 bit bitsize !
// Maximum bytes per game cycle sent to a client, including all headers
ClientBandwidth = 332 * BandwidthRatio; // 332 <=> 13 kbit/s at 5 Hz; 202 <=> 16 kbit/s at 10 Hz
// Maximum bytes for impulsion channels per datagram sent to a client
ImpulsionByteSize0 = 20 * BandwidthRatio;
ImpulsionByteSize1 = 200 * BandwidthRatio;
ImpulsionByteSize2 = 200 * BandwidthRatio;
NbMinimalVisualBytes = 50;
// Distance/delta ratio that triggers the sending of a position
DistanceDeltaRatioForPos = 100;
// Number of game cycles per front-end cycle
GameCycleRatio = 1;
// Execution period of distance calculation
CalcDistanceExecutionPeriod = 8;
// Execution period of position prioritization
PositionPrioExecutionPeriod = 2;
// Execution period of orientation prioritization
OrientationPrioExecutionPeriod = 8;
// Execution period of discreet properties prioritization
DiscreetPrioExecutionPeriod = 2;
SortPrioExecutionPeriod = 1;
// Display or not the "FE" nlinfos
DisplayInfo = 1;
// Prioritizer mode (currently the only mode is 1 for DistanceDelta)
PriorityMode = 1;
// Strategy for selecting pairs to prioritize (Power2WithCeiling=0, Scoring=1)
SelectionStrategy = 1;
// Minimum number of pairs to select for prioritization
MinNbPairsToSelect = 2000;
// Index of client to monitor, or 0 for no monitoring
ClientMonitor = 0;
// Allow or not beeping
AllowBeep = 1;
//NegFiltersDebug += { "FESEND", "FERECV", "FETIME", "FEMMAN", "TICK", "TOCK" };
//NegFiltersInfo += { "FESEND", "FERECV", "FETIME", "FEMMAN", "FESTATS" };
Lag = 0; // The lag on the simulated network (used by simlag)
PacketLoss = 0; // percentage of lost packet (used by simlag)
PacketDuplication = 0; // percentage of duplicated packet (used by simlag)
PacketDisordering = 0; // percentage of disordered packet (used by simlag) (Lag must be >100 to use disordering)
// ----------------------------------------
// Frontend/Patch mode settings
// If 1, the frontend server is used in Patch/Frontend mode (0 = only frontend mode, old behaviour)
UseWebPatchServer = 1;
// If 0, the frontend service is in Patch mode at startup, and it won't accept clients unless WS tells it to do so.
AcceptClientsAtStartup = 1;
// Patch URL footer. PatchURL will look like 'http://223.254.124.23:43435/patch'
PatchingURLFooter = ":80/patch";
// System command to be executed when FS tries to start Web Patch server (ideally at FS startup)
StartWebServerSysCommand = "";
// System command to be executed when FS tries to stop Web Patch server (ideally when FS turns to frontend mode)
StopWebServerSysCommand = "";
// Use Thread for sending
UseSendThread = 1;
// Unidirectional Mirror mode (FS part)
ExpediteTOCK = 1;

View file

@ -0,0 +1,7 @@
CheckPlayerSpeed = 0;
SecuritySpeedFactor = 1.5;
LoadPacsPrims = 0;
LoadPacsCol = 1;

View file

@ -0,0 +1,119 @@
#ifndef DONT_USE_LGS_SLAVE
StartCommands +=
{
// L5 connect to the shard unifier
"unifiedNetwork.addService ShardUnifier ( address="+SUAddress+" sendId external autoRetry )",
// Create a gateway for global interconnection
// modules from different shard are visible to each other if they connect to
// this gateway. SU Local module have no interest to be plugged here.
"moduleManager.createModule StandardGateway glob_gw",
// add a layer 3 server transport
"glob_gw.transportAdd L3Client l3c",
// open the transport
"glob_gw.transportCmd l3c(connect addr="+SUHost+":"+SUGlobalPort+")",
// Create a gateway for logger service connection
"moduleManager.createModule StandardGateway lgs_gw",
// add a layer 3 server transport for master logger service
"lgs_gw.transportAdd L3Client masterL3c",
// open the transport
"lgs_gw.transportCmd masterL3c(connect addr="+MasterLGSHost+":"+L3MasterLGSPort+")",
// add a layer 3 server transport for slave logger service
"lgs_gw.transportAdd L3Client slaveL3c",
// open the transport
"lgs_gw.transportCmd slaveL3c(connect addr="+SlaveLGSHost+":"+L3SlaveLGSPort+")",
// Create a chat unifier client
"moduleManager.createModule ChatUnifierClient cuc",
// and plug it on the gateway to reach the SU ChatUnifierServer
"cuc.plug glob_gw",
"cuc.plug gw",
// Create the logger service client module
"moduleManager.createModule LoggerServiceClient lsc",
"lsc.plug lgs_gw",
};
#endif
#ifdef DONT_USE_LGS_SLAVE
StartCommands +=
{
// L5 connect to the shard unifier
"unifiedNetwork.addService ShardUnifier ( address="+SUAddress+" sendId external autoRetry )",
// Create a gateway for global interconnection
// modules from different shard are visible to each other if they connect to
// this gateway. SU Local module have no interest to be plugged here.
"moduleManager.createModule StandardGateway glob_gw",
// add a layer 3 server transport
"glob_gw.transportAdd L3Client l3c",
// open the transport
"glob_gw.transportCmd l3c(connect addr="+SUHost+":"+SUGlobalPort+")",
// Create a gateway for logger service connection
"moduleManager.createModule StandardGateway lgs_gw",
// add a layer 3 server transport for master logger service
"lgs_gw.transportAdd L3Client masterL3c",
// open the transport
"lgs_gw.transportCmd masterL3c(connect addr="+MasterLGSHost+":"+L3MasterLGSPort+")",
// Create a chat unifier client
"moduleManager.createModule ChatUnifierClient cuc",
// and plug it on the gateway to reach the SU ChatUnifierServer
"cuc.plug glob_gw",
"cuc.plug gw",
// Create the logger service client module
"moduleManager.createModule LoggerServiceClient lsc",
"lsc.plug lgs_gw",
};
#endif
DisableMonotonicClock = 1;
// a list of system command that can be run with "sysCmd" service command.
SystemCmd = {};
// IOS don't use work directory by default
ReadTranslationWork = 0;
// Global shard bot name translation file. You sould overide this
// in input_output_service.cfg to specialize the file
// depending on the shard main language.
BotNameTranslationFile = "bot_names.txt";
// Global shard event faction translation file. You sould override this
// in input_output_service.cfg to specialize the file
// depending on the shard main language.
EventFactionTranslationFile = "event_factions.txt";
// Activate/deactivate debugging of missing paremeter replacement
DebugReplacementParameter = 1;
// Id of database for PDS Chat Logging
DatabaseId = 1;
// Default verbose debug flags:
//-----------------------------
// Log bot name translation from 'BotNameTranslationFile'
VerboseNameTranslation = 1;
// Log chat management operation
VerboseChatManagement = 1;
// Log chat event
VerboseChat = 1;
// Log string manager message
VerboseStringManager = 1;
// Log the string manager parsing message
VerboseStringManagerParser = 0;

View file

@ -0,0 +1,89 @@
LogQueryLanguageHelp =
{
"Log Query Language Quick Reference",
"----------------------------------",
"",
"A query is constitued of a series of predicates combined by 'or' and 'and' logical operator.",
"Each predicate is applied on each log, then the result combined to obtain a list of 'selected' log.",
"",
"General query format :",
"",
" (options) predicate (logicalCombiner predicate)*",
"",
"options format :",
" option*",
"",
" Available option :",
" - 'full_context' : extract all the log that are in the context of a ",
" selected log",
" - 'output_prefix='<prefix> : set a prefix for the result file of the query",
"",
"logicalCombiner format :",
" Supported logical combiner are 'or' and 'and'.",
" The 'and' combiner have the hightest priority over 'or'.",
" You can also manually force the priority of combiner by",
" grouping predicate with parenthesis.",
" e.g : '(' predicate1 'or' predicate2 ')' 'and' predicate3'",
" In this case, the 'or' between predicate1 and predicate2 is avaluated ",
" before the 'and' with predicated3",
"",
"Predicate format :",
" <paramName | paramType> <operator> <constant>",
"",
"ParamName format :",
" Any parameter name that exist in a log. Any log that use this param name will",
" be tested againts the predicate.",
" e.g : userId",
"",
"",
"ParamType format:",
" You can test a predicate against any parameter of a given type, whatever it's name.",
" '{' typeName '}'",
" The available type names are :",
" uint32, uint64, sint32, float, string, entityId, itemId, sheetId.",
" Clearly, the entityId, itemId and sheetId are the most interesting.",
"",
"Operator format :",
" All classicle operators are available:",
" '<', '<=', '>', '>=', '=' (or '=='), '!=' and 'like'.",
" The 'like' operator try to find the constant as a substring of the parameter.",
"",
"Constant format :",
" Right part of a predicate are always constant.",
" You can write constant of different type :",
" uint32 : any decimal or hexacimal (prefixed with '0x')",
" sint32 : any decimal prefixed with the minus sign '-'",
" string : any list of characters surrounded by double quote",
" entityId : an entity id as formated by NeL '(0x1234:12:34:56)'",
" sheeId : any characters that can be considered as a sheet name (e.g 'foo.sitem')",
" itemId : an item id as printed by the ryzom tool : '[123:0x123456:1234]'",
"",
"",
"Special param name :",
" There are threee hardcoded parameter name :",
" 'LogName', 'LogDate' and 'ShardId'.",
"",
" 'LogName' is used to build query based on the name of the log instead of",
" on the value of the parameters. e.g : 'LogName = '''Item_Create''' will select",
" all logs of item creation.",
"",
" 'LogDate' is used to restrict the scope of the query on a limited time frame.",
" LogDate accept date of the following format :",
" - literal date : YYYY-MM-DD",
" - literal date and time: YYYY-MM-DD HH:MM",
" - literal date and time: YYYY-MM-DD HH:MM:SS",
" - yesterday : 'yesterday'",
" - some time ago : <count> secs|mins|hours|days|weeks|months|years",
"",
" e.g : 'LogDate > yesterday' -> any log from yesterday to now",
" 'LogDate > 2 days' -> any log from 2 days ago to now",
" 'LogDate < 3 weeks' -> any log older than 3 weeks",
"",
" 'ShardId' is used to select log from a specific shard. You must",
" give a numeric shard id as predicate parameter. ",
"",
"",
"",
};

View file

@ -0,0 +1,15 @@
DontUseNS = 1;
// Set if Hall of Fame generator is disabled
HoFDisableGenerator = 0;
// Directory where HDT files are parsed (in WebRootDirectory)
HoFParsedDirectory = "hof";
// HoF generator update period in milliseconds
HoFGeneratorUpdatePeriod = 5000;
// HoF generator directory update period in seconds
HoFGeneratorDirUpdatePeriod = 60;

View file

@ -0,0 +1,6 @@
// Linux only
DestroyGhostSegments = 1;
//NegFiltersDebug += { "MSG:" };

View file

@ -0,0 +1,6 @@
SId = 1;
DontUseNS = 1;
UniqueOnShardServices = {}; // { "EGS", "GPMS", "IOS", "TICKS", "WS", "AIS", "DSS" };
UniqueByMachineServices = {}; // { "MS" };

View file

@ -0,0 +1,25 @@
DontUseNS = 1;
RRDToolPath = "rrdtool";
RRDVarPath = "../graph_datas";
// Variables required to be defined by other cfgs
//AESHost="localhost";
//ASWebPort="46700";
//ASPort="46701";
StartCommands +=
{
// create the admin service module and open the web interface
"moduleManager.createModule AdminService as webPort="+ASWebPort,
// create a gateway for aes to connect
"moduleManager.createModule StandardGateway as_gw",
// create a layer 3 server
"as_gw.transportAdd L3Server l3s",
"as_gw.transportOptions l3s(PeerInvisible)",
"as_gw.transportCmd l3s(open port="+ASPort+")",
// plug the as
"as.plug as_gw",
};

View file

@ -0,0 +1,37 @@
NSHost = SUNSHost;
DontUseNS = SUDontUseNS;
// SU - listen address of the SU service (for L5 connections)
SUAddress = SUHost+":"+SUPort;
StartCommands +=
{
// Create a gateway for global interconnection
// modules from different shard are visible to each other if they connect to
// this gateway. SU Local module have no interest to be plugged here.
"moduleManager.createModule StandardGateway glob_gw",
// add a layer 3 server transport
"glob_gw.transportAdd L3Server l3s",
// open the transport
"glob_gw.transportCmd l3s(open port="+SUGlobalPort+")",
// Create a session manager module
"moduleManager.createModule RingSessionManager rsm web(port=49999) ring_db(host="+DBHost+" user="+DBRingUser+" password="+DBRingPass+" base="+DBRingName+") nel_db(host="+DBHost+" user="+DBNelUser+" password="+DBNelPass+" base="+DBNelName+")",
"rsm.plug gw",
// Create a login service module
"moduleManager.createModule LoginService ls ring_db(host="+DBHost+" user="+DBRingUser+" password="+DBRingPass+" base="+DBRingName+") web(port=49998) nel_db(host="+DBHost+" user="+DBNelUser+" password="+DBNelPass+" base="+DBNelName+")",
"ls.plug gw",
// Create a character synchronization module
"moduleManager.createModule CharacterSynchronisation cs fake_edit_char ring_db(host="+DBHost+" user="+DBRingUser+" password="+DBRingPass+" base="+DBRingName+")",
"cs.plug gw",
// Create entity locator module
"moduleManager.createModule EntityLocator el ring_db(host="+DBHost+" user="+DBRingUser+" password="+DBRingPass+" base="+DBRingName+") nel_db(host="+DBHost+" user="+DBNelUser+" password="+DBNelPass+" base="+DBNelName+")",
"el.plug gw",
// Create a mail forum notifier forwarder
"moduleManager.createModule MailForumNotifierFwd mfnfwd ring_db(host="+DBHost+" user="+DBRingUser+" password="+DBRingPass+" base="+DBRingName+") web(port=49897)",
"mfnfwd.plug gw",
// Create a chat unifier server module
"moduleManager.createModule ChatUnifierServer cus ring_db(host="+DBHost+" user="+DBRingUser+" password="+DBRingPass+" base="+DBRingName+")",
"cus.plug gw",
};

View file

@ -0,0 +1,10 @@
/// A list of vars to graph for TS
GraphVars +=
{
"TotalSpeedLoop", "60000", // low rez, every minutes
"TotalSpeedLoop", "0", // high rez, every tick
};
//NegFiltersDebug = { "DELTA_", "DEFAULT_CB", };

View file

@ -0,0 +1,37 @@
// short name of the frontend service
FrontendServiceName = "FS";
// in ring architecture, we no more use the legacy LS
DontUseLS = 1;
// if any of this services is not connected, the WS is closed.
ExpectedServices = { "FS", "MS", "EGS", "GPMS", "IOS", "TICKS" };
// Access level to shard
// 0: only dev
// 1: dev + privileged users (see also OpenGroups variable)
// 2: open for all
ShardOpen = 2;
// File that contains the ShardOpen value (used to override ShardOpen value through AES' command createFile)
// For instance, ShardOpen default value is 0, then AES creates a file to set ShardOpen to 2. If WS crashes,
// ShardOpen is still set to 2 when it relaunches...
// ShardOpenStateFile = "/tmp/shard_open_state";
// Privileged Groups
OpenGroups = ":GM:SGM:G:SG:GUEST:";
UsePatchMode = 0;
// create welcome service module
StartCommands +=
{
// create the service
"moduleManager.createModule WelcomeService ws",
// plug it in the gateway
"ws.plug gw",
// add the SU service
"unifiedNetwork.addService ShardUnifier ( address="+SUAddress+" sendId external autoRetry )",
};

View file

@ -0,0 +1,717 @@
//-----------------------------------------------------------------------------
// Common Definitions
//-----------------------------------------------------------------------------
// ---------------------------------
// shard types & exe sets
// mini ring -----------------------
define exe_set_mini_ring
use raes
use ms_mini_ring
use ais_ring
use egs_ring
use dss_ring
use gpms_ring
use ios_ring
use rns_ring
use fes_solo
use ts_std
use rws_std
cfg NSHost="localhost";
// mini mainland -------------------
define exe_set_mini_mainland
use raes
use ms_mini_mainland
use ais_newbyland
use egs_mainland
use gpms_mainland
use ios_mainland
use rns_mainland
use fes_solo
use ts_std
use rws_std
cfg NSHost="localhost";
// full ring -----------------------
define exe_set_std_ring_be
use raes
use ms_std_ring
use ais_ring
use egs_ring
use dss_ring
use gpms_ring
use ios_ring
use rns_ring
use ts_std
use rws_std
define exe_set_std_ring_fe
use raes
use ms_std_ring
use fes_std_pair01
use fes_std_pair02
// full mainland -------------------
define exe_set_std_mainland_fe
use raes
use ms_std_mainland
use exe_set_std_mainland_fe_basics
define exe_set_std_mainland_fe_basics
use fes_std_pair01
use fes_std_pair02
define exe_set_std_mainland_be01
use raes
use ms_std_mainland
use exe_set_std_mainland_be01_basics
define exe_set_std_mainland_be01_basics
use egs_mainland
use gpms_mainland
use ios_mainland
use rns_mainland
use ts_std
use rws_std
define exe_set_std_mainland_be02
use raes
use ms_std_mainland
// use exe_set_std_mainland_be02_basics
define exe_set_std_mainland_be02_basics
// use ais_fyros
// use ais_zorai
// use ais_roots
define exe_set_std_mainland_be03
use raes
use ms_std_mainland
use exe_set_std_mainland_be03_basics
define exe_set_std_mainland_be03_basics
// use ais_matis
// use ais_tryker
use ais_newbyland
// unifier and co ------------------
define exe_set_mini_unifier
use raes
use su_mini
define exe_set_std_unifier
use raes
use su_std
use mfs_std
define exe_set_std_backup_master
use raes
use bms_master
use pdss
define exe_set_std_backup_slave
use raes
use bms_slave
use pdss
define exe_set_std_lgs_master
use lgs_master
define exe_set_std_lgs_slave
use lgs_slave
// ---------------------------------
// standard data packs
define common
cfg DontLog = 1;
data cfg
// data scripts
define shard_common
use common
data data_common
data data_game_share
data data_leveldesign
// ---------------------------------
// executables
// ais -----------------------------
define ais
use shard_common
cfg #include "../live/service_ai_service/ai_service.cfg"
cfg WriteFilesDirectory= "../live/service_ai_service/";
cfgAfter GraphVars += { "TickSpeedLoop", "0" };
cfgAfter GraphVars += { "TickSpeedLoop", "60000" };
cfgAfter GraphVars += { "L5CallbackCount", "0" };
cfgAfter GraphVars += { "L5CallbackCount", "60000" };
cfgAfter GraphVars += { "L5CallbackTime", "0" };
cfgAfter GraphVars += { "L5CallbackTime", "60000" };
cfgAfter GraphVars += { "MirrorCallbackCount", "0" };
cfgAfter GraphVars += { "MirrorCallbackCount", "60000" };
cfgAfter GraphVars += { "MirrorCallbackTime", "0" };
cfgAfter GraphVars += { "MirrorCallbackTime", "60000" };
define ais_ring
name ais
cmdLine ai_service -C. -L. --nobreak --writepid -mCommon:Ring
use ais
data data_r2_desert
data data_r2_forest
data data_r2_jungle
data data_r2_lakes
data data_r2_roots
define ais_mainland
use ais
data data_mainland_common_primitives
data data_newbieland_primitives
data data_newbieland
data data_indoors
define ais_mini_mainland
name ais
cmdLine ai_service -C. -L. --nobreak --writepid -mCommon:Indoors:Newbieland:Post
use ais_mainland
define ais_newbyland
name ais_newbyland
cmdLine ai_service -C. -L. --nobreak --writepid -mCommon:Indoors:Newbieland:Post
use ais
data data_mainland_common_primitives
data data_newbieland_primitives
data data_newbieland
data data_indoors
// bms -----------------------------
define bms
use common
data data_leveldesign
// cmdLine backup_module_service
// cfg #include "../live/cfg/backup_module_service.cfg"
cfg #include "../live/service_backup_service/backup_service.cfg"
// cfg #include "../live/cfg/backup_service.cfg"
cfg WriteFilesDirectory= "../live/service_backup_service/";
define bms_master
use bms
cmdLine backup_service -C. -L. --nobreak --writepid -P49990
//cfg #include "../live/cfg/backup_module_service_master.cfg"
cfgAfter ListeningPort = 49990;
cfgAfter L3ListeningPort = 49950;
cfgAfter WebPort = 49970;
cfgAfter BSReadState = 1;
cfgAfter SaveShardRoot = "../save_shard/";
define bms_master2
use bms
cmdLine backup_service -C. -L. --nobreak --writepid -P49994
//cfg #include "../live/cfg/backup_module_service_master.cfg"
cfgAfter ListeningPort = 49994;
cfgAfter L3ListeningPort = 49954;
cfgAfter WebPort = 49974;
cfgAfter BSReadState = 1;
cfgAfter SaveShardRoot = "../save_shard/";
define bms_slave
use bms
cmdLine backup_service -C. -L. --nobreak --writepid -P49991
cfg #include "../live/cfg/backup_module_service_slave.cfg"
cfgAfter ListeningPort = 49991;
cfgAfter L3ListeningPort = 49951;
cfgAfter WebPort = 49971;
cfgAfter BSReadState = 0;
cfgAfter SaveShardRoot = "../save_shard/";
define bms_pd_master
use bms
cmdLine backup_service -C. -L. --nobreak --writepid -P49992
//cfg #include "../live/cfg/backup_module_service_master.cfg"
cfgAfter ListeningPort = 49992;
cfgAfter L3ListeningPort = 49952;
cfgAfter WebPort = 49972;
cfgAfter BSReadState = 1;
cfgAfter SaveShardRoot = "../save_shard_pd/";
define bms_pd_slave
use bms
cmdLine backup_service -C. -L. --nobreak --writepid -P49993
cfg #include "../live/cfg/backup_module_service_slave.cfg"
cfgAfter ListeningPort = 49993;
cfgAfter L3ListeningPort = 49953;
cfgAfter WebPort = 49973;
cfgAfter BSReadState = 0;
cfgAfter SaveShardRoot = "../save_shard_pd/";
define backup_lgs
use bms
cmdLine backup_service -C. -L. --nobreak --writepid -P49994
//cfg #include "../live/cfg/backup_module_service_master.cfg"
cfgAfter ListeningPort = 49994;
cfgAfter L3ListeningPort = 49995;
cfgAfter WebPort = 49972;
cfgAfter BSReadState = 1;
cfgAfter SaveShardRoot = "../save_shard_lgs/";
cfgAfter UseTempFile = 0;
// lgs -----------------------------
define lgs
use common
data data_leveldesign
cmdLine logger_service -C. -L. --nobreak --writepid
cfg #include "../live/cfg/logger_service.cfg"
cfg LogQueryResultFile = "log_query_result.txt";
cfg SaveFilesDirectory = "save_shard/";
cfg BSHost = LGSBSHost+":"+LGSBSPort;
cfg L3BSPort = LGSBSPort;
cfg DontUseNS = 1;
cfgAfter StartCommands +=
cfgAfter {
cfgAfter "moduleManager.createModule LoggerService ls",
cfgAfter "moduleManager.createModule StandardGateway lgs_gw",
cfgAfter "ls.plug lgs_gw",
cfgAfter "lgs_gw.transportAdd L3Server l3s",
cfgAfter "lgs_gw.transportOptions l3s(PeerInvisible)",
cfgAfter "lgs_gw.transportCmd l3s(open port="+ LGSL3Port +")",
cfgAfter };
cfgAfter SaveShardRoot = "../save_shard_lgs/";
cfgAfter SaveFilesDirectory = "../save_shard_lgs/";
define lgs_master
use lgs
cfg LGSL3Port = L3MasterLGSPort;
define lgs_slave
use lgs
cfg LGSL3Port = L3SlaveLGSPort;
// dss -----------------------------
define dss
use shard_common
cmdLine dynamic_scenario_service -C. -L. --nobreak --writepid
cfg #include "../live/service_dynamic_scenario_service/dynamic_scenario_service.cfg"
cfg WriteFilesDirectory="../live/service_dynamic_scenario_service/";
//define dss_mainland
// use dss
// cfg #include "../live/cfg/dynamic_scenario_service_mainland.cfg"
define dss_ring
use dss
cfg #include "../live/cfg/dynamic_scenario_service_ring.cfg"
// egs -----------------------------
define egs
use shard_common
cmdLine entities_game_service -C. -L. --nobreak --writepid
data data_language
cfg #include "../live/service_entities_game_service/entities_game_service.cfg"
cfg PathsNoRecurse= {"."};
cfg WriteFilesDirectory="../live/service_entities_game_service/";
cfg NeverAggroPriv = ":OBSERVER:G:SG:GM:SGM:EM:";
cfg AlwaysInvisiblePriv = ":OBSERVER:EM:";
cfg TimeBeforeDisconnection = 300;
cfg
cfg UsedContinents +=
cfg {
cfg "indoors", "4", // NB : this is for uninstanciated indoors building.
cfg "newbieland", "20",
cfg };
cfg
cfg // define the primitives configuration used.
cfg UsedPrimitives =
cfg {
cfg "newbieland_all",
cfg };
cfgAfter StartCommands += {
cfgAfter "moduleManager.createModule AnimSessionManager asm",
cfgAfter "asm.plug gw",
cfgAfter };
cfgAfter GraphVars += { "NbPlayers", "60000" };
cfgAfter GraphVars += { "CharacterLoadPerTick", "0" };
cfgAfter GraphVars += { "CharacterLoadPerTick", "60000" };
cfgAfter GraphVars += { "CharacterSavePerTick", "0" };
cfgAfter GraphVars += { "CharacterSavePerTick", "60000" };
cfgAfter GraphVars += { "TickSpeedLoop", "0" };
cfgAfter GraphVars += { "TickSpeedLoop", "60000" };
cfgAfter GraphVars += { "L5CallbackCount", "0" };
cfgAfter GraphVars += { "L5CallbackCount", "60000" };
cfgAfter GraphVars += { "L5CallbackTime", "0" };
cfgAfter GraphVars += { "L5CallbackTime", "60000" };
cfgAfter GraphVars += { "MirrorCallbackCount", "0" };
cfgAfter GraphVars += { "MirrorCallbackCount", "60000" };
cfgAfter GraphVars += { "MirrorCallbackTime", "0" };
cfgAfter GraphVars += { "MirrorCallbackTime", "60000" };
cfgAfter RingRPXPRequiredPerAction=700;
cfgAfter RingRPXPRequiredPerTimeSlice=700;
define egs_mainland
use egs
data data_mainland_common_primitives
data data_newbieland_primitives
data data_newbieland
data data_indoors
//cfg #include "../live/cfg/entities_game_service_mainland.cfg"
cfg UsedContinents = { "dummy", "10000" };
cfgAfter MaxXPGainPerPlayer = 30.0;
cfgAfter DeathXPFactor = 0.1;
cfgAfter CachePrims = 1;
cfgAfter CorrectInvalidPlayerPositions = 1;
define egs_ring
use egs
data data_mainland_common_primitives
data data_newbieland_primitives
data data_newbieland
data data_indoors
cfg #include "../live/cfg/entities_game_service_ring.cfg"
cfg UsedContinents =
cfg {
cfg "r2_desert", "10000",
cfg "r2_forest", "10001",
cfg "r2_jungle", "10002",
cfg "r2_lakes", "10003",
cfg "r2_roots", "10004",
cfg };
cfgAfter MaxXPGainPerPlayer = 30.0;
cfgAfter DeathXPFactor = 0.0;
cfgAfter CachePrims = 1;
cfgAfter CorrectInvalidPlayerPositions = 0;
cfgAfter RingRPEnabled = 0;
// fes -----------------------------
define fes
use shard_common
cmdLine frontend_service -C. -L. --nobreak --writepid
cfg #include "../live/service_frontend_service/frontend_service.cfg"
cfg WriteFilesDirectory="../live/service_frontend_service/";
cfgAfter GraphVars += { "TickSpeedLoop", "0" };
cfgAfter GraphVars += { "TickSpeedLoop", "60000" };
cfgAfter GraphVars += { "L5CallbackCount", "0" };
cfgAfter GraphVars += { "L5CallbackCount", "60000" };
cfgAfter GraphVars += { "L5CallbackTime", "0" };
cfgAfter GraphVars += { "L5CallbackTime", "60000" };
cfgAfter GraphVars += { "MirrorCallbackCount", "0" };
cfgAfter GraphVars += { "MirrorCallbackCount", "60000" };
cfgAfter GraphVars += { "MirrorCallbackTime", "0" };
cfgAfter GraphVars += { "MirrorCallbackTime", "60000" };
define fes_solo
use fes
use sbs
cfg FSUDPPort = 47860;
define fes_std_pair01
use fes
use sbs
cfg FSUDPPort = 47851;
define fes_std_pair02
use fes
use sbs
cfg FSUDPPort = 47852;
define fes_std_pair03
use fes
use sbs
cfg FSUDPPort = 47853;
define fes_std_pair04
use fes
use sbs
cfg FSUDPPort = 47854;
// gpms ----------------------------
define gpms
use shard_common
cmdLine gpm_service -C. -L. --nobreak --writepid
data data_pacs_prim
cfg #include "../live/service_gpm_service/gpm_service.cfg"
cfg WriteFilesDirectory="../live/service_gpm_service/";
cfgAfter GraphVars += { "TickSpeedLoop", "0" };
cfgAfter GraphVars += { "TickSpeedLoop", "60000" };
cfgAfter GraphVars += { "L5CallbackCount", "0" };
cfgAfter GraphVars += { "L5CallbackCount", "60000" };
cfgAfter GraphVars += { "L5CallbackTime", "0" };
cfgAfter GraphVars += { "L5CallbackTime", "60000" };
cfgAfter GraphVars += { "MirrorCallbackCount", "0" };
cfgAfter GraphVars += { "MirrorCallbackCount", "60000" };
cfgAfter GraphVars += { "MirrorCallbackTime", "0" };
cfgAfter GraphVars += { "MirrorCallbackTime", "60000" };
define gpms_mainland
use gpms
data data_newbieland
data data_indoors
cfg #include "../live/cfg/gpm_service_mainland.cfg"
define gpms_ring
use gpms
data data_r2_desert
data data_r2_forest
data data_r2_jungle
data data_r2_lakes
data data_r2_roots
cfg #include "../live/cfg/gpm_service_ring.cfg"
// pdss ----------------------------
define pdss
name pdss
use common
data data_leveldesign
cmdLine pd_support_service -C. -L. --nobreak --writepid
cfg
cfg NSHost="localhost";
cfg
cfg HourlyCommands =
cfg {
cfg "system /srv/core/bin/hourly_script.sh",
cfg };
cfg
cfg DailyCommands =
cfg {
cfg "system /srv/core/bin/daily_script.sh",
cfg
cfg "fdcCacheClear",
cfg "fdcCacheAddFileSpecRecurse /srv/core/save_shard_backups/latest/characters/account_*_?_pdr.bin",
cfg
cfg "JobUpdatesPerUpdate 10",
cfg };
cfg
cfg InputFileDirectory="/srv/core/save_shard_backups/latest/characters/";
cfg OutputFileDirectory="../stats/";
cfg ScriptDirectory="../live/service_pd_support_service/scripts/";
cfg DontUseNS=1;
cfg DontUseTS=1;
cfg DontUseAES=1;
// ios -----------------------------
define ios
use shard_common
cmdLine input_output_service -C. -L. --nobreak --writepid
data data_language
cfg #include "../live/service_input_output_service/input_output_service.cfg"
cfg WriteFilesDirectory="../live/service_input_output_service/";
cfgAfter VerboseStringManager = 0;
cfgAfter VerboseStringManagerParser = 0;
cfgAfter VerboseChat = 0;
cfgAfter VerboseChatManagement = 0;
cfgAfter VerboseNameTranslation = 0;
cfgAfter // Create a char name mapper
cfgAfter StartCommands +=
cfgAfter {
cfgAfter "moduleManager.createModule CharNameMapper cnm",
cfgAfter "cnm.plug gw",
cfgAfter "moduleManager.createModule IOSRingModule iosrm",
cfgAfter "iosrm.plug gw",
cfgAfter };
define ios_mainland
use ios
//cfg #include "../live/cfg/input_output_service_mainland.cfg"
define ios_ring
use ios
cfg #include "../live/cfg/input_output_service_ring.cfg"
// las -----------------------------
define las
use common
cmdLine log_analyser_service -C. -L. --nobreak --writepid
cfg #include "../live/service_log_analyser_service/log_analyser_service.cfg"
cfg WriteFilesDirectory="../";
// mfs -----------------------------
define mfs
use common
cmdLine mail_forum_service -C. -L. --nobreak --writepid
data data_www
cfg #include "../live/service_mail_forum_service/mail_forum_service.cfg"
cfg WriteFilesDirectory="../live/service_mail_forum_service/";
define mfs_std
use mfs
// mos -----------------------------
define mos
use shard_common
cmdLine monitor_service -C. -L. --nobreak --writepid
cfg #include "../live/service_monitor_service/monitor_service.cfg"
cfg WriteFilesDirectory="../live/service_monitor_service/";
// ms ------------------------------
define ms
use shard_common
cmdLine mirror_service -C. -L. --nobreak --writepid
cfg #include "../live/service_mirror_service/mirror_service.cfg"
cfg WriteFilesDirectory="../live/service_mirror_service/";
cfgAfter GraphVars += { "UserSpeedLoop", "0" };
cfgAfter GraphVars += { "UserSpeedLoop", "60000" };
cfgAfter GraphVars += { "L5CallbackCount", "0" };
cfgAfter GraphVars += { "L5CallbackCount", "60000" };
cfgAfter GraphVars += { "L5CallbackTime", "0" };
cfgAfter GraphVars += { "L5CallbackTime", "60000" };
define ms_mini_ring
use ms
define ms_mini_mainland
use ms
define ms_std_ring
use ms
define ms_std_mainland
use ms
// raes -----------------------------
define raes
cmdLine none
data service_ryzom_admin_service
// ras -----------------------------
define ras
use common
data data_www
cmdLine ryzom_admin_service --fulladminname=ryzom_admin_service --shortadminname=AS -C. -L. --nobreak --writepid
cfg #include "../live/service_ryzom_admin_service/ryzom_as.cfg"
cfg WriteFilesDirectory="../";
// rns ------------------------------
define rns
use common
cmdLine ryzom_naming_service -C. -L. --nobreak --writepid
cfg #include "../live/service_ryzom_naming_service/naming_service.cfg"
cfg WriteFilesDirectory="../live/service_ryzom_naming_service/";
define rns_ring
use rns
define rns_mainland
use rns
// rws ------------------------------
define rws
use common
cmdLine ryzom_welcome_service -C. -L. --nobreak --writepid
cfg #include "../live/service_ryzom_welcome_service/welcome_service.cfg"
cfg WriteFilesDirectory="../live/service_ryzom_welcome_service/";
define rws_std
use rws
// sbs ------------------------------
define sbs
use common
cmdLine session_browser_server -C. -L. --nobreak --writepid
cfg SBSPort = FSUDPPort+1000;
cfg WriteFilesDirectory="../live/service_session_browser_server/";
cfg DontUseNS = 0;
cfg StartCommands +=
cfg {
cfg "moduleManager.createModule SessionBrowserServerMod sbs suAddr="+SUHost+":49999 listenPort="+SBSPort+" ring_db(host="+DBHost+" user="+DBRingUser+" password="+DBRingPass+" base="+DBRingName+")",
cfg "sbs.plug gw",
cfg };
cfgAfter GraphVars += { "NetSpeedLoop", "0" };
cfgAfter GraphVars += { "NetSpeedLoop", "60000" };
cfgAfter GraphVars += { "L5CallbackCount", "0" };
cfgAfter GraphVars += { "L5CallbackCount", "60000" };
cfgAfter GraphVars += { "L5CallbackTime", "0" };
cfgAfter GraphVars += { "L5CallbackTime", "60000" };
define sbs_std
use sbs
// su ------------------------------
define su
use common
cmdLine shard_unifier_service -C. -L. --nobreak --writepid
data data_www
cfg #include "../live/service_shard_unifier_service/shard_unifier_service.cfg"
cfg WriteFilesDirectory="../live/service_shard_unifier_service/";
cfgAfter // Create a command executor
cfgAfter StartCommands +=
cfgAfter {
cfgAfter "moduleManager.createModule CommandExecutor ce",
cfgAfter "ce.plug gw",
// cfgAfter "addNegativeFilterDebug NOPE",
cfgAfter };
cfgAfter GraphVars += { "TotalConcurentUser", "60000" };
cfgAfter GraphVars += { "NetSpeedLoop", "0" };
cfgAfter GraphVars += { "NetSpeedLoop", "60000" };
cfgAfter GraphVars += { "L5CallbackCount", "0" };
cfgAfter GraphVars += { "L5CallbackCount", "60000" };
cfgAfter GraphVars += { "L5CallbackTime", "0" };
cfgAfter GraphVars += { "L5CallbackTime", "60000" };
define su_std
use su
define su_mini
use su
// ts ------------------------------
define ts
use shard_common
cmdLine tick_service -C. -L. --nobreak --writepid
cfg #include "../live/service_tick_service/tick_service.cfg"
cfg WriteFilesDirectory="../live/service_tick_service/";
define ts_std
use ts

View file

@ -0,0 +1,116 @@
//-----------------------------------------------------------------------------
// The set of mini01 domains
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// mini01 Domain
//-----------------------------------------------------------------------------
// the mini01 domain -----------------
define domain_mini01
domain mini01
use shard_mini01_unifier
use shard_mini01_mainland01
// use shard_mini01_ring01
// domain ports
cfg ASWebPort="46710";
cfg ASPort="46711";
cfg AESPort="46712";
cfg SUPort = 50505;
cfg SUGlobalPort = 50503;
cfg L3BSPort = "49950";
cfg L3SlaveBSPort = "49951";
cfg L3MasterLGSPort = 49992;
cfg L3SlaveLGSPort = 49993;
cfg LGSBSPort = 49994;
cfg L3LGSBSPort = 49995;
// domain hosts
cfg AESHost = "localhost";
cfg SUHost = "ep1.mini01.ryzomcore.org";
cfg MFSHost = "ep1.mini01.ryzomcore.org";
cfg BSHost = "ep1.mini01.ryzomcore.org:49990";
cfg SlaveBSHost= "ep1.mini01.ryzomcore.org:49991";
cfg MasterLGSHost = "ep1.mini01.ryzomcore.org";
cfg SlaveLGSHost = "ep1.mini01.ryzomcore.org";
cfg LGSBSHost = "ep1.mini01.ryzomcore.org";
cfg DBHost = "localhost"; // FIXME "sql.core.ryzomcore.org";
cfgAfter WebSrvHost = "http://ep1.mini01.ryzomcore.org:50000/";
// initial config files
cfgFile ../cfg/00_base.cfg
cfgFile ../cfg/01_domain_mini01.cfg
// shard names and ids
cfgAfter Mainlands = {
cfgAfter "301", "Mainland 01", "(Mainland 01)", "en",
cfgAfter };
cfgAfter HomeMainlandNames =
cfgAfter {
cfgAfter "301", "Mainland 01", "mla",
cfgAfter };
cfgAfter RRDVarPath = "../rrd_graphs";
// addition of extra filters for this domain
// cfgAfter NegFiltersDebug+= {"DEFAULT_CB", "NET","ADMIN","MIRROR","CDB_MULTI_IMPULSION"};
// cfgAfter NegFiltersInfo+= {"FESTATS", "FETIME", "FERECV", "FESEND: sent SYNC message to client 1", "EIT: Register EId"};
// cfgAfter NegFiltersWarning+= {"PIPO_SESSION1", "casino_session_matis01", "invalid damage type 10", "_log_Item_Delete",
// cfgAfter "_log_Item_Money", "_log_Item_Create", "_log_Item_Move", "botChatMissionAdvance> invalid index 0",
// cfgAfter "_MaxRange(0) < _MinRange(1)", "Can't find craft plan sheet 'unknown.unknown'"};
cfgAfter DontUseAES=1;
// cfgAfter RingAccessLimits="d3:j2:f2:l2:p2";
cfgAfter RingRPEnabled=0;
cfgAfter DomainName = "mini01";
cfgAfter EnableStlAllocatorChecker = 0;
cfgAfter // start commands for setting up the exchange level caps of different mini01 shards
// cfgAfter StartCommands += { "setShardExchangeLimit 101 250" };
// cfgAfter StartCommands += { "displayShardExchangeLimits" };
// shard unifier -------------------
define shard_mini01_unifier
shard unifier
cfg ShardId = 300;
data data_www
use ras
use exe_set_std_unifier
use bms_master
use exe_set_std_lgs_master
use exe_set_std_lgs_slave
use backup_lgs
cfg DBPass = "p4ssw0rd";
host ep1.mini01.ryzomcore.org
// shard mainland01 ----------------
define shard_mini01_mainland01
shard mainland01
use exe_set_mini_mainland
cfg ShardId = 301;
cfg BasePort = 52000;
cfg SaveFilesDirectory="mini01_mainland01/";
cfg NSHost = "ep1.mini01.ryzomcore.org";
cfg FSListenHost = "ep1.mini01.ryzomcore.org";
cfgFile ../cfg/02_shard_type_mini_mainland.cfg
host ep1.mini01.ryzomcore.org
// shard ring01 --------------------
define shard_mini01_ring01
shard ring01
use exe_set_mini_ring
cfg ShardId = 401;
cfg BasePort = 52400;
cfg SaveFilesDirectory="mini01_ring01/";
cfg NSPort = 51100;
cfg NSHost = "ep1.mini01.ryzomcore.org" + 51100;
cfgFile ../cfg/02_shard_type_std_ring.cfg
host ep1.mini01.ryzomcore.org

View file

@ -0,0 +1,442 @@
//-----------------------------------------------------------------------------
// The set of std01 domains
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// std01 Domain
//-----------------------------------------------------------------------------
// the std01 domain -----------------
define domain_std01
domain std01
use shard_std01_unifier
use shard_std01_mainland01
use shard_std01_mainland02
use shard_std01_ring01
use shard_std01_ring02
// domain ports
cfg ASWebPort="46700";
cfg ASPort="46701";
cfg AESPort="46702";
cfg SUPort = 50505;
cfg SUGlobalPort = 50503;
cfg L3BSPort = "49950";
cfg L3SlaveBSPort = "49951";
cfg L3MasterLGSPort = 49992;
cfg L3SlaveLGSPort = 49993;
cfg LGSBSPort = 49994;
cfg L3LGSBSPort = 49995;
// domain hosts
cfg AESHost = "localhost";
cfg SUHost = "su1.std01.ryzomcore.org";
cfg MFSHost = "su1.std01.ryzomcore.org";
cfg BSHost = "pd1.std01.ryzomcore.org:49990"; // Backup service host for domain
cfg SlaveBSHost= "pd2.std01.ryzomcore.org:49991";
cfg MasterLGSHost = "pd3.std01.ryzomcore.org";
cfg SlaveLGSHost = "pd4.std01.ryzomcore.org";
cfg LGSBSHost = "csr.core.ryzomcore.org"; // Backup service host for log service
cfg DBHost = "sql.core.ryzomcore.org";
cfgAfter WebSrvHost = "http://su1.std01.ryzomcore.org:50000/";
// initial config files
cfgFile ../cfg/00_base.cfg
cfgFile ../cfg/01_domain_std01.cfg
// shard names and ids
cfgAfter Mainlands = {
cfgAfter "101", "Mainland 01", "(Mainland 01)", "en",
cfgAfter "102", "Mainland 02", "(Mainland 02)", "en",
cfgAfter };
cfgAfter HomeMainlandNames =
cfgAfter {
cfgAfter "101", "Mainland 01", "mla",
cfgAfter "102", "Mainland 02", "mlb",
cfgAfter };
cfgAfter RRDVarPath = "../rrd_graphs";
// addition of extra filters for this domain
// cfgAfter NegFiltersDebug+= {"DEFAULT_CB", "NET","ADMIN","MIRROR","CDB_MULTI_IMPULSION"};
cfgAfter NegFiltersInfo+= {"FESTATS", "FETIME", "FERECV", "FESEND: sent SYNC message to client 1", "EIT: Register EId"};
cfgAfter NegFiltersWarning+= {"PIPO_SESSION1", "casino_session_matis01", "invalid damage type 10", "_log_Item_Delete",
cfgAfter "_log_Item_Money", "_log_Item_Create", "_log_Item_Move", "botChatMissionAdvance> invalid index 0",
cfgAfter "_MaxRange(0) < _MinRange(1)", "Can't find craft plan sheet 'unknown.unknown'"};
cfgAfter DontUseAES=1;
// cfgAfter RingAccessLimits="d3:j2:f2:l2:p2";
cfgAfter RingRPEnabled=0;
cfgAfter DomainName = "std01";
cfgAfter EnableStlAllocatorChecker = 0;
cfgAfter // start commands for setting up the exchange level caps of different std01 shards
cfgAfter StartCommands += { "setShardExchangeLimit 101 250" };
cfgAfter StartCommands += { "setShardExchangeLimit 102 250" };
cfgAfter StartCommands += { "displayShardExchangeLimits" };
// shard unifier -------------------
define shard_std01_unifier
shard unifier
cfg ShardId = 100;
use shard_exe_set_std01_ras
use shard_exe_set_std01_unifier
define shard_exe_set_std01_ras
use ras
host ep1.std01.ryzomcore.org
define shard_exe_set_std01_unifier
use exe_set_std_unifier
host su1.std01.ryzomcore.org
cfg DBPass = "p4ssw0rd";
// shard mainland01 ----------------
define shard_std01_mainland01
shard mainland01
use shard_exe_set_std01_mainland01_be01
use shard_exe_set_std01_mainland01_be02
use shard_exe_set_std01_mainland01_be03
use shard_exe_set_std01_mainland01_fe01
use shard_exe_set_std01_mainland01_fe02
cfg ShardId = 101;
cfg BasePort = 51000;
cfg SaveFilesDirectory="std01_mainland01/";
cfg NSHost = "mla1.std01.ryzomcore.org";
cfgFile ../cfg/02_shard_type_std_mainland.cfg
define shard_exe_set_std01_mainland01_be01
use exe_set_std_mainland_be01
host mla1.std01.ryzomcore.org
define shard_exe_set_std01_mainland01_be02
use exe_set_std_mainland_be02
host mla2.std01.ryzomcore.org
define shard_exe_set_std01_mainland01_be03
use exe_set_std_mainland_be03
host mla3.std01.ryzomcore.org
define shard_exe_set_std01_mainland01_fe01
use exe_set_std_mainland_fe
host mla4.std01.ryzomcore.org
cfg FSListenHost = "mla4.std01.ryzomcore.org";
define shard_exe_set_std01_mainland01_fe02
use exe_set_std_mainland_fe
host mla5.std01.ryzomcore.org
cfg FSListenHost = "mla5.std01.ryzomcore.org";
// shard mainland02 ----------------
define shard_std01_mainland02
shard mainland02
use shard_exe_set_std01_mainland02_be01
use shard_exe_set_std01_mainland02_be02
use shard_exe_set_std01_mainland02_be03
use shard_exe_set_std01_mainland02_fe01
use shard_exe_set_std01_mainland02_fe02
cfg ShardId = 102;
cfg BasePort = 51100;
cfg SaveFilesDirectory="std01_mainland02/";
cfg NSHost = "mlb1.std01.ryzomcore.org";
cfgFile ../cfg/02_shard_type_std_mainland.cfg
define shard_exe_set_std01_mainland02_be01
use exe_set_std_mainland_be01
host mlb1.std01.ryzomcore.org
define shard_exe_set_std01_mainland02_be02
use exe_set_std_mainland_be02
host mlb2.std01.ryzomcore.org
define shard_exe_set_std01_mainland02_be03
use exe_set_std_mainland_be03
host mlb3.std01.ryzomcore.org
define shard_exe_set_std01_mainland02_fe01
use exe_set_std_mainland_fe
host mlb4.std01.ryzomcore.org
cfg FSListenHost = "mlb4.std01.ryzomcore.org";
define shard_exe_set_std01_mainland02_fe02
use exe_set_std_mainland_fe
host mlb5.std01.ryzomcore.org
cfg FSListenHost = "mlb5.std01.ryzomcore.org";
// shard ring01 --------------------
define shard_std01_ring01
shard ring01
use shard_exe_set_std01_ring01_be
use shard_exe_set_std01_ring01_fe
cfg ShardId = 201;
cfg BasePort = 51400;
cfg SaveFilesDirectory="std01_ring01/";
cfg NSHost = "rra1.std01.ryzomcore.org";
cfgFile ../cfg/02_shard_type_std_ring.cfg
define shard_exe_set_std01_ring01_be
use exe_set_std_ring_be
host rra1.std01.ryzomcore.org
define shard_exe_set_std01_ring01_fe
use exe_set_std_ring_fe
host rra2.std01.ryzomcore.org
cfg FSListenHost = "rra2.std01.ryzomcore.org";
// shard ring02 --------------------
define shard_std01_ring02
shard ring02
use shard_exe_set_std01_ring02_be
use shard_exe_set_std01_ring02_fe
cfg ShardId = 202;
cfg BasePort = 51500;
cfg SaveFilesDirectory="std01_ring02/";
cfg NSHost = "rrb1.std01.ryzomcore.org";
cfgFile ../cfg/02_shard_type_std_ring.cfg
define shard_exe_set_std01_ring02_be
use exe_set_std_ring_be
host rrb1.std01.ryzomcore.org
define shard_exe_set_std01_ring02_fe
use exe_set_std_ring_fe
host rrb2.std01.ryzomcore.org
cfg FSListenHost = "rrb2.std01.ryzomcore.org";
// the std01 backup domain ----------
define domain_std01_backup
domain backup01
use shard_std01_backup_ras
use shard_std01_backup
use shard_std01_lgs
// domain ports
cfg ASWebPort="46710";
cfg ASPort="46711";
cfg AESPort="46712";
// initial config files
cfgFile ../cfg/00_base.cfg
cfgFile ../cfg/01_domain_std01.cfg
// addition of extra filters for this domain
cfgAfter NegFiltersDebug+= {"DEFAULT_CB", "NET","ADMIN","MIRROR","CDB_MULTI_IMPULSION"};
cfgAfter NegFiltersInfo+= {"NET", "FETIME","TimerManagerUpdate"};
cfgAfter NegFiltersWarning+= {"AES"};
// Force all backup services to launch in write only mode
cfgAfter BSReadState = 0;
cfgAfter RRDVarPath = "../rrd_graphs";
cfgAfter DontUseAES=1;
cfgAfter DontUseNS=1;
// shard names and ids
cfgAfter Mainlands = {
cfgAfter "101", "Mainland 01", "(Mainland 01)", "en",
cfgAfter "102", "Mainland 02", "(Mainland 02)", "en",
cfgAfter };
cfgAfter HomeMainlandNames =
cfgAfter {
cfgAfter "101", "Mainland 01", "mla",
cfgAfter "102", "Mainland 02", "mlb",
cfgAfter };
// backup domain ras ---------------
define shard_std01_backup_ras
shard std01_backup_ras
cfg ShardId = 100;
use ras
host ep1.std01.ryzomcore.org
// the main backup pair ------------
define shard_std01_backup
shard backup
use shard_exe_set_std01_backup_master
use shard_exe_set_std01_backup_slave
define shard_exe_set_std01_backup_master
name bs_master
use exe_set_std_backup_master
host pd1.std01.ryzomcore.org
define shard_exe_set_std01_backup_slave
name bs_slave
// hack to workaround bug in backup service
// use exe_set_std_backup_slave
use exe_set_std01_backup_slave
host pd2.std01.ryzomcore.org
cfgAfter MasterBSHost = "pd1.std01.ryzomcore.org:49990";
// hack to workaround bug in backup service
define exe_set_std01_backup_slave
use raes
use std01_backup_slave
use pdss
// hack to workaround bug in backup service
define std01_backup_slave
use bms
cmdLine backup_service -C. -L. --nobreak --writepid -P49991
cfg #include "../std01/cfg/backup_module_service_slave.cfg"
cfgAfter ListeningPort = 49991;
cfgAfter L3ListeningPort = 49951;
cfgAfter WebPort = 49971;
cfgAfter BSReadState = 0;
cfgAfter SaveShardRoot = "../save_shard/";
// lgs pair & relates bs ------------
define shard_std01_lgs
shard lgs
use shard_exe_set_std01_lgs_primary
use shard_exe_set_std01_lgs_secondary
use shard_exe_set_std01_lgs_bs
cfg L3MasterLGSPort = 49992;
cfg L3SlaveLGSPort = 49993;
cfg LGSBSPort = 49994;
cfg L3LGSBSPort = 49995;
cfg MasterLGSHost = "pd3.std01.ryzomcore.org";
cfg SlaveLGSHost = "pd4.std01.ryzomcore.org";
cfg LGSBSHost = "csr.core.ryzomcore.org";
define shard_exe_set_std01_lgs_primary
name lgs_primary
use raes
use exe_set_std_lgs_master
host pd3.std01.ryzomcore.org
define shard_exe_set_std01_lgs_secondary
name lgs_secondary
use raes
use exe_set_std_lgs_slave
host pd4.std01.ryzomcore.org
define shard_exe_set_std01_lgs_bs
name lgs_bs
use raes
use backup_lgs
host csr.core.ryzomcore.org
// the std01 las domain -------------
define domain_std01_las
domain las01
use shard_std01_las_ras
use shard_std01_las_master
use shard_std01_las_slave
// domain ports
cfg ASWebPort="46720";
cfg ASPort="46721";
cfg AESPort="46722";
// initial config files
cfgFile ../cfg/00_base.cfg
// cfgFile ../cfg/01_domain_std01.cfg
// addition of extra filters for this domain
cfgAfter NegFiltersDebug+= {"DEFAULT_CB", "NET","ADMIN","MIRROR","CDB_MULTI_IMPULSION"};
cfgAfter NegFiltersInfo+= {"NET", "FETIME","TimerManagerUpdate"};
cfgAfter NegFiltersWarning+= {"AES"};
cfgAfter DontUseAES=1;
// las domain ras ------------------
define shard_std01_las_ras
shard std01_las_ras
cfg ShardId = 100;
use ras
host ep1.std01.ryzomcore.org
// master las ----------------------
define shard_std01_las_master
shard std01_las_master
cfg ShardId = 99;
use raes
use las_mainland01
use las_mainland02
use las_ring01
use las_ring02
host pd3.std01.ryzomcore.org
define las_mainland01
cfgAfter StartCommands += {"PDRootDirectory /srv/core/backup01/save_shard_pd/std01_mainland01/pds"};
cfgAfter WebPort = 49899;
name las_mainland01
use las
define las_mainland02
cfgAfter StartCommands += {"PDRootDirectory /srv/core/backup01/save_shard_pd/std01_mainland02/pds"};
cfgAfter WebPort = 49898;
name las_mainland02
use las
define las_ring01
cfgAfter StartCommands += {"PDRootDirectory /srv/core/backup01/save_shard_pd/std01_ring01/pds"};
cfgAfter WebPort = 49894;
name las_ring01
use las
define las_ring02
cfgAfter StartCommands += {"PDRootDirectory /srv/core/backup01/save_shard_pd/std01_ring02/pds"};
cfgAfter WebPort = 49893;
name las_ring02
use las
// slave las ------------------------
define shard_std01_las_slave
shard std01_las_slave
cfg ShardId = 98;
use raes
use las_mainland01_slave
use las_mainland02_slave
use las_ring01_slave
use las_ring02_slave
host pd4.std01.ryzomcore.org
define las_mainland01_slave
cfgAfter StartCommands += {"PDRootDirectory /srv/core/backup01/save_shard_pd/std01_mainland01/pds"};
cfgAfter WebPort = 49899;
name las2_mainland01
use las
define las_mainland02_slave
cfgAfter StartCommands += {"PDRootDirectory /srv/core/backup01/save_shard_pd/std01_mainland02/pds"};
cfgAfter WebPort = 49898;
name las2_mainland02
use las
define las_ring01_slave
cfgAfter StartCommands += {"PDRootDirectory /srv/core/backup01/save_shard_pd/std01_ring01/pds"};
cfgAfter WebPort = 49894;
name las2_ring01
use las
define las_ring02_slave
cfgAfter StartCommands += {"PDRootDirectory /srv/core/backup01/save_shard_pd/std01_ring02/pds"};
cfgAfter WebPort = 49893;
name las2_ring02
use las

View file

@ -0,0 +1,93 @@
//--------------------------------------------------------------------------------
// Stuff for Windows (as opposed to Linux)
//--------------------------------------------------------------------------------
// Stuff common to all patchman services
DontUseAES = 1;
DontUseTS = 1;
DontUseNS = 1;
UpdateAssertionThreadTimeout = 0;
// Common Filters
NegFiltersDebug = { "NET", "VERBOSE", "GUSREP" };
NegFiltersInfo = { "NET" };
NegFiltersWarning = { "NETL", "CT_LRC", "VAR:" };
// Setting up WIN displayer
WindowStyle = "WIN";
FontName = "Courier New";
FontSize = 9;
// For windows boxes we dissable out stdin thread
DontUseStdIn = 1;
// how to sleep between to network update
// 0 = pipe
// 1 = usleep
// 2 = nanosleep
// 3 = sched_yield
// 4 = nothing
UseYieldMethod = 0;
//--------------------------------------------------------------------------------
// Start Commands for configuring modules
StartCommands +=
{
//------------------------------------------------------------------------------
// Setup gateways
// bridge gateway
// "moduleManager.createModule StandardGateway gw1",
// "gw1.transportAdd L3Client l3client",
// "gw1.transportCmd l3client(connect addr=ep1.mini01.ryzomcore.org:44748)",
// ats spm gateway
"moduleManager.createModule StandardGateway gw2",
"gw2.transportAdd L3Client l3client",
"gw2.transportCmd l3client(connect addr=ep1.mini01.ryzomcore.org:44751)",
//------------------------------------------------------------------------------
// Setup for terminal
// setup an 'spt' module to act as a terminal for the internal spm module
"moduleManager.createModule ServerPatchTerminal terminal target=spm_mini01",
"terminal.plug gw1",
"terminal.plug gw2",
};
//--------------------------------------------------------------------------------
// Displayed Variables...
DisplayedVariables +=
{
"@States|terminal.state *",
"", "@MINI01 Domains (Core Mini)|terminal.dump",
"", "@SPA States|terminal.state *spa",
"@Deploy|terminal.uploadDepCfg",
"@PAM States|terminal.state *pam",
"@Update PAMs|terminal.on *pam installUpdate",
"@Quit PAMs|terminal.on *pam quit",
"", "SPT0",
"", "SPT1",
"", "SPT2",
"", "SPT3",
"", "SPT4",
"", "SPT5",
// "", "SPT6",
// "", "SPT7",
// "", "SPT8",
// "", "SPT9",
// "", "SPTA",
// "", "SPTB",
// "", "SPTC",
// "", "SPTD",
// "", "SPTE",
// "", "SPTF",
// "", "LastMsg|LastSPTMessage",
};
NumSPTWatches=5;

View file

@ -0,0 +1,10 @@
// ---------------------------------
// common definitions
include "../shard_ctrl_definitions.txt"
// ---------------------------------
// live domain
include "../shard_ctrl_mini01.txt"

View file

@ -0,0 +1,2 @@
@echo off
start S:\devw_x86\bin\Release\ryzom_patchman_service.exe --nolog -C. -L.

View file

@ -0,0 +1,93 @@
//--------------------------------------------------------------------------------
// Stuff for Windows (as opposed to Linux)
//--------------------------------------------------------------------------------
// Stuff common to all patchman services
DontUseAES = 1;
DontUseTS = 1;
DontUseNS = 1;
UpdateAssertionThreadTimeout = 0;
// Common Filters
NegFiltersDebug = { "NET", "VERBOSE", "GUSREP" };
NegFiltersInfo = { "NET" };
NegFiltersWarning = { "NETL", "CT_LRC", "VAR:" };
// Setting up WIN displayer
WindowStyle = "WIN";
FontName = "Courier New";
FontSize = 9;
// For windows boxes we dissable out stdin thread
DontUseStdIn = 1;
// how to sleep between to network update
// 0 = pipe
// 1 = usleep
// 2 = nanosleep
// 3 = sched_yield
// 4 = nothing
UseYieldMethod = 0;
//--------------------------------------------------------------------------------
// Start Commands for configuring modules
StartCommands +=
{
//------------------------------------------------------------------------------
// Setup gateways
// bridge gateway
// "moduleManager.createModule StandardGateway gw1",
// "gw1.transportAdd L3Client l3client",
// "gw1.transportCmd l3client(connect addr=localhost:44748)",
// ats spm gateway
"moduleManager.createModule StandardGateway gw2",
"gw2.transportAdd L3Client l3client",
"gw2.transportCmd l3client(connect addr=localhost:44752)",
//------------------------------------------------------------------------------
// Setup for terminal
// setup an 'spt' module to act as a terminal for the internal spm module
"moduleManager.createModule ServerPatchTerminal terminal target=spm_std01",
"terminal.plug gw1",
"terminal.plug gw2",
};
//--------------------------------------------------------------------------------
// Displayed Variables...
DisplayedVariables +=
{
"@States|terminal.state *",
"", "@STD01 Domains (live,backup,las)|terminal.dump",
"", "@SPA States|terminal.state *spa",
"@Deploy|terminal.uploadDepCfg",
"@PAM States|terminal.state *pam",
"@Update PAMs|terminal.on *pam installUpdate",
"@Quit PAMs|terminal.on *pam quit",
"", "SPT0",
"", "SPT1",
"", "SPT2",
"", "SPT3",
"", "SPT4",
"", "SPT5",
// "", "SPT6",
// "", "SPT7",
// "", "SPT8",
// "", "SPT9",
// "", "SPTA",
// "", "SPTB",
// "", "SPTC",
// "", "SPTD",
// "", "SPTE",
// "", "SPTF",
// "", "LastMsg|LastSPTMessage",
};
NumSPTWatches=5;

View file

@ -0,0 +1,10 @@
// ---------------------------------
// common definitions
include "../shard_ctrl_definitions.txt"
// ---------------------------------
// live domain
include "../shard_ctrl_std01.txt"

View file

@ -0,0 +1,2 @@
@echo off
start S:\devw_x86\bin\Release\ryzom_patchman_service.exe --nolog -C. -L.