mirror of
https://github.com/bitwarden/server.git
synced 2025-04-07 05:58:13 -05:00
[PS-293] Update admin portal to use the new version.json (#2006)
* PS-293: Get latest version no comes from GitHub instead of DockerHub. * PS-293: format fixes * PS-293: code refactor and clean up * PS-293: deserialization to class, argument typification. * PS-293: formating fix * PS-293: Moved ProjectType to HomeController * PS-293: updated version endpoint to CDN * PS-293: Update endpoint to CF protected
This commit is contained in:
parent
ee5946c4b9
commit
904193560c
@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Authorization;
|
|||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace Bit.Admin.Controllers
|
namespace Bit.Admin.Controllers
|
||||||
{
|
{
|
||||||
@ -42,26 +43,22 @@ namespace Bit.Admin.Controllers
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<IActionResult> GetLatestDockerHubVersion(string repository, CancellationToken cancellationToken)
|
|
||||||
|
public async Task<IActionResult> GetLatestVersion(ProjectType project, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var requestUri = $"https://hub.docker.com/v2/repositories/bitwarden/{repository}/tags/";
|
var requestUri = $"https://selfhost.bitwarden.com/version.json";
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var response = await _httpClient.GetAsync(requestUri, cancellationToken);
|
var response = await _httpClient.GetAsync(requestUri, cancellationToken);
|
||||||
if (response.IsSuccessStatusCode)
|
if (response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
using var jsonDocument = await JsonDocument.ParseAsync(await response.Content.ReadAsStreamAsync(cancellationToken), cancellationToken: cancellationToken);
|
var latestVersions = JsonConvert.DeserializeObject<LatestVersions>(await response.Content.ReadAsStringAsync());
|
||||||
var root = jsonDocument.RootElement;
|
return project switch
|
||||||
|
|
||||||
var results = root.GetProperty("results");
|
|
||||||
foreach (var result in results.EnumerateArray())
|
|
||||||
{
|
{
|
||||||
var name = result.GetProperty("name").GetString();
|
ProjectType.Core => new JsonResult(latestVersions.Versions.WebVersion),
|
||||||
if (!string.IsNullOrWhiteSpace(name) && name.Length > 0 && char.IsNumber(name[0]))
|
ProjectType.Web => new JsonResult(latestVersions.Versions.CoreVersion),
|
||||||
{
|
_ => throw new System.NotImplementedException(),
|
||||||
return new JsonResult(name);
|
};
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (HttpRequestException e)
|
catch (HttpRequestException e)
|
||||||
@ -94,5 +91,29 @@ namespace Bit.Admin.Controllers
|
|||||||
|
|
||||||
return new JsonResult("-");
|
return new JsonResult("-");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class LatestVersions
|
||||||
|
{
|
||||||
|
[JsonProperty("versions")]
|
||||||
|
public Versions Versions { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private class Versions
|
||||||
|
{
|
||||||
|
[JsonProperty("coreVersion")]
|
||||||
|
public string CoreVersion { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("webVersion")]
|
||||||
|
public string WebVersion { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("keyConnectorVersion")]
|
||||||
|
public string KeyConnectorVersion { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ProjectType
|
||||||
|
{
|
||||||
|
Core,
|
||||||
|
Web,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
@model HomeModel
|
@using Bit.Admin.Controllers
|
||||||
|
@model HomeModel
|
||||||
@{
|
@{
|
||||||
ViewData["Title"] = "Dashboard";
|
ViewData["Title"] = "Dashboard";
|
||||||
}
|
}
|
||||||
@ -9,7 +10,7 @@
|
|||||||
let loadedWebLatest = false;
|
let loadedWebLatest = false;
|
||||||
let loadedWebInstalled = false;
|
let loadedWebInstalled = false;
|
||||||
|
|
||||||
fetch('@Url.Action("GetLatestDockerHubVersion", new { repository = "web" })').then((response) => {
|
fetch('@Url.Action("GetLatestVersion", new { project = @ProjectType.Web })').then((response) => {
|
||||||
return response.json();
|
return response.json();
|
||||||
}).then((version) => {
|
}).then((version) => {
|
||||||
document.getElementById('web-latest').innerText = version;
|
document.getElementById('web-latest').innerText = version;
|
||||||
@ -19,7 +20,7 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
fetch('@Url.Action("GetLatestDockerHubVersion", new { repository = "api" })').then((response) => {
|
fetch('@Url.Action("GetLatestVersion", new { project = @ProjectType.Core })').then((response) => {
|
||||||
return response.json();
|
return response.json();
|
||||||
}).then((version) => {
|
}).then((version) => {
|
||||||
document.getElementById('server-latest').innerText = version;
|
document.getElementById('server-latest').innerText = version;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user