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

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

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

2
src/server/middleware/auth.ts

@ -7,7 +7,7 @@ export default defineEventHandler(async (event) => {
}
}
if (url.pathname === '/') {
if (!session.data.authenticated) {
if (!session.data.authenticated && REQUIRES_PASSWORD) {
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`));
client.transferRx = Number(transferRx);
client.transferTx = Number(transferTx);
client.persistentKeepalive = persistentKeepalive;
client.persistentKeepalive = persistentKeepalive ?? null;
});
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
// 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;
}
const _currentRelease = 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;
});
const release = await api.getRelease();
return releasesArray[0];
});
if (_currentRelease >= _latestRelease.version) return;
if (release.currentRelease >= release.latestRelease.version) return;
currentRelease.value = _currentRelease;
latestRelease.value = _latestRelease;
currentRelease.value = release.currentRelease;
latestRelease.value = release.latestRelease;
}
async function fetchChartType() {

Loading…
Cancel
Save