[Release] AionWeb - GM admin panel + working cash shop backend (points / buy / gift) for NCsoft Aion 2.7 PTS

Initiate Mage
Joined
Jul 2, 2024
Messages
4
Reaction score
2
AionWeb
A web GM admin for the NCsoft Aion 2.7 server files, written in Node.js / TypeScript. One process replaces several pieces that are usually broken or missing on private servers: GMServer, the old ASP.NET site, the GM command proxy, and the ShopAgent + billing backend, so the in-game cash shop finally works.

It talks to the server only through its own native protocols (CacheD admin port, ShopServer, ShopAgent), which I worked out by disassembling Server64 / CacheD64 with the PDB symbols that ship with the files. Server64, CacheD and the client are not patched or modified.

GitHub:

Full setup guide and protocol notes are in the README (English and Chinese).

Features
  • Dashboard: process and port status of every server, character and account counts, recent logins.
  • Announcements: screen center or chat window, filtered by race and class, sent live through the CacheD admin port.
  • Characters: character list, details, and items in cube, warehouse and mailbox (enchant level, manastone sockets).
  • Send items: search by name or ID, set amount, enchant level and extra sockets, add kinah, send to one or more characters. Delivered live through CacheD, so online players get it right away. Works for bound / untradable items too.
  • GM command proxy + packet capture: the client connects to the proxy, chat lines starting with // are turned into GM commands, and the packet log is shown live in the browser.
  • Cash shop:
    • catalog server (ShopServer protocol) with a visual editor: tabs, sub-categories, goods, pack size (capped at max stack), price, duration, description, the 6 ranking slots;
    • points service (ShopAgent protocol): balances per account, admin top-up / deduction that refreshes the player's shop window live;
    • buying and gifting use the game's own flow: points are charged, the main server writes the cash-item mail through CacheD, delivery is confirmed, and undelivered orders are resent automatically when the main server reconnects.
  • Own database "AionShop": points ledger, orders, catalog and admin log live in a separate database, nothing is written into AionGame.
  • Admin log: every change made through the panel is recorded (passwords masked).
  • English / Chinese UI, switch at the top right. Item names come from the client string tables, so they show in English.

Screenshots
hxalee_86 - [Release] AionWeb - GM admin panel + working cash shop backend (points / buy / gift) for NCsoft Aion 2.7 PTS - RaGEZONE Forums


hxalee_86 - [Release] AionWeb - GM admin panel + working cash shop backend (points / buy / gift) for NCsoft Aion 2.7 PTS - RaGEZONE Forums


商城 - [Release] AionWeb - GM admin panel + working cash shop backend (points / buy / gift) for NCsoft Aion 2.7 PTS - RaGEZONE Forums


Requirements
  • Windows, Node.js 22.18 or newer (24 LTS recommended; runs TypeScript directly, no build step)
  • SQL Server (tested with 2022) in a Docker container; the sa password is read from the container's environment at runtime and never stored in a file
  • NCsoft Aion 2.7 server files (not included)

Quick start
Code:
npm install
npm start
Open and set the admin password on first visit. The AionShop database and its tables are created automatically on first start.

To enable the cash shop, add this to MainServer\common.xml right after cacheServerPort, then restart the main server once:
XML:
<shopServerAddr>127.0.0.1</shopServerAddr>
<shopServerPort>2300</shopServerPort>
<shopAgentServerAddr>127.0.0.1</shopAgentServerAddr>
<shopAgentServerPort>2301</shopAgentServerPort>

Notes
  • Built and tested on my own 2.7 server; other versions will likely need protocol changes.
  • It's meant for study and small private setups. The panel listens on localhost by default; don't expose it to the internet as is.
  • No server or client files are included in the repository.

Feedback, bug reports and pull requests are welcome. If you find a protocol detail I got wrong, please let me know.

UI template: Majestic Admin (MIT).

This is two days of work using Claude Code with Claude Opus 5.5. Special thanks to @sunbsn for sharing the research material that made reversing the protocols possible
 
Last edited:
I'm probably missing something, but this program will likely run on a Windows server, and it's missing a lot.
NuGet needs to be installed through "hive" installations.
Docker is also missing, and its implementation on the server machine is highly questionable....

Check this out, I think this will work better.
 

Attachments

Last edited:
I'm probably missing something, but this program will likely run on a Windows server, and it's missing a lot.
NuGet needs to be installed through "hive" installations.
Docker is also missing, and its implementation on the server machine is highly questionable....

Check this out, I think this will work better.
Thanks a lot, Mr. House! Your patch is merged: AionWeb now connects to SQL Server directly over TCP, no Docker/WSL needed, and `npm run db:check` is in. Credited you in the commit and the README.
 
Back