Use only IP to logout
This commit is contained in:
parent
ae101042e8
commit
27345c8840
|
@ -1,13 +1,13 @@
|
||||||
import { db } from '../prisma'
|
import { db } from '../prisma'
|
||||||
import { PaFirewallService } from '../services/PaFirewallService'
|
import { PaFirewallService } from '../services/PaFirewallService'
|
||||||
|
|
||||||
export async function logout(username: string, domain: string, ip: string) {
|
export async function logout(ip: string) {
|
||||||
try {
|
try {
|
||||||
const paHosts = await db.paHost.findMany()
|
const paHosts = await db.paHost.findMany()
|
||||||
|
|
||||||
const pa = new PaFirewallService(paHosts[0].ip, paHosts[0].key)
|
const pa = new PaFirewallService(paHosts[0].ip, paHosts[0].key)
|
||||||
|
|
||||||
await pa.logout(username, ip, domain)
|
await pa.logout(ip)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
|
@ -39,8 +39,8 @@ export class PaFirewallService {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
async logout(username: string, ip: string, domain: string) {
|
async logout(ip: string) {
|
||||||
const command = this.createLogoutCommand(username, ip, domain)
|
const command = this.createLogoutCommand(ip)
|
||||||
const url = `https://${this.ip}/api/?type=user-id&key=${this.key}&cmd=${command}`
|
const url = `https://${this.ip}/api/?type=user-id&key=${this.key}&cmd=${command}`
|
||||||
|
|
||||||
const response = await fetch(url, { method: 'POST' })
|
const response = await fetch(url, { method: 'POST' })
|
||||||
|
@ -54,7 +54,7 @@ export class PaFirewallService {
|
||||||
throw new Error('Failed to logout user')
|
throw new Error('Failed to logout user')
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(`Logged out user ${username} from IP ${ip}`)
|
console.log(`Logged out user from IP ${ip}`)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -72,14 +72,14 @@ export class PaFirewallService {
|
||||||
</uid-message>`
|
</uid-message>`
|
||||||
}
|
}
|
||||||
|
|
||||||
private createLogoutCommand(username: string, ip: string, domain: string) {
|
private createLogoutCommand(ip: string) {
|
||||||
return `
|
return `
|
||||||
<uid-message>
|
<uid-message>
|
||||||
<version>1.0</version>
|
<version>1.0</version>
|
||||||
<type>update</type>
|
<type>update</type>
|
||||||
<payload>
|
<payload>
|
||||||
<logout>
|
<logout>
|
||||||
<entry name="${domain}\\${username}" ip="${ip}" timeout="${MAP_TIMEOUT_IN_MINUTES}"/>
|
<entry ip="${ip}" timeout="${MAP_TIMEOUT_IN_MINUTES}"/>
|
||||||
</logout>
|
</logout>
|
||||||
</payload>
|
</payload>
|
||||||
</uid-message>`
|
</uid-message>`
|
||||||
|
|
|
@ -36,10 +36,8 @@ export const appRouter = t.router({
|
||||||
).mutation(async ({ input, ctx }) => {
|
).mutation(async ({ input, ctx }) => {
|
||||||
return await login(input.username, input.password, ctx.ip)
|
return await login(input.username, input.password, ctx.ip)
|
||||||
}),
|
}),
|
||||||
logout: input(
|
logout: mutation(async ({ input, ctx }) => {
|
||||||
z.object({ username: z.string(), domain: z.string() })
|
return await logout(ctx.ip)
|
||||||
).mutation(async ({ input, ctx }) => {
|
|
||||||
return await logout(input.username, input.domain, ctx.ip)
|
|
||||||
}),
|
}),
|
||||||
|
|
||||||
autoLogin: mutation(async ({ ctx }) => {
|
autoLogin: mutation(async ({ ctx }) => {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user