mirror of
https://github.com/donaldzou/WGDashboard.git
synced 2024-11-06 16:00:28 +01:00
I think this is it :)
This commit is contained in:
parent
d81dce536c
commit
c2cbaf0937
@ -57,14 +57,14 @@
|
||||
|
||||
<hr>
|
||||
|
||||
## Table of Content
|
||||
## 📋 Table of Content
|
||||
|
||||
<!-- TOC -->
|
||||
* [📣 What's New: v4.0](#-whats-new-v40)
|
||||
* [🎉 New Features](#-new-features)
|
||||
* [🧐 Other Changes](#-other-changes)
|
||||
* [🥘 New Experimental Features](#-new-experimental-features)
|
||||
* [Table of Content](#table-of-content)
|
||||
* [📋 Table of Content](#-table-of-content)
|
||||
* [💡 Features](#-features)
|
||||
* [📝 Requirements](#-requirements)
|
||||
* [Supported Operating Systems](#supported-operating-systems)
|
||||
@ -91,7 +91,7 @@
|
||||
* [Solution 1 from @DaanSelen](#solution-1-from-daanselen)
|
||||
* [Solution 2 from @shuricksumy](#solution-2-from-shuricksumy)
|
||||
* [📖 WGDashboard REST API Documentation & How to use API Key](#-wgdashboard-rest-api-documentation--how-to-use-api-key)
|
||||
* [🥘 Experimental Functions](#-experimental-functions)
|
||||
* [🥘 Experimental Features](#-experimental-features)
|
||||
* [Cross-Server Access](#cross-server-access)
|
||||
* [Desktop App](#desktop-app)
|
||||
* [🔍 Screenshot](#-screenshot)
|
||||
@ -531,7 +531,7 @@ Please visit [shuricksumy/docker-wgdashboard](https://github.com/shuricksumy/doc
|
||||
|
||||
Please visit the [API Documentation](./docs/api-documents.md)
|
||||
|
||||
## 🥘 Experimental Functions
|
||||
## 🥘 Experimental Features
|
||||
|
||||
### Cross-Server Access
|
||||
|
||||
|
@ -12,6 +12,7 @@ import secrets
|
||||
import subprocess
|
||||
import time
|
||||
import re
|
||||
import urllib.error
|
||||
import uuid
|
||||
from datetime import datetime, timedelta
|
||||
from typing import Any
|
||||
@ -2003,6 +2004,24 @@ def API_traceroute_execute():
|
||||
else:
|
||||
return ResponseObject(False, "Please provide ipAddress")
|
||||
|
||||
@app.route(f'{APP_PREFIX}/api/getDashboardUpdate')
|
||||
def API_getDashboardUpdate():
|
||||
import urllib.request as req;
|
||||
|
||||
try:
|
||||
r = req.urlopen("https://api.github.com/repos/donaldzou/WGDashboard/releases/latest", timeout=5).read()
|
||||
data = dict(json.loads(r))
|
||||
tagName = data.get('tag_name')
|
||||
htmlUrl = data.get('html_url')
|
||||
if tagName is not None and htmlUrl is not None:
|
||||
if tagName != DASHBOARD_VERSION:
|
||||
return ResponseObject(message=f"{tagName} is now avaible for update!", data=htmlUrl)
|
||||
else:
|
||||
return ResponseObject(message="You're on the latest version")
|
||||
return ResponseObject(False)
|
||||
|
||||
except urllib.error.HTTPError as e:
|
||||
return ResponseObject(False, f"Request to GitHub API failed. Returned a {e.code} status.")
|
||||
|
||||
'''
|
||||
Sign Up
|
||||
@ -2111,7 +2130,6 @@ _, app_port = DashboardConfig.GetConfig("Server", "app_port")
|
||||
_, WG_CONF_PATH = DashboardConfig.GetConfig("Server", "wg_conf_path")
|
||||
|
||||
|
||||
|
||||
WireguardConfigurations: dict[str, WireguardConfiguration] = {}
|
||||
WireguardConfigurations = _getConfigurationList()
|
||||
|
||||
|
2
src/static/app/dist/assets/index.css
vendored
2
src/static/app/dist/assets/index.css
vendored
File diff suppressed because one or more lines are too long
40
src/static/app/dist/assets/index.js
vendored
40
src/static/app/dist/assets/index.js
vendored
File diff suppressed because one or more lines are too long
@ -2,6 +2,7 @@
|
||||
import {wgdashboardStore} from "@/stores/wgdashboardStore.js";
|
||||
import {WireguardConfigurationsStore} from "@/stores/WireguardConfigurationsStore.js";
|
||||
import {DashboardConfigurationStore} from "@/stores/DashboardConfigurationStore.js";
|
||||
import {fetchGet} from "@/utilities/fetch.js";
|
||||
|
||||
export default {
|
||||
name: "navbar",
|
||||
@ -9,6 +10,27 @@ export default {
|
||||
const wireguardConfigurationsStore = WireguardConfigurationsStore();
|
||||
const dashboardConfigurationStore = DashboardConfigurationStore();
|
||||
return {wireguardConfigurationsStore, dashboardConfigurationStore}
|
||||
},
|
||||
data(){
|
||||
return {
|
||||
updateAvailable: false,
|
||||
updateMessage: "Checking for update...",
|
||||
updateUrl: ""
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
fetchGet("/api/getDashboardUpdate", {}, (res) => {
|
||||
if (res.status){
|
||||
if (res.data){
|
||||
this.updateAvailable = true
|
||||
this.updateUrl = res.data
|
||||
}
|
||||
this.updateMessage = res.message
|
||||
}else{
|
||||
this.updateMessage = "Failed to check available update"
|
||||
console.log(`Failed to get update: ${res.message}`)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@ -65,11 +87,20 @@ export default {
|
||||
@click="this.dashboardConfigurationStore.signOut()"
|
||||
role="button" style="font-weight: bold">
|
||||
<i class="bi bi-box-arrow-left me-2"></i>
|
||||
Sign Out</a></li>
|
||||
</ul>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a href="https://github.com/donaldzou/WGDashboard/releases/tag/"><small class="nav-link text-muted"></small></a></li>
|
||||
Sign Out</a>
|
||||
</li>
|
||||
<li class="nav-item" style="font-size: 0.8rem">
|
||||
<a :href="this.updateUrl" v-if="this.updateAvailable" class="text-decoration-none" target="_blank">
|
||||
<small class="nav-link text-muted rounded-3" >
|
||||
{{ this.updateMessage }}
|
||||
</small>
|
||||
</a>
|
||||
<small class="nav-link text-muted" v-else>
|
||||
{{ this.updateMessage }}
|
||||
</small>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user