mirror of https://github.com/wg-easy/wg-easy
20 changed files with 230 additions and 213 deletions
@ -1,20 +1,23 @@ |
|||
export default defineEventHandler(async (event) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
const client = await WireGuard.getClient({ clientId }); |
|||
const config = await WireGuard.getClientConfiguration({ clientId }); |
|||
const configName = client.name |
|||
.replace(/[^a-zA-Z0-9_=+.-]/g, '-') |
|||
.replace(/(-{2,}|-$)/g, '-') |
|||
.replace(/-$/, '') |
|||
.substring(0, 32); |
|||
setHeader( |
|||
event, |
|||
'Content-Disposition', |
|||
`attachment; filename="${configName || clientId}.conf"` |
|||
); |
|||
setHeader(event, 'Content-Type', 'text/plain'); |
|||
return config; |
|||
}); |
|||
export default definePermissionEventHandler( |
|||
actions.CLIENT, |
|||
async ({ event }) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
const client = await Database.clients.get(clientId); |
|||
const config = await WireGuard.getClientConfiguration({ clientId }); |
|||
const configName = client.name |
|||
.replace(/[^a-zA-Z0-9_=+.-]/g, '-') |
|||
.replace(/(-{2,}|-$)/g, '-') |
|||
.replace(/-$/, '') |
|||
.substring(0, 32); |
|||
setHeader( |
|||
event, |
|||
'Content-Disposition', |
|||
`attachment; filename="${configName || clientId}.conf"` |
|||
); |
|||
setHeader(event, 'Content-Type', 'text/plain'); |
|||
return config; |
|||
} |
|||
); |
|||
|
@ -1,8 +1,11 @@ |
|||
export default defineEventHandler(async (event) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
await WireGuard.disableClient({ clientId }); |
|||
return { success: true }; |
|||
}); |
|||
export default definePermissionEventHandler( |
|||
actions.CLIENT, |
|||
async ({ event }) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
await WireGuard.disableClient({ clientId }); |
|||
return { success: true }; |
|||
} |
|||
); |
|||
|
@ -1,8 +1,11 @@ |
|||
export default defineEventHandler(async (event) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
await WireGuard.enableClient({ clientId }); |
|||
return { success: true }; |
|||
}); |
|||
export default definePermissionEventHandler( |
|||
actions.CLIENT, |
|||
async ({ event }) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
await WireGuard.enableClient({ clientId }); |
|||
return { success: true }; |
|||
} |
|||
); |
|||
|
@ -1,8 +1,11 @@ |
|||
export default defineEventHandler(async (event) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
await WireGuard.generateOneTimeLink({ clientId }); |
|||
return { success: true }; |
|||
}); |
|||
export default definePermissionEventHandler( |
|||
actions.CLIENT, |
|||
async ({ event }) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
await WireGuard.generateOneTimeLink({ clientId }); |
|||
return { success: true }; |
|||
} |
|||
); |
|||
|
@ -1,8 +1,11 @@ |
|||
export default defineEventHandler(async (event) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
await WireGuard.deleteClient({ clientId }); |
|||
return { success: true }; |
|||
}); |
|||
export default definePermissionEventHandler( |
|||
actions.CLIENT, |
|||
async ({ event }) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
await WireGuard.deleteClient({ clientId }); |
|||
return { success: true }; |
|||
} |
|||
); |
|||
|
@ -1,7 +1,10 @@ |
|||
export default defineEventHandler(async (event) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
return WireGuard.getClient({ clientId }); |
|||
}); |
|||
export default definePermissionEventHandler( |
|||
actions.CLIENT, |
|||
async ({ event }) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
return WireGuard.getClient({ clientId }); |
|||
} |
|||
); |
|||
|
@ -1,18 +1,21 @@ |
|||
export default defineEventHandler(async (event) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
export default definePermissionEventHandler( |
|||
actions.CLIENT, |
|||
async ({ event }) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
|
|||
const data = await readValidatedBody( |
|||
event, |
|||
validateZod(clientUpdateType, event) |
|||
); |
|||
const data = await readValidatedBody( |
|||
event, |
|||
validateZod(clientUpdateType, event) |
|||
); |
|||
|
|||
await WireGuard.updateClient({ |
|||
clientId, |
|||
client: data, |
|||
}); |
|||
await WireGuard.updateClient({ |
|||
clientId, |
|||
client: data, |
|||
}); |
|||
|
|||
return { success: true }; |
|||
}); |
|||
return { success: true }; |
|||
} |
|||
); |
|||
|
@ -1,9 +1,12 @@ |
|||
export default defineEventHandler(async (event) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
const svg = await WireGuard.getClientQRCodeSVG({ clientId }); |
|||
setHeader(event, 'Content-Type', 'image/svg+xml'); |
|||
return svg; |
|||
}); |
|||
export default definePermissionEventHandler( |
|||
actions.CLIENT, |
|||
async ({ event }) => { |
|||
const { clientId } = await getValidatedRouterParams( |
|||
event, |
|||
validateZod(clientIdType) |
|||
); |
|||
const svg = await WireGuard.getClientQRCodeSVG({ clientId }); |
|||
setHeader(event, 'Content-Type', 'image/svg+xml'); |
|||
return svg; |
|||
} |
|||
); |
|||
|
@ -1,3 +1,3 @@ |
|||
export default defineEventHandler(() => { |
|||
export default definePermissionEventHandler(actions.CLIENT, () => { |
|||
return WireGuard.getClients(); |
|||
}); |
|||
|
@ -1,11 +1,14 @@ |
|||
import { ClientCreateSchema } from '#db/repositories/client/types'; |
|||
|
|||
export default defineEventHandler(async (event) => { |
|||
const { name, expiresAt } = await readValidatedBody( |
|||
event, |
|||
validateZod(ClientCreateSchema) |
|||
); |
|||
await Database.clients.create({ name, expiresAt }); |
|||
await WireGuard.saveConfig(); |
|||
return { success: true }; |
|||
}); |
|||
export default definePermissionEventHandler( |
|||
actions.CLIENT, |
|||
async ({ event }) => { |
|||
const { name, expiresAt } = await readValidatedBody( |
|||
event, |
|||
validateZod(ClientCreateSchema) |
|||
); |
|||
await Database.clients.create({ name, expiresAt }); |
|||
await WireGuard.saveConfig(); |
|||
return { success: true }; |
|||
} |
|||
); |
|||
|
@ -1,6 +1,9 @@ |
|||
export default defineEventHandler(async (event) => { |
|||
const config = await WireGuard.backupConfiguration(); |
|||
setHeader(event, 'Content-Disposition', 'attachment; filename="wg0.json"'); |
|||
setHeader(event, 'Content-Type', 'text/json'); |
|||
return config; |
|||
}); |
|||
export default definePermissionEventHandler( |
|||
actions.ADMIN, |
|||
async ({ event }) => { |
|||
const config = await WireGuard.backupConfiguration(); |
|||
setHeader(event, 'Content-Disposition', 'attachment; filename="wg0.json"'); |
|||
setHeader(event, 'Content-Type', 'text/json'); |
|||
return config; |
|||
} |
|||
); |
|||
|
@ -1,5 +1,8 @@ |
|||
export default defineEventHandler(async (event) => { |
|||
const { file } = await readValidatedBody(event, validateZod(fileType)); |
|||
await WireGuard.restoreConfiguration(file); |
|||
return { success: true }; |
|||
}); |
|||
export default definePermissionEventHandler( |
|||
actions.ADMIN, |
|||
async ({ event }) => { |
|||
const { file } = await readValidatedBody(event, validateZod(fileType)); |
|||
await WireGuard.restoreConfiguration(file); |
|||
return { success: true }; |
|||
} |
|||
); |
|||
|
@ -1,16 +0,0 @@ |
|||
import { sql } from 'drizzle-orm'; |
|||
import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'; |
|||
|
|||
export const general = sqliteTable('general_table', { |
|||
// limit to one entry
|
|||
id: int().primaryKey({ autoIncrement: false }).default(1), |
|||
//test: text().notNull(),
|
|||
sessionTimeout: int('session_timeout').notNull(), |
|||
createdAt: text('created_at') |
|||
.notNull() |
|||
.default(sql`(CURRENT_TIMESTAMP)`), |
|||
updatedAt: text('updated_at') |
|||
.notNull() |
|||
.default(sql`(CURRENT_TIMESTAMP)`) |
|||
.$onUpdate(() => sql`(CURRENT_TIMESTAMP)`), |
|||
}); |
Loading…
Reference in new issue