Parse XML response

This commit is contained in:
Douglas Barone 2023-10-23 13:51:18 -04:00
parent 27210f5686
commit 1b6f8deeff
3 changed files with 50 additions and 2 deletions

40
package-lock.json generated
View File

@ -16,6 +16,7 @@
"body-parser": "^1.20.2",
"cors": "^2.8.5",
"express": "^4.18.2",
"fast-xml-parser": "^4.3.2",
"ldapts": "^7.0.5",
"roboto-fontface": "*",
"vue": "^3.2.0",
@ -1408,6 +1409,27 @@
"node": ">= 0.8"
}
},
"node_modules/fast-xml-parser": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz",
"integrity": "sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
},
{
"type": "paypal",
"url": "https://paypal.me/naturalintelligence"
}
],
"dependencies": {
"strnum": "^1.0.5"
},
"bin": {
"fxparser": "src/cli/cli.js"
}
},
"node_modules/finalhandler": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
@ -2396,6 +2418,11 @@
"node": ">=8"
}
},
"node_modules/strnum": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
},
"node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
@ -3787,6 +3814,14 @@
}
}
},
"fast-xml-parser": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz",
"integrity": "sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==",
"requires": {
"strnum": "^1.0.5"
}
},
"finalhandler": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
@ -4479,6 +4514,11 @@
"ansi-regex": "^5.0.1"
}
},
"strnum": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
},
"supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",

View File

@ -22,6 +22,7 @@
"body-parser": "^1.20.2",
"cors": "^2.8.5",
"express": "^4.18.2",
"fast-xml-parser": "^4.3.2",
"ldapts": "^7.0.5",
"roboto-fontface": "*",
"vue": "^3.2.0",

View File

@ -1,5 +1,12 @@
import { XMLParser } from 'fast-xml-parser'
const MAP_TIMEOUT_IN_MINUTES = process.env.MAPPING_TIMEOUT || '720' // 12 horas
const xmlParser = new XMLParser({
ignoreAttributes: false,
attributeNamePrefix: 'attr_'
})
export class PaFirewall {
constructor(private ip: string, private key: string) {}
@ -19,9 +26,9 @@ export class PaFirewall {
const data = await response.text()
const success = data.includes('status="success"')
const parsedData = xmlParser.parse(data)
if (!success) {
if (parsedData.response.attr_status !== 'success') {
console.log(data)
throw new Error('Failed to map user ID to IP')
}