mirror of
https://github.com/louislam/dockge.git
synced 2025-02-26 05:25:56 +00:00
Compare commits
10 commits
b05cabb974
...
f01c91ae06
Author | SHA1 | Date | |
---|---|---|---|
|
f01c91ae06 | ||
|
d451e06e84 | ||
|
165a944822 | ||
|
8533d18723 | ||
|
d5e8f17aa1 | ||
|
c451067ac4 | ||
|
9615b844c3 | ||
|
ff922232c1 | ||
|
be72cdbffe | ||
|
4fe1625f8d |
4 changed files with 306 additions and 187 deletions
|
@ -20,3 +20,6 @@ services:
|
|||
environment:
|
||||
# Tell Dockge where is your stacks directory
|
||||
- DOCKGE_STACKS_DIR=/opt/stacks
|
||||
# Usefull for interactive action within the container
|
||||
stdin_open: true # docker run -i
|
||||
tty: true # docker run -t
|
||||
|
|
|
@ -6,6 +6,7 @@ import { DockgeServer } from "../backend/dockge-server";
|
|||
import { log } from "../backend/log";
|
||||
import { io } from "socket.io-client";
|
||||
import { BaseRes } from "../common/util-common";
|
||||
import { generatePasswordHash } from "../backend/password-hash";
|
||||
|
||||
console.log("== Dockge Reset Password Tool ==");
|
||||
|
||||
|
@ -29,35 +30,67 @@ export const main = async () => {
|
|||
}
|
||||
|
||||
try {
|
||||
let user ;
|
||||
// No need to actually reset the password for testing, just make sure no connection problem. It is ok for now.
|
||||
|
||||
if (!process.env.TEST_BACKEND) {
|
||||
const user = await R.findOne("user");
|
||||
if (! user) {
|
||||
throw new Error("user not found, have you installed?");
|
||||
user = await R.findOne("user");
|
||||
|
||||
if (! user ) {
|
||||
if ( !process.env.USER ) {
|
||||
throw new Error("user not found or provided, have you installed? Try to set USER and PASSWORD variables ...");
|
||||
} else {
|
||||
console.log("Trying to initialise user : " + process.env.USER);
|
||||
user = R.dispense("user");
|
||||
user.username = process.env.USER;
|
||||
user.password = generatePasswordHash(process.env.PASSWORD);
|
||||
await R.store(user);
|
||||
console.log("User/Password set successfully");
|
||||
|
||||
// Reset all sessions by reset jwt secret
|
||||
await server.initJWTSecret();
|
||||
console.log("JWT reset successfully.");
|
||||
|
||||
// Disconnect all other socket clients of the user
|
||||
await disconnectAllSocketClients(user.username, user.password);
|
||||
console.log("You may have to restart");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log("Found user: " + user.username);
|
||||
let password = "";
|
||||
let confirmPassword = " ";
|
||||
|
||||
while (true) {
|
||||
let password = await question("New Password: ");
|
||||
let confirmPassword = await question("Confirm New Password: ");
|
||||
|
||||
if (process.env.PASSWORD) {
|
||||
console.log("Found password : " + process.env.PASSWORD) ;
|
||||
password = process.env.PASSWORD ;
|
||||
confirmPassword = process.env.PASSWORD ;
|
||||
} else {
|
||||
console.log("No found password: " ) ;
|
||||
password = await question("New Password: ");
|
||||
confirmPassword = await question("Confirm New Password: ");
|
||||
}
|
||||
|
||||
if (password === confirmPassword) {
|
||||
await User.resetPassword(user.id, password);
|
||||
console.log("Password reset successfully.");
|
||||
|
||||
// Reset all sessions by reset jwt secret
|
||||
await server.initJWTSecret();
|
||||
|
||||
console.log("Password reset successfully.");
|
||||
console.log("JWT reset successfully.");
|
||||
|
||||
// Disconnect all other socket clients of the user
|
||||
await disconnectAllSocketClients(user.username, password);
|
||||
|
||||
break;
|
||||
} else {
|
||||
console.log("Passwords do not match, please try again.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
} catch (e) {
|
||||
if (e instanceof Error) {
|
||||
|
@ -127,3 +160,4 @@ function disconnectAllSocketClients(username : string, password : string) : Prom
|
|||
if (!process.env.TEST_BACKEND) {
|
||||
main();
|
||||
}
|
||||
|
||||
|
|
18
package.json
18
package.json
|
@ -40,7 +40,7 @@
|
|||
"dotenv": "~16.3.2",
|
||||
"express": "~4.21.2",
|
||||
"express-static-gzip": "~2.1.8",
|
||||
"http-graceful-shutdown": "~3.1.13",
|
||||
"http-graceful-shutdown": "~3.1.14",
|
||||
"jsonwebtoken": "~9.0.2",
|
||||
"jwt-decode": "~3.1.2",
|
||||
"knex": "~2.5.1",
|
||||
|
@ -49,8 +49,8 @@
|
|||
"promisify-child-process": "~4.1.2",
|
||||
"redbean-node": "~0.3.3",
|
||||
"semver": "^7.6.3",
|
||||
"socket.io": "~4.8.0",
|
||||
"socket.io-client": "~4.8.0",
|
||||
"socket.io": "~4.8.1",
|
||||
"socket.io-client": "~4.8.1",
|
||||
"timezones-list": "~3.0.3",
|
||||
"ts-command-line-args": "~2.5.1",
|
||||
"tsx": "~4.19.2",
|
||||
|
@ -59,7 +59,7 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@actions/github": "^6.0.0",
|
||||
"@fontsource/jetbrains-mono": "^5.1.1",
|
||||
"@fontsource/jetbrains-mono": "^5.1.2",
|
||||
"@fortawesome/fontawesome-svg-core": "6.4.2",
|
||||
"@fortawesome/free-regular-svg-icons": "6.4.2",
|
||||
"@fortawesome/free-solid-svg-icons": "6.4.2",
|
||||
|
@ -81,19 +81,19 @@
|
|||
"cross-env": "~7.0.3",
|
||||
"eslint": "~8.50.0",
|
||||
"eslint-plugin-jsdoc": "~46.8.2",
|
||||
"eslint-plugin-vue": "~9.17.0",
|
||||
"eslint-plugin-vue": "~9.32.0",
|
||||
"prismjs": "~1.29.0",
|
||||
"sass": "~1.68.0",
|
||||
"typescript": "~5.2.2",
|
||||
"unplugin-vue-components": "~0.25.2",
|
||||
"vite": "~5.4.8",
|
||||
"vite": "~5.4.11",
|
||||
"vite-plugin-compression": "~0.5.1",
|
||||
"vue": "~3.5.12",
|
||||
"vue": "~3.5.13",
|
||||
"vue-eslint-parser": "~9.3.2",
|
||||
"vue-i18n": "~9.5.0",
|
||||
"vue-i18n": "~10.0.5",
|
||||
"vue-prism-editor": "2.0.0-alpha.2",
|
||||
"vue-qrcode": "~2.2.2",
|
||||
"vue-router": "~4.2.5",
|
||||
"vue-router": "~4.5.0",
|
||||
"vue-toastification": "2.0.0-rc.5",
|
||||
"wait-on": "^7.2.0",
|
||||
"xterm-addon-web-links": "~0.9.0"
|
||||
|
|
400
pnpm-lock.yaml
generated
400
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue