sharp-chat/SharpChat/Program.cs

85 lines
3.5 KiB
C#

using SharpChat.Flashii;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace SharpChat {
public class Program {
public const ushort PORT = 6770;
public static void Main(string[] args) {
Console.WriteLine(@" _____ __ ________ __ ");
Console.WriteLine(@" / ___// /_ ____ __________ / ____/ /_ ____ _/ /_");
Console.WriteLine(@" \__ \/ __ \/ __ `/ ___/ __ \/ / / __ \/ __ `/ __/");
Console.WriteLine(@" ___/ / / / / /_/ / / / /_/ / /___/ / / / /_/ / /_ ");
Console.WriteLine(@"/____/_/ /_/\__,_/_/ / .___/\____/_/ /_/\__,_/\__/ ");
Console.WriteLine(@" / _/ Sock Chat Server");
#if DEBUG
Console.WriteLine(@"============================================ DEBUG ==");
#endif
#if DEBUG
Console.WriteLine(@"HOLD A KEY TO START A TEST NOW");
Thread.Sleep(1000);
if (Console.KeyAvailable)
switch (Console.ReadKey(true).Key) {
case ConsoleKey.F:
TestMisuzuAuth();
return;
}
#endif
WebDatabase.ReadConfig();
if(!WebDatabase.IsAvailable)
Database.ReadConfig();
using ManualResetEvent mre = new ManualResetEvent(false);
using SockChatServer scs = new SockChatServer(PORT);
Console.CancelKeyPress += (s, e) => { e.Cancel = true; mre.Set(); };
mre.WaitOne();
}
#if DEBUG
private static void TestMisuzuAuth() {
Console.WriteLine($@"Enter token found on {FlashiiUrls.BASE_URL}/login:");
string[] token = Console.ReadLine().Split(new[] { '_' }, 2);
System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient();
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(@"SharpChat");
FlashiiAuth authRes = FlashiiAuth.Attempt(httpClient, new FlashiiAuthRequest {
UserId = int.Parse(token[0]), Token = token[1], IPAddress = @"1.2.4.8"
}).GetAwaiter().GetResult();
if(authRes.Success) {
Console.WriteLine(@"Auth success!");
Console.WriteLine($@" User ID: {authRes.UserId}");
Console.WriteLine($@" Username: {authRes.Username}");
Console.WriteLine($@" Colour: {authRes.ColourRaw:X8}");
Console.WriteLine($@" Hierarchy: {authRes.Rank}");
Console.WriteLine($@" Silenced: {authRes.SilencedUntil}");
Console.WriteLine($@" Perms: {authRes.Permissions}");
} else {
Console.WriteLine($@"Auth failed: {authRes.Reason}");
return;
}
Console.WriteLine(@"Bumping last seen...");
FlashiiBump.Submit(httpClient, new[] { new ChatUser(authRes) });
Console.WriteLine(@"Fetching ban list...");
IEnumerable<FlashiiBan> bans = FlashiiBan.GetList(httpClient).GetAwaiter().GetResult();
Console.WriteLine($@"{bans.Count()} BANS");
foreach(FlashiiBan ban in bans) {
Console.WriteLine($@"BAN INFO");
Console.WriteLine($@" User ID: {ban.UserId}");
Console.WriteLine($@" Username: {ban.Username}");
Console.WriteLine($@" IP Address: {ban.UserIP}");
Console.WriteLine($@" Expires: {ban.Expires}");
}
}
#endif
}
}