Skip to content
This repository was archived by the owner on Jan 3, 2019. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
5cb63f3
updated bam to version 0.5.x
Jan 1, 2019
aed36b6
added fifofile - ability to execute rcon commands without being conne…
jxsl13 Jan 1, 2019
db87e27
Added rank merging and zCatch game mode specific database tables. Upd…
jxsl13 Jan 2, 2019
a2d4b92
fixing ip spoofing/flooding vulnerability as explained here: https://…
jxsl13 Jan 2, 2019
24b8292
added example autoexec.cfg
jxsl13 Jan 2, 2019
8559965
updated ip spoofing/flooding prevention in order to accept 0.6.5 clie…
jxsl13 Jan 2, 2019
482b069
added tracking of unique player flags. Each unique player flag is add…
jxsl13 Jan 3, 2019
0458d54
Tracking of client versions added. Maybe some visual rcon output refa…
jxsl13 Jan 3, 2019
fdad8e5
changed default score limit to 0(=infinite), as zCatch usually does n…
jxsl13 Jan 3, 2019
d358709
fix rejoin vote exploit. After voting a player was able to simply rej…
jxsl13 Jan 3, 2019
9c8f10d
fix order of checks & vanilla description
jxsl13 Jan 13, 2019
466c978
Rebranding to simply zCatch, made client flags / version numbers non-…
jxsl13 Jan 13, 2019
a78ce4e
fixing some zcatch related warnings.
jxsl13 Jan 17, 2019
c0a90db
added some general ranking statistics and some sqlite predefined view…
jxsl13 Jan 17, 2019
32077b3
fixed strlen definition / include
jxsl13 Jan 17, 2019
2111844
updated license
jxsl13 Jan 26, 2019
9a8df62
updated license
jxsl13 Jan 26, 2019
336e852
updated license
jxsl13 Jan 26, 2019
9ac5cb1
Rename readme.txt to readme.md
jxsl13 Jan 26, 2019
eab3540
Update readme.md
jxsl13 Jan 26, 2019
f545142
Update and rename readme.md to readme.txt
jxsl13 Jan 26, 2019
d3f10bf
visually updated statistics
jxsl13 Jan 26, 2019
a55d047
updated ranking to be more transparent and easier to comprehend. Made…
jxsl13 Jan 27, 2019
db16cc2
Updated individual and other player's ranking messages to be optional…
jxsl13 Jan 27, 2019
2e11606
fixing division by zero stuff.
jxsl13 Jan 27, 2019
3007c28
fixing spree/win calculation and showing most of the ranking stuff to…
jxsl13 Jan 27, 2019
1dd3843
Updated score system that uses normalized scoring, where you can scor…
jxsl13 Jan 27, 2019
14594f2
We want to have one score point per kill. As people seem to prefer a …
jxsl13 Jan 29, 2019
f79fa85
refactor, remove zombie code
jxsl13 Feb 6, 2019
49bccff
fix macOS latest compiler issues i386 is deprecated
jxsl13 Apr 23, 2019
2987387
squeeze winner score between 0.0 and 1.0
jxsl13 Apr 23, 2019
4010bf8
add possibility to enable/disable releasing players
jxsl13 Apr 23, 2019
7b46771
added client version to protocol and a proper handling of the receive…
jxsl13 Apr 23, 2019
355bcc2
added makefile for easy building & made license more permissive
jxsl13 Apr 26, 2019
eca6d90
readme indentation...
jxsl13 Apr 26, 2019
fb2c077
more indents...
jxsl13 Apr 26, 2019
b764d42
added experimental feature where the admin is able to view a players …
May 5, 2019
b35a5db
changed cursor visibility for admins. Only visible from spec
May 9, 2019
d4832ce
added the teehistorian player tracking format. #8
May 11, 2019
0224062
fixed that points were not properly given to the winning players.
May 12, 2019
9fa50bb
Revert "squeeze winner score between 0.0 and 1.0"
May 12, 2019
9ddf7f0
fix ranking scoring
May 12, 2019
ddba5b2
update makefile
May 12, 2019
966a149
fix: IConsole::ACCESS_LEVEL_NO is -1 -> admin is considered authed af…
May 12, 2019
d22ac40
update makefile
May 12, 2019
b0e7cfb
added some missing teehistorian code to the python script.
May 15, 2019
88aa492
minor teehistorian update to save the correct currently used weapon
May 16, 2019
109d070
choise =! choice
ChillerDragon Jun 5, 2019
2567f51
Merge pull request #12 from ChillerDragon-backup/zCatch
jxsl13 Jun 5, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ objs
src/game/generated
SDL.dll
freetype.dll
autoexec.cfg

crapnet*
dilate*
Expand Down
71 changes: 71 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/bin/bash

# This file is used on unix (linux + macOS)
# systems to easily build the executable
# for the server

BAM_DIR=bam
CORES=2

default: release_server
clean: clean_build

update_release_server: backup_autoexec update_repository restore_autoexec release_server
@echo "Done updating the release server executable!"

restore_autoexec:
@echo "Restoring autoexec.cfg"
rm autoexec.cfg
mv autoexec.cfg.backup autoexec.cfg

update_repository:
git checkout autoexec.cfg
git pull

backup_autoexec:
@echo "Backing up autoexec.cfg"
cp autoexec.cfg autoexec.cfg.backup


release_server: build_bam
@echo "Building normal server executable..."
../${BAM_DIR}/bam -j ${CORES} -a server_release


debug_server: build_bam
@echo "Building debug server executable..."
@../${BAM_DIR}/bam -j ${CORES} -a server_debug


build_bam: download_bam
@echo "Building bam..."
@cd ../${BAM_DIR} && \
chmod +x make_unix.sh && \
./make_unix.sh && \
chmod +x bam


download_bam:
# if this fails, we wanna continue anyway,
# as it seems that bam has already been downloaded
# failures are ignored by a - in front of the line
@echo "Downloading bam..."
-cd .. && \
git clone https://github.com/matricks/bam.git ${BAM_DIR}


clean_all: clean_build
@echo "Removing bam directory..."
cd .. && \
rm -rf ${BAM_DIR}


clean_build:
@echo "Cleaning object files..."
../${BAM_DIR}/bam -c all






42 changes: 42 additions & 0 deletions autoexec.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
sv_name zCatch Server
sv_port 8303

sv_max_clients 16
sv_max_clients_per_ip 2

sv_rcon_password xxxxx
sv_register 1
sv_rcon_max_tries 2
sv_rcon_bantime 30

sv_map ctf5
sv_mode 4

sv_ranking_file ranking.db

sv_motd "Message of the day."

add_info 90 "Vote in English."
add_info 90 "Have fun!"
add_info 90 "Talk before voting!"
add_info 90 "No funvoting!"
add_info 90 "Play fairly!"
add_info 90 "Be friendly!"
add_info 90 "Help new players!"

add_vote "" ""
add_vote "===== Server Options ====="
add_vote "Enable Releasing Players" "sv_allow_release 1"
add_vote "Disable Releasing Players" "sv_allow_release 0"
add_vote "" ""
add_vote "========== Maps ==========" ""
add_vote "CTF5" "change_map ctf5"


sv_anticamper 1

sv_input_fifo "fifofile"
logfile logfile.log

debug 0
sv_teehistorian 1
47 changes: 27 additions & 20 deletions bam.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
CheckVersion("0.4")

Import("configure.lua")
Import("other/sdl/sdl.lua")
Expand Down Expand Up @@ -151,8 +150,13 @@ function build(settings)
-- disable visibility attribute support for gcc on windows
settings.cc.defines:Add("NO_VIZ")
elseif platform == "macosx" then
settings.cc.flags:Add("-mmacosx-version-min=10.5")
settings.link.flags:Add("-mmacosx-version-min=10.5")
settings.cc.flags:Add("-mmacosx-version-min=10.7")
settings.link.flags:Add("-mmacosx-version-min=10.7")

-----jxsl13 was here mac os x thread crap -----
settings.cc.flags:Add("--stdlib=libc++")
settings.link.flags:Add("--stdlib=libc++")
----------
if config.minmacosxsdk.value == 1 then
settings.cc.flags:Add("-isysroot /Developer/SDKs/MacOSX10.5.sdk")
settings.link.flags:Add("-isysroot /Developer/SDKs/MacOSX10.5.sdk")
Expand Down Expand Up @@ -206,6 +210,9 @@ function build(settings)
-- build sqlite
sqlite = Compile(settings, Collect("src/engine/external/sqlite/sqlite3.c"))

-- build md5 --
md5 = Compile(settings, Collect("src/engine/external/md5/md5.c"))

-- build game components
engine_settings = settings:Copy()
server_settings = engine_settings:Copy()
Expand Down Expand Up @@ -236,12 +243,17 @@ function build(settings)
-- apply freetype settings
config.freetype:Apply(client_settings)

engine = Compile(engine_settings, Collect("src/engine/shared/*.cpp", "src/base/*.c"))
client = Compile(client_settings, Collect("src/engine/client/*.cpp"))

-- we need threads in the server
-- settings.cc.flags:Add("-std=c++11")
-- threads need c++11
settings.cc.flags:Add("-std=c++11")

engine_cpp = Compile(settings, Collect("src/engine/shared/*.cpp", "src/base/*.cpp"))
engine = Compile(engine_settings, Collect("src/base/*.c"))
client = Compile(client_settings, Collect("src/engine/client/*.cpp"))

-- we need threads in the server

server = Compile(server_settings, Collect("src/engine/server/*.cpp"))

versionserver = Compile(settings, Collect("src/versionsrv/*.cpp"))
Expand All @@ -264,27 +276,23 @@ function build(settings)
tools = {}
for i,v in ipairs(tools_src) do
toolname = PathFilename(PathBase(v))
tools[i] = Link(settings, toolname, Compile(settings, v), engine, zlib, pnglite)
tools[i] = Link(settings, toolname, Compile(settings, v), engine, md5, zlib, pnglite)
end

-- build client, server, version server and master server
client_exe = Link(client_settings, "teeworlds", game_shared, game_client,
engine, client, game_editor, zlib, pnglite, wavpack,
engine, client, game_editor, md5, zlib, pnglite, wavpack,
client_link_other, client_osxlaunch)

server_exe = Link(server_settings, "zcatch_srv", engine, server,
game_shared, game_server, zlib, sqlite, server_link_other)
server_exe = Link(server_settings, "zcatch_srv", engine, engine_cpp, server,
game_shared, game_server, md5, zlib, sqlite, server_link_other)

serverlaunch = {}
if platform == "macosx" then
serverlaunch = Link(launcher_settings, "serverlaunch", server_osxlaunch)
end

versionserver_exe = Link(server_settings, "versionsrv", versionserver,
engine, zlib)
engine, md5, zlib)

masterserver_exe = Link(server_settings, "mastersrv", masterserver,
engine, zlib)
engine, md5, zlib)


-- make targets
Expand All @@ -307,6 +315,9 @@ debug_settings.config_ext = "_d"
debug_settings.debug = 1
debug_settings.optimize = 0
debug_settings.cc.defines:Add("CONF_DEBUG")
-- jxsl13 was here sanitizer for debugging stuff --
--debug_settings.cc.flags:Add("-fsanitize=address")
--debug_settings.cc.flags:Add("-fsanitize=leak")

release_settings = NewSettings()
release_settings.config_name = "release"
Expand Down Expand Up @@ -341,15 +352,11 @@ if platform == "macosx" then
debug_settings_x86 = debug_settings:Copy()
debug_settings_x86.config_name = "debug_x86"
debug_settings_x86.config_ext = "_x86_d"
debug_settings_x86.cc.flags:Add("-arch i386")
debug_settings_x86.link.flags:Add("-arch i386")
debug_settings_x86.cc.defines:Add("CONF_DEBUG")

release_settings_x86 = release_settings:Copy()
release_settings_x86.config_name = "release_x86"
release_settings_x86.config_ext = "_x86"
release_settings_x86.cc.flags:Add("-arch i386")
release_settings_x86.link.flags:Add("-arch i386")
release_settings_x86.cc.defines:Add("CONF_RELEASE")

x86_d = build(debug_settings_x86)
Expand Down
18 changes: 15 additions & 3 deletions configure.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,17 @@

function loadfile_(filename, env)
local file
if _VERSION == "Lua 5.1" then
file = loadfile(filename)
if file then
setfenv(file, env)
end
else
file = loadfile(filename, nil, env)
end
return file
end

--[[@GROUP Configuration@END]]--

--[[@FUNCTION
Expand Down Expand Up @@ -72,21 +85,20 @@ function NewConfig(on_configured_callback)
end

config.Load = function(self, filename)
local options_func = loadfile(filename)
local options_table = {}
local options_func = loadfile_(filename, options_table)

if not options_func then
print("auto configuration")
self:Config(filename)
options_func = loadfile(filename)
options_func = loadfile_(filename, options_table)
end

if options_func then
-- Setup the options tables
for k,v in pairs(self.options) do
options_table[v.name] = {}
end
setfenv(options_func, options_table)

-- this is to make sure that we get nice error messages when
-- someone sets an option that isn't valid.
Expand Down
25 changes: 25 additions & 0 deletions datasrc/compile.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ class CNetObjHandler

const char *GetMsgName(int Type);
void *SecureUnpackMsg(int Type, CUnpacker *pUnpacker);
bool TeeHistorianRecordMsg(int Type);
const char *FailedMsgOn();
};

Expand Down Expand Up @@ -310,6 +311,30 @@ class CNetObjHandler
lines += ['};']
lines += ['']

lines += ['bool CNetObjHandler::TeeHistorianRecordMsg(int Type)']
lines += ['{']
lines += ['\tswitch(Type)']
lines += ['\t{']
empty = True
for msg in network.Messages:
if not msg.teehistorian:
lines += ['\tcase %s:' % msg.enum_name]
empty = False
if not empty:
lines += ['\t\treturn false;']
lines += ['\tdefault:']
lines += ['\t\treturn true;']
lines += ['\t}']
lines += ['}']
lines += ['']

lines += ['void RegisterGameUuids(CUuidManager *pManager)']
lines += ['{']

for item in network.Objects + network.Messages:
if item.ex is not None:
lines += ['\tpManager->RegisterName(%s, "%s");' % (item.enum_name, item.ex)]
lines += ['}']

for l in lines:
print(l)
Expand Down
25 changes: 19 additions & 6 deletions datasrc/datatypes.py
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ def __init__(self, name, values):
self.values = values

class NetObject:
def __init__(self, name, variables):
def __init__(self, name, variables, ex=None):
l = name.split(":")
self.name = l[0]
self.base = ""
Expand All @@ -208,6 +208,7 @@ def __init__(self, name, variables):
self.struct_name = "CNetObj_%s" % self.name
self.enum_name = "NETOBJTYPE_%s" % self.name.upper()
self.variables = variables
self.ex = ex
def emit_declaration(self):
if self.base:
lines = ["struct %s : public %s"%(self.struct_name,self.base_struct_name), "{"]
Expand All @@ -221,7 +222,7 @@ def emit_validate(self):
lines = ["case %s:" % self.enum_name]
lines += ["{"]
lines += ["\t%s *pObj = (%s *)pData;"%(self.struct_name, self.struct_name)]
lines += ["\tif(sizeof(*pObj) != Size) return -1;"]
lines += ["\tif((int)sizeof(*pObj) > Size) return -1;"]
for v in self.variables:
lines += ["\t"+line for line in v.emit_validate()]
lines += ["\treturn 0;"]
Expand All @@ -230,18 +231,19 @@ def emit_validate(self):


class NetEvent(NetObject):
def __init__(self, name, variables):
NetObject.__init__(self, name, variables)
def __init__(self, name, variables, ex=None):
NetObject.__init__(self, name, variables, ex=ex)
self.base_struct_name = "CNetEvent_%s" % self.base
self.struct_name = "CNetEvent_%s" % self.name
self.enum_name = "NETEVENTTYPE_%s" % self.name.upper()

class NetMessage(NetObject):
def __init__(self, name, variables):
NetObject.__init__(self, name, variables)
def __init__(self, name, variables, ex=None, teehistorian=True):
NetObject.__init__(self, name, variables, ex=ex)
self.base_struct_name = "CNetMsg_%s" % self.base
self.struct_name = "CNetMsg_%s" % self.name
self.enum_name = "NETMSGTYPE_%s" % self.name.upper()
self.teehistorian = teehistorian
def emit_unpack(self):
lines = []
lines += ["case %s:" % self.enum_name]
Expand Down Expand Up @@ -271,6 +273,17 @@ def emit_declaration(self):
lines = lines[:-1] + extra + lines[-1:]
return lines

class NetObjectEx(NetObject):
def __init__(self, name, ex, variables):
NetObject.__init__(self, name, variables, ex=ex)

class NetEventEx(NetEvent):
def __init__(self, name, ex, variables):
NetEvent.__init__(self, name, variables, ex=ex)

class NetMessageEx(NetMessage):
def __init__(self, name, ex, variables, teehistorian=True):
NetMessage.__init__(self, name, variables, ex=ex)

class NetVariable:
def __init__(self, name):
Expand Down
Loading