Add project files.

This commit is contained in:
Tucker
2022-02-18 16:08:20 -05:00
parent abd3362d42
commit 230917eb75
22 changed files with 1429 additions and 0 deletions

221
APIServer.cs Normal file
View File

@@ -0,0 +1,221 @@
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading;
using api;
using api2018;
namespace server
{
internal class APIServer
{
public APIServer()
{
try
{
Console.WriteLine("APIServer.cs has started.");
new Thread(new ThreadStart(this.StartListen)).Start();
}
catch (Exception ex)
{
Console.WriteLine("An Exception Occurred while Listening :" + ex.ToString());
}
}
private void StartListen()
{
try
{
this.listener.Prefixes.Add("http://localhost:" + start.Program.version + "/");
if (start.Program.version == "2016")
{
for (; ; )
{
this.listener.Start();
Console.WriteLine("APIServer.cs is listening.");
HttpListenerContext context = this.listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
string rawUrl = request.RawUrl;
string Url = "";
if (rawUrl.StartsWith("/api/"))
{
Url = rawUrl.Remove(0, 5);
}
string text;
string s = "";
using (StreamReader streamReader = new StreamReader(request.InputStream, request.ContentEncoding))
{
text = streamReader.ReadToEnd();
}
if (!(Url == ""))
{
Console.WriteLine("API Requested: " + Url);
}
else
{
Console.WriteLine("API Requested: " + rawUrl);
}
Console.WriteLine("API Data: " + text);
if (Url.StartsWith("versioncheck"))
{
s = VersionCheckResponse;
}
if (Url == ("config/v2"))
{
s = Config2.GetDebugConfig();
}
Console.WriteLine("API Response: " + s);
byte[] bytes = Encoding.UTF8.GetBytes(s);
response.ContentLength64 = (long)bytes.Length;
Stream outputStream = response.OutputStream;
outputStream.Write(bytes, 0, bytes.Length);
Thread.Sleep(400);
outputStream.Close();
this.listener.Stop();
}
}
else if (start.Program.version == "2017")
{
for (; ; )
{
this.listener.Start();
Console.WriteLine("APIServer.cs is listening.");
HttpListenerContext context = this.listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
string rawUrl = request.RawUrl;
string Url = "";
if (rawUrl.StartsWith("/api/"))
{
Url = rawUrl.Remove(0, 5);
}
string text;
string s = "";
using (StreamReader streamReader = new StreamReader(request.InputStream, request.ContentEncoding))
{
text = streamReader.ReadToEnd();
}
if (!(Url == ""))
{
Console.WriteLine("API Requested: " + Url);
}
else
{
Console.WriteLine("API Requested: " + rawUrl);
}
Console.WriteLine("API Data: " + text);
if (Url.StartsWith("versioncheck"))
{
s = VersionCheckResponse;
}
if (Url == ("config/v2"))
{
s = Config2.GetDebugConfig();
}
Console.WriteLine("API Response: " + s);
byte[] bytes = Encoding.UTF8.GetBytes(s);
response.ContentLength64 = (long)bytes.Length;
Stream outputStream = response.OutputStream;
outputStream.Write(bytes, 0, bytes.Length);
Thread.Sleep(400);
outputStream.Close();
this.listener.Stop();
}
}
else if (start.Program.version == "2018")
{
for (; ; )
{
this.listener.Start();
Console.WriteLine("APIServer.cs is listening.");
HttpListenerContext context = this.listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
string rawUrl = request.RawUrl;
string Url = "";
if (rawUrl.StartsWith("/api/"))
{
Url = rawUrl.Remove(0, 5);
}
if (!(Url == ""))
{
Console.WriteLine("API Requested: " + Url);
}
else
{
Console.WriteLine("API Requested: " + rawUrl);
}
string text;
string s = "";
using (StreamReader streamReader = new StreamReader(request.InputStream, request.ContentEncoding))
{
text = streamReader.ReadToEnd();
}
Console.WriteLine("API Data: " + text);
if (Url.StartsWith("versioncheck"))
{
s = VersionCheckResponse;
}
if (Url == ("config/v2"))
{
s = Config2.GetDebugConfig();
}
if (Url == "platformlogin/v1/getcachedlogins")
{
s = getcachedlogins.GetDebugLogin(ulong.Parse(text.Remove(0, 32)), ulong.Parse(text.Remove(0, 22)));
CachedPlayerID = ulong.Parse(text.Remove(0, 32));
CachedPlatformID = ulong.Parse(text.Remove(0, 22));
}
if (Url == "platformlogin/v1/logincached")
{
s = logincached.loginCache(CachedPlayerID, CachedPlatformID);
}
if (Url == "relationships/v1/bulkignoreplatformusers")
{
s = BlankResponse;
}
if (Url == "config/v1/amplitude")
{
s = Amplitude.amplitude();
}
if (Url == "images/v2/named")
{
s = BlankResponse;
}
if (Url == "PlayerReporting/v1/moderationBlockDetails")
{
s = ModerationBlockDetails;
}
Console.WriteLine("API Response: " + s);
byte[] bytes = Encoding.UTF8.GetBytes(s);
response.ContentLength64 = (long)bytes.Length;
Stream outputStream = response.OutputStream;
outputStream.Write(bytes, 0, bytes.Length);
Thread.Sleep(400);
outputStream.Close();
this.listener.Stop();
}
}
}
catch (Exception ex4)
{
Console.WriteLine(ex4);
File.WriteAllText("crashdump.txt", Convert.ToString(ex4));
}
}
public static ulong CachedPlayerID = 1;
public static ulong CachedPlatformID = 10000;
public static string VersionCheckResponse = "{\"ValidVersion\":true}";
public static string BlankResponse = "[]";
public static string ModerationBlockDetails = "{\"ReportCategory\":0,\"Duration\":0,\"GameSessionId\":0,\"Message\":\"\"}";
public static string ImagesV2Named = "[{\"FriendlyImageName\":\"DormRoomBucket\",\"ImageName\":\"OpenRec\",\"StartTime\":\"2021-12-27T21:27:38.1880175-08:00\",\"EndTime\":\"2043-12-27T21:27:38.1880399-08:00\"}";
private HttpListener listener = new HttpListener();
}
}

23
Amplitude.cs Normal file
View File

@@ -0,0 +1,23 @@
using System;
using Newtonsoft.Json;
namespace api
{
// Token: 0x0200005A RID: 90
internal class Amplitude
{
// Token: 0x0600029D RID: 669 RVA: 0x0000342D File Offset: 0x0000162D
public static string amplitude()
{
return JsonConvert.SerializeObject(new Amplitude
{
AmplitudeKey = "e1693a1003671058b6abc356c8ba8d59"
});
}
// Token: 0x170000FF RID: 255
// (get) Token: 0x0600029F RID: 671 RVA: 0x00003444 File Offset: 0x00001644
// (set) Token: 0x060002A0 RID: 672 RVA: 0x0000344C File Offset: 0x0000164C
public string AmplitudeKey { get; set; }
}
}

14
Avatar.cs Normal file
View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace api
{
class Avatar
{
public string OutfitSelections { get; set; }
public string HairColor { get; set; }
public string SkinColor { get; set; }
public string FaceFeatures { get; set; }
}
}

163
Config.cs Normal file
View File

@@ -0,0 +1,163 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
namespace api
{
class Config
{
public static void setup()
{
Console.WriteLine("Setting up...");
Directory.CreateDirectory("SaveData\\Profile\\");
if (!(File.Exists("SaveData\\avatar.txt")))
{
File.Create("SaveData\\avatar.txt");
}
if (!(File.Exists("SaveData\\Profile\\username.txt")))
{
File.WriteAllText("SaveData\\Profile\\username.txt", "DefaultUsername");
}
if (!(File.Exists("SaveData\\profileimage.png")))
{
File.WriteAllBytes("SaveData\\profileimage.png", new WebClient().DownloadData("https://github.com/OpenRecRoom/OpenRec/raw/main/profileimage.png"));
}
Console.WriteLine("Done!");
Console.Clear();
}
public static Objective[][] dailyObjectives = new Objective[][]
{
new Objective[]
{
new Objective
{
type = 20,
score = 1
},
new Objective
{
type = 21,
score = 1
},
new Objective
{
type = 22,
score = 1
}
},
new Objective[]
{
new Objective
{
type = 20,
score = 1
},
new Objective
{
type = 21,
score = 1
},
new Objective
{
type = 22,
score = 1
}
},
new Objective[]
{
new Objective
{
type = 20,
score = 1
},
new Objective
{
type = 21,
score = 1
},
new Objective
{
type = 22,
score = 1
}
},
new Objective[]
{
new Objective
{
type = 20,
score = 1
},
new Objective
{
type = 21,
score = 1
},
new Objective
{
type = 22,
score = 1
}
},
new Objective[]
{
new Objective
{
type = 20,
score = 1
},
new Objective
{
type = 21,
score = 1
},
new Objective
{
type = 22,
score = 1
}
},
new Objective[]
{
new Objective
{
type = 20,
score = 1
},
new Objective
{
type = 21,
score = 1
},
new Objective
{
type = 22,
score = 1
}
},
new Objective[]
{
new Objective
{
type = 20,
score = 1
},
new Objective
{
type = 21,
score = 1
},
new Objective
{
type = 22,
score = 1
}
}
};
}
}

192
Config2.cs Normal file
View File

@@ -0,0 +1,192 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using Newtonsoft.Json;
using api;
namespace api
{
// Token: 0x02000013 RID: 19
internal class Config2
{
// Token: 0x17000011 RID: 17
// (get) Token: 0x06000050 RID: 80 RVA: 0x00002215 File Offset: 0x00000415
// (set) Token: 0x06000051 RID: 81 RVA: 0x0000221D File Offset: 0x0000041D
public string MessageOfTheDay { get; set; }
// Token: 0x17000012 RID: 18
// (get) Token: 0x06000052 RID: 82 RVA: 0x00002226 File Offset: 0x00000426
// (set) Token: 0x06000053 RID: 83 RVA: 0x0000222E File Offset: 0x0000042E
public string CdnBaseUri { get; set; }
// Token: 0x17000013 RID: 19
// (get) Token: 0x06000054 RID: 84 RVA: 0x00002237 File Offset: 0x00000437
// (set) Token: 0x06000055 RID: 85 RVA: 0x0000223F File Offset: 0x0000043F
public List<LevelProgressionEntry> LevelProgressionMaps { get; set; }
// Token: 0x17000014 RID: 20
// (get) Token: 0x06000056 RID: 86 RVA: 0x00002248 File Offset: 0x00000448
// (set) Token: 0x06000057 RID: 87 RVA: 0x00002250 File Offset: 0x00000450
public MatchmakingConfigParams MatchmakingParams { get; set; }
// Token: 0x17000015 RID: 21
// (get) Token: 0x06000058 RID: 88 RVA: 0x00002259 File Offset: 0x00000459
// (set) Token: 0x06000059 RID: 89 RVA: 0x00002261 File Offset: 0x00000461
public Objective[][] DailyObjectives { get; set; }
// Token: 0x17000016 RID: 22
// (get) Token: 0x0600005A RID: 90 RVA: 0x0000226A File Offset: 0x0000046A
// (set) Token: 0x0600005B RID: 91 RVA: 0x00002272 File Offset: 0x00000472
public List<ConfigTableEntry> ConfigTable { get; set; }
// Token: 0x17000017 RID: 23
// (get) Token: 0x0600005C RID: 92 RVA: 0x0000227B File Offset: 0x0000047B
// (set) Token: 0x0600005D RID: 93 RVA: 0x00002283 File Offset: 0x00000483
public photonConfig PhotonConfig { get; set; }
// Token: 0x0600005E RID: 94 RVA: 0x00005450 File Offset: 0x00003650
public static string GetDebugConfig()
{
return JsonConvert.SerializeObject(new Config2
{
MessageOfTheDay = "Default MOTD",
CdnBaseUri = "http://img.rec.net/",
LevelProgressionMaps = new List<LevelProgressionEntry>
{
new LevelProgressionEntry
{
Level = 0,
RequiredXp = 1
},
new LevelProgressionEntry
{
Level = 1,
RequiredXp = 2
},
new LevelProgressionEntry
{
Level = 2,
RequiredXp = 3
},
new LevelProgressionEntry
{
Level = 3,
RequiredXp = 4
},
new LevelProgressionEntry
{
Level = 4,
RequiredXp = 5
},
new LevelProgressionEntry
{
Level = 5,
RequiredXp = 6
},
new LevelProgressionEntry
{
Level = 6,
RequiredXp = 7
},
new LevelProgressionEntry
{
Level = 7,
RequiredXp = 8
},
new LevelProgressionEntry
{
Level = 8,
RequiredXp = 9
},
new LevelProgressionEntry
{
Level = 9,
RequiredXp = 10
},
new LevelProgressionEntry
{
Level = 10,
RequiredXp = 11
},
new LevelProgressionEntry
{
Level = 11,
RequiredXp = 12
},
new LevelProgressionEntry
{
Level = 12,
RequiredXp = 13
},
new LevelProgressionEntry
{
Level = 13,
RequiredXp = 14
},
new LevelProgressionEntry
{
Level = 14,
RequiredXp = 15
},
new LevelProgressionEntry
{
Level = 15,
RequiredXp = 16
},
new LevelProgressionEntry
{
Level = 16,
RequiredXp = 17
},
new LevelProgressionEntry
{
Level = 17,
RequiredXp = 18
},
new LevelProgressionEntry
{
Level = 18,
RequiredXp = 19
},
new LevelProgressionEntry
{
Level = 19,
RequiredXp = 20
},
new LevelProgressionEntry
{
Level = 20,
RequiredXp = 21
}
},
MatchmakingParams = new MatchmakingConfigParams
{
PreferEmptyRoomsFrequency = 0f,
PreferFullRoomsFrequency = 1f
},
DailyObjectives = Config.dailyObjectives,
ConfigTable = new List<ConfigTableEntry>
{
new ConfigTableEntry
{
Key = "Gift.DropChance",
Value = 0.5f.ToString()
},
new ConfigTableEntry
{
Key = "Gift.XP",
Value = 0.5f.ToString()
}
},
PhotonConfig = new photonConfig
{
CloudRegion = "us",
CrcCheckEnabled = false,
EnableServerTracingAfterDisconnect = false
}
});
}
}
}

18
ConfigTableEntry.cs Normal file
View File

@@ -0,0 +1,18 @@
using System;
namespace api
{
// Token: 0x02000019 RID: 25
internal class ConfigTableEntry
{
// Token: 0x17000022 RID: 34
// (get) Token: 0x0600007A RID: 122 RVA: 0x00002336 File Offset: 0x00000536
// (set) Token: 0x0600007B RID: 123 RVA: 0x0000233E File Offset: 0x0000053E
public string Key { get; set; }
// Token: 0x17000023 RID: 35
// (get) Token: 0x0600007C RID: 124 RVA: 0x00002347 File Offset: 0x00000547
// (set) Token: 0x0600007D RID: 125 RVA: 0x0000234F File Offset: 0x0000054F
public string Value { get; set; }
}
}

139
GetCachedLogin.cs Normal file
View File

@@ -0,0 +1,139 @@
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using api2018;
using System.IO;
namespace api2018
{
// Token: 0x02000076 RID: 118
public class getcachedlogins
{
// Token: 0x0600033C RID: 828 RVA: 0x00008F30 File Offset: 0x00007130
public static string GetDebugLogin(ulong userid, ulong platformid)
{
string name = File.ReadAllText("SaveData\\Profile\\username.txt");
return JsonConvert.SerializeObject(new List<getcachedlogins>
{
new getcachedlogins
{
Id = userid,
Username = name,
DisplayName = name,
XP = 9999,
Level = 10,
RegistrationStatus = 2,
Developer = false,
CanReceiveInvites = false,
ProfileImageName = name,
JuniorProfile = false,
ForceJuniorImages = false,
PendingJunior = false,
HasBirthday = true,
AvoidJuniors = true,
PlayerReputation = new mPlayerReputation
{
Noteriety = 0,
CheerCredit = 20,
CheerGeneral = 10,
CheerHelpful = 10,
CheerGreatHost = 10,
CheerSportsman = 10,
CheerCreative = 10,
SubscriberCount = 0,
SubscribedCount = 0,
SelectedCheer = 0
},
PlatformIds = new List<mPlatformID>
{
new mPlatformID
{
Platform = 0,
PlatformId = platformid
}
}
}
});
}
// Token: 0x17000135 RID: 309
// (get) Token: 0x0600033D RID: 829 RVA: 0x0000395C File Offset: 0x00001B5C
// (set) Token: 0x0600033E RID: 830 RVA: 0x00003964 File Offset: 0x00001B64
public ulong Id { get; set; }
// Token: 0x17000136 RID: 310
// (get) Token: 0x0600033F RID: 831 RVA: 0x0000396D File Offset: 0x00001B6D
// (set) Token: 0x06000340 RID: 832 RVA: 0x00003975 File Offset: 0x00001B75
public string Username { get; set; }
// Token: 0x17000137 RID: 311
// (get) Token: 0x06000341 RID: 833 RVA: 0x0000397E File Offset: 0x00001B7E
// (set) Token: 0x06000342 RID: 834 RVA: 0x00003986 File Offset: 0x00001B86
public string DisplayName { get; set; }
// Token: 0x17000138 RID: 312
// (get) Token: 0x06000343 RID: 835 RVA: 0x0000398F File Offset: 0x00001B8F
// (set) Token: 0x06000344 RID: 836 RVA: 0x00003997 File Offset: 0x00001B97
public int XP { get; set; }
// Token: 0x17000139 RID: 313
// (get) Token: 0x06000345 RID: 837 RVA: 0x000039A0 File Offset: 0x00001BA0
// (set) Token: 0x06000346 RID: 838 RVA: 0x000039A8 File Offset: 0x00001BA8
public int Level { get; set; }
// Token: 0x1700013A RID: 314
// (get) Token: 0x06000347 RID: 839 RVA: 0x000039B1 File Offset: 0x00001BB1
// (set) Token: 0x06000348 RID: 840 RVA: 0x000039B9 File Offset: 0x00001BB9
public int RegistrationStatus { get; set; }
// Token: 0x1700013B RID: 315
// (get) Token: 0x06000349 RID: 841 RVA: 0x000039C2 File Offset: 0x00001BC2
// (set) Token: 0x0600034A RID: 842 RVA: 0x000039CA File Offset: 0x00001BCA
public bool Developer { get; set; }
// Token: 0x1700013C RID: 316
// (get) Token: 0x0600034B RID: 843 RVA: 0x000039D3 File Offset: 0x00001BD3
// (set) Token: 0x0600034C RID: 844 RVA: 0x000039DB File Offset: 0x00001BDB
public bool CanReceiveInvites { get; set; }
// Token: 0x1700013D RID: 317
// (get) Token: 0x0600034D RID: 845 RVA: 0x000039E4 File Offset: 0x00001BE4
// (set) Token: 0x0600034E RID: 846 RVA: 0x000039EC File Offset: 0x00001BEC
public string ProfileImageName { get; set; }
// Token: 0x1700013E RID: 318
// (get) Token: 0x0600034F RID: 847 RVA: 0x000039F5 File Offset: 0x00001BF5
// (set) Token: 0x06000350 RID: 848 RVA: 0x000039FD File Offset: 0x00001BFD
public bool JuniorProfile { get; set; }
// Token: 0x1700013F RID: 319
// (get) Token: 0x06000351 RID: 849 RVA: 0x00003A06 File Offset: 0x00001C06
// (set) Token: 0x06000352 RID: 850 RVA: 0x00003A0E File Offset: 0x00001C0E
public bool ForceJuniorImages { get; set; }
// Token: 0x17000140 RID: 320
// (get) Token: 0x06000353 RID: 851 RVA: 0x00003A17 File Offset: 0x00001C17
// (set) Token: 0x06000354 RID: 852 RVA: 0x00003A1F File Offset: 0x00001C1F
public bool PendingJunior { get; set; }
// Token: 0x17000141 RID: 321
// (get) Token: 0x06000355 RID: 853 RVA: 0x00003A28 File Offset: 0x00001C28
// (set) Token: 0x06000356 RID: 854 RVA: 0x00003A30 File Offset: 0x00001C30
public bool HasBirthday { get; set; }
// Token: 0x17000142 RID: 322
// (get) Token: 0x06000357 RID: 855 RVA: 0x00003A39 File Offset: 0x00001C39
// (set) Token: 0x06000358 RID: 856 RVA: 0x00003A41 File Offset: 0x00001C41
public bool AvoidJuniors { get; set; }
// Token: 0x17000143 RID: 323
// (get) Token: 0x06000359 RID: 857 RVA: 0x00003A4A File Offset: 0x00001C4A
// (set) Token: 0x0600035A RID: 858 RVA: 0x00003A52 File Offset: 0x00001C52
public mPlayerReputation PlayerReputation { get; set; }
// Token: 0x17000144 RID: 324
// (get) Token: 0x0600035B RID: 859 RVA: 0x00003A5B File Offset: 0x00001C5B
// (set) Token: 0x0600035C RID: 860 RVA: 0x00003A63 File Offset: 0x00001C63
public List<mPlatformID> PlatformIds { get; set; }
}
}

67
ImageServer.cs Normal file
View File

@@ -0,0 +1,67 @@
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading;
using api;
namespace server
{
// Token: 0x02000050 RID: 80
internal class ImageServer
{
// Token: 0x06000227 RID: 551 RVA: 0x00006D1C File Offset: 0x00004F1C
public ImageServer()
{
try
{
Console.WriteLine("ImageServer.cs has started.");
new Thread(new ThreadStart(this.StartListen)).Start();
}
catch (Exception ex)
{
Console.WriteLine("An Exception Occurred while Listening :" + ex.ToString());
}
}
// Token: 0x06000228 RID: 552 RVA: 0x00006D84 File Offset: 0x00004F84
private void StartListen()
{
this.listener.Prefixes.Add("http://localhost:20182/");
for (; ; )
{
this.listener.Start();
Console.WriteLine("ImageServer.cs is listening.");
HttpListenerContext context = this.listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
string rawUrl = request.RawUrl;
string text;
byte[] i = File.ReadAllBytes("SaveData\\profileimage.png");
using (StreamReader streamReader = new StreamReader(request.InputStream, request.ContentEncoding))
{
text = streamReader.ReadToEnd();
}
Console.WriteLine("Image Requested: " + rawUrl);
Console.WriteLine("Image Data: " + text);
Console.WriteLine("Image Response: ");
byte[] bytes = i;
response.ContentLength64 = (long)bytes.Length;
Stream outputStream = response.OutputStream;
outputStream.Write(bytes, 0, bytes.Length);
Thread.Sleep(400);
outputStream.Close();
this.listener.Stop();
}
}
public static string VersionCheckResponse = "{\"ValidVersion\":true}";
public static string BlankResponse = "";
// Token: 0x04000192 RID: 402
private HttpListener listener = new HttpListener();
}
}

18
LevelProgressionEntry.cs Normal file
View File

@@ -0,0 +1,18 @@
using System;
namespace api
{
// Token: 0x02000017 RID: 23
public class LevelProgressionEntry
{
// Token: 0x1700001E RID: 30
// (get) Token: 0x06000070 RID: 112 RVA: 0x000022F2 File Offset: 0x000004F2
// (set) Token: 0x06000071 RID: 113 RVA: 0x000022FA File Offset: 0x000004FA
public int Level { get; set; }
// Token: 0x1700001F RID: 31
// (get) Token: 0x06000072 RID: 114 RVA: 0x00002303 File Offset: 0x00000503
// (set) Token: 0x06000073 RID: 115 RVA: 0x0000230B File Offset: 0x0000050B
public int RequiredXp { get; set; }
}
}

93
LoginCached.cs Normal file
View File

@@ -0,0 +1,93 @@
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using System.IO;
namespace api2018
{
// Token: 0x02000078 RID: 120
public class logincached
{
// Token: 0x17000145 RID: 325
// (get) Token: 0x0600035E RID: 862 RVA: 0x00003A6C File Offset: 0x00001C6C
// (set) Token: 0x0600035F RID: 863 RVA: 0x00003A74 File Offset: 0x00001C74
public string Error { get; set; }
// Token: 0x17000146 RID: 326
// (get) Token: 0x06000360 RID: 864 RVA: 0x00003A7D File Offset: 0x00001C7D
// (set) Token: 0x06000361 RID: 865 RVA: 0x00003A85 File Offset: 0x00001C85
public getcachedlogins Player { get; set; }
// Token: 0x17000147 RID: 327
// (get) Token: 0x06000362 RID: 866 RVA: 0x00003A8E File Offset: 0x00001C8E
// (set) Token: 0x06000363 RID: 867 RVA: 0x00003A96 File Offset: 0x00001C96
public string Token { get; set; }
// Token: 0x17000148 RID: 328
// (get) Token: 0x06000364 RID: 868 RVA: 0x00003A9F File Offset: 0x00001C9F
// (set) Token: 0x06000365 RID: 869 RVA: 0x00003AA7 File Offset: 0x00001CA7
public bool FirstLoginOfTheDay { get; set; }
// Token: 0x17000149 RID: 329
// (get) Token: 0x06000366 RID: 870 RVA: 0x00003AB0 File Offset: 0x00001CB0
// (set) Token: 0x06000367 RID: 871 RVA: 0x00003AB8 File Offset: 0x00001CB8
public ulong AnalyticsSessionId { get; set; }
// Token: 0x1700014A RID: 330
// (get) Token: 0x06000368 RID: 872 RVA: 0x00003AC1 File Offset: 0x00001CC1
// (set) Token: 0x06000369 RID: 873 RVA: 0x00003AC9 File Offset: 0x00001CC9
public bool CanUseScreenMode { get; set; }
// Token: 0x0600036A RID: 874 RVA: 0x00009044 File Offset: 0x00007244
public static string loginCache(ulong userid, ulong platformid)
{
string name = File.ReadAllText("SaveData\\Profile\\username.txt");
return JsonConvert.SerializeObject(new logincached
{
Error = "",
Player = new getcachedlogins
{
Id = userid,
Username = name,
DisplayName = name,
XP = 9999,
Level = 10,
RegistrationStatus = 2,
Developer = false,
CanReceiveInvites = false,
ProfileImageName = name,
JuniorProfile = false,
ForceJuniorImages = false,
PendingJunior = false,
HasBirthday = true,
AvoidJuniors = true,
PlayerReputation = new mPlayerReputation
{
Noteriety = 0,
CheerCredit = 20,
CheerGeneral = 10,
CheerHelpful = 10,
CheerGreatHost = 10,
CheerSportsman = 10,
CheerCreative = 10,
SubscriberCount = 0,
SubscribedCount = 0,
SelectedCheer = 0
},
PlatformIds = new List<mPlatformID>
{
new mPlatformID
{
Platform = 0,
PlatformId = platformid
}
}
},
Token = "NoKeyProvided",
FirstLoginOfTheDay = true,
AnalyticsSessionId = 392394UL,
CanUseScreenMode = true
});
}
}
}

View File

@@ -0,0 +1,18 @@
using System;
namespace api
{
// Token: 0x02000015 RID: 21
internal class MatchmakingConfigParams
{
// Token: 0x17000019 RID: 25
// (get) Token: 0x06000064 RID: 100 RVA: 0x0000229D File Offset: 0x0000049D
// (set) Token: 0x06000065 RID: 101 RVA: 0x000022A5 File Offset: 0x000004A5
public float PreferFullRoomsFrequency { get; set; }
// Token: 0x1700001A RID: 26
// (get) Token: 0x06000066 RID: 102 RVA: 0x000022AE File Offset: 0x000004AE
// (set) Token: 0x06000067 RID: 103 RVA: 0x000022B6 File Offset: 0x000004B6
public float PreferEmptyRoomsFrequency { get; set; }
}
}

59
NameServer.cs Normal file
View File

@@ -0,0 +1,59 @@
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading;
namespace server
{
// Token: 0x02000050 RID: 80
internal class NameServer
{
// Token: 0x06000227 RID: 551 RVA: 0x00006D1C File Offset: 0x00004F1C
public NameServer()
{
try
{
Console.WriteLine("NameServer.cs has started.");
new Thread(new ThreadStart(this.StartListen)).Start();
}
catch (Exception ex)
{
Console.WriteLine("An Exception Occurred while Listening :" + ex.ToString());
}
}
// Token: 0x06000228 RID: 552 RVA: 0x00006D84 File Offset: 0x00004F84
private void StartListen()
{
this.listener.Prefixes.Add("http://localhost:20181/");
for (; ; )
{
this.listener.Start();
Console.WriteLine("NameServer.cs is listening.");
HttpListenerContext context = this.listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
string rawUrl = request.RawUrl;
string s = "";
s = "{\"API\":\"http://localhost:2018\",\"Notifications\":\"http://localhost:20161\",\"Images\":\"http://localhost:20182\"}";
Console.WriteLine("API Response: " + s);
byte[] bytes = Encoding.UTF8.GetBytes(s);
response.ContentLength64 = (long)bytes.Length;
Stream outputStream = response.OutputStream;
outputStream.Write(bytes, 0, bytes.Length);
Thread.Sleep(400);
outputStream.Close();
this.listener.Stop();
}
}
public static string VersionCheckResponse = "{\"ValidVersion\":true}";
public static string BlankResponse = "";
// Token: 0x04000192 RID: 402
private HttpListener listener = new HttpListener();
}
}

83
Notification.cs Normal file
View File

@@ -0,0 +1,83 @@
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace ws
{
// Token: 0x02000029 RID: 41
public class Notification
{
// Token: 0x06000104 RID: 260 RVA: 0x00004EF4 File Offset: 0x000030F4
public static string ProcessRequest(string jsonData)
{
string result;
{
result = jsonData;
}
return result;
}
// Token: 0x0200002A RID: 42
public enum ResponseResult
{
// Token: 0x04000091 RID: 145
RelationshipChanged = 1,
// Token: 0x04000092 RID: 146
MessageReceived,
// Token: 0x04000093 RID: 147
MessageDeleted,
// Token: 0x04000094 RID: 148
PresenceHeartbeatResponse,
// Token: 0x04000095 RID: 149
SubscriptionListUpdated = 9,
// Token: 0x04000096 RID: 150
SubscriptionUpdateProfile = 11,
// Token: 0x04000097 RID: 151
SubscriptionUpdatePresence,
// Token: 0x04000098 RID: 152
SubscriptionUpdateGameSession,
// Token: 0x04000099 RID: 153
SubscriptionUpdateRoom,
// Token: 0x0400009A RID: 154
ModerationQuitGame = 20,
// Token: 0x0400009B RID: 155
ModerationUpdateRequired,
// Token: 0x0400009C RID: 156
ModerationKick,
// Token: 0x0400009D RID: 157
ModerationKickAttemptFailed,
// Token: 0x0400009E RID: 158
GiftPackageReceived = 30,
// Token: 0x0400009F RID: 159
ProfileJuniorStatusUpdate = 40,
// Token: 0x040000A0 RID: 160
RelationshipsInvalid = 50,
// Token: 0x040000A1 RID: 161
StorefrontBalanceAdd = 60
}
// Token: 0x0200002B RID: 43
public class Reponse
{
// Token: 0x1700005C RID: 92
// (get) Token: 0x06000106 RID: 262 RVA: 0x000027DA File Offset: 0x000009DA
// (set) Token: 0x06000107 RID: 263 RVA: 0x000027E2 File Offset: 0x000009E2
public int Id { get; set; }
// Token: 0x1700005D RID: 93
// (get) Token: 0x06000108 RID: 264 RVA: 0x000027EB File Offset: 0x000009EB
// (set) Token: 0x06000109 RID: 265 RVA: 0x000027F3 File Offset: 0x000009F3
public object Msg { get; set; }
// Token: 0x0600010A RID: 266 RVA: 0x00004FC0 File Offset: 0x000031C0
public static Notification.Reponse createResponse(int id, object msg)
{
return new Notification.Reponse
{
Id = id,
Msg = msg
};
}
}
}
}

19
Objective.cs Normal file
View File

@@ -0,0 +1,19 @@
using System;
namespace api
{
// Token: 0x02000018 RID: 24
public class Objective
{
// Token: 0x17000020 RID: 32
// (get) Token: 0x06000075 RID: 117 RVA: 0x00002314 File Offset: 0x00000514
// (set) Token: 0x06000076 RID: 118 RVA: 0x0000231C File Offset: 0x0000051C
public int type { get; set; }
// Token: 0x17000021 RID: 33
// (get) Token: 0x06000077 RID: 119 RVA: 0x00002325 File Offset: 0x00000525
// (set) Token: 0x06000078 RID: 120 RVA: 0x0000232D File Offset: 0x0000052D
public int score { get; set; }
}
}

18
OpenRec_.csproj Normal file
View File

@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup>
<ItemGroup>
<Reference Include="websocket-sharp">
<HintPath>..\..\..\r16server\making new server\websocket-sharp.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

25
OpenRec_.sln Normal file
View File

@@ -0,0 +1,25 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31321.278
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenRec_", "OpenRec_.csproj", "{C3C433FC-52FB-4472-81F7-B271A2CDABFE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C3C433FC-52FB-4472-81F7-B271A2CDABFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C3C433FC-52FB-4472-81F7-B271A2CDABFE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C3C433FC-52FB-4472-81F7-B271A2CDABFE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C3C433FC-52FB-4472-81F7-B271A2CDABFE}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3C2E49E2-E5D3-47A6-8F3A-5A1DF6A19A06}
EndGlobalSection
EndGlobal

18
PlatformID.cs Normal file
View File

@@ -0,0 +1,18 @@
using System;
namespace api2018
{
// Token: 0x02000037 RID: 55
public class mPlatformID
{
// Token: 0x17000097 RID: 151
// (get) Token: 0x0600018E RID: 398 RVA: 0x00002B9F File Offset: 0x00000D9F
// (set) Token: 0x0600018F RID: 399 RVA: 0x00002BA7 File Offset: 0x00000DA7
public int Platform { get; set; }
// Token: 0x17000098 RID: 152
// (get) Token: 0x06000190 RID: 400 RVA: 0x00002BB0 File Offset: 0x00000DB0
// (set) Token: 0x06000191 RID: 401 RVA: 0x00002BB8 File Offset: 0x00000DB8
public ulong PlatformId { get; set; }
}
}

58
PlayerReputation.cs Normal file
View File

@@ -0,0 +1,58 @@
using System;
namespace api2018
{
// Token: 0x02000036 RID: 54
public class mPlayerReputation
{
// Token: 0x1700008D RID: 141
// (get) Token: 0x06000179 RID: 377 RVA: 0x00002AF5 File Offset: 0x00000CF5
// (set) Token: 0x0600017A RID: 378 RVA: 0x00002AFD File Offset: 0x00000CFD
public int Noteriety { get; set; }
// Token: 0x1700008E RID: 142
// (get) Token: 0x0600017B RID: 379 RVA: 0x00002B06 File Offset: 0x00000D06
// (set) Token: 0x0600017C RID: 380 RVA: 0x00002B0E File Offset: 0x00000D0E
public int CheerGeneral { get; set; }
// Token: 0x1700008F RID: 143
// (get) Token: 0x0600017D RID: 381 RVA: 0x00002B17 File Offset: 0x00000D17
// (set) Token: 0x0600017E RID: 382 RVA: 0x00002B1F File Offset: 0x00000D1F
public int CheerHelpful { get; set; }
// Token: 0x17000090 RID: 144
// (get) Token: 0x0600017F RID: 383 RVA: 0x00002B28 File Offset: 0x00000D28
// (set) Token: 0x06000180 RID: 384 RVA: 0x00002B30 File Offset: 0x00000D30
public int CheerGreatHost { get; set; }
// Token: 0x17000091 RID: 145
// (get) Token: 0x06000181 RID: 385 RVA: 0x00002B39 File Offset: 0x00000D39
// (set) Token: 0x06000182 RID: 386 RVA: 0x00002B41 File Offset: 0x00000D41
public int CheerSportsman { get; set; }
// Token: 0x17000092 RID: 146
// (get) Token: 0x06000183 RID: 387 RVA: 0x00002B4A File Offset: 0x00000D4A
// (set) Token: 0x06000184 RID: 388 RVA: 0x00002B52 File Offset: 0x00000D52
public int CheerCreative { get; set; }
// Token: 0x17000093 RID: 147
// (get) Token: 0x06000185 RID: 389 RVA: 0x00002B5B File Offset: 0x00000D5B
// (set) Token: 0x06000186 RID: 390 RVA: 0x00002B63 File Offset: 0x00000D63
public int CheerCredit { get; set; }
// Token: 0x17000094 RID: 148
// (get) Token: 0x06000187 RID: 391 RVA: 0x00002B6C File Offset: 0x00000D6C
// (set) Token: 0x06000188 RID: 392 RVA: 0x00002B74 File Offset: 0x00000D74
public int SubscriberCount { get; set; }
// Token: 0x17000095 RID: 149
// (get) Token: 0x06000189 RID: 393 RVA: 0x00002B7D File Offset: 0x00000D7D
// (set) Token: 0x0600018A RID: 394 RVA: 0x00002B85 File Offset: 0x00000D85
public int SubscribedCount { get; set; }
// Token: 0x17000096 RID: 150
// (get) Token: 0x0600018B RID: 395 RVA: 0x00002B8E File Offset: 0x00000D8E
// (set) Token: 0x0600018C RID: 396 RVA: 0x00002B96 File Offset: 0x00000D96
public int SelectedCheer { get; set; }
}
}

41
Profiles.cs Normal file
View File

@@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace api2016
{
class Profiles
{
public ulong Id { get; set; }
public string Username { get; set; }
public string DisplayName { get; set; }
public int XP { get; set; }
public int Level { get; set; }
public int Reputation { get; set; }
public bool Verified { get; set; }
public bool Developer { get; set; }
public bool HasEmail { get; set; }
public bool CanReceiveInvites { get; set; }
public string ProfileImageName { get; set; }
public bool JuniorProfile { get; set; }
public bool ForceJuniorImages { get; set; }
public bool PendingJunior { get; set; }
public bool HasBirthday { get; set; }
}
}

87
Program.cs Normal file
View File

@@ -0,0 +1,87 @@
using System;
using server;
using System.IO;
using ws;
using api;
namespace start
{
class Program
{
static void Main(string[] args)
{
Config.setup();
goto Start;
Start:
Console.WriteLine("OpenRec - Open source RecNet server software.");
Console.WriteLine("1) Modify Settings" + Environment.NewLine + "2) Modify Profile" + Environment.NewLine + "3) Start Server");
string readline = Console.ReadLine();
if (readline == "1")
{
Console.WriteLine("Not yet added in...");
goto Start;
}
if (readline == "2")
{
goto Start;
Console.Clear();
Console.WriteLine("1) Change Username" + Environment.NewLine + "2) Go Back");
string readline3 = Console.ReadLine();
if (readline3 == "1")
{
Console.Clear();
Console.WriteLine("Current Username: " + File.ReadAllText("SaveData\\Profile\\username.txt)"));
Console.WriteLine("New Username: ");
string newusername = Console.ReadLine();
File.WriteAllText("SaveData\\Profile\\username.txt)", newusername);
Console.Clear();
goto Start;
}
if (readline3 == "2")
{
Console.Clear();
goto Start;
}
}
if (readline == "3")
{
Console.WriteLine("Please select the version of RecRoom the server should host: (2016, 2017, 2018)");
string readline2 = Console.ReadLine();
if (readline2 == "2016")
{
version = "2016";
Console.Clear();
Console.WriteLine("Version Selected: " + start.Program.version);
new APIServer();
new WebSocket();
}
if (readline2 == "2017")
{
version = "2017";
Console.Clear();
Console.WriteLine("Version Selected: " + start.Program.version);
new APIServer();
new WebSocket();
}
if (readline2 == "2018")
{
version = "2018";
Console.Clear();
Console.WriteLine("Version Selected: " + start.Program.version);
new NameServer();
new ImageServer();
new APIServer();
new WebSocket();
}
}
}
public static string version = "";
}
}

32
WebSocket.cs Normal file
View File

@@ -0,0 +1,32 @@
using System;
using WebSocketSharp;
using WebSocketSharp.Server;
namespace ws
{
// Token: 0x02000008 RID: 8
internal class WebSocket
{
// Token: 0x06000012 RID: 18 RVA: 0x0000418C File Offset: 0x0000238C
public WebSocket()
{
WebSocketServer webSocketServer = new WebSocketServer(string.Format("ws://localhost:20161"));
webSocketServer.AddWebSocketService<WebSocket.NotificationV2>("/api/notification/v2");
webSocketServer.AddWebSocketService<WebSocket.NotificationV2>("/hub/v1");
webSocketServer.Start();
Console.WriteLine("WebSocket.cs has started.");
Console.WriteLine("WebSocket.cs is listening.");
}
// Token: 0x02000009 RID: 9
public class NotificationV2 : WebSocketBehavior
{
// Token: 0x06000013 RID: 19 RVA: 0x0000209D File Offset: 0x0000029D
protected override void OnMessage(MessageEventArgs e)
{
Console.WriteLine("WebSocket.cs called for. Not yet implemented.");
base.Send(Notification.ProcessRequest(e.Data));
}
}
}
}

23
photonConfig.cs Normal file
View File

@@ -0,0 +1,23 @@
using System;
namespace api
{
// Token: 0x02000016 RID: 22
public class photonConfig
{
// Token: 0x1700001B RID: 27
// (get) Token: 0x06000069 RID: 105 RVA: 0x000022BF File Offset: 0x000004BF
// (set) Token: 0x0600006A RID: 106 RVA: 0x000022C7 File Offset: 0x000004C7
public string CloudRegion { get; set; }
// Token: 0x1700001C RID: 28
// (get) Token: 0x0600006B RID: 107 RVA: 0x000022D0 File Offset: 0x000004D0
// (set) Token: 0x0600006C RID: 108 RVA: 0x000022D8 File Offset: 0x000004D8
public bool CrcCheckEnabled { get; set; }
// Token: 0x1700001D RID: 29
// (get) Token: 0x0600006D RID: 109 RVA: 0x000022E1 File Offset: 0x000004E1
// (set) Token: 0x0600006E RID: 110 RVA: 0x000022E9 File Offset: 0x000004E9
public bool EnableServerTracingAfterDisconnect { get; set; }
}
}