startersclan / source-udp-forwarder Goto Github PK
View Code? Open in Web Editor NEWA simple HTTP and UDP forwarder to the HLStatsX:CE daemon. Supports Counter-Strike 2. Dockerized ๐ณ
License: Apache License 2.0
A simple HTTP and UDP forwarder to the HLStatsX:CE daemon. Supports Counter-Strike 2. Dockerized ๐ณ
License: Apache License 2.0
Hi. I run a CS2 server egg in pterodactyl and trying to make hlstatsx:ce work on my dedicated server.
In the daemon log I get: 2023-12-06 00:34:00: 192.168.1.188:27060 - E998: MALFORMED DATA: L 12/06/2023 - 00:33:52.509 - "sv_vote_issue_kick_allowed" = "true"
Get a lot of E998: MALFORMED data.
I have tried MariaDB and MySQL 5.7, no change.
HLSTatsX webpage seems to register the server a bit, it shows the time it has been online, but not much more.
Any help is apprechiated.
My docker-compose:
version: '2.2'
services:
# 2. source-udp-forwarder proxy forwards gameserver logs to the daemon
# See: https://github.com/startersclan/source-udp-forwarder
source-udp-forwarder:
image: startersclan/source-udp-forwarder:latest
environment:
- UDP_LISTEN_ADDR=0.0.0.0:26999
- UDP_FORWARD_ADDR=daemon:27500
- FORWARD_PROXY_KEY=#SECRET# # The daemon's proxy_key secret
- FORWARD_GAMESERVER_IP=192.168.1.188 # The gameserver's IP as registered in the HLStatsX:CE database
- FORWARD_GAMESERVER_PORT=27060 # The gameserver's IP as registered in the HLStatsX:CE database
- LOG_LEVEL=INFO
- LOG_FORMAT=txt
volumes:
- dns-volume:/dns
ports:
- 26999:26999
networks:
- default
depends_on:
- daemon
entrypoint:
- /bin/sh
command:
- -c
- |
set -eu
echo "Outputting my IP address"
ip addr show eth0 | grep 'inet ' | awk '{print $$2}' | cut -d '/' -f1 | tee /dns/source-udp-forwarder
exec /source-udp-forwarder
# 3. HLStatsX:CE perl daemon accepts the gameserver logs. Gameserver Logs are parsed and stats are recorded
# The daemon's proxy_key secret can only be setup in the HLStatsX:CE Web Admin Panel Settings under 'Proxy Settings' section
daemon:
image: startersclan/hlstatsx-community-edition:1.10.0-daemon
ports:
- 27500:27500/udp # For external servers to send logs to the daemon
depends_on:
- db
command:
- --ip=0.0.0.0
- --port=27500
- --db-host=172.19.0.2:3306
- --db-name=hlxce
- --db-username=hlxce
- --db-password=hlxce
- --nodns-resolveip
- --debug
# - --debug
# - --help
# Cron - awards
awards:
image: startersclan/hlstatsx-community-edition:1.10.0-daemon
stop_signal: SIGKILL
entrypoint:
- /bin/sh
command:
- -c
- |
set -eu
echo "Creating /awards.sh"
cat - > /awards.sh <<'EOF'
#!/bin/sh
set -eu
cd /scripts
perl hlstats-awards.pl --db-host=db:3306 --db-name=hlstatsxce --db-username=hlstatsxce --db-password=hlstatsxce #--help
EOF
chmod +x /awards.sh
# Run at 00:00 daily. To customize your cron schedule, use https://crontab.guru
echo "Creating crontab"
crontab - <<'EOF'
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
0 0 * * * /awards.sh > /proc/1/fd/1 2>/proc/1/fd/2
EOF
crontab -l
echo "Running cron"
cron -f
# 4. HLStatsX:CE DB
# db:
# image: mysql:5.7
# environment:
# - MYSQL_ROOT_PASSWORD=root # Username 'root', password 'root'
# - MYSQL_USER=hlstatsxce
# - MYSQL_PASSWORD=hlstatsxce
# - MYSQL_DATABASE=hlstatsxce
# ports:
# - 3305:3305
# volumes:
# - db-volume:/var/lib/mysql
# - ./src/sql/install.sql:/docker-entrypoint-initdb.d/install.sql:ro # This seeds the DB only on the first time,
db:
image: mariadb:5
networks:
- default
environment:
- MYSQL_USER=hlxce
- MYSQL_PASSWORD=hlxce
- MYSQL_DATABASE=hlxce
- MYSQL_ROOT_PASSWORD=hlxce
ports:
- 3305:3305
volumes:
- mysql:/var/lib/mysql
# 5. HLStatsX:CE web
# Available at http://localhost:8081, or https://web.example.com
# Admin Panel username: admin, password: 123456
web:
image: startersclan/hlstatsx-community-edition:1.10.0-web
volumes:
- games-volume:/web/hlstatsimg/games # Stateful games volume, which also contains heatmaps
environment:
- DB_ADDR=172.19.0.2:3306
- DB_NAME=hlxce
- DB_USER=hlxce
- DB_PASS=hlxce
- DB_DEBUG=0
ports:
- 8081:80
- 9000
depends_on:
- init-container
# Cron - Heatmaps
heatmaps:
image: startersclan/hlstatsx-community-edition:1.10.0-web
volumes:
- games-volume:/web/hlstatsimg/games # Stateful games volume, which also contains heatmaps
environment:
- DB_HOST=192.168.1.188
- DB_NAME=hlxce
- DB_USER=hlxce
- DB_PASS=hlxce
- HLXCE_WEB=/web
- HUD_URL=#secret#
- OUTPUT_SIZE=medium
- DEBUG=1
depends_on:
- init-container
- web
working_dir: /heatmaps
stop_signal: SIGKILL
entrypoint:
- /bin/sh
command:
- -c
- |
set -eu
# Run at 00:00 daily. To customize your cron schedule, use https://crontab.guru
echo "Creating crontab"
crontab - <<'EOF'
0 0 * * * php /heatmaps/generate.php > /proc/1/fd/1 2>/proc/1/fd/2
EOF
crontab -l
echo "Running crond"
exec crond -f
# PHPMyAdmin to manage DB
# Available at http://localhost:8083, or https://phpmyadmin.example.com
phpmyadmin:
image: phpmyadmin:5.2
environment:
- PMA_HOST=db
ports:
- 8083:80
# Init container to set permissions in mounted folders and volumes
init-container:
image: alpine:latest
volumes:
- db-volume:/var/lib/mysql
networks:
- default
entrypoint:
- /bin/sh
command:
- -c
- |
set -eu
echo "Granting db write permissions"
chown -R 999:999 /var/lib/mysql
volumes:
dns-volume:
db-volume:
games-volume:
mysql:
Had a running system working fine with 1.11.0 (?) for a long time.
However, after a restore from a backup after hdd failure, I restored from backup, but never got it to work properly again.
I created a new DB, and updated hlstatsce to version 1.11.2.
The daemon crashes sometimes, and the hlstats daemon gives this error message.
One player does not get any kills registered, and it seems to crash everytime that specific player joins the game / mapchange.
It registers the other players fine it seems, until he joins and the daemon crashes. This can just be random behaviour.
Daemon crash error message:
Can't call method "set" on unblessed reference at .//HLstats_EventHandlers.plib line 564.
Any tips?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.