1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-16 22:50:10 +03:00

F #5422: Replace xml parser library (#1388)

also
  * fix for session conflict between old sunstone and fireedge
  * fix for babel-node error 
  * avoid creating LICENSE.txt
This commit is contained in:
Jorge Miguel Lobo Escalona 2021-07-29 17:17:01 +02:00 committed by GitHub
parent 8d2a0a29b1
commit f4d34de4f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 340 additions and 286 deletions

View File

@ -85,6 +85,7 @@
"socket.io-client": "4.1.2",
"speakeasy": "2.0.0",
"sprintf-js": "1.1.2",
"terser-webpack-plugin": "^5.1.4",
"time-fix-plugin": "2.0.7",
"tiny-worker": "2.3.0",
"upcast": "4.0.0",
@ -96,7 +97,6 @@
"window-or-global": "1.0.1",
"winston": "3.3.3",
"worker-loader": "3.0.8",
"xml2js": "0.4.23",
"xmlrpc": "1.3.2",
"yaml": "1.10.0",
"yup": "0.32.9",
@ -204,11 +204,11 @@
}
},
"node_modules/@babel/generator": {
"version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz",
"integrity": "sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg==",
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz",
"integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==",
"dependencies": {
"@babel/types": "^7.14.8",
"@babel/types": "^7.14.5",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
},
@ -265,13 +265,13 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
"version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.8.tgz",
"integrity": "sha512-bpYvH8zJBWzeqi1o+co8qOrw+EXzQ/0c74gVmY205AWXy9nifHrOg77y+1zwxX5lXE7Icq4sPlSQ4O2kWBrteQ==",
"version": "7.14.6",
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz",
"integrity": "sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg==",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.14.5",
"@babel/helper-function-name": "^7.14.5",
"@babel/helper-member-expression-to-functions": "^7.14.7",
"@babel/helper-member-expression-to-functions": "^7.14.5",
"@babel/helper-optimise-call-expression": "^7.14.5",
"@babel/helper-replace-supers": "^7.14.5",
"@babel/helper-split-export-declaration": "^7.14.5"
@ -367,18 +367,18 @@
}
},
"node_modules/@babel/helper-module-transforms": {
"version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz",
"integrity": "sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA==",
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz",
"integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==",
"dependencies": {
"@babel/helper-module-imports": "^7.14.5",
"@babel/helper-replace-supers": "^7.14.5",
"@babel/helper-simple-access": "^7.14.8",
"@babel/helper-simple-access": "^7.14.5",
"@babel/helper-split-export-declaration": "^7.14.5",
"@babel/helper-validator-identifier": "^7.14.8",
"@babel/helper-validator-identifier": "^7.14.5",
"@babel/template": "^7.14.5",
"@babel/traverse": "^7.14.8",
"@babel/types": "^7.14.8"
"@babel/traverse": "^7.14.5",
"@babel/types": "^7.14.5"
},
"engines": {
"node": ">=6.9.0"
@ -431,11 +431,11 @@
}
},
"node_modules/@babel/helper-simple-access": {
"version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz",
"integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==",
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz",
"integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==",
"dependencies": {
"@babel/types": "^7.14.8"
"@babel/types": "^7.14.5"
},
"engines": {
"node": ">=6.9.0"
@ -464,9 +464,9 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz",
"integrity": "sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow==",
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz",
"integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==",
"engines": {
"node": ">=6.9.0"
}
@ -494,13 +494,13 @@
}
},
"node_modules/@babel/helpers": {
"version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.8.tgz",
"integrity": "sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw==",
"version": "7.14.6",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz",
"integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==",
"dependencies": {
"@babel/template": "^7.14.5",
"@babel/traverse": "^7.14.8",
"@babel/types": "^7.14.8"
"@babel/traverse": "^7.14.5",
"@babel/types": "^7.14.5"
},
"engines": {
"node": ">=6.9.0"
@ -540,9 +540,9 @@
}
},
"node_modules/@babel/parser": {
"version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz",
"integrity": "sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA==",
"version": "7.14.7",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz",
"integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==",
"bin": {
"parser": "bin/babel-parser.js"
},
@ -1543,9 +1543,9 @@
}
},
"node_modules/@babel/runtime": {
"version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz",
"integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==",
"version": "7.14.6",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz",
"integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==",
"dependencies": {
"regenerator-runtime": "^0.13.4"
},
@ -1567,17 +1567,17 @@
}
},
"node_modules/@babel/traverse": {
"version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.8.tgz",
"integrity": "sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg==",
"version": "7.14.7",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz",
"integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==",
"dependencies": {
"@babel/code-frame": "^7.14.5",
"@babel/generator": "^7.14.8",
"@babel/generator": "^7.14.5",
"@babel/helper-function-name": "^7.14.5",
"@babel/helper-hoist-variables": "^7.14.5",
"@babel/helper-split-export-declaration": "^7.14.5",
"@babel/parser": "^7.14.8",
"@babel/types": "^7.14.8",
"@babel/parser": "^7.14.7",
"@babel/types": "^7.14.5",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
@ -1586,11 +1586,11 @@
}
},
"node_modules/@babel/types": {
"version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz",
"integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==",
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz",
"integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==",
"dependencies": {
"@babel/helper-validator-identifier": "^7.14.8",
"@babel/helper-validator-identifier": "^7.14.5",
"to-fast-properties": "^2.0.0"
},
"engines": {
@ -2057,9 +2057,9 @@
"integrity": "sha512-7eQ2xYLLI/LsicL2nejW9Wyko3lcpN6O/z0ZLHrEQsg280zIdCv1t/0m6UtBjUHokCGBQ3gYTbHzDkZ1xOBwwg=="
},
"node_modules/@types/node": {
"version": "16.4.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.1.tgz",
"integrity": "sha512-UW7cbLqf/Wu5XH2RKKY1cHwUNLicIDRLMraYKz+HHAerJ0ZffUEk+fMnd8qU2JaS6cAy0r8tsaf7yqHASf/Y0Q=="
"version": "16.3.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.2.tgz",
"integrity": "sha512-jJs9ErFLP403I+hMLGnqDRWT0RYKSvArxuBVh2veudHV7ifEC1WAmjJADacZ7mRbA2nWgHtn8xyECMAot0SkAw=="
},
"node_modules/@types/prop-types": {
"version": "15.7.4",
@ -2067,9 +2067,9 @@
"integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ=="
},
"node_modules/@types/react": {
"version": "17.0.15",
"resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.15.tgz",
"integrity": "sha512-uTKHDK9STXFHLaKv6IMnwp52fm0hwU+N89w/p9grdUqcFA6WuqDyPhaWopbNyE1k/VhgzmHl8pu1L4wITtmlLw==",
"version": "17.0.14",
"resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.14.tgz",
"integrity": "sha512-0WwKHUbWuQWOce61UexYuWTGuGY/8JvtUe/dtQ6lR4sZ3UiylHotJeWpf3ArP9+DSGUoLY3wbU59VyMrJps5VQ==",
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@ -3200,9 +3200,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001247",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001247.tgz",
"integrity": "sha512-4rS7co+7+AoOSPRPOPUt5/GdaqZc0EsUpWk66ofE3HJTAajUK2Ss2VwoNzVN69ghg8lYYlh0an0Iy4LIHHo9UQ==",
"version": "1.0.30001245",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz",
"integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
@ -3761,9 +3761,9 @@
}
},
"node_modules/copy-webpack-plugin/node_modules/glob-parent": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.1.tgz",
"integrity": "sha512-kEVjS71mQazDBHKcsq4E9u/vUzaLcw1A8EtUeydawvIWQCJM0qQ08G1H7/XTjFUulla6XQiDOG6MXSaG0HDKog==",
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.0.tgz",
"integrity": "sha512-Hdd4287VEJcZXUwv1l8a+vXC1GjOQqXe+VS30w/ypihpcnu9M1n3xeYeJu5CBpeEQj2nAab2xxz28GuA3vp4Ww==",
"dependencies": {
"is-glob": "^4.0.1"
},
@ -3772,11 +3772,11 @@
}
},
"node_modules/copy-webpack-plugin/node_modules/schema-utils": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
"integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz",
"integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==",
"dependencies": {
"@types/json-schema": "^7.0.8",
"@types/json-schema": "^7.0.7",
"ajv": "^6.12.5",
"ajv-keywords": "^3.5.2"
},
@ -4273,9 +4273,9 @@
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"node_modules/electron-to-chromium": {
"version": "1.3.786",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.786.tgz",
"integrity": "sha512-AmvbLBj3hepRk8v/DHrFF8gINxOFfDbrn6Ts3PcK46/FBdQb5OMmpamSpZQXSkfi77FfBzYtQtAk+00LCLYMVw=="
"version": "1.3.775",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.775.tgz",
"integrity": "sha512-EGuiJW4yBPOTj2NtWGZcX93ZE8IGj33HJAx4d3ouE2zOfW2trbWU+t1e0yzLr1qQIw81++txbM3BH52QwSRE6Q=="
},
"node_modules/elliptic": {
"version": "6.5.4",
@ -9399,9 +9399,9 @@
}
},
"node_modules/rechoir": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
"integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz",
"integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==",
"dependencies": {
"resolve": "^1.9.0"
},
@ -9454,9 +9454,9 @@
}
},
"node_modules/regenerator-runtime": {
"version": "0.13.9",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
"integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
"version": "0.13.7",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
"integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
},
"node_modules/regenerator-transform": {
"version": "0.14.5",
@ -10803,11 +10803,11 @@
}
},
"node_modules/terser-webpack-plugin/node_modules/schema-utils": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
"integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz",
"integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==",
"dependencies": {
"@types/json-schema": "^7.0.8",
"@types/json-schema": "^7.0.7",
"ajv": "^6.12.5",
"ajv-keywords": "^3.5.2"
},
@ -11484,12 +11484,12 @@
}
},
"node_modules/webpack-dev-middleware/node_modules/schema-utils": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
"integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz",
"integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==",
"dev": true,
"dependencies": {
"@types/json-schema": "^7.0.8",
"@types/json-schema": "^7.0.7",
"ajv": "^6.12.5",
"ajv-keywords": "^3.5.2"
},
@ -11552,9 +11552,9 @@
"integrity": "sha512-aHdl/y2N7PW2Sx7K+r3AxpJO+aDMcYzMQd60Qxefq3+EwhewSbTBqNumOsCE1JsCUNoyfGj5465N0sSf6hc/5w=="
},
"node_modules/webpack-sources": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz",
"integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==",
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.0.tgz",
"integrity": "sha512-WyOdtwSvOML1kbgtXbTDnEW0jkJ7hZr/bDByIwszhWd/4XX1A3XMkrbFMsuH4+/MfLlZCUzlAdg4r7jaGKEIgQ==",
"dependencies": {
"source-list-map": "^2.0.1",
"source-map": "^0.6.1"
@ -11595,11 +11595,11 @@
}
},
"node_modules/webpack/node_modules/schema-utils": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
"integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz",
"integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==",
"dependencies": {
"@types/json-schema": "^7.0.8",
"@types/json-schema": "^7.0.7",
"ajv": "^6.12.5",
"ajv-keywords": "^3.5.2"
},
@ -11792,11 +11792,11 @@
}
},
"node_modules/worker-loader/node_modules/schema-utils": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
"integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz",
"integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==",
"dependencies": {
"@types/json-schema": "^7.0.8",
"@types/json-schema": "^7.0.7",
"ajv": "^6.12.5",
"ajv-keywords": "^3.5.2"
},
@ -11865,26 +11865,6 @@
"ultron": "1.0.x"
}
},
"node_modules/xml2js": {
"version": "0.4.23",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
"integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
"dependencies": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
},
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/xmlbuilder": {
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
"engines": {
"node": ">=4.0"
}
},
"node_modules/xmlrpc": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.2.tgz",
@ -21091,20 +21071,6 @@
"ultron": "1.0.x"
}
},
"xml2js": {
"version": "0.4.23",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
"integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
"requires": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
}
},
"xmlbuilder": {
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
},
"xmlrpc": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.2.tgz",

View File

@ -127,6 +127,7 @@
"socket.io-client": "4.1.2",
"speakeasy": "2.0.0",
"sprintf-js": "1.1.2",
"terser-webpack-plugin": "5.1.4",
"time-fix-plugin": "2.0.7",
"tiny-worker": "2.3.0",
"upcast": "4.0.0",
@ -138,7 +139,6 @@
"window-or-global": "1.0.1",
"winston": "3.3.3",
"worker-loader": "3.0.8",
"xml2js": "0.4.23",
"xmlrpc": "1.3.2",
"yaml": "1.10.0",
"yup": "0.32.9",

View File

@ -14,17 +14,14 @@
* limitations under the License. *
* ------------------------------------------------------------------------- */
/* eslint-disable jsdoc/require-jsdoc */
import React, { useMemo, useState } from 'react'
import { Paper, Box, Container, LinearProgress, useMediaQuery } from '@material-ui/core'
import { useFetch } from 'client/hooks'
import { useAuth, useAuthApi } from 'client/features/Auth'
import { Box, Container, LinearProgress, Paper, useMediaQuery } from '@material-ui/core'
import { OpenNebulaLogo } from 'client/components/Icons'
import Form from 'client/containers/Login/Form'
import * as FORMS from 'client/containers/Login/schema'
import loginStyles from 'client/containers/Login/styles'
import { useAuth, useAuthApi } from 'client/features/Auth'
import { useFetch } from 'client/hooks'
import React, { useMemo, useState } from 'react'
const STEPS = {
USER_FORM: 0,

View File

@ -14,22 +14,20 @@
* limitations under the License. *
* ------------------------------------------------------------------------- */
/* eslint-disable jsdoc/require-jsdoc */
import { createAsyncThunk, createAction } from '@reduxjs/toolkit'
import { createAction, createAsyncThunk } from '@reduxjs/toolkit'
import { FILTER_POOL, JWT_NAME, ONEADMIN_ID, T } from 'client/constants'
import { authService } from 'client/features/Auth/services'
import { userService } from 'client/features/One/user/services'
import { getGroups } from 'client/features/One/group/actions'
import { dismissSnackbar } from 'client/features/General/actions'
import { getGroups } from 'client/features/One/group/actions'
import { userService } from 'client/features/One/user/services'
import { removeStoreData, storage } from 'client/utils'
import { httpCodes } from 'server/utils/constants'
import { T, JWT_NAME, ONEADMIN_ID, FILTER_POOL } from 'client/constants'
import { storage, removeStoreData } from 'client/utils'
export const login = createAsyncThunk(
'auth/login',
async ({ remember, ...user }, { rejectWithValue, dispatch }) => {
try {
const response = await authService.login(user)
const response = await authService.login({ ...user, remember })
const { id, token } = response
const isOneAdmin = id === ONEADMIN_ID

View File

@ -153,17 +153,12 @@ guacamole(appServer)
* Handle sigterm and sigint.
*/
const handleBreak = () => {
if (appServer && appServer.close && typeof appServer.close === 'function') {
appServer.close(() => {
// this close sockets
sockets.forEach((socket) => {
if (socket && socket.close && typeof socket.close === 'function') {
socket.close()
}
})
process.exit(0)
})
}
sockets.forEach((socket) => {
if (socket && socket.close && typeof socket.close === 'function') {
socket.close()
}
})
process.exit(0)
}
defaultEvents.forEach((nameEvent = '') => {
if (nameEvent) {

View File

@ -21,7 +21,7 @@ const {
setPass,
setType,
setTfaToken,
setExtended,
setRemember,
setNext,
setRes,
setNodeConnect,
@ -42,6 +42,8 @@ const {
getDefaultParamsOfOpennebulaCommand
} = require('server/utils/opennebula')
const { writeInLogger } = require('server/utils/logger')
/**
* Login user.
*
@ -68,7 +70,7 @@ const loginUser = (err = '', value = '', success = defaultEmptyFunction, error =
* @param {Function} oneConnection - function of xmlrpc
*/
const auth = (res = {}, next = defaultEmptyFunction, params = {}, userData = {}, oneConnection = defaultEmptyFunction) => {
const { user, token, type, token2fa, extended } = params
const { user, token, type, token2fa, remember } = params
setRes(res)
setNext(next)
setNodeConnect(oneConnection)
@ -86,7 +88,7 @@ const auth = (res = {}, next = defaultEmptyFunction, params = {}, userData = {},
setPass(token || '')
setType(type || '')
setTfaToken(token2fa || '')
setExtended(extended || '')
setRemember(remember || false)
login(oneValue)
}
@ -95,6 +97,7 @@ const auth = (res = {}, next = defaultEmptyFunction, params = {}, userData = {},
*/
const error = () => {
updaterResponse(new Map(unauthorized).toObject())
writeInLogger(unauthorized)
next()
}

View File

@ -39,9 +39,9 @@ const routes = {
from: fromData.postBody,
name: 'token2fa'
},
extended: {
remember: {
from: fromData.postBody,
name: 'extended'
name: 'remember'
}
}
}

View File

@ -22,10 +22,12 @@ const { Actions: ActionUsers } = require('server/utils/constants/commands/user')
const { Actions: ActionZones } = require('server/utils/constants/commands/zone')
const {
httpMethod,
defaultOpennebulaExpiration,
defaultSessionExpiration,
default2FAOpennebulaVar,
defaultNamespace,
defaultEmptyFunction
defaultEmptyFunction,
defaultSessionLimitExpiration,
defaultRememberSessionExpiration
} = require('server/utils/constants/defaults')
const { getConfig } = require('server/utils/yml')
const {
@ -53,15 +55,17 @@ let iv = ''
let pass = ''
let type = ''
let tfatoken = ''
let extended = ''
let remember = false
let next = defaultEmptyFunction
let req = {}
let res = {}
let nodeConnect = defaultEmptyFunction
let now = ''
let nowUnix = ''
let nowWithMinutes = ''
let expireTime = ''
let relativeTime = ''
let limitToken = defaultSessionExpiration
let limitExpirationReuseToken = defaultSessionLimitExpiration
/**
* Get key opennebula.
@ -165,14 +169,15 @@ const setTfaToken = newTfaToken => {
}
/**
* Set extended.
* Set remember.
*
* @param {boolean} newExtended - new extended
* @returns {boolean} extended
* @param {boolean} remember - new remember
* @param newRemember
* @returns {boolean} remember
*/
const setExtended = newExtended => {
extended = newExtended
return extended
const setRemember = newRemember => {
remember = newRemember
return remember
}
/**
@ -223,11 +228,12 @@ const setRes = (newRes = {}) => {
* Set dates.
*/
const setDates = () => {
const limitToken = appConfig.opennebula_expiration || defaultOpennebulaExpiration
limitToken = remember ? (appConfig.session__remember_expiration || defaultRememberSessionExpiration) : (appConfig.session_expiration || defaultSessionExpiration)
limitExpirationReuseToken = parseInt(appConfig.session_reuse_token_time, 10) || defaultSessionLimitExpiration
now = DateTime.local()
nowUnix = now.toSeconds()
nowWithMinutes = now.plus({ minutes: limitToken })
const diff = nowWithMinutes.diff(now, 'seconds')
expireTime = now.plus({ minutes: limitToken })
const diff = expireTime.diff(now, 'seconds')
relativeTime = diff.seconds
}
@ -305,16 +311,12 @@ const validate2faAuthentication = informationUser => {
* @param {object} informationUser - user data
*/
const genJWT = (token, informationUser) => {
if (token && token.token && informationUser && informationUser.ID && informationUser.NAME) {
if (token && token.token && token.time && informationUser && informationUser.ID && informationUser.NAME) {
const { ID: id, TEMPLATE: userTemplate, NAME: user } = informationUser
const dataJWT = { id, user, token: token.token }
const addTime = token.expiration_time || nowWithMinutes.toSeconds()
const jwt = createJWT(dataJWT, nowUnix, addTime)
const expire = token.time || expireTime.toSeconds()
const jwt = createJWT(dataJWT, nowUnix, expire)
if (jwt) {
if (!global.users) {
global.users = {}
}
global.users[user] = { token: token.token }
const rtn = { token: jwt, id }
if (userTemplate && userTemplate.SUNSTONE && userTemplate.SUNSTONE.LANG) {
rtn.language = userTemplate.SUNSTONE.LANG
@ -324,6 +326,38 @@ const genJWT = (token, informationUser) => {
}
}
/**
* Get created user tokens.
*
* @param {string} username - username
* @returns {object} - user token
*/
const getCreatedTokenOpennebula = (username = '') => {
if (global && global.users && username && global.users[username] && global.users[username].tokens) {
var acc = { token: '', time: 0 }
global.users[username].tokens.forEach((curr = {}, index = 0) => {
const currentTime = parseInt(curr.time, 10)
// this delete expired tokens of global.users[username]
if (currentTime < nowUnix) {
delete global.users[username].tokens[index]
}
// this select a valid token
if (
DateTime.fromSeconds(currentTime).minus({ minutes: limitExpirationReuseToken }) >= now &&
currentTime >= acc.time
) {
acc = { token: curr.token, time: curr.time }
}
})
if (acc.token && acc.time) {
return acc
}
}
}
/**
* Get zones.
*/
@ -381,11 +415,15 @@ const createTokenServerAdmin = (serverAdmin = '', username = '') => {
const key = getKey()
const iv = getIV()
if (serverAdmin && username && key && iv) {
rtn = encrypt(
`${serverAdmin}:${username}:${parseInt(nowWithMinutes.toSeconds())}`,
key,
iv
)
const expire = parseInt(expireTime.toSeconds(), 10)
rtn = {
token: encrypt(
`${serverAdmin}:${username}:${expire}`,
key,
iv
),
time: expire
}
}
return rtn
}
@ -420,18 +458,38 @@ const wrapUserWithServerAdmin = (serverAdminData = {}, userData = {}) => {
setKey(serverAdminPassword.substring(0, 32))
setIV(serverAdminPassword.substring(0, 16))
const tokenWithServerAdmin = createTokenServerAdmin(serverAdminName, userName)
const JWTusername = `${serverAdminName}:${userName}`
let tokenWithServerAdmin
let setGlobalNewToken = false
const validToken = getCreatedTokenOpennebula(JWTusername)
if (validToken) {
tokenWithServerAdmin = validToken
} else {
setGlobalNewToken = true
tokenWithServerAdmin = createTokenServerAdmin(serverAdminName, userName)
}
if (tokenWithServerAdmin) {
genJWT(
tokenWithServerAdmin,
{
token: tokenWithServerAdmin
},
{
NAME: `${serverAdminName}:${userName}`,
NAME: JWTusername,
ID: userData.ID,
TEMPLATE: userData.TEMPLATE
}
)
// set global state
if (setGlobalNewToken) {
if (!global.users) {
global.users = {}
}
if (!global.users[JWTusername]) {
global.users[JWTusername] = { tokens: [] }
}
global.users[JWTusername].tokens.push({ token: tokenWithServerAdmin.token, time: parseInt(expireTime.toSeconds(), 10) })
}
next()
}
} else {
@ -455,20 +513,22 @@ const getServerAdminAndWrapUser = (userData = {}) => {
setKey(serverAdminData.key)
setIV(serverAdminData.iv)
const tokenWithServerAdmin = createTokenServerAdmin(serverAdminData.username, serverAdminData.username)
const oneConnect = connectOpennebula(`${serverAdminData.username}:${serverAdminData.username}`, tokenWithServerAdmin)
oneConnect(
ActionUsers.USER_INFO,
getDefaultParamsOfOpennebulaCommand(ActionUsers.USER_INFO, GET),
(err, value) => {
responseOpennebula(
updaterResponse,
err,
value,
(serverAdminData = {}) => wrapUserWithServerAdmin(serverAdminData, userData),
next)
},
false
)
if (tokenWithServerAdmin.token) {
const oneConnect = connectOpennebula(`${serverAdminData.username}:${serverAdminData.username}`, tokenWithServerAdmin.token)
oneConnect(
ActionUsers.USER_INFO,
getDefaultParamsOfOpennebulaCommand(ActionUsers.USER_INFO, GET),
(err, value) => {
responseOpennebula(
updaterResponse,
err,
value,
(serverAdminData = {}) => wrapUserWithServerAdmin(serverAdminData, userData),
next)
},
false
)
}
}
}
@ -480,7 +540,7 @@ const getServerAdminAndWrapUser = (userData = {}) => {
const login = userData => {
let rtn = false
if (userData) {
const findTextError = `[${namespace}${ActionUsers.USER_INFO}]`
const findTextError = `[${namespace}.${ActionUsers.USER_INFO}]`
if (userData.indexOf && userData.indexOf(findTextError) >= 0) {
updaterResponse(httpResponse(unauthorized))
} else {
@ -508,7 +568,7 @@ const functionRoutes = {
setUser,
setPass,
setTfaToken,
setExtended,
setRemember,
setNext,
setReq,
setRes,

View File

@ -198,7 +198,7 @@ router.all(
if (!err) {
fillResourceforHookConnection(user, command, paramsCommand)
}
writeInLogger(`command: ${command} response for worker: ${JSON.stringify(value)}`)
writeInLogger(`worker: ${command} : ${JSON.stringify(value)}`)
responseOpennebula(updaterResponse, err, value, response, next)
}
worker.postMessage(

View File

@ -88,8 +88,10 @@ const userValidation = (user = '', token = '') => {
global &&
global.users &&
global.users[user] &&
global.users[user].token &&
global.users[user].token === token) {
global.users[user].tokens &&
Array.isArray(global.users[user].tokens) &&
global.users[user].tokens.some(x => x && x.token === token)
) {
rtn = true
}
return rtn
@ -141,7 +143,7 @@ const validateResourceAndSession = (req, res, next) => {
global.users = {}
}
if (!global.users[userOpennebula]) {
global.users[userOpennebula] = { token: passOpennebula }
global.users[userOpennebula] = { tokens: [{ token: passOpennebula, time: session.exp }] }
}
if (userValidation(userOpennebula, passOpennebula)) {
next()

View File

@ -16,14 +16,14 @@
const atob = require('atob')
const { socket: socketZeroMQ } = require('zeromq')
const xml2js = require('xml2js')
const { messageTerminal } = require('server/utils/general')
const {
middlewareValidateAuthWebsocket,
middlewareValidateResourceForHookConnection,
getResourceDataForRequest,
getDataZone,
getQueryData
getQueryData,
xml2json
} = require('server/utils/server')
/**
@ -55,15 +55,8 @@ const main = (app = {}, type = '') => {
mssgs.push(arg.toString())
})
if (mssgs[0] && mssgs[1]) {
xml2js.parseString(
xml2json(
atob(mssgs[1]),
{
explicitArray: false,
trim: true,
normalize: true,
includeWhiteChars: true,
strict: false
},
(error, result) => {
if (error) {
const configErrorParser = {

View File

@ -42,7 +42,9 @@ const defaults = {
*/
defaultEmptyFunction: () => undefined,
defaultErrorTemplate: 'ERROR_FIREEDGE="%1$s"',
defaultOpennebulaExpiration: 180,
defaultSessionExpiration: 180,
defaultSessionLimitExpiration: 30,
defaultRememberSessionExpiration: 43200,
defaultAppName: appName,
defaultConfigErrorMessage: {
color: 'red',
@ -93,6 +95,16 @@ const defaults = {
zeromq: `tcp://${defaultIp}:2101`
}
],
defaultConfigParseXML: {
attributeNamePrefix: '',
attrNodeName: '',
ignoreAttributes: false,
ignoreNameSpace: true,
allowBooleanAttributes: false,
parseNodeValue: false,
parseAttributeValue: true,
trimValues: true
},
defaultCommandProvision: 'oneprovision',
defaultCommandProvisionTemplate: 'oneprovision-template',
defaultCommandProvider: 'oneprovider',
@ -119,7 +131,7 @@ const defaults = {
defaultBaseURL: '',
endpointVmrc: `${baseUrl}vmrc`,
endpointGuacamole: `${baseUrl}guacamole`,
defaultNamespace: 'one.',
defaultNamespace: 'one',
defaultMessageInvalidZone: 'Invalid Zone',
default2FAIssuer: `${appName}-UI`,
default2FAOpennebulaVar,

View File

@ -58,7 +58,7 @@ const validateAuth = (req = {}) => {
let rtn = false
if (req && req.headers && req.headers.authorization) {
const authorization = req.headers.authorization
const removeBearer = new RegExp('^Bearer ', 'i')
const removeBearer = /^Bearer /i
const token = authorization.replace(removeBearer, '')
const fireedgeKey = global && global.paths && global.paths.FIREEDGE_KEY
if (token && fireedgeKey) {

View File

@ -27,28 +27,39 @@ let logger = null
*/
const initLogger = () => {
if (global && global.paths && global.paths.FIREEDGE_LOG) {
logger = winston.createLogger({
transports: [
const transports = []
if (env && env.NODE_ENV && env.NODE_ENV === defaultWebpackMode) {
transports.push(
new winston.transports.Console({
format: winston.format.simple()
}))
} else {
transports.push(
new winston.transports.File({
silent: true,
level: 'info',
filename: global.paths.FIREEDGE_LOG,
handleExceptions: true,
json: true,
json: false,
maxsize: 5242880, // 5MB
maxFiles: 5,
colorize: false
})
],
)
}
logger = winston.createLogger({
transports,
exitOnError: false
})
logger.stream = {
write: function (message, encoding) {
logger.info(message)
write: (message = '') => {
writeInLogger(message)
}
}
if (env && env.NODE_ENV && env.NODE_ENV === defaultWebpackMode) {
logger.add(new winston.transports.Console({
logger.clear().add(new winston.transports.Console({
format: winston.format.simple()
}))
}
@ -69,7 +80,7 @@ const getLogger = () => logger
*/
const getLoggerMiddleware = () => {
const logger = getLogger()
if (logger) {
if (logger && logger.stream) {
return morgan('combined', { stream: logger.stream })
}
}

View File

@ -18,7 +18,7 @@ const upcast = require('upcast')
// eslint-disable-next-line node/no-deprecated-api
const { parse } = require('url')
const rpc = require('xmlrpc')
const xml2js = require('xml2js')
const parser = require('fast-xml-parser')
const { Map } = require('immutable')
const { sprintf } = require('sprintf-js')
const { global } = require('window-or-global')
@ -27,6 +27,7 @@ const commandsParams = require('./constants/commands')
const {
from,
defaultEmptyFunction,
defaultConfigParseXML,
defaultNamespace,
defaultMessageProblemOpennebula
} = require('./constants/defaults')
@ -36,6 +37,25 @@ const { getConfig } = require('./yml')
// regex for separate the commands .info
const regexInfoAction = /^(\w+).info$/
/**
* Parse xml to JSON.
*
* @param {string} xml - xml data in string
* @param {Function} callback - callback data
*/
const xml2json = (xml = '', callback = defaultEmptyFunction) => {
let rtn = []
try {
const jsonObj = parser.parse(xml, defaultConfigParseXML)
rtn = [null, jsonObj]
} catch (error) {
rtn = [error]
}
// eslint-disable-next-line standard/no-callback-literal
callback(...rtn)
}
/**
* Authorizes if the user has access to the resource, for their connection to the HOOK.
*
@ -87,56 +107,44 @@ const opennebulaConnect = (username = '', password = '', zoneURL = '') => {
const namespace = appConfig.namespace || defaultNamespace
const xmlParameters = [`${username}:${password}`, ...parameters]
xmlClient.methodCall(
namespace + action,
`${namespace}.${action}`,
xmlParameters,
(err, value) => {
const configParseXML = {
explicitArray: false,
trim: true,
normalize: true,
includeWhiteChars: true,
strict: false
}
if (err && err.body) {
xml2js.parseString(
err.body,
configParseXML,
(error, result) => {
if (error) {
callback(error, undefined) // error parse xml
return
}
if (
result &&
result.METHODRESPONSE &&
result.METHODRESPONSE.PARAMS &&
result.METHODRESPONSE.PARAMS.PARAM &&
result.METHODRESPONSE.PARAMS.PARAM.VALUE &&
result.METHODRESPONSE.PARAMS.PARAM.VALUE.ARRAY &&
result.METHODRESPONSE.PARAMS.PARAM.VALUE.ARRAY.DATA &&
xml2json(err.body, (error, result) => {
if (error) {
callback(error, undefined) // error parse xml
return
}
if (
result &&
result.METHODRESPONSE &&
result.METHODRESPONSE.PARAMS &&
result.METHODRESPONSE.PARAMS.PARAM &&
result.METHODRESPONSE.PARAMS.PARAM.VALUE &&
result.METHODRESPONSE.PARAMS.PARAM.VALUE.ARRAY &&
result.METHODRESPONSE.PARAMS.PARAM.VALUE.ARRAY.DATA &&
result.METHODRESPONSE.PARAMS.PARAM.VALUE.ARRAY.DATA
.VALUE &&
Array.isArray(
result.METHODRESPONSE.PARAMS.PARAM.VALUE.ARRAY.DATA
.VALUE &&
Array.isArray(
result.METHODRESPONSE.PARAMS.PARAM.VALUE.ARRAY.DATA
.VALUE
)
.VALUE
)
) {
const errorData = result.METHODRESPONSE.PARAMS.PARAM.VALUE.ARRAY.DATA.VALUE.filter(
element => element.STRING
)
if (
Array.isArray(errorData) &&
errorData[0] &&
errorData[0].STRING
) {
const errorData = result.METHODRESPONSE.PARAMS.PARAM.VALUE.ARRAY.DATA.VALUE.filter(
element => element.STRING
)
if (
Array.isArray(errorData) &&
errorData[0] &&
errorData[0].STRING
) {
// success
fillHookResource && fillResourceforHookConnection(username, action, parameters)
callback(undefined, errorData[0].STRING)
}
// success
fillHookResource && fillResourceforHookConnection(username, action, parameters)
callback(undefined, errorData[0].STRING)
}
}
)
})
return
} else if (value && value[0] && value[1]) {
let messageCall
@ -146,22 +154,18 @@ const opennebulaConnect = (username = '', password = '', zoneURL = '') => {
messageCall = value
}
if (typeof messageCall === 'string' && messageCall.length > 0) {
xml2js.parseString(
messageCall,
configParseXML,
(error, result) => {
if (error) {
callback(error, undefined) // error parse xml
return
}
// success
fillHookResource && fillResourceforHookConnection(username, action, parameters)
callback(
undefined,
error === null && result === null ? messageCall : result
)
xml2json(messageCall, (error, result) => {
if (error) {
callback(error, undefined) // error parse xml
return
}
)
// success
fillHookResource && fillResourceforHookConnection(username, action, parameters)
callback(
undefined,
error === null && result === null ? messageCall : result
)
})
return
}
}
@ -449,5 +453,6 @@ module.exports = {
checkOpennebulaCommand,
getDefaultParamsOfOpennebulaCommand,
generateNewResourceTemplate,
fillResourceforHookConnection
fillResourceforHookConnection,
xml2json
}

View File

@ -16,6 +16,7 @@
const path = require('path')
const webpack = require('webpack')
const TerserPlugin = require('terser-webpack-plugin')
const CopyPlugin = require('copy-webpack-plugin')
const LoadablePlugin = require('@loadable/webpack-plugin')
const TimeFixPlugin = require('time-fix-plugin')
@ -74,6 +75,11 @@ const bundle = ({ assets = false, name = 'sunstone' }) => {
}
},
plugins,
optimization: {
minimizer: [
new TerserPlugin({ extractComments: false })
]
},
module: {
rules: [js]
}

View File

@ -17,6 +17,7 @@
const path = require('path')
const webpack = require('webpack')
const nodeExternals = require('webpack-node-externals')
const TerserPlugin = require('terser-webpack-plugin')
const TimeFixPlugin = require('time-fix-plugin')
const { defaultProductionWebpackMode } = require('./src/server/utils/constants/defaults')
@ -60,6 +61,11 @@ module.exports = {
maxChunks: 1
})
],
optimization: {
minimizer: [
new TerserPlugin({ extractComments: false })
]
},
module: {
rules: [js, worker]
}