diff --git a/API/Controllers/ServerController.cs b/API/Controllers/ServerController.cs
index 22b871529..3417d9732 100644
--- a/API/Controllers/ServerController.cs
+++ b/API/Controllers/ServerController.cs
@@ -124,6 +124,17 @@ public class ServerController : BaseApiController
return Ok(await _statsService.GetServerInfo());
}
+ ///
+ /// Returns non-sensitive information about the current system
+ ///
+ /// This is just for the UI and is extremly lightweight
+ ///
+ [HttpGet("server-info-slim")]
+ public async Task> GetSlimVersion()
+ {
+ return Ok(await _statsService.GetServerInfoSlim());
+ }
+
///
/// Triggers the scheduling of the convert media job. This will convert all media to the target encoding (except for PNG). Only one job will run at a time.
diff --git a/API/DTOs/Stats/ServerInfoSlimDto.cs b/API/DTOs/Stats/ServerInfoSlimDto.cs
new file mode 100644
index 000000000..e8db6a2b0
--- /dev/null
+++ b/API/DTOs/Stats/ServerInfoSlimDto.cs
@@ -0,0 +1,21 @@
+namespace API.DTOs.Stats;
+
+///
+/// This is just for the Server tab on UI
+///
+public class ServerInfoSlimDto
+{
+ ///
+ /// Unique Id that represents a unique install
+ ///
+ public required string InstallId { get; set; }
+ ///
+ /// If the Kavita install is using Docker
+ ///
+ public bool IsDocker { get; set; }
+ ///
+ /// Version of Kavita
+ ///
+ public required string KavitaVersion { get; set; }
+
+}
diff --git a/API/Services/Tasks/StatsService.cs b/API/Services/Tasks/StatsService.cs
index b1d54c03a..e4f997767 100644
--- a/API/Services/Tasks/StatsService.cs
+++ b/API/Services/Tasks/StatsService.cs
@@ -23,6 +23,7 @@ public interface IStatsService
{
Task Send();
Task GetServerInfo();
+ Task GetServerInfoSlim();
Task SendCancellation();
}
///
@@ -171,6 +172,17 @@ public class StatsService : IStatsService
return serverInfo;
}
+ public async Task GetServerInfoSlim()
+ {
+ var serverSettings = await _unitOfWork.SettingsRepository.GetSettingsDtoAsync();
+ return new ServerInfoSlimDto()
+ {
+ InstallId = serverSettings.InstallId,
+ KavitaVersion = serverSettings.InstallVersion,
+ IsDocker = OsInfo.IsDocker
+ };
+ }
+
public async Task SendCancellation()
{
_logger.LogInformation("Informing KavitaStats that this instance is no longer sending stats");
diff --git a/Kavita.Common/HashUtil.cs b/Kavita.Common/HashUtil.cs
index 989a2bfa4..4956682b3 100644
--- a/Kavita.Common/HashUtil.cs
+++ b/Kavita.Common/HashUtil.cs
@@ -45,28 +45,7 @@ public static class HashUtil
public static string ServerToken()
{
- var seed = new DeviceIdBuilder()
- .AddMacAddress()
- .AddUserName()
- .AddComponent("ProcessorCount", new DeviceIdComponent($"{Environment.ProcessorCount}"))
- .AddComponent("OSPlatform", new DeviceIdComponent($"{Environment.OSVersion.Platform}"))
- .OnWindows(windows => windows
- .AddProcessorId())
- .OnLinux(linux =>
- {
- var osInfo = RunAndCapture("uname", "-a");
- if (Regex.IsMatch(osInfo, @"\bUnraid\b"))
- {
- var cpuModel = RunAndCapture("lscpu", string.Empty);
- var match = Regex.Match(cpuModel, @"Model name:\s+(.+)");
- linux.AddComponent("CPUModel", new DeviceIdComponent($"{match.Groups[1].Value.Trim()}"));
- return;
- }
- linux.AddMotherboardSerialNumber();
- })
- .OnMac(mac => mac.AddSystemDriveSerialNumber())
- .ToString();
- return CalculateCrc(seed);
+ return AnonymousToken();
}
///
diff --git a/UI/Web/src/app/_services/server.service.ts b/UI/Web/src/app/_services/server.service.ts
index de168ee5b..543d36aad 100644
--- a/UI/Web/src/app/_services/server.service.ts
+++ b/UI/Web/src/app/_services/server.service.ts
@@ -1,7 +1,7 @@
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { environment } from 'src/environments/environment';
-import { ServerInfo } from '../admin/_models/server-info';
+import {ServerInfoSlim} from '../admin/_models/server-info';
import { UpdateVersionEvent } from '../_models/events/update-version-event';
import { Job } from '../_models/job/job';
import { KavitaMediaError } from '../admin/_models/media-error';
@@ -17,7 +17,7 @@ export class ServerService {
getServerInfo() {
- return this.httpClient.get(this.baseUrl + 'server/server-info');
+ return this.httpClient.get(this.baseUrl + 'server/server-info-slim');
}
clearCache() {
diff --git a/UI/Web/src/app/admin/_models/server-info.ts b/UI/Web/src/app/admin/_models/server-info.ts
index d13419f96..751c87534 100644
--- a/UI/Web/src/app/admin/_models/server-info.ts
+++ b/UI/Web/src/app/admin/_models/server-info.ts
@@ -1,9 +1,5 @@
-export interface ServerInfo {
- os: string;
- dotnetVersion: string;
- runTimeVersion: string;
+export interface ServerInfoSlim {
kavitaVersion: string;
- NumOfCores: number;
installId: string;
isDocker: boolean;
-}
\ No newline at end of file
+}
diff --git a/UI/Web/src/app/admin/manage-system/manage-system.component.ts b/UI/Web/src/app/admin/manage-system/manage-system.component.ts
index 35c349fa4..dbdc87d8d 100644
--- a/UI/Web/src/app/admin/manage-system/manage-system.component.ts
+++ b/UI/Web/src/app/admin/manage-system/manage-system.component.ts
@@ -4,7 +4,7 @@ import { ToastrService } from 'ngx-toastr';
import { take } from 'rxjs/operators';
import { ServerService } from 'src/app/_services/server.service';
import { SettingsService } from '../settings.service';
-import { ServerInfo } from '../_models/server-info';
+import {ServerInfoSlim} from '../_models/server-info';
import { ServerSettings } from '../_models/server-settings';
import { NgIf } from '@angular/common';
@@ -19,10 +19,10 @@ export class ManageSystemComponent implements OnInit {
settingsForm: FormGroup = new FormGroup({});
serverSettings!: ServerSettings;
- serverInfo!: ServerInfo;
+ serverInfo!: ServerInfoSlim;
- constructor(private settingsService: SettingsService, private toastr: ToastrService,
+ constructor(private settingsService: SettingsService, private toastr: ToastrService,
private serverService: ServerService) { }
ngOnInit(): void {
diff --git a/openapi.json b/openapi.json
index 60c33f9b3..03774ecff 100644
--- a/openapi.json
+++ b/openapi.json
@@ -7,7 +7,7 @@
"name": "GPL-3.0",
"url": "https://github.com/Kareadita/Kavita/blob/develop/LICENSE"
},
- "version": "0.7.4.4"
+ "version": "0.7.4.5"
},
"servers": [
{
@@ -8384,6 +8384,37 @@
}
}
},
+ "/api/Server/server-info-slim": {
+ "get": {
+ "tags": [
+ "Server"
+ ],
+ "summary": "Returns non-sensitive information about the current system",
+ "description": "This is just for the UI and is extremly lightweight",
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "text/plain": {
+ "schema": {
+ "$ref": "#/components/schemas/ServerInfoDto"
+ }
+ },
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ServerInfoDto"
+ }
+ },
+ "text/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ServerInfoDto"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
"/api/Server/convert-media": {
"post": {
"tags": [