mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-16 22:50:10 +03:00
also * fix for session conflict between old sunstone and fireedge * fix for babel-node error * avoid creating LICENSE.txt
This commit is contained in:
parent
8d2a0a29b1
commit
f4d34de4f6
210
src/fireedge/package-lock.json
generated
210
src/fireedge/package-lock.json
generated
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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()
|
||||
}
|
||||
|
||||
|
@ -39,9 +39,9 @@ const routes = {
|
||||
from: fromData.postBody,
|
||||
name: 'token2fa'
|
||||
},
|
||||
extended: {
|
||||
remember: {
|
||||
from: fromData.postBody,
|
||||
name: 'extended'
|
||||
name: 'remember'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -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(
|
||||
|
@ -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()
|
||||
|
@ -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 = {
|
||||
|
@ -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,
|
||||
|
@ -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) {
|
||||
|
@ -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 })
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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]
|
||||
}
|
||||
|
@ -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]
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user