1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-10-18 19:49:40 +00:00

- Functionality upgrade. Add in *.txt.sample files so that uninstall/pkg_delete won't delete users settings [1]

- Add mcserver user to GIDs/UIDs [1]
- Added rc startup script [1]
- Lots of PLIST_SUB/SUB_FILES patches to allow substitution, moved several pkg* files to files/*.in [1]
- made USERS a ?= in case server had previously been running as a different user [2]

PR:		ports/163920 [1]
Submitted by:	maintainer [1]
Reviewed by:	scheidell [2]
Approved by:	maintainer, gabor (mentor)
This commit is contained in:
Michael Scheidell 2012-01-12 13:14:45 +00:00
parent 8b7c5a93ea
commit d9939c32b9
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=289019
12 changed files with 307 additions and 13 deletions

1
GIDs
View File

@ -96,6 +96,7 @@ moinmoin:*:192:
cups:*:193:
saned:*:194:
radns:*:195:
mcserver:*:199:
sympa:*:200:
dspam:*:202:
yate:*:204:

1
UIDs
View File

@ -102,6 +102,7 @@ moinmoin:*:192:192::0:0:MoinMoin User:/nonexistent:/usr/sbin/nologin
cups:*:193:193::0:0:Cups Owner:/nonexistent:/usr/sbin/nologin
saned:*:194:194::0:0:SANE Scanner Daemon:/nonexistent:/bin/sh
radns:*:195:195::0:0:radns user:/nonexistent:/sbin/nologin
mcserver:*:199:199::0:0:Minecraft Server:/nonexistent:/bin/sh
sympa:*:200:200::0:0:Sympa Owner:/nonexistent:/usr/sbin/nologin
privoxy:*:201:201::0:0:Privoxy proxy user:/nonexistent:/usr/sbin/nologin
dspam:*:202:202::0:0:Dspam:/nonexistent:/usr/sbin/nologin

View File

@ -6,7 +6,7 @@
#
PORTNAME= minecraft-server
PORTVERSION= 1.0.0
PORTVERSION= 1.0.1
CATEGORIES= games java
MASTER_SITES= http://s3.amazonaws.com/MinecraftDownload/launcher/:minecraft \
http://www.minecraftwiki.net/images/f/f7/:icon
@ -18,16 +18,25 @@ EXTRACT_ONLY=
MAINTAINER= freebsd@rakor-net.de
COMMENT= Server for the block building game
RUN_DEPENDS= tmux:${PORTSDIR}/sysutils/tmux
OPTIONS= X11 "Build with X11 support" On
ETCDIR= ${PREFIX}/etc/minecraft
.include <bsd.port.options.mk>
WRKSRC= ${WRKDIR}
NO_BUILD= yes
USE_JAVA= yes
USERS?= mcserver
GROUPS?= ${USERS}
USE_RC_SUBR= minecraft
SUB_FILES= pkg-deinstall \
pkg-message
.if !defined(WITHOUT_X11)
DESKTOP_ENTRIES= "Minecraft-Server" "Block building game (server)" "${DATADIR}/Bookshelf.png" "minecraft-server" "Application;Game;" false
DESKTOP_ENTRIES="Minecraft-Server" "Block building game (server)" "${DATADIR}/Bookshelf.png" "minecraft-server" "Application;Game;" false
.endif
.if !defined(WITHOUT_X11)
@ -54,5 +63,51 @@ do-install:
${INSTALL_SCRIPT} ${WRKDIR}/${PORTNAME} ${PREFIX}/bin/
.endif
${INSTALL_SCRIPT} ${WRKDIR}/${PORTNAME}-nogui ${PREFIX}/bin/
${MKDIR} ${ETCDIR}
${INSTALL_DATA} ${FILESDIR}/server.properties.sample ${DATADIR}/server.properties.sample
${INSTALL_DATA} ${FILESDIR}/ops.txt.sample ${DATADIR}/ops.txt.sample
${INSTALL_DATA} ${FILESDIR}/white-list.txt.sample ${DATADIR}/white-list.txt.sample
${INSTALL_DATA} ${FILESDIR}/banned-ips.txt.sample ${DATADIR}/banned-ips.txt.sample
${INSTALL_DATA} ${FILESDIR}/banned-players.txt.sample ${DATADIR}/banned-players.txt.sample
if [ ! -f ${ETCDIR}/server.properties ]; then \
${CP} -p ${DATADIR}/server.properties.sample ${ETCDIR}/server.properties ; \
fi
if [ ! -f ${ETCDIR}/ops.txt ]; then \
${CP} -p ${DATADIR}/ops.txt.sample ${ETCDIR}/ops.txt ; \
fi
if [ ! -f ${ETCDIR}/white-list.txt ]; then \
${CP} -p ${DATADIR}/white-list.txt.sample ${ETCDIR}/white-list.txt ; \
fi
if [ ! -f ${ETCDIR}/banned-ips.txt ]; then \
${CP} -p ${DATADIR}/banned-ips.txt.sample ${ETCDIR}/banned-ips.txt ; \
fi
if [ ! -f ${ETCDIR}/banned-players.txt ]; then \
${CP} -p ${DATADIR}/banned-players.txt.sample ${ETCDIR}/banned-players.txt ; \
fi
${LN} -s ${ETCDIR}/server.properties ${DATADIR}/server.properties
${LN} -s ${ETCDIR}/ops.txt ${DATADIR}/ops.txt
${LN} -s ${ETCDIR}/white-list.txt ${DATADIR}/white-list.txt
${LN} -s ${ETCDIR}/banned-ips.txt ${DATADIR}/banned-ips.txt
${LN} -s ${ETCDIR}/banned-players.txt ${DATADIR}/banned-players.txt
${CHOWN} -R ${USERS}:${GROUPS} ${DATADIR}
${CHOWN} -R ${USERS}:${GROUPS} ${ETCDIR}
${CHMOD} -R 644 ${DATADIR}/banned-ips.txt
${CHMOD} -R 644 ${DATADIR}/banned-players.txt
${CHMOD} -R 644 ${DATADIR}/ops.txt
${CHMOD} -R 644 ${DATADIR}/white-list.txt
${CHMOD} -R 644 ${DATADIR}/server.properties
${CHMOD} -R 644 ${DATADIR}/banned-ips.txt.sample
${CHMOD} -R 644 ${DATADIR}/banned-players.txt.sample
${CHMOD} -R 644 ${DATADIR}/ops.txt.sample
${CHMOD} -R 644 ${DATADIR}/white-list.txt.sample
${CHMOD} -R 644 ${DATADIR}/server.properties.sample
${CHMOD} -R 644 ${ETCDIR}/banned-ips.txt
${CHMOD} -R 644 ${ETCDIR}/banned-players.txt
${CHMOD} -R 644 ${ETCDIR}/ops.txt
${CHMOD} -R 644 ${ETCDIR}/white-list.txt
${CHMOD} -R 644 ${ETCDIR}/server.properties
post-install:
${CAT} ${PKGMESSAGE}
.include <bsd.port.mk>

View File

@ -0,0 +1 @@
# each line one ip.

View File

@ -0,0 +1 @@
# each line one name

View File

@ -0,0 +1,120 @@
#!/bin/sh
#
# PROVIDE: minecraft
# REQUIRE: LOGIN
# KEYWORD: shutdown
. /etc/rc.subr
name="minecraft"
rcvar=`set_rcvar`
load_rc_config $name
extra_commands="clean killworld clearlog"
start_cmd="${name}_start"
stop_cmd="${name}_stop"
clean_cmd="${name}_clean"
killworld_cmd="${name}_killworld"
clearlog_cmd="${name}_clearlog"
eval "${rcvar}=\${${rcvar}:-'NO'}"
minecraft_start()
{
if [ -e %%DATADIR%%/server.log.lck ]; then
echo "Server already running."
else
echo "Starting Minecraft-Server..."
cd %%DATADIR%%
/usr/bin/su %%MC_USER%% -c "%%PREFIX%%/bin/tmux new-session -d -s minecraft \"java -Xmx1024M -Xms1024M -jar %%DATADIR%%/minecraft_server.jar nogui\""
i=0
while [ $i -lt 15 ]; do
i=$(($i + 1))
if [ -e %%DATADIR%%/server.log.lck ]; then
echo "Minecraft-Server running."
break
else
sleep 1
fi
done
if [ $i -ge 10 ]; then
echo "ERROR: Server could not be startet."
/usr/bin/su mcserver -c "%%PREFIX%%/bin/tmux kill-session -t minecraft"
fi
fi
}
minecraft_stop(){
if [ -e %%DATADIR%%/server.log.lck ]; then
echo "Halting Minecraft-Server."
/usr/bin/su mcserver -c "%%PREFIX%%/bin/tmux send -t minecraft:0.0 stop \"Enter\""
i=0
while [ $i -lt 15 ]; do
i=$(($i + 1))
if [ -e %%DATADIR%%/server.log.lck ]; then
sleep 1
else
echo "Minecraft-Server haltet."
break
fi
done
if [ $i -ge 10 ];then
echo "ERROR: Server could not be haltet."
fi
else
echo "Minecraft-Server not running."
fi
}
minecraft_clean(){
echo "Giving a stop to the server..."
minecraft_stop
echo "Cleaning..."
if [ -e %%DATADIR%%/server.log.lck ]; then
rm %%DATADIR%%/server.log.lck
echo "Cleaning done."
else
echo "Nothing to do. No unclean sessions."
fi
}
minecraft_killworld(){
echo "Trying to delete World"
if [ -e %%DATADIR%%/server.log.lck ]; then
echo "Server seems to be running. Stop server before deletion."
else
rm -rf %%DATADIR%%/world
if [ -d %%DATADIR%%/world ]; then
echo "ERROR: World could not be deleted"
else
echo "World deleted. Next serverstart will generate a new one"
fi
fi
}
minecraft_clearlog(){
echo "Trying to delete server.log"
if [ -e %%DATADIR%%/server.log.lck ]; then
echo "Server seems to be running. Stop server before deletion."
else
if [ -e %%DATADIR%%/server.log ]; then
rm %%DATADIR%%/server.log
if [ -e %%DATADIR%%/server.log ]; then
echo "ERROR: server.log could not be deleted"
else
echo "server.log deleted."
fi
else
echo "No server.log found"
fi
fi
}
run_rc_command "$1"

View File

@ -0,0 +1 @@
# each line one name

View File

@ -0,0 +1,26 @@
#!/bin/sh
if [ "$2" != "POST-DEINSTALL" ]; then
exit 0
fi
if [ -d %%DATADIR%% ]; then
echo "There are some files (like your world and your server.log)"
echo "left in %%DATADIR%%."
echo "Use 'rm -rf %%DATADIR%%' to delete them."
echo
fi
if [ -d %%ETCDIR%% ]; then
echo "There are some changed config files left in %%ETCDIR%%."
echo "Use 'rm -rf %%ETCDIR%%' to delete them."
echo
fi
USER=%%MC_USER%%
if pw usershow "${USER}" 2>/dev/null 1>&2; then
echo "To delete ${USER} user permanently, use 'rmuser ${USER}'"
fi
exit 0

View File

@ -0,0 +1,40 @@
**************************************************
Daemon:
The user mcserver has been added to your system.
To run the server automativally with the system
add the following line to your /etc/rc.conf:
minecraft_enable="YES"
Serverfiles will be in
%%PREFIX%%/share/minecraft-server
Configuration can be done using the config-files
or as OP using the Client. Config files are in
%%PREFIX%%/etc/minecraft
If you have trouble starting or stopping the
server try to delete an unclean server.log.lck:
%%PREFIX%%/etc/rc.d/minecraft clean
If you don't like your generated world it can
be deleted (do generate a new one next time
the server starts) using:
%%PREFIX%%/etc/rc.d/minecraft killworld
You can delete the server.log (so it's not
getting to fat) using:
%%PREFIX%%/etc/rc.d/minecraft clearlog
Unprivileged users:
Running a server as unprivilieged user try
minecraft-server{-nogui}
The serverfiles will be in
~/.minecraft-server
**************************************************

View File

@ -0,0 +1,24 @@
#Minecraft server properties
#Thu Dec 22 00:12:43 CET 2011
#Do NOT change the Levelname or some Scripts will no longer worf for
#you!
level-name=world
allow-nether=true
allow-flight=false
enable-query=false
server-port=25565
enable-rcon=false
level-seed=
server-ip=
white-list=false
spawn-animals=true
online-mode=true
pvp=true
difficulty=1
gamemode=0
max-players=20
spawn-monsters=true
view-distance=10
motd=A FreeBSD Minecraft Server

View File

@ -0,0 +1 @@
# each line one name.

View File

@ -1,5 +1,28 @@
@stopdaemon minecraft
share/minecraft-server/minecraft_server.jar
%%X11%%share/minecraft-server/Bookshelf.png
%%X11%%bin/minecraft-server
bin/minecraft-server-nogui
@dirrm share/minecraft-server
@exec mkdir -p %D/etc/minecraft
@unexec if cmp -s %D/share/minecraft-server/ops.txt.sample %D/etc/minecraft/ops.txt; then rm -f %D/etc/minecraft/ops.txt; fi
@unexec if cmp -s %D/share/minecraft-server/banned-ips.txt.sample %D/etc/minecraft/banned-ips.txt; then rm -f %D/etc/minecraft/banned-ips.txt; fi
@unexec if cmp -s %D/share/minecraft-server/banned-players.txt.sample %D/etc/minecraft/banned-players.txt; then rm -f %D/etc/minecraft/banned-players.txt; fi
@unexec if cmp -s %D/share/minecraft-server/white-list.txt.sample %D/etc/minecraft/white-list.txt; then rm -f %D/etc/minecraft/white-list.txt; fi
@unexec if cmp -s %D/share/minecraft-server/server.properties.sample %D/etc/minecraft/server.properties; then rm -f %D/etc/minecraft/server.properties; fi
share/minecraft-server/server.properties
share/minecraft-server/ops.txt
share/minecraft-server/white-list.txt
share/minecraft-server/banned-ips.txt
share/minecraft-server/banned-players.txt
share/minecraft-server/server.properties.sample
@exec if [ ! -f %D/etc/minecraft/server.properties ] ; then cp -p %D/%F %B/server.properties; fi
share/minecraft-server/ops.txt.sample
@exec if [ ! -f %D/etc/minecraft/ops.txt ] ; then cp -p %D/%F %B/ops.txt; fi
share/minecraft-server/white-list.txt.sample
@exec if [ ! -f %D/etc/minecraft/white-list.txt ] ; then cp -p %D/%F %B/white-list.txt; fi
share/minecraft-server/banned-ips.txt.sample
@exec if [ ! -f %D/etc/minecraft/banned-ips.txt ] ; then cp -p %D/%F %B/banned-ips.txt; fi
share/minecraft-server/banned-players.txt.sample
@exec if [ ! -f %D/etc/minecraft/banned-players.txt ] ; then cp -p %D/%F %B/banned-players.txt; fi
@dirrmtry share/minecraft-server
@dirrmtry etc/minecraft