Browse Source

fix typing, fix redirect, latest release on server

pull/1244/head
Bernd Storath 12 months ago
parent
commit
00197eb1e8
  1. 1
      .vscode/settings.json
  2. 8
      src/components/Client/Charts.vue
  3. 13
      src/server/api/release.get.ts
  4. 2
      src/server/middleware/auth.ts
  5. 0
      src/server/plugins/manager.ts
  6. 2
      src/server/utils/WireGuard.ts
  7. 26
      src/server/utils/release.ts
  8. 3
      src/stores/clients.ts
  9. 25
      src/stores/global.ts

1
.vscode/settings.json

@ -12,4 +12,5 @@
"[typescript]": { "[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode" "editor.defaultFormatter": "esbenp.prettier-vscode"
}, },
"typescript.tsdk": "./src/node_modules/typescript/lib"
} }

8
src/components/Client/Charts.vue

@ -32,8 +32,8 @@ const chartOptionsTX = computed(() => {
...chartOptions, ...chartOptions,
colors: [CHART_COLORS.tx[theme.value]], colors: [CHART_COLORS.tx[theme.value]],
}; };
opts.chart.type = UI_CHART_TYPES[globalStore.uiChartType].type || undefined; opts.chart.type = UI_CHART_TYPES[globalStore.uiChartType]?.type || undefined;
opts.stroke.width = UI_CHART_TYPES[globalStore.uiChartType].strokeWidth; opts.stroke.width = UI_CHART_TYPES[globalStore.uiChartType]?.strokeWidth ?? 0;
return opts; return opts;
}); });
@ -42,8 +42,8 @@ const chartOptionsRX = computed(() => {
...chartOptions, ...chartOptions,
colors: [CHART_COLORS.rx[theme.value]], colors: [CHART_COLORS.rx[theme.value]],
}; };
opts.chart.type = UI_CHART_TYPES[globalStore.uiChartType].type || undefined; opts.chart.type = UI_CHART_TYPES[globalStore.uiChartType]?.type || undefined;
opts.stroke.width = UI_CHART_TYPES[globalStore.uiChartType].strokeWidth; opts.stroke.width = UI_CHART_TYPES[globalStore.uiChartType]?.strokeWidth ?? 0;
return opts; return opts;
}); });

13
src/server/api/release.get.ts

@ -1,9 +1,8 @@
export default defineEventHandler((event) => { export default defineEventHandler(async () => {
setHeader(event, 'Content-Type', 'application/json');
const release = Number.parseInt(RELEASE, 10); const release = Number.parseInt(RELEASE, 10);
if (isNaN(release)) { const latestRelease = await fetchLatestRelease();
return 0; return {
} currentRelease: release,
// TODO: move changelog logic here latestRelease: latestRelease,
return release; };
}); });

2
src/server/middleware/auth.ts

@ -7,7 +7,7 @@ export default defineEventHandler(async (event) => {
} }
} }
if (url.pathname === '/') { if (url.pathname === '/') {
if (!session.data.authenticated) { if (!session.data.authenticated && REQUIRES_PASSWORD) {
return sendRedirect(event, '/login', 302); return sendRedirect(event, '/login', 302);
} }
} }

0
src/server/plugins/shutdown.ts → src/server/plugins/manager.ts

2
src/server/utils/WireGuard.ts

@ -206,7 +206,7 @@ ${
: new Date(Number(`${latestHandshakeAt}000`)); : new Date(Number(`${latestHandshakeAt}000`));
client.transferRx = Number(transferRx); client.transferRx = Number(transferRx);
client.transferTx = Number(transferTx); client.transferTx = Number(transferTx);
client.persistentKeepalive = persistentKeepalive; client.persistentKeepalive = persistentKeepalive ?? null;
}); });
return clients; return clients;

26
src/server/utils/release.ts

@ -0,0 +1,26 @@
export async function fetchLatestRelease() {
try {
const response = await $fetch<Record<string, string>>(
'https://wg-easy.github.io/wg-easy/changelog.json',
{ method: 'get' }
);
const releasesArray = Object.entries(response).map(
([version, changelog]) => ({
version: parseInt(version, 10),
changelog: changelog,
})
);
releasesArray.sort((a, b) => {
return b.version - a.version;
});
if (releasesArray.length === 0) {
throw new Error('Changelog is empty');
}
return releasesArray[0]!;
} catch (e) {
SERVER_DEBUG('Failed to fetch latest releases: ', e);
return { version: 0, changelog: '' };
}
}

3
src/stores/clients.ts

@ -44,7 +44,8 @@ export const useClientsStore = defineStore('Clients', () => {
}; };
} }
const clientPersist = clientsPersist.value[client.id]; // We know that this can't be undefined
const clientPersist = clientsPersist.value[client.id]!;
// Debug // Debug
// client.transferRx = this.clientsPersist[client.id].transferRxPrevious + Math.random() * 1000; // client.transferRx = this.clientsPersist[client.id].transferRxPrevious + Math.random() * 1000;

25
src/stores/global.ts

@ -18,29 +18,12 @@ export const useGlobalStore = defineStore('Global', () => {
locale.value = lang; locale.value = lang;
} }
const _currentRelease = await api.getRelease(); const release = await api.getRelease();
const _latestRelease = await fetch(
'https://wg-easy.github.io/wg-easy/changelog.json'
)
.then((res) => res.json())
.then((releases) => {
const releasesArray = Object.entries(releases).map(
([version, changelog]) => ({
version: parseInt(version, 10),
changelog: changelog as string,
})
);
releasesArray.sort((a, b) => {
return b.version - a.version;
});
return releasesArray[0]; if (release.currentRelease >= release.latestRelease.version) return;
});
if (_currentRelease >= _latestRelease.version) return;
currentRelease.value = _currentRelease; currentRelease.value = release.currentRelease;
latestRelease.value = _latestRelease; latestRelease.value = release.latestRelease;
} }
async function fetchChartType() { async function fetchChartType() {

Loading…
Cancel
Save