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