ports/154765: [NEW PORT] games/ghost++: Warcraft 3 game hosting bot
ports at c0decafe.net
ports at c0decafe.net
Mon Feb 14 01:50:08 UTC 2011
>Number: 154765
>Category: ports
>Synopsis: [NEW PORT] games/ghost++: Warcraft 3 game hosting bot
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Mon Feb 14 01:50:07 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator: ports at c0decafe.net
>Release: FreeBSD 8.1-RELEASE-p2 amd64
>Organization:
c0decafe networks
>Environment:
System: FreeBSD absolut.c0decafe.net 8.1-RELEASE-p2 FreeBSD 8.1-RELEASE-p2 #2: Sat Dec 11 02:59:34 EET 2010
>Description:
GHost++ is a Warcraft 3 game hosting bot.
It can host Warcraft III games on LAN, on battle.net, on PVPGN,
and on any combination of these networks at the same time.
WWW: https://code.google.com/p/ghostplusplus/
Generated with FreeBSD Port Tools 0.99
>How-To-Repeat:
>Fix:
--- ghost++-17.1.shar begins here ---
# This is a shell archive. Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file". Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
# ghost++
# ghost++/files
# ghost++/files/patch-Makefile
# ghost++/files/patch-include
# ghost++/files/patch-default.cfg
# ghost++/files/ghostpp.in
# ghost++/pkg-descr
# ghost++/Makefile
# ghost++/pkg-plist
# ghost++/distinfo
#
echo c - ghost++
mkdir -p ghost++ > /dev/null 2>&1
echo c - ghost++/files
mkdir -p ghost++/files > /dev/null 2>&1
echo x - ghost++/files/patch-Makefile
sed 's/^X//' >ghost++/files/patch-Makefile << '5a7707d92b7e5b0c6c423bac1c2ddec5'
X--- Makefile
X+++ Makefile
X@@ -1,11 +1,10 @@
X SHELL = /bin/sh
X SYSTEM = $(shell uname)
X-C++ = g++
X-CC = gcc
X+C++ = $(CXX)
X DFLAGS = -DGHOST_MYSQL
X-OFLAGS = -O3
X-LFLAGS = -L. -L../bncsutil/src/bncsutil/ -L../StormLib/stormlib/ -lbncsutil -lpthread -ldl -lz -lStorm -lmysqlclient_r -lboost_date_time-mt -lboost_thread-mt -lboost_system-mt -lboost_filesystem-mt
X-CFLAGS =
X+OFLAGS =
X+LFLAGS += -L. -L/usr/local/lib -L/usr/local/lib/mysql -lbncsutil -lpthread -lz -lStorm -lmysqlclient_r -lsqlite3 -lboost_date_time -lboost_thread -lboost_system -lboost_filesystem
X+CFLAGS += -I/usr/local/include
X
X ifeq ($(SYSTEM),Darwin)
X DFLAGS += -D__APPLE__
X@@ -23,31 +22,27 @@
X LFLAGS += -lresolv -lsocket -lnsl
X endif
X
X-CFLAGS += $(OFLAGS) $(DFLAGS) -I. -I../bncsutil/src/ -I../StormLib/
X+CFLAGS += $(OFLAGS) $(DFLAGS) -I.
X
X ifeq ($(SYSTEM),Darwin)
X CFLAGS += -I../mysql/include/
X endif
X
X OBJS = bncsutilinterface.o bnet.o bnetprotocol.o bnlsclient.o bnlsprotocol.o commandpacket.o config.o crc32.o csvparser.o game.o game_admin.o game_base.o gameplayer.o gameprotocol.o gameslot.o ghost.o ghostdb.o ghostdbmysql.o ghostdbsqlite.o gpsprotocol.o language.o map.o packed.o replay.o savegame.o sha1.o socket.o stats.o statsdota.o statsw3mmd.o util.o
X-COBJS = sqlite3.o
X PROGS = ./ghost++
X
X-all: $(OBJS) $(COBJS) $(PROGS)
X+all: $(OBJS) $(PROGS)
X
X-./ghost++: $(OBJS) $(COBJS)
X- $(C++) -o ./ghost++ $(OBJS) $(COBJS) $(LFLAGS)
X+./ghost++: $(OBJS)
X+ $(C++) -o ./ghost++ $(OBJS) $(LFLAGS)
X
X clean:
X- rm -f $(OBJS) $(COBJS) $(PROGS)
X+ rm -f $(OBJS) $(PROGS)
X
X $(OBJS): %.o: %.cpp
X $(C++) -o $@ $(CFLAGS) -c $<
X
X-$(COBJS): %.o: %.c
X- $(CC) -o $@ $(CFLAGS) -c $<
X-
X-./ghost++: $(OBJS) $(COBJS)
X+./ghost++: $(OBJS)
X
X all: $(PROGS)
X
5a7707d92b7e5b0c6c423bac1c2ddec5
echo x - ghost++/files/patch-include
sed 's/^X//' >ghost++/files/patch-include << '89678da7b0ec8489eb35b8c1399dbc18'
X--- ghost.cpp
X+++ ghost.cpp
X@@ -48,7 +48,7 @@
X #endif
X
X #define __STORMLIB_SELF__
X-#include <stormlib/StormLib.h>
X+#include <StormLib/StormLib.h>
X
X /*
X
X--- ghostdbsqlite.cpp
X+++ ghostdbsqlite.cpp
X@@ -23,7 +23,7 @@
X #include "config.h"
X #include "ghostdb.h"
X #include "ghostdbsqlite.h"
X-#include "sqlite3.h"
X+#include <sqlite3.h>
X
X //
X // CQSLITE3 (wrapper class)
X--- map.cpp
X+++ map.cpp
X@@ -26,7 +26,7 @@
X #include "map.h"
X
X #define __STORMLIB_SELF__
X-#include <stormlib/StormLib.h>
X+#include <StormLib/StormLib.h>
X
X #define ROTL(x,n) ((x)<<(n))|((x)>>(32-(n))) // this won't work with signed types
X #define ROTR(x,n) ((x)>>(n))|((x)<<(32-(n))) // this won't work with signed types
89678da7b0ec8489eb35b8c1399dbc18
echo x - ghost++/files/patch-default.cfg
sed 's/^X//' >ghost++/files/patch-default.cfg << '81d948d64b3eef17545863b8203349a5'
X--- ../default.cfg
X+++ ../default.cfg
X@@ -4,25 +4,25 @@
X
X ### the log file
X
X-bot_log = ghost.log
X+bot_log = /var/log/ghost++.log
X
X ### the log method
X ### set this to 1 to leave the log unlocked while GHost++ is running (may be slower, particularly on Windows)
X ### set this to 2 to lock the log while GHost++ is running (may be faster, particularly on Windows)
X ### note: if the log is locked you will not be able to edit/move/delete it while GHost++ is running
X
X-bot_logmethod = 1
X+bot_logmethod = 2
X
X ### the language file
X
X-bot_language = language.cfg
X+bot_language = /usr/local/etc/ghost++/language.cfg
X
X ### the path to your local Warcraft III directory
X ### this path must contain war3.exe, storm.dll, and game.dll
X ### if this path contains War3Patch.mpq the bot will attempt to extract "Scripts\common.j" and "Scripts\blizzard.j" on startup and write them to bot_mapcfgpath (which is defined later in this file)
X ### common.j and blizzard.j are only required for automatically calculating map_crc, you do not need them if your map config files already contain map_crc
X
X-bot_war3path = C:\Program Files\Warcraft III
X+bot_war3path = /var/db/ghost++
X
X ### whether to act as Warcraft III: The Frozen Throne or not
X ### set this to 0 to act as Warcraft III: Reign of Chaos (you WILL NOT need to enter a TFT cd key to login to battle.net)
X@@ -69,17 +69,17 @@
X ### this directory can also contain common.j and blizzard.j (extracted from War3Patch.mpq)
X ### common.j and blizzard.j are only required for automatically calculating map_crc, you do not need them if your map config files already contain map_crc
X
X-bot_mapcfgpath = mapcfgs
X+bot_mapcfgpath = /var/db/ghost++/mapcfgs
X
X ### the path to the directory where you keep your savegame files
X
X-bot_savegamepath = savegames
X+bot_savegamepath = /var/db/ghost++/savegames
X
X ### the path to the directory where you keep your map files
X ### GHost++ doesn't require map files but if it has access to them it can send them to players and automatically calculate most map config values
X ### GHost++ will search [bot_mappath + map_localpath] for the map file (map_localpath is set in each map's config file)
X
X-bot_mappath = maps
X+bot_mappath = /var/db/ghost++/maps
X
X ### whether to save replays or not
X
X@@ -87,7 +87,7 @@
X
X ### the path to the directory where you want GHost++ to save replays
X
X-bot_replaypath = replays
X+bot_replaypath = /var/db/ghost++/replays
X
X ### the Warcraft 3 version to save replays as
X
X@@ -187,7 +187,7 @@
X
X ### the IP blacklist file
X
X-bot_ipblacklistfile = ipblacklist.txt
X+bot_ipblacklistfile = /usr/local/etc/ghost++/ipblacklist.txt
X
X ### automatically close the game lobby if a reserved player (or admin) doesn't join it for this many minutes
X ### games which are set to automatically start when enough players join are exempt from this limit (e.g. autohosted games)
X@@ -229,18 +229,18 @@
X ### the first 8 lines of this file will be displayed when a player joins the game
X ### if this file doesn't exist a default MOTD will be used
X
X-bot_motdfile = motd.txt
X+bot_motdfile = /usr/local/etc/ghost++/motd.txt
X
X ### the gameloaded file
X ### the first 8 lines of this file will be displayed when the game finished loading (after the player loading times are displayed)
X
X-bot_gameloadedfile = gameloaded.txt
X+bot_gameloadedfile = /usr/local/etc/ghost++/gameloaded.txt
X
X ### the gameover file
X ### the first 8 lines of this file will be displayed when the game is over
X ### this only works when using a stats class - note: at the time of this writing the only stats class is for DotA maps
X
X-bot_gameoverfile = gameover.txt
X+bot_gameoverfile = /usr/local/etc/ghost++/gameover.txt
X
X ### whether to send "local admin messages" or not
X ### these messages are battle.net chat messages, whispers, and emotes which the bot receives and passes on to the "local admin"
X@@ -335,7 +335,7 @@
X ### sqlite3 database configuration
X ### this is only used if your database type is SQLite
X
X-db_sqlite3_file = ghost.dbs
X+db_sqlite3_file = /var/db/ghost++/ghost.dbs
X
X ### mysql database configuration
X ### this is only used if your database type is MySQL
81d948d64b3eef17545863b8203349a5
echo x - ghost++/files/ghostpp.in
sed 's/^X//' >ghost++/files/ghostpp.in << 'f6d1b3400139b4cba79387ed9338c133'
X#!/bin/sh
X
X# $FreeBSD$
X#
X# PROVIDE: ghostpp
X# REQUIRE: LOGIN
X# KEYWORD: shutdown
X#
X# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
X# to enable this service:
X#
X# ghostpp_enable (bool): Set to NO by default.
X# Set it to YES to enable ghost++
X# ghostpp_config (path): Set to %%PREFIX%%/etc/ghost++/default.cfg
X# by default.
X#
X
X. /etc/rc.subr
X
Xname="ghostpp"
Xrcvar=${name}_enable
X
Xcommand=%%PREFIX%%/bin/ghost++
Xpidfile=/var/run/ghost++.pid
Xghostpp_chdir=/var/db/ghost++
Xghostpp_user=$name
X
Xload_rc_config ${name}
X
X: ${ghostpp_enable="NO"}
X: ${ghostpp_config="%%PREFIX%%/etc/ghost++/default.cfg"}
X: ${ghostpp_logfile="/var/log/ghost++.log"}
X
Xcommand_args=${ghostpp_config}
X
Xstart_precmd="${name}_prestart"
Xstart_cmd="${name}_start"
X
Xghostpp_start() {
X /usr/sbin/daemon -f -u $name -p $pidfile $command $rc_flags $command_args || return 1
X}
X
Xghostpp_prestart() {
X /usr/bin/touch $pidfile $ghostpp_logfile
X /usr/sbin/chown $name:$name $pidfile $ghostpp_logfile
X}
X
Xrun_rc_command "$1"
f6d1b3400139b4cba79387ed9338c133
echo x - ghost++/pkg-descr
sed 's/^X//' >ghost++/pkg-descr << 'cc2a5d0277cb552c32163a25f9e3fbec'
XGHost++ is a Warcraft 3 game hosting bot.
X
XIt can host Warcraft III games on LAN, on battle.net, on PVPGN,
Xand on any combination of these networks at the same time.
X
XWWW: https://code.google.com/p/ghostplusplus/
cc2a5d0277cb552c32163a25f9e3fbec
echo x - ghost++/Makefile
sed 's/^X//' >ghost++/Makefile << '3218d976c492b3704975ff556f6946bf'
X# New ports collection makefile for: ghost++
X# Date created: 2011-02-13
X# Whom: <ports at c0decafe.net>
X#
X# $FreeBSD$
X#
X
XPORTNAME= ghost++
XPORTVERSION= 17.1
XCATEGORIES= games net
XMASTER_SITES= ${MASTER_SITE_GOOGLE_CODE}
XDISTNAME= ${PROJECTHOST}_${PORTVERSION}
X
XMAINTAINER= ports at c0decafe.net
XCOMMENT= Warcraft 3 game hosting bot
X
XLIB_DEPENDS= StormLib:${PORTSDIR}/devel/stormlib-ghost++ \
X bncsutil:${PORTSDIR}/devel/bncsutil-ghost++ \
X boost_date_time:${PORTSDIR}/devel/boost-libs \
X boost_thread:${PORTSDIR}/devel/boost-libs \
X boost_system:${PORTSDIR}/devel/boost-libs \
X boost_filesystem:${PORTSDIR}/devel/boost-libs
X
XUSE_ZIP= yes
XUSE_DOS2UNIX= yes
XUSE_GMAKE= yes
X
XWRKSRC= ${WRKDIR}/ghost/ghost
XUSE_MYSQL= yes
XUSE_SQLITE= yes
X
XPROJECTHOST= ghostplusplus
X
XUSERS= ghostpp
XGROUPS= ghostpp
X
XUSE_RC_SUBR= ghostpp
X
XGHOST_ETC= default.cfg language.cfg language_german.cfg \
X language_russian.cfg language_spanish.cfg \
X language_turkish.cfg gameloaded.txt \
X gameover.txt ipblacklist.txt
XGHOST_DATA= *.sql
XGHOST_DOC= changelog.txt license.txt readme.txt
XGHOST_VAR= savegames replays maps mapcfgs
XGHOST_VAR_DIR= /var/db/${PORTNAME}
X
Xdo-install:
X ${MKDIR} ${ETCDIR}
X. for f in ${GHOST_ETC}
X ${INSTALL_DATA} ${WRKSRC}/../${f} ${ETCDIR}/${f}-dist
X ${CP} ${ETCDIR}/${f}-dist ${ETCDIR}/${f}
X. endfor
X ${CHGRP} -R ${GROUPS} ${ETCDIR}
X
X ${MKDIR} ${DATADIR}
X ${INSTALL_DATA} ${WRKSRC}/../${GHOST_DATA} ${DATADIR}
X
X.if !defined(NOPORTDOCS)
X ${MKDIR} ${DOCSDIR}
X. for f in ${GHOST_DOC}
X ${INSTALL_DATA} ${WRKSRC}/../${f} ${DOCSDIR}
X. endfor
X.endif
X
X ${MKDIR} ${GHOST_VAR_DIR}
X.for f in ${GHOST_VAR}
X ${CP} -r ${WRKSRC}/../${f} ${GHOST_VAR_DIR}
X.endfor
X ${CHOWN} -R ${USERS}:${GROUPS} ${GHOST_VAR_DIR}
X ${CHMOD} 775 ${GHOST_VAR_DIR} ${GHOST_VAR_DIR}/*
X
X ${MKDIR} ${PREFIX}/bin
X ${INSTALL_PROGRAM} ${WRKSRC}/${PORTNAME} ${PREFIX}/bin/${PORTNAME}
X
X.include <bsd.port.mk>
3218d976c492b3704975ff556f6946bf
echo x - ghost++/pkg-plist
sed 's/^X//' >ghost++/pkg-plist << '4226adb57419342dc6d7d7b27c11e643'
X at comment $FreeBSD$
Xbin/ghost++
X at unexec if cmp -s %D/%%ETCDIR%%/default.cfg %D/%%ETCDIR%%/default.cfg-dist; then rm %D/%%ETCDIR%%/default.cfg; fi
X%%ETCDIR%%/default.cfg-dist
X at unexec if cmp -s %D/%%ETCDIR%%/language.cfg %D/%%ETCDIR%%/language.cfg-dist; then rm %D/%%ETCDIR%%/language.cfg; fi
X%%ETCDIR%%/language.cfg-dist
X at unexec if cmp -s %D/%%ETCDIR%%/language_german.cfg %D/%%ETCDIR%%/language_german.cfg-dist; then rm %D/%%ETCDIR%%/language_german.cfg; fi
X%%ETCDIR%%/language_german.cfg-dist
X at unexec if cmp -s %D/%%ETCDIR%%/language_russian.cfg %D/%%ETCDIR%%/language_russian.cfg-dist; then rm %D/%%ETCDIR%%/language_russian.cfg; fi
X%%ETCDIR%%/language_russian.cfg-dist
X at unexec if cmp -s %D/%%ETCDIR%%/language_spanish.cfg %D/%%ETCDIR%%/language_spanish.cfg-dist; then rm %D/%%ETCDIR%%/language_spanish.cfg; fi
X%%ETCDIR%%/language_spanish.cfg-dist
X at unexec if cmp -s %D/%%ETCDIR%%/language_turkish.cfg %D/%%ETCDIR%%/language_turkish.cfg-dist; then rm %D/%%ETCDIR%%/language_turkish.cfg; fi
X%%ETCDIR%%/language_turkish.cfg-dist
X at unexec if cmp -s %D/%%ETCDIR%%/gameloaded.txt %D/%%ETCDIR%%/gameloaded.txt-dist; then rm %D/%%ETCDIR%%/gameloaded.txt; fi
X%%ETCDIR%%/gameloaded.txt-dist
X at unexec if cmp -s %D/%%ETCDIR%%/gameover.txt %D/%%ETCDIR%%/gameover.txt-dist; then rm %D/%%ETCDIR%%/gameover.txt; fi
X%%ETCDIR%%/gameover.txt-dist
X at unexec if cmp -s %D/%%ETCDIR%%/ipblacklist.txt %D/%%ETCDIR%%/ipblacklist.txt-dist; then rm -f %D/%%ETCDIR%%/ipblacklist.txt; fi
X%%ETCDIR%%/ipblacklist.txt-dist
X at dirrmtry %%ETCDIR%%
X%%DATADIR%%/mysql_create_tables_v1.sql
X%%DATADIR%%/mysql_create_tables_v2.sql
X%%DATADIR%%/mysql_upgrade_v1-v2.sql
X%%DOCSDIR%%/changelog.txt
X%%DOCSDIR%%/license.txt
X%%DOCSDIR%%/readme.txt
X%%PORTDOCS%%@dirrm %%DOCSDIR%%
4226adb57419342dc6d7d7b27c11e643
echo x - ghost++/distinfo
sed 's/^X//' >ghost++/distinfo << '18a0ab11106392f3d88aa08898422a48'
XSHA256 (ghostplusplus_17.1.zip) = bd4acc61ab553213cb39e6a465b38d1ea7a5b9b4ca2b54fa7e082766b98c729f
XSIZE (ghostplusplus_17.1.zip) = 6720401
18a0ab11106392f3d88aa08898422a48
exit
--- ghost++-17.1.shar ends here ---
Also, the uid/gid patches:
--- UIDs
+++ UIDs
@@ -156,6 +156,7 @@
_tss:*:601:601:daemon:0:0:TrouSerS user:/var/empty:/usr/sbin/nologin
_pkcs11:*:602:602:daemon:0:0:opencryptoki user:/var/empty:/usr/sbin/nologin
freeswitch:*:610:610::0:0:Freeswitch user:/nonexistant:/usr/sbin/nologin
+ghostpp:*:611:611::0:0:Warcraft 3 game hosting bot:/var/db/ghost++:/usr/sbin/nologin
_pla:*:636:80::0:0:phpLDAPAdmin Owner:/nonexistent:/usr/sbin/nologin
monkeysphere:*:641:641::0:0:Monkeysphere User:/var/monkeysphere:/usr/local/bin/bash
aox:*:666:666::0:0:Archiveopteryx user:/nonexistent:/usr/sbin/nologin
--- GIDs
+++ GIDs
@@ -148,6 +148,7 @@
_tss:*:601:_tss
_pkcs11:*:602:_pkcs11
freeswitch:*:610:
+ghostpp:*:611:
monkeysphere:*:641:
aox:*:666:
bnetd:*:700:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list