Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: rehlds/ReUnion
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0.2.0.6
Choose a base ref
...
head repository: rehlds/ReUnion
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
  • 16 commits
  • 12 files changed
  • 3 contributors

Commits on Jun 20, 2024

  1. [skip ci] Update reunion.cfg

    s1lentq committed Jun 20, 2024
    Copy the full SHA
    8ab6ca3 View commit details
  2. [skip ci] Update README.md

    s1lentq committed Jun 20, 2024
    Copy the full SHA
    c3dddd0 View commit details

Commits on Jun 21, 2024

  1. Fixed collisions of SteamIDs issued to non-unique serial numbers "000…

    …0_0000_0000_0000_0000_0100_0000_0000".
    
    For these non-steam clients, SteamIDs will now be generated based on IP.
    s1lentq committed Jun 21, 2024
    Copy the full SHA
    de41ab3 View commit details

Commits on Jun 22, 2024

  1. Add av_reunion2018 prefixes for SteamIDs as auth type

    s1lentq committed Jun 22, 2024
    Copy the full SHA
    621d775 View commit details

Commits on Jun 26, 2024

  1. Fixed uninitialized members

    s1lentq committed Jun 26, 2024
    Copy the full SHA
    feacae5 View commit details

Commits on Jun 27, 2024

  1. Fixed a steamid collision in some cases due to a short authkey length…

    … limit 31
    s1lentq committed Jun 27, 2024
    Copy the full SHA
    5fec1fe View commit details
  2. [skip ci] Update config

    s1lentq committed Jun 27, 2024
    Copy the full SHA
    2370bda View commit details

Commits on Aug 22, 2024

  1. Disable caching of g_ISteamGameServer, listen server may reassign ins…

    …tance after each map change
    s1lentq committed Aug 22, 2024
    Copy the full SHA
    38eeb46 View commit details
  2. fix build

    s1lentq committed Aug 22, 2024
    Copy the full SHA
    12ea014 View commit details

Commits on Nov 3, 2024

  1. added changelog + updated readme

    stamepicmorg committed Nov 3, 2024

    Verified

    This commit was signed with the committer’s verified signature.
    Copy the full SHA
    3eae866 View commit details

Commits on Nov 6, 2024

  1. Merge pull request #3 from rehlds/feature/meta-improvements

    added changelog
    stamepicmorg authored Nov 6, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    1927408 View commit details

Commits on Nov 15, 2024

  1. LICENSE.md -> LICENSE, re -> Re

    stamepicmorg committed Nov 15, 2024

    Verified

    This commit was signed with the committer’s verified signature.
    Copy the full SHA
    c625203 View commit details

Commits on Nov 26, 2024

  1. Copy the full SHA
    ed4d145 View commit details
  2. Allow to disable salt for SteamIDs hashing >= reunion2018 (this is al…

    …ways required by default)
    s1lentq committed Nov 26, 2024
    Copy the full SHA
    16c8b26 View commit details
  3. Fix linux build

    s1lentq committed Nov 26, 2024
    Copy the full SHA
    bdb3a06 View commit details
  4. Fix linux build (missing deps)

    s1lentq committed Nov 26, 2024
    Copy the full SHA
    232c7ab View commit details
13 changes: 9 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -48,8 +48,7 @@ jobs:

linux:
name: 'Linux'
runs-on: ubuntu-latest
container: s1lentq/linux86buildtools:latest
runs-on: ubuntu-20.04
outputs:
app-version: ${{ steps.app-version.outputs.version }}

@@ -59,9 +58,15 @@ jobs:
with:
fetch-depth: 0

- name: Build using Intel C++ Compiler 19.0
- name: Check dependencies
run: |
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y gcc-multilib g++-multilib
- name: Build
run: |
rm -rf build && CC=icc CXX=icpc cmake -B build && cmake --build build -j8
rm -rf build && CC=gcc CXX=g++ cmake -B build && cmake --build build -j8
- name: Reading appversion.h
id: app-version
132 changes: 132 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# [ReUnion](https://github.com/rehlds/reUnion) Changelog

---

## [`0.2.0.13`](https://github.com/rehlds/ReUnion/releases/tag/0.2.0.13) - 2024-06-30

### Added
- Added `reunion2018` prefixes for SteamID as an authkey type for compatibility with dev version of Reunion `AuthVersion >= 3`

### Fixed
* Fixed collisions of `SteamIDs` with `AuthVersion >= 3`, due to truncation of authkey to 31 chars (Thanks for report, Alexs)
* Fixed collisions of `SteamIDs` issued to non-unique serial numbers `0000_0000_0000_0000_0000_0100_0000_0000`
(for clients with bad `HDDsn`, SteamID will be based on VALVE_ by IP)

> [!WARNING]
> CONFIG UPDATED
**Full Changelog**: [0.2.0.6...0.2.0.13](https://github.com/rehlds/ReUnion/compare/0.2.0.6...0.2.0.13)

## [`0.2.0.6`](https://github.com/rehlds/ReUnion/releases/tag/0.2.0.6) - 2014-06-21

### Added
- Added game tags using CVar `sv_tags`.
- Added new option `IDClientsLimit` for sets max number of clients from single steamid (Useful for debugging with multiple instances clients).

### Fixed
- Fixed `*sid` from userinfo.
- Fixed can't connect to game server when server is paused.

> [!WARNING]
> CONFIG UPDATED
> DO NOT UPDATE `.SO` WITHOUT CONFIG UPDATE
> [!CAUTION]
> IN THIS VERSION THE LENGTH OF `SteamIdHashSalt` MUST EXCEED `31` CHARACTERS
**Full Changelog**: [0.2.0.6](https://github.com/rehlds/ReUnion/compare/legacy-archive...0.2.0.6)

---

# Legacy Beta-releases

## [`0.1.0.137`](https://github.com/rehlds/ReUnion/releases/tag/legacy-archive) - 2023-01-20

### Changed
- Major refactoring of `QueryLimiter`

## [`0.1.0.135`](https://github.com/rehlds/ReUnion/releases/tag/legacy-archive) - 2019-10-26

### Changed
- `API` expanded.

### Added
- Added IP Whitelist for `QueryLimiterExceptIP` setting.

## [`0.1.0.133`](https://github.com/rehlds/ReUnion/releases/tag/legacy-archive) - 2018-11-05

### Changed
- Improved protection against attacks. Requires latest `ReHlds`.

### Fixed
- Fixed buggy client freeze fix not working.

## [`0.1.0.130`](https://github.com/rehlds/ReUnion/releases/tag/legacy-archive) - 2018-11-05

### Fixed
- Fixed display of avatars

## [`0.1.0.129`](https://github.com/rehlds/ReUnion/releases/tag/legacy-archive) - 2018-11-05

### Fixed
- Fixed a bug in processing `query requests` (thx `BombermaG`). Most likely it has nothing to do with the `TAB problem`, but just in case.

## [`0.1.0.127`](https://github.com/rehlds/ReUnion/releases/tag/legacy-archive) - 2018-11-05

### Fixed
- Fixed beta errors.

### Added
- Now it runs HLTV and can separately filter requests from several ports of one IP (the number is specified in the config).

> [!WARNING]
> Don't forget to install hash salt.
## [`0.1.0.125`](https://github.com/rehlds/ReUnion/releases/tag/legacy-archive) - 2018-11-05

### Added
- Backported old `API` support.

## [`0.1.0.123`](https://github.com/rehlds/ReUnion/releases/tag/legacy-archive) - 2018-11-05

### Added
- New auth

## [`0.1.0.113`](https://github.com/rehlds/ReUnion/releases/tag/legacy-archive) - 2018-11-04

### Fixed
- Fixed bug with sending empty list of players when `QueryFloodBanTime` = `0` (thanks to `HUNTERsp4x`). Those who don't have `0` can stay on `112`.

## [`0.1.0.112`](https://github.com/rehlds/ReUnion/releases/tag/legacy-archive) - 2018-11-04

### Changed
- Some code refactoring

## [`0.1.0.92d`](https://github.com/rehlds/ReUnion/releases/tag/legacy-archive) - 2021-01-04

### Added
- Added config option QueryFloodBanLevel

### Fixed
- Fixed SmartSteamEmu authorization on linux servers

## [`0.1.0.92c`](https://github.com/rehlds/ReUnion/releases/tag/legacy-archive) - 2019-10-26

### Added
- Added some security checks.

### Changed
- Extended `API`.

## [`0.1.0.92`](https://github.com/rehlds/ReUnion/releases/tag/legacy-archive) - 2018-02-11

### Added
- Added `EnableQueryLimiter` option

### Changed
- `QueryFloodBanTime` can be set to 0 to block flood without ban

## [`0.1.0.89`](https://github.com/rehlds/ReUnion/releases/tag/legacy-archive) - 2018-01-07

### Fixed
- `Hotfix`: Requires `ReHLDS API` not lower than `3.4.X.X`.
43 changes: 23 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,34 @@
# Reunion [![C/C++ CI](https://github.com/s1lentq/reunion/actions/workflows/build.yml/badge.svg)](https://github.com/s1lentq/reunion/actions/workflows/build.yml) [![GitHub release (by tag)](https://img.shields.io/github/downloads/s1lentq/reunion/latest/total)](https://github.com/s1lentq/reunion/releases/latest) ![GitHub all releases](https://img.shields.io/github/downloads/s1lentq/reunion/total) [![Percentage of issues still open](http://isitmaintained.com/badge/open/s1lentq/reunion.svg)](http://isitmaintained.com/project/s1lentq/reunion "Percentage of issues still open") [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
# ReUnion [![C/C++ CI](https://github.com/rehlds/ReUnion/actions/workflows/build.yml/badge.svg)](https://github.com/rehlds/ReUnion/actions/workflows/build.yml) [![GitHub release (by tag)](https://img.shields.io/github/downloads/rehlds/ReUnion/latest/total)](https://github.com/rehlds/ReUnion/releases/latest) ![GitHub all releases](https://img.shields.io/github/downloads/rehlds/ReUnion/total) [![Percentage of issues still open](http://isitmaintained.com/badge/open/rehlds/reunion.svg)](http://isitmaintained.com/project/rehlds/reunion "Percentage of issues still open") [![GitHub license](https://img.shields.io/github/license/rehlds/reunion.svg?longCache=true&style=flat-square)](https://github.com/rehlds/ReUnion/blob/master/LICENSE) [![GitHub issues](https://img.shields.io/github/issues/rehlds/reunion.svg?longCache=true&style=flat-square)](https://github.com/rehlds/ReUnion/issues) [![GitHub forks](https://img.shields.io/github/forks/rehlds/reunion.svg?longCache=true&style=flat-square)](https://github.com/rehlds/ReUnion/network) [![GitHub stars](https://img.shields.io/github/stars/rehlds/reunion.svg?longCache=true&style=flat-square)](https://github.com/rehlds/ReUnion/stargazers)

Metamod plugin that allows protocol 47 and 48 no-steam clients to connect to ReHLDS servers.<br/>

Metamod plugin that allows protocol 47 and 48 non-steam clients to connect to ReHLDS servers.<br/>
Reunion is a continuation of the DProto project adapted for ReHLDS.<br/>

You can try playing on one of many servers that are using Reunion: [Game Tracker](http://www.gametracker.com/search/?search_by=server_variable&search_by2=reu_version)

## Downloads
* [Release builds](https://github.com/s1lentq/reunion/releases)
* [Dev builds](https://github.com/s1lentq/reunion/actions/workflows/build.yml)
* [Release builds](https://github.com/rehlds/ReUnion/releases)
* [Dev builds](https://github.com/rehlds/ReUnion/actions/workflows/build.yml)

## Environment requirement
* ReHLDS API >= 3.10
* ReHLDS API >= `3.10`

## Installation

<details>
<summary>Click to expand</summary>

1. Go to `<gamedir>/addons/` and make new directory named reunion<br/>
`<gamedir>` - its a game directory; cstrike for Counter-Strike, valve for Half-Life, etc
1. Go to `<gamedir>/addons/` and make new directory named `reunion`<br/>
`<gamedir>` - its a game directory (cstrike for Counter-Strike, valve for Half-Life, etc)

2. Copy `reunion_mm.dll` or `reunion_mm_i386.so` to <gamedir>/addons/reunion/
2. Copy `reunion_mm.dll` or `reunion_mm_i386.so` to `<gamedir>/addons/reunion/`

3. Go to metamod installation directory (usually its <gamedir>/addons/metamod/) and edit plugins.ini:<br/>
add this line for windows<br/>
3. Go to metamod installation directory (usually its `<gamedir>/addons/metamod/`) and edit `plugins.ini`:<br/>
add this line at the beginning of the file<br/>
for windows<br/>
`win32 addons\reunion\reunion_mm.dll`<br/>
or this for linux<br/>
for linux<br/>
`linux addons/reunion/reunion_mm_i386.so`<br/>
at the beginning of the file<br/>

4. Copy `reunion.cfg` to server root or gamedir.

@@ -41,31 +42,33 @@ at the beginning of the file<br/>
```
6. Ready to use

If reunion doesn't work, meta list says this:
If reunion doesn't work, meta list says this:<br/>
```
Currently loaded plugins:
description stat pend file vers src load unlod
[ 1] Reunion fail load reunion_mm_i386. v0.1.65 ini Start Never

Start server with `-console +log on +mp_logecho 1` parameters and look through console output. You'll find the reason there.
```
Start server with `-console +log on +mp_logecho 1` parameters and look through console output.<br/>
You'll find the reason there.
</details>

## FAQ
<details>
<summary>Click to expand</summary>

* `Q` I configured SteamIdHashSalt as well as in the dproto, but players get a different steamids. Why?<br/>
`A` Reunion uses an another hashing algorythm with improved security. Knowing of someones's steamid before enabling SteamIdHashSalt doesn't help to get same id after hashing.
* `Q` I configured `SteamIdHashSalt` as well as in the dproto, but players get a different steamids. Why?<br/>
`A` Reunion uses an another hashing algorythm with improved security. Knowing of someones's steamid before enabling `SteamIdHashSalt` doesn't help to get same id after hashing.

* `Q` Is it possible to do something against steamid changers?<br/>
`A` No, idchangers generates a correct authorization tickets and it's impossible on serverside identify that steamid was changed. You can only set a SteamIdHashSalt option to prevent a substitution to specific steamid of another player.
`A` No, idchangers generates a correct authorization tickets and it's impossible on serverside identify that steamid was changed. You can only set a `SteamIdHashSalt` option to prevent a substitution to specific steamid of another player.

* `Q` Why some server monitorings can't receive the players list from server?<br/>
`A` They use an incorrect query format and must be rewritten using latest <a href="https://github.com/xPaw/PHP-Source-Query">PHP-Source-Query</a> script or equivalent.

* `Q` In dproto was option Game_Name, but in reunion it has not. How to change the game name?<br/>
`A` Use plugin.

* `Q` Why has SmartSteamEmu3 support been removed?<br/>
* `Q` Why has `SmartSteamEmu3` support been removed?<br/>
`A` To open-source the Reunion project, we had to remove some sensitive components.<br/>
This includes the `SmartSteamEmu3` emulator's authorization code.
Removing it won't significantly affect server online activity since this emulator is rare among non-steam clients.
@@ -140,7 +143,7 @@ Select the preferred C/C++ Compiler installation

### Credits
* [@Crock](https://github.com/theCrock), [@Lev](https://github.com/LevShisterov), and other people such as [@PRoSToTeM@](https://github.com/WPMGPRoSToTeMa) who participated or helped with the development of [DProto](https://cs.rin.ru/forum/viewtopic.php?f=29&t=55986)
* [@theAsmodai](https://github.com/theAsmodai) for contributions as Reunion project former maintainer
* [@Asmodai](https://github.com/theAsmodai) for contributions as Reunion project former maintainer
* [@dreamstalker](https://github.com/dreamstalker) for the rehlds project, as well as the contributors involved in this project
* [@NordicWarrior](https://github.com/Nord1cWarr1or) for testing and feedback
* [@kazakh758](https://github.com/kazakh758) for testing a fix of issue related to the client hanging on connect
13 changes: 6 additions & 7 deletions reunion/dist/reunion.cfg
Original file line number Diff line number Diff line change
@@ -90,8 +90,12 @@ AuthVersion = 3

# SteamIdHashSalt (string)
# Salt string for SteamIDs hashing. Irreversibly changes SteamIDs. Prevents SteamID stealing.
# Should be more than 31 chars length. If string is empty, hashing is not applied (AuthVersion < 3) or Reunion init will be failed (AuthVersion >= 3).
SteamIdHashSalt =
# Should be more than or equal to 16 chars length.
# AuthVersion < 3: If string is empty, hashing is not applied
# AuthVersion >= 3: If string is empty, init will be failed
# Recommended length is more than 31 chars
# Specify 0 to explicitly disable hashing (not recommended)
SteamIdHashSalt =

# SC2009_RevCompatMode (0 / 1)
# Enable fix to make steamids generated for SC2009 compatible with revEmu. Can't be disabled with AuthVersion >= 3.
@@ -173,11 +177,6 @@ Setti_Prefix1 = 5;
# first prefix (a) for authids assigned for sXeI clients
SXEI_Prefix1 = 6;

# SSE3_Prefix1 (int)
# STEAM_a:b:c
# first prefix (a) for authids assigned for SSE3
SSE3_Prefix1 = 7;

# Note that banid will use steamid WITHOUT any prefixes!


22 changes: 16 additions & 6 deletions reunion/src/client_auth.cpp
Original file line number Diff line number Diff line change
@@ -61,10 +61,15 @@ void SaltSteamId(authdata_t* authdata) {
byte buf[MAX_HASHDATA_LEN];
CSizeBuf szbuf(buf, sizeof buf);

// deprecated auth version reunion2015 has a truncated ticket buffer
const uint32_t MAX_RAWAUTHDATA_TRUNC = 16;
uint32_t authKeyMaxLen = (g_ReunionConfig->getAuthVersion() == av_reunion2015)
? MAX_RAWAUTHDATA_TRUNC : authdata->authKeyLen;

if (g_ReunionConfig->getAuthVersion() < av_reunion2018)
szbuf.WriteLong(authdata->steamId);
if (g_ReunionConfig->getAuthVersion() > av_dproto)
szbuf.Write(authdata->authKey, authdata->authKeyLen);
szbuf.Write(authdata->authKey, authKeyMaxLen);

szbuf.Write(g_ReunionConfig->getSteamIdSalt(), g_ReunionConfig->getSteamIdSaltLen());

@@ -97,6 +102,7 @@ uint64_t SteamByIp(uint32_t ip)
bool Reunion_FinishClientAuth(CReunionPlayer* reunionPlr, USERID_t* userid, client_auth_context_t* ctx)
{
client_auth_kind authkind;
client_id_kind idkind = CI_UNKNOWN;

if (!ctx->authentificatedInSteam) {
// native auth failed, try authorize by emulators
@@ -125,6 +131,10 @@ bool Reunion_FinishClientAuth(CReunionPlayer* reunionPlr, USERID_t* userid, clie
authkind = CA_STEAM_PENDING;
}
else {
// check for bad authkey
if (!IsValidHddsnNumber(authdata.authKey, authdata.authKeyLen))
idkind = CI_VALVE_BY_IP;

// salt steamid
if (g_ReunionConfig->getSteamIdSaltLen()) {
SaltSteamId(&authdata);
@@ -162,7 +172,9 @@ bool Reunion_FinishClientAuth(CReunionPlayer* reunionPlr, USERID_t* userid, clie
}

// add prefix
client_id_kind idkind = g_ReunionConfig->getIdGenOptions(authkind)->id_kind;
if (idkind == CI_UNKNOWN)
idkind = g_ReunionConfig->getIdGenOptions(authkind)->id_kind;

switch (idkind) {
// check for deprecation
case CI_DEPRECATED:
@@ -249,11 +261,9 @@ void SV_ConnectClient_hook(IRehldsHook_SV_ConnectClient* chain) {
}
#endif

client_auth_context_t ctx;

if (!g_ISteamGameServer)
g_ISteamGameServer = g_RehldsApi->GetServerData()->GetSteamGameServer();
g_ISteamGameServer = g_RehldsApi->GetServerData()->GetSteamGameServer();

client_auth_context_t ctx;
g_CurrentAuthContext = &ctx;
chain->callNext();
g_CurrentAuthContext = nullptr;
1 change: 1 addition & 0 deletions reunion/src/query_limiter.cpp
Original file line number Diff line number Diff line change
@@ -8,6 +8,7 @@ CQueryLimiter::CQueryLimiter()
m_uniqueQueries = 0;
m_useGlobalRateLimit = false;
m_lastAdded = -1;
m_lastFloodLog = 0;
memset(m_lastQueries, 0, sizeof m_lastQueries);

if ((MAX_STORED_QUERIES & (MAX_STORED_QUERIES - 1)) != 0)
Loading