mirror of
https://github.com/Facepunch/sbox-public.git
synced 2025-12-23 22:48:07 -05:00
Remove C++ crashreporter and reimplement in C#, add various session id tags and send payload to our own API
58 lines
1.4 KiB
C#
58 lines
1.4 KiB
C#
using System.Diagnostics;
|
|
using System.Net.Http;
|
|
using System.Net.Http.Json;
|
|
using System.Text.Json;
|
|
|
|
namespace CrashReporter;
|
|
|
|
class Program
|
|
{
|
|
static async Task<int> Main( string[] args )
|
|
{
|
|
if ( args.Length < 1 )
|
|
{
|
|
Console.WriteLine( "Usage: CrashReporter.exe <path to envelope>" );
|
|
return 1;
|
|
}
|
|
|
|
using var stream = File.OpenRead( args[0] );
|
|
var envelope = await Envelope.FromFileStreamAsync( stream );
|
|
|
|
var dsn = envelope.TryGetDsn();
|
|
var event_id = envelope.TryGetEventId();
|
|
|
|
// Submit to Sentry
|
|
await SentryClient.SubmitEnvelopeAsync( dsn!, envelope );
|
|
|
|
// Submit to our own API
|
|
var sentryEvent = envelope.TryGetEvent()?.TryParseAsJson();
|
|
|
|
if ( sentryEvent is not null )
|
|
{
|
|
var tags = sentryEvent["tags"];
|
|
|
|
var payload = new
|
|
{
|
|
sentry_event_id = event_id,
|
|
timestamp = sentryEvent["timestamp"],
|
|
version = sentryEvent["release"],
|
|
session_id = tags?["session_id"],
|
|
activity_session_id = tags?["activity_session_id"],
|
|
launch_guid = tags?["launch_guid"],
|
|
gpu = tags?["gpu"],
|
|
cpu = tags?["cpu"],
|
|
mode = tags?["mode"],
|
|
};
|
|
|
|
// Submit to our API
|
|
using var client = new HttpClient();
|
|
await client.PostAsJsonAsync( "https://services.facepunch.com/sbox/event/crash/1/", payload );
|
|
}
|
|
|
|
// Open browser to crash report page
|
|
Process.Start( new ProcessStartInfo( $"https://sbox.game/crashes/{event_id}" ) { UseShellExecute = true } );
|
|
|
|
return 0;
|
|
}
|
|
}
|