Montar un servidor Battle Net en Debian

El hecho que nos gusten los ambientes GNU/Linux no nos exime a algunos de seguir con los vicios heredados de las andanzas por Windows.

El otro día estábamos buscando la forma de poder jugar Defense of the Ancient (DOTA) con el mayor numero de personas sin tenerlas a todas bajo la misma LAN así que me di a la tarea de aprender a montar un BattleNet (a.k.a BNet) en mi servidor Debian de manera que se pudiera acceder desde cualquier parte de la provincia y así resolver el problema de la falta de jugadores.

Todos conocen la aplicación PVPGN de cuando usábamos Windows pues bien este será un tutorial de como montar nuestro propio servidor PVPGN en ambiente GNU/Linux.

Breve introducción

PVPGN (del ingles Player Versus Player Gaming Network) es una aplicación que permite crear lo que se llama en algunos lugares un “servidor privado” que permite conectar jugadores de Diablo, Warcraft y Starcraft la primera vez que lo vi fue por allá por el 2005 mas o menos y cuando aquello lo usábamos para jugar Diablo pero hoy en dia es muy común ver en foros y sitios cubanos las “noticias” de que montaron un Bnet en tal lugar.

Instalando en ambiente GNU/Linux

PVPGN está disponible en los repositorios de la mayoría de las distribuciones mas populares como es el caso de Debian por lo que para instalar el servidor como tal solo necesitamos abrir una consola y escribir

sudo aptitude install pvpgn

Una vez instalado vamos a necesitar un paquete adicional llamado pvpgn-support:

Descargar pvpgn-support

Cuando descarguen el archivo abrimos la terminal y ponemos sudo pvpgn-support -l /RUTA_DEL_PAQUETE (me refiero al pvpgn-support-1.0.tar.gz) por ejemplo

sudo pvpgn-support-installer -l /home/neji/Descargas/pvpgn-support-1.0.tar.gz

Configurando nuestro servidor

A estas alturas ya tenemos instalado el servidor pero todavía no debe ser visible puesto que no esta configurado del todo así que ahora pasaremos a ese punto.

Como la mayoría de las aplicaciones los archivos de configuración están alojados en el directorio /etc así que editamos el archivo:

sudo nano /etc/pvpgn/bnet.conf

En esa configuración encontraremos muchas opciones pero yo personalmente no las uso todas así que les voy a poner las que uso:

1 – La ruta donde se guardarán los progresos de los jugadores:

storage_path = file:mode=plain;dir=/var/lib/pvpgn/files/users;clan=/var/lib/pvpgn/files/clans;team=/var/lib/pvpgn/files/teams;default=/etc/pvpgn/bnetd_default_user.plain

2- Los ficheros que utiliza pvpgn para registrar las cosas:

filedir = /var/lib/pvpgn/files
reportdir = /var/lib/pvpgn/files/reports
chanlogdir = /var/lib/pvpgn/files/chanlogs
logfile = /var/lib/pvpgn/files/bnetd.log
maildir = /var/lib/pvpgn/files/bnmail
ladderdir = /var/lib/pvpgn/files/ladders
statusdir = /var/lib/pvpgn/files/status
pidfile = /var/lib/pvpgn/files/bnetd.pid

motdfile = /etc/pvpgn/bnmotd.txt
issuefile = /etc/pvpgn/bnissue.txt
channelfile = /etc/pvpgn/channel.conf
newsfile = /etc/pvpgn/news.txt
adfile = /etc/pvpgn/ad.conf
topicfile = /etc/pvpgn/topics.conf
ipbanfile = /etc/pvpgn/bnban.conf
helpfile = /etc/pvpgn/bnhelp.conf
mpqfile = /etc/pvpgn/autoupdate.conf
realmfile = /etc/pvpgn/realm.conf
mapsfile = /etc/pvpgn/bnmaps.conf
xplevelfile = /etc/pvpgn/bnxplevel.conf
xpcalcfile = /etc/pvpgn/bnxpcalc.conf

aliasfile = /etc/pvpgn/bnalias.conf
DBlayoutfile = /etc/pvpgn/sql_DB_layout.conf
supportfile = /etc/pvpgn/supportfile.conf
transfile = /etc/pvpgn/address_translation.conf
fortunecmd = /usr/games/fortune

tournament_file = /etc/pvpgn/tournament.conf
versioncheck_file = /etc/pvpgn/versioncheck.conf
anongame_infos_file = /etc/pvpgn/anongame_infos.conf
command_groups_file = /etc/pvpgn/command_groups.conf

Estos ficheros son ficheros de texto que nos permiten modificar cosas como la configuración del canal de Chat del servidor, el mensaje del bienvenida etc.

3- Configuraciones internas del propio servidor

loglevels = fatal
d2cs_version = 0
allow_d2cs_setname = true
iconfile = "icons.bni"
war3_iconfile = "icons-WAR3.bni"
star_iconfile = "icons_STAR.bni"
tosfile = "tos.txt"
allowed_clients = all
skip_versioncheck = false
allow_bad_version = false
allow_unknown_version = true
version_exeinfo_match = none
version_exeinfo_maxdiff = 0
usersync = 300
userflush = 1200
userstep = 100
latency = 600
nullmsg = 120
shutdown_delay = 300
shutdown_decr = 60

new_accounts = false

kick_old_login = true
ask_new_channel = true
report_all_games = true
report_diablo_games = true
hide_pass_games = true
hide_started_games = false
hide_temp_channels = true

extra_commands = true
disc_is_loss = true
ladder_games = "topvbot, melee, ffa, oneonone"
ladder_prefix = "ldr_"
enable_conn_all = true
hide_addr = false
chanlog = false
quota = yes
quota_lines = 5 # must be between 1 and 100 lines
quota_time = 5 # must be between 1 and 60 seconds
quota_wrapline = 40 # must be between 1 to 256 chars
quota_maxline = 200 # must be between 1 to 256 chars
quota_dobae = 10 # must be between 1 and 100 lines
mail_support = true
mail_quota = 5
log_notice = "*** Please note this channel is logged! ***"
passfail_count = 0
passfail_bantime = 300
maxusers_per_channel = 0
savebyname = true
sync_on_logoff = true
hashtable_size = 61
account_allowed_symbols = "-_[]§@"
max_friends = 5
track = 60
trackaddrs = "localhost:9999"
servername = "Bnet Abreus"
max_connections = 1000
max_concurrent_logins = 0
use_keepalive = false
max_conns_per_IP = 0
servaddrs = ":" # default interface (all) and default port (6112)
w3routeaddr = "0.0.0.0:6200"
initkill_timer = 120
woltimezone = "-8"
wollongitude = "36.1083"
wollatitude = "-115.0582"
war3_ladder_update_secs = 300
XML_output_ladder = true
output_update_secs = 60
clan_newer_time = 0
clan_max_members = 50
clan_channel_default_private = 0

En estas configuraciones nosotros definimos aspectos del servidor referentes a cosas como el nombre que tendra el servidor, la cantidad de mensajes permitidos entre usuarios, la cantidad de amigos, los puertos que se usaran en el servidor, la cantidad de conexiones entrantes permitidas etc.

Como el Bnet permite moderación de usuarios etc nosotros podemos definir una cuenta que seria algo como el root o administrador del Bnet para eso podemos modificar el archivo /var/lib/pvpgn/files/users/”usuario” (usuario es el nombre de la cuenta) y dentro de este agregar esto:

"BNET\\acct\\userid"="1"
"BNET\\auth\\admin"="true"
"BNET\\auth\\command_groups"="255"
El “userid” generalmente viene siendo el 1ro por ser casi siempre la primera cuenta que uno crea pero de no ser así y querer que el usuario X sea el admin solo ponemos el ID que tenga esa cuenta.

Luego que terminemos de configurar nuestro servidor ya podemos reiniciar el servicio de bnet:

invoke.rc.d pvpgn restart

Y listo… ya tenemos nuestro Bnet para invitar a nuestros amigos y pasar un rato jugando DOTA o cualquier otra cosa.

 

Fuente: desdelinux

¿Quién está en línea?

Hay 23762 invitados y ningún miembro en línea