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) => { |
export default definePermissionEventHandler( |
||||
const { clientId } = await getValidatedRouterParams( |
actions.CLIENT, |
||||
event, |
async ({ event }) => { |
||||
validateZod(clientIdType) |
const { clientId } = await getValidatedRouterParams( |
||||
); |
event, |
||||
const client = await WireGuard.getClient({ clientId }); |
validateZod(clientIdType) |
||||
const config = await WireGuard.getClientConfiguration({ clientId }); |
); |
||||
const configName = client.name |
const client = await Database.clients.get(clientId); |
||||
.replace(/[^a-zA-Z0-9_=+.-]/g, '-') |
const config = await WireGuard.getClientConfiguration({ clientId }); |
||||
.replace(/(-{2,}|-$)/g, '-') |
const configName = client.name |
||||
.replace(/-$/, '') |
.replace(/[^a-zA-Z0-9_=+.-]/g, '-') |
||||
.substring(0, 32); |
.replace(/(-{2,}|-$)/g, '-') |
||||
setHeader( |
.replace(/-$/, '') |
||||
event, |
.substring(0, 32); |
||||
'Content-Disposition', |
setHeader( |
||||
`attachment; filename="${configName || clientId}.conf"` |
event, |
||||
); |
'Content-Disposition', |
||||
setHeader(event, 'Content-Type', 'text/plain'); |
`attachment; filename="${configName || clientId}.conf"` |
||||
return config; |
); |
||||
}); |
setHeader(event, 'Content-Type', 'text/plain'); |
||||
|
return config; |
||||
|
} |
||||
|
); |
||||
|
@ -1,8 +1,11 @@ |
|||||
export default defineEventHandler(async (event) => { |
export default definePermissionEventHandler( |
||||
const { clientId } = await getValidatedRouterParams( |
actions.CLIENT, |
||||
event, |
async ({ event }) => { |
||||
validateZod(clientIdType) |
const { clientId } = await getValidatedRouterParams( |
||||
); |
event, |
||||
await WireGuard.disableClient({ clientId }); |
validateZod(clientIdType) |
||||
return { success: true }; |
); |
||||
}); |
await WireGuard.disableClient({ clientId }); |
||||
|
return { success: true }; |
||||
|
} |
||||
|
); |
||||
|
@ -1,8 +1,11 @@ |
|||||
export default defineEventHandler(async (event) => { |
export default definePermissionEventHandler( |
||||
const { clientId } = await getValidatedRouterParams( |
actions.CLIENT, |
||||
event, |
async ({ event }) => { |
||||
validateZod(clientIdType) |
const { clientId } = await getValidatedRouterParams( |
||||
); |
event, |
||||
await WireGuard.enableClient({ clientId }); |
validateZod(clientIdType) |
||||
return { success: true }; |
); |
||||
}); |
await WireGuard.enableClient({ clientId }); |
||||
|
return { success: true }; |
||||
|
} |
||||
|
); |
||||
|
@ -1,8 +1,11 @@ |
|||||
export default defineEventHandler(async (event) => { |
export default definePermissionEventHandler( |
||||
const { clientId } = await getValidatedRouterParams( |
actions.CLIENT, |
||||
event, |
async ({ event }) => { |
||||
validateZod(clientIdType) |
const { clientId } = await getValidatedRouterParams( |
||||
); |
event, |
||||
await WireGuard.generateOneTimeLink({ clientId }); |
validateZod(clientIdType) |
||||
return { success: true }; |
); |
||||
}); |
await WireGuard.generateOneTimeLink({ clientId }); |
||||
|
return { success: true }; |
||||
|
} |
||||
|
); |
||||
|
@ -1,8 +1,11 @@ |
|||||
export default defineEventHandler(async (event) => { |
export default definePermissionEventHandler( |
||||
const { clientId } = await getValidatedRouterParams( |
actions.CLIENT, |
||||
event, |
async ({ event }) => { |
||||
validateZod(clientIdType) |
const { clientId } = await getValidatedRouterParams( |
||||
); |
event, |
||||
await WireGuard.deleteClient({ clientId }); |
validateZod(clientIdType) |
||||
return { success: true }; |
); |
||||
}); |
await WireGuard.deleteClient({ clientId }); |
||||
|
return { success: true }; |
||||
|
} |
||||
|
); |
||||
|
@ -1,7 +1,10 @@ |
|||||
export default defineEventHandler(async (event) => { |
export default definePermissionEventHandler( |
||||
const { clientId } = await getValidatedRouterParams( |
actions.CLIENT, |
||||
event, |
async ({ event }) => { |
||||
validateZod(clientIdType) |
const { clientId } = await getValidatedRouterParams( |
||||
); |
event, |
||||
return WireGuard.getClient({ clientId }); |
validateZod(clientIdType) |
||||
}); |
); |
||||
|
return WireGuard.getClient({ clientId }); |
||||
|
} |
||||
|
); |
||||
|
@ -1,18 +1,21 @@ |
|||||
export default defineEventHandler(async (event) => { |
export default definePermissionEventHandler( |
||||
const { clientId } = await getValidatedRouterParams( |
actions.CLIENT, |
||||
event, |
async ({ event }) => { |
||||
validateZod(clientIdType) |
const { clientId } = await getValidatedRouterParams( |
||||
); |
event, |
||||
|
validateZod(clientIdType) |
||||
|
); |
||||
|
|
||||
const data = await readValidatedBody( |
const data = await readValidatedBody( |
||||
event, |
event, |
||||
validateZod(clientUpdateType, event) |
validateZod(clientUpdateType, event) |
||||
); |
); |
||||
|
|
||||
await WireGuard.updateClient({ |
await WireGuard.updateClient({ |
||||
clientId, |
clientId, |
||||
client: data, |
client: data, |
||||
}); |
}); |
||||
|
|
||||
return { success: true }; |
return { success: true }; |
||||
}); |
} |
||||
|
); |
||||
|
@ -1,9 +1,12 @@ |
|||||
export default defineEventHandler(async (event) => { |
export default definePermissionEventHandler( |
||||
const { clientId } = await getValidatedRouterParams( |
actions.CLIENT, |
||||
event, |
async ({ event }) => { |
||||
validateZod(clientIdType) |
const { clientId } = await getValidatedRouterParams( |
||||
); |
event, |
||||
const svg = await WireGuard.getClientQRCodeSVG({ clientId }); |
validateZod(clientIdType) |
||||
setHeader(event, 'Content-Type', 'image/svg+xml'); |
); |
||||
return svg; |
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(); |
return WireGuard.getClients(); |
||||
}); |
}); |
||||
|
@ -1,11 +1,14 @@ |
|||||
import { ClientCreateSchema } from '#db/repositories/client/types'; |
import { ClientCreateSchema } from '#db/repositories/client/types'; |
||||
|
|
||||
export default defineEventHandler(async (event) => { |
export default definePermissionEventHandler( |
||||
const { name, expiresAt } = await readValidatedBody( |
actions.CLIENT, |
||||
event, |
async ({ event }) => { |
||||
validateZod(ClientCreateSchema) |
const { name, expiresAt } = await readValidatedBody( |
||||
); |
event, |
||||
await Database.clients.create({ name, expiresAt }); |
validateZod(ClientCreateSchema) |
||||
await WireGuard.saveConfig(); |
); |
||||
return { success: true }; |
await Database.clients.create({ name, expiresAt }); |
||||
}); |
await WireGuard.saveConfig(); |
||||
|
return { success: true }; |
||||
|
} |
||||
|
); |
||||
|
@ -1,6 +1,9 @@ |
|||||
export default defineEventHandler(async (event) => { |
export default definePermissionEventHandler( |
||||
const config = await WireGuard.backupConfiguration(); |
actions.ADMIN, |
||||
setHeader(event, 'Content-Disposition', 'attachment; filename="wg0.json"'); |
async ({ event }) => { |
||||
setHeader(event, 'Content-Type', 'text/json'); |
const config = await WireGuard.backupConfiguration(); |
||||
return config; |
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) => { |
export default definePermissionEventHandler( |
||||
const { file } = await readValidatedBody(event, validateZod(fileType)); |
actions.ADMIN, |
||||
await WireGuard.restoreConfiguration(file); |
async ({ event }) => { |
||||
return { success: true }; |
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