Improved logging system.
This commit is contained in:
parent
d94b1cb813
commit
98d13ebbbb
24 changed files with 202 additions and 142 deletions
|
@ -1,3 +1,4 @@
|
|||
using Microsoft.Extensions.Logging;
|
||||
using SharpChat.Auth;
|
||||
using SharpChat.Bans;
|
||||
using SharpChat.Configuration;
|
||||
|
@ -5,10 +6,11 @@ using System.Net;
|
|||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using ZLogger;
|
||||
|
||||
namespace SharpChat.Flashii;
|
||||
|
||||
public class FlashiiClient(HttpClient httpClient, Config config) : AuthClient, BansClient {
|
||||
public class FlashiiClient(ILogger logger, HttpClient httpClient, Config config) : AuthClient, BansClient {
|
||||
private const string DEFAULT_BASE_URL = "https://flashii.net/_sockchat";
|
||||
private readonly CachedValue<string> BaseURL = config.ReadCached("url", DEFAULT_BASE_URL);
|
||||
|
||||
|
@ -28,6 +30,9 @@ public class FlashiiClient(HttpClient httpClient, Config config) : AuthClient, B
|
|||
private const string AUTH_VERIFY_SIG = "verify#{0}#{1}#{2}";
|
||||
|
||||
public async Task<AuthResult> AuthVerify(IPAddress remoteAddr, string scheme, string token) {
|
||||
logger.ZLogInformation($"Verifying authentication data for {remoteAddr}...");
|
||||
logger.ZLogTrace($"AuthVerify({remoteAddr}, {scheme}, {token})");
|
||||
|
||||
string remoteAddrStr = remoteAddr.ToString();
|
||||
|
||||
HttpRequestMessage request = new(HttpMethod.Post, string.Format(AUTH_VERIFY_URL, BaseURL)) {
|
||||
|
@ -42,6 +47,7 @@ public class FlashiiClient(HttpClient httpClient, Config config) : AuthClient, B
|
|||
};
|
||||
|
||||
using HttpResponseMessage response = await httpClient.SendAsync(request);
|
||||
logger.ZLogTrace($"AuthVerify() -> HTTP {response.StatusCode}");
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
using Stream stream = await response.Content.ReadAsStreamAsync();
|
||||
|
@ -55,6 +61,7 @@ public class FlashiiClient(HttpClient httpClient, Config config) : AuthClient, B
|
|||
private const string AUTH_BUMP_USERS_ONLINE_URL = "{0}/bump";
|
||||
|
||||
public async Task AuthBumpUsersOnline(IEnumerable<(IPAddress remoteAddr, string userId)> entries) {
|
||||
logger.ZLogInformation($"Bumping online users list...");
|
||||
if(!entries.Any())
|
||||
return;
|
||||
|
||||
|
@ -80,6 +87,7 @@ public class FlashiiClient(HttpClient httpClient, Config config) : AuthClient, B
|
|||
};
|
||||
|
||||
using HttpResponseMessage response = await httpClient.SendAsync(request);
|
||||
logger.ZLogTrace($"AuthBumpUsersOnline() -> HTTP {response.StatusCode}");
|
||||
response.EnsureSuccessStatusCode();
|
||||
}
|
||||
|
||||
|
@ -95,6 +103,7 @@ public class FlashiiClient(HttpClient httpClient, Config config) : AuthClient, B
|
|||
IPAddress? issuerRemoteAddr = null,
|
||||
string? issuerUserId = null
|
||||
) {
|
||||
logger.ZLogInformation($"Creating ban of kind {kind} with duration {duration} for {remoteAddr}/{userId} issued by {issuerRemoteAddr}/{issuerUserId}...");
|
||||
if(duration <= TimeSpan.Zero || kind != BanKind.User)
|
||||
return;
|
||||
|
||||
|
@ -133,7 +142,7 @@ public class FlashiiClient(HttpClient httpClient, Config config) : AuthClient, B
|
|||
};
|
||||
|
||||
using HttpResponseMessage response = await httpClient.SendAsync(request);
|
||||
|
||||
logger.ZLogTrace($"BanCreate() -> HTTP {response.StatusCode}");
|
||||
response.EnsureSuccessStatusCode();
|
||||
}
|
||||
|
||||
|
@ -158,6 +167,8 @@ public class FlashiiClient(HttpClient httpClient, Config config) : AuthClient, B
|
|||
target = iabi.Address.ToString();
|
||||
} else throw new ArgumentException("info argument is set to unsupported implementation", nameof(info));
|
||||
|
||||
logger.ZLogInformation($"Revoking ban of kind {info.Kind} issued on {target}...");
|
||||
|
||||
string now = DateTimeOffset.Now.ToUnixTimeSeconds().ToString();
|
||||
string url = string.Format(BANS_REVOKE_URL, BaseURL, Uri.EscapeDataString(type), Uri.EscapeDataString(target), Uri.EscapeDataString(now));
|
||||
string sig = string.Format(BANS_REVOKE_SIG, now, type, target);
|
||||
|
@ -172,6 +183,7 @@ public class FlashiiClient(HttpClient httpClient, Config config) : AuthClient, B
|
|||
if(response.StatusCode == HttpStatusCode.NotFound)
|
||||
return false;
|
||||
|
||||
logger.ZLogTrace($"BanRevoke() -> HTTP {response.StatusCode}");
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
return response.StatusCode == HttpStatusCode.NoContent;
|
||||
|
@ -184,6 +196,8 @@ public class FlashiiClient(HttpClient httpClient, Config config) : AuthClient, B
|
|||
userIdOrName ??= "0";
|
||||
remoteAddr ??= IPAddress.None;
|
||||
|
||||
logger.ZLogInformation($"Requesting ban info for {remoteAddr}/{userIdOrName}...");
|
||||
|
||||
string now = DateTimeOffset.Now.ToUnixTimeSeconds().ToString();
|
||||
bool usingUserName = string.IsNullOrEmpty(userIdOrName) || userIdOrName.Any(c => c is < '0' or > '9');
|
||||
string remoteAddrStr = remoteAddr.ToString();
|
||||
|
@ -198,6 +212,7 @@ public class FlashiiClient(HttpClient httpClient, Config config) : AuthClient, B
|
|||
};
|
||||
|
||||
using HttpResponseMessage response = await httpClient.SendAsync(request);
|
||||
logger.ZLogTrace($"BanGet() -> HTTP {response.StatusCode}");
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
using Stream stream = await response.Content.ReadAsStreamAsync();
|
||||
|
@ -214,6 +229,8 @@ public class FlashiiClient(HttpClient httpClient, Config config) : AuthClient, B
|
|||
private const string BANS_LIST_SIG = "list#{0}";
|
||||
|
||||
public async Task<BanInfo[]> BanGetList() {
|
||||
logger.ZLogInformation($"Requesting ban list...");
|
||||
|
||||
string now = DateTimeOffset.Now.ToUnixTimeSeconds().ToString();
|
||||
string url = string.Format(BANS_LIST_URL, BaseURL, Uri.EscapeDataString(now));
|
||||
string sig = string.Format(BANS_LIST_SIG, now);
|
||||
|
@ -225,6 +242,7 @@ public class FlashiiClient(HttpClient httpClient, Config config) : AuthClient, B
|
|||
};
|
||||
|
||||
using HttpResponseMessage response = await httpClient.SendAsync(request);
|
||||
logger.ZLogTrace($"BanGetList() -> HTTP {response.StatusCode}");
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
using Stream stream = await response.Content.ReadAsStreamAsync();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue