summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules6
-rw-r--r--.travis.yml32
-rw-r--r--conf/.gitignore1
-rw-r--r--conf/monitor_athena.conf82
-rw-r--r--conf/monitor_local.conf.example1
-rw-r--r--conf/tmwa-monitor.conf6
-rwxr-xr-xgit/hooks/post-merge17
7 files changed, 145 insertions, 0 deletions
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 00000000..4e0e37ab
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "client-data"]
+ path = client-data
+ url = git://github.com/themanaworld/tmwa-client-data.git
+[submodule "tools"]
+ path = tools
+ url = git://github.com/themanaworld/tmw-tools.git
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 00000000..a2cea500
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,32 @@
+sudo: false
+dist: trusty
+language: c
+compiler: clang
+
+addons:
+ apt:
+ packages:
+ - zlibc
+
+env:
+ - UPDATE_DIR=../../../public UPDATE_HTTP=none
+
+script:
+ - mkdir public
+ - make updates
+ - make news
+ - cp -v world/map/news.txt public/
+ - cp -v world/map/news.html public/
+ - cp -v world/map/news.rss public/
+ - cp -v world/map/news.json public/
+ - echo '<title>static update server</title><a href="TMW.zip">TMW.zip</a><br><a href="TMW-music.zip">TMW-music.zip</a><br><a href="news.txt">news.txt</a><br><a href="resources.xml">resources.xml</a>' > public/index.html
+
+deploy:
+ provider: pages
+ skip-cleanup: true
+ github-token: $GITHUB_TOKEN # Set in travis-ci.org dashboard, marked secure
+ keep-history: false
+ local-dir: public
+ target-branch: gh-pages
+ on:
+ branch: stable
diff --git a/conf/.gitignore b/conf/.gitignore
new file mode 100644
index 00000000..2c43e911
--- /dev/null
+++ b/conf/.gitignore
@@ -0,0 +1 @@
+/*_local.conf
diff --git a/conf/monitor_athena.conf b/conf/monitor_athena.conf
new file mode 100644
index 00000000..68fe65f6
--- /dev/null
+++ b/conf/monitor_athena.conf
@@ -0,0 +1,82 @@
+// Athena Monitor configuration file.
+
+//////////////////////////////////////////////////////////////////////
+// Some notes about the existence of this file:
+//
+// tmwa-monitor is unused in its current form, but plans are
+// to resurrect it in *some* form. See below for what we do use.
+// However, an alternative possibility would be to just install config
+// files to integrate with some existing daemon-monitoring tool.
+//
+// THAT SAID, blindly restarting a server that exited in an unknown
+// way is a really great way to get unrecoverable savefile corruption.
+// For this reason, we only auto-restart the map server, which only
+// persists some unimportant global variables such as high scores.
+// Besides, the other servers are stable enough that they rarely crash.
+//
+// This monitor names three "server"s, but they are just arbitrary.
+// This is not enough for the case of multiple worlds,
+// and is too much for the case of worlds running as different users.
+//
+// Currently the server variables are pointing to local shell scripts
+// (which are themselves deprecated and print a flashing message),
+// which is necessary because the actual servers need to be run inside
+// the appropriate dir to read conf and read/write savefiles from/to
+// the correct location. This will get better once savefiles get put
+// in $localstatedir (i.e. /var), but it's not yet known how that
+// should interact with multiple worlds running at the same time.
+//
+// Likely, however, this will depend on the ability to pass a config
+// file as an argument to the servers.
+//
+// The workdir setting would make a lot more sense if this file was
+// installed in $sysconfdir (i.e. /etc) by tmwa's `make install`,
+// which is still planned but hasn't happened yet, but makes *less*
+// sense if the servers install their config there.
+//
+// And regardless, we need to allow per-server workdirs, including
+// multiple instances, and possible pre/post scripts and exit/signal
+// status handlers. But all that seems complicated, leading back to
+// "shouldn't we just use an existing daemon manager?".
+//
+// Alternatively, we could act like an XDG application, which is
+// admittedly somewhat odd if you're a daemon, but would at least
+// clarify what happens if you run the servers as a user (which we
+// do always. When an init script is written, it should run as
+// somebody other than root!).
+//
+//////////////////////////////////////////////////////////////////////
+//
+// What we actually use instead of tmwa-monitor:
+//
+// On the main server, we run a tmux session, with one window
+// for each server and for each bot. The servers are run directly
+// from inside the appropriate directory.
+//
+// The test server is like the main server without bots, but instead
+// of running `tmwa-map` directly, we use the tmwa-map-wrapper script
+// from tools/, which restarts the server whenever it exits and merges
+// tagged patches from github, except that it does no merges if the
+// server exited too quickly after the restart.
+//
+// On local dev machines, we usually use the `./run-all` script from
+// this repo.
+//
+//////////////////////////////////////////////////////////////////////
+
+
+// Binary to use with message "forked login server".
+login_server: ./login-server
+
+// Binary to use with message "forked char server".
+char_server: ./char-server
+
+// Binary to use with message "forked map server".
+map_server: ./map-server
+
+// Directory in which to run the servers.
+// If never set, dynamically computed as $HOME/tmwserver
+//workdir: /path/to/tmwa-server-data
+
+// local settings for this nonserver in this file
+import: conf/monitor_local.conf
diff --git a/conf/monitor_local.conf.example b/conf/monitor_local.conf.example
new file mode 100644
index 00000000..32d168db
--- /dev/null
+++ b/conf/monitor_local.conf.example
@@ -0,0 +1 @@
+// Athena Monitor local configuration file.
diff --git a/conf/tmwa-monitor.conf b/conf/tmwa-monitor.conf
new file mode 100644
index 00000000..db630d47
--- /dev/null
+++ b/conf/tmwa-monitor.conf
@@ -0,0 +1,6 @@
+// Master config file for The Mana World Athena (monitor component)
+// This file is used since version 14.x.y, but major changes in 15.x.y
+
+// tmwa-monitor is deprecated, see comments in the below file
+
+monitor_conf: conf/monitor_athena.conf
diff --git a/git/hooks/post-merge b/git/hooks/post-merge
new file mode 100755
index 00000000..8a8b6bfc
--- /dev/null
+++ b/git/hooks/post-merge
@@ -0,0 +1,17 @@
+#!/bin/sh
+# Copy or symlink this into your .git/hooks directory.
+# E.g., from the top:
+# ln -s ../../git/hooks/post-merge .git/hooks
+# or cp git/hooks/post-merge .git/hooks
+# It may also be beneficial to install as a post-checkout hook
+
+# If we have local changes in the submodule, rebase or merge them
+# (rebase is better but dangerous in some circumstances)
+# git submodule update --rebase
+git submodule update --merge
+make news
+
+# WARNING: to people with push access.
+# it is essential that changes to the client data be pushed before changes to server data
+# Also, you may find this useful: (you should always clone using the git:// url)
+# git config --global url.git@github.com:.pushInsteadOf git://github.com