Initial commit: RR3 Community Server with web admin panel

- ASP.NET Core 8 REST API server
- 12 API endpoints matching EA Synergy protocol
- SQLite database with Entity Framework Core
- Web admin panel with Bootstrap 5
- User, Catalog, Session, Purchase management
- Comprehensive documentation

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-02-17 22:02:12 -08:00
commit 0a327f3a8b
187 changed files with 9282 additions and 0 deletions

188
README.md Normal file
View File

@@ -0,0 +1,188 @@
# Real Racing 3 Community Server
A cross-platform .NET 8+ community server implementation for Real Racing 3, enabling custom/private server functionality.
## Overview
This server emulates EA's Synergy backend infrastructure, allowing players to:
- Host community servers
- Play offline or on private networks
- Customize game content and progression
- Preserve the game when official servers shut down
## Features
- ✅ Cross-platform support (Windows, Linux, macOS)
- ✅ Minimal ASP.NET Core Web API implementation
- ✅ All critical Synergy API endpoints
- ✅ Session management & authentication
- ✅ User profile & device management
- ✅ DRM/Purchase verification (stub for community use)
- ✅ Product catalog management
- ✅ Analytics/tracking endpoints (optional logging)
- ✅ Configurable via JSON
- ✅ SQLite database for data persistence
## Requirements
- .NET 8.0 SDK or later
- SQLite (included via NuGet)
- Port 443 (HTTPS) or custom port with SSL certificate
## Quick Start
### 1. Build the Server
```bash
cd RR3CommunityServer
dotnet restore
dotnet build
```
### 2. Configure
Edit `appsettings.json` to customize server behavior.
### 3. Run
```bash
dotnet run
```
The server will start on `https://localhost:5001` by default.
### 4. Redirect Game Traffic
You'll need to intercept DNS/HTTPS traffic from the game to redirect EA servers to your server:
**Option A: Hosts File (Simple)**
```
# Add to C:\Windows\System32\drivers\etc\hosts (Windows)
# or /etc/hosts (Linux/macOS)
127.0.0.1 syn-dir.sn.eamobile.com
127.0.0.1 director-stage.sn.eamobile.com
```
**Option B: Proxy/VPN (Advanced)**
Use tools like Proxifier, mitmproxy, or custom VPN to redirect traffic.
**Option C: SSL Interception (Full Control)**
Use mitmproxy with custom CA certificate installed on device.
## Architecture
```
[Real Racing 3 App]
↓ HTTPS
[Community Server]
[SQLite Database]
```
The server implements EA's Synergy API protocol:
- JSON request/response format
- Custom headers: `EAM-SESSION`, `EAM-USER-ID`, `EA-SELL-ID`
- Session-based authentication
- RESTful endpoints
## API Endpoints
### User Management
- `GET /user/api/android/getDeviceID` - Register device
- `GET /user/api/android/validateDeviceID` - Validate device
- `GET /user/api/android/getAnonUid` - Get anonymous ID
### Product Catalog
- `GET /product/api/core/getAvailableItems` - Get item catalog
- `GET /product/api/core/getMTXGameCategories` - Get categories
- `POST /product/api/core/getDownloadItemUrl` - Get download URLs
### DRM & Purchases
- `GET /drm/api/core/getNonce` - Get DRM nonce
- `GET /drm/api/core/getPurchasedItems` - Get purchases
- `POST /drm/api/android/verifyAndRecordPurchase` - Verify purchase
### Tracking & Analytics
- `POST /tracking/api/core/logEvent` - Log analytics event
### Director (Discovery)
- `GET /director/api/android/getDirectionByPackage` - Service discovery
## Configuration
See `appsettings.json` for configuration options:
```json
{
"Server": {
"EnableAnalytics": false,
"EnablePurchaseVerification": false,
"AllowUnverifiedDevices": true
},
"Catalog": {
"DataPath": "./catalog-data",
"EnableCustomContent": true
}
}
```
## Security Notes
⚠️ **For Community Use Only**
This server is for:
- Private/LAN play
- Game preservation
- Educational purposes
- Offline gameplay
**NOT for:**
- Piracy or circumventing legitimate purchases
- Cheating in official multiplayer
- Redistributing EA's content
## Project Structure
```
RR3CommunityServer/
├── Controllers/ # API endpoint controllers
│ ├── DirectorController.cs
│ ├── UserController.cs
│ ├── ProductController.cs
│ ├── DrmController.cs
│ └── TrackingController.cs
├── Models/ # Data models & DTOs
├── Services/ # Business logic
├── Data/ # Database context
├── Middleware/ # Session/auth middleware
├── appsettings.json # Configuration
└── Program.cs # Entry point
```
## Development
### Adding New Endpoints
1. Create controller in `Controllers/`
2. Add models in `Models/`
3. Implement service logic in `Services/`
4. Update database schema if needed
### Testing
```bash
# Run unit tests
dotnet test
# Test API endpoints
curl -k -H "EAM-SESSION: test-session" https://localhost:5001/user/api/android/getDeviceID?deviceId=test123
```
## Contributing
Contributions welcome! Please:
1. Fork the repository
2. Create a feature branch
3. Submit a pull request
## License
This project is for educational and preservation purposes. Real Racing 3 and related trademarks are property of Electronic Arts Inc.
## Disclaimer
This is an independent community project not affiliated with EA or Firemonkeys. Use responsibly and respect intellectual property rights.