Skip to content

Commit

Permalink
Enhance messages
Browse files Browse the repository at this point in the history
  • Loading branch information
willnode committed Feb 5, 2025
1 parent dc3eec9 commit eb815c0
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 19 deletions.
3 changes: 2 additions & 1 deletion src/controllers/redis.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ export default function () {
});
router.post('/del', checkGet(['user', 'name']), async function (req, res, next) {
try {
const node = await executor.del(req.query.user + "", req.query.name + "");
let node = await executor.del(req.query.user + "", req.query.name + "");
node += "\n" + await executor.prune(req.query.name + "");
res.json(node);
} catch (error) {
next(error);
Expand Down
20 changes: 13 additions & 7 deletions src/executor/redis.js
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ class RedisExecutor {
await spawnSudoUtil("REDIS_SET", []);
await redCon.aclSave();
passRef.pass = pass;
return "Done database account for key " + name;
return "Database " + name + " created";
});
}
/**
Expand All @@ -124,7 +124,7 @@ class RedisExecutor {
this.checkNameValid(name);
let redCon = await this.getClient();
const uid = await this.getUid(user);
const res = await executeLock("redis", async () => {
return await executeLock("redis", async () => {
await spawnSudoUtil("REDIS_GET", []);
var lines = cat(tmpFile).trim().split("\n");
var exists = lines.findIndex((e) => {
Expand All @@ -142,14 +142,20 @@ class RedisExecutor {
ShellString(lines.join("\n") + "\n").to(tmpFile);
await spawnSudoUtil("REDIS_SET", []);
await redCon.aclSave();
return "Done delete database " + name;
return "Database " + name + " dropped";
});
}

let c = await redCon.eval(luaDelKeys, {
keys: [`${user}:*`],
/**
* @param {string} name
*/
async prune(name) {
this.checkNameValid(name);
let redCon = await this.getClient();
let count = await redCon.eval(luaDelKeys, {
keys: [`${name}:*`],
});

return res + " with total keys " + c.toString();
return `Database ${name} pruned with ${count} total keys`
}

/**
Expand Down
44 changes: 33 additions & 11 deletions src/executor/runnersub.js
Original file line number Diff line number Diff line change
Expand Up @@ -229,13 +229,24 @@ export async function runConfigSubdomain(config, domaindata, subdomain, sshExec,
}
break;
case 'redis':
let instances = await redisExec.show(domaindata['Username']);
const dbuser = domaindata['Username'];
let instances = await redisExec.show(dbuser);
subenabled = instances.length > 0;
let matchedDB = "";
/**
* @param {string} arg
*/
function matchDB(arg) {
dbname = getDbName(dbuser, domainprefix == "db" ? arg : domainprefix + '_' + arg);
return instances.find(x => x.startsWith(dbname + ":"))
}
if (value === "off") {
await writeLog("$> Disabling Redis");
if (subenabled) {
for (const db of instances) {
await redisExec.del(domaindata['Username'], db.split(":")[0])
dbname = db.split(":")[0];
await writeLog(await redisExec.prune(dbname));
await writeLog(await redisExec.del(dbuser, dbname));
}
} else {
await writeLog("Already disabled");
Expand All @@ -248,32 +259,43 @@ export async function runConfigSubdomain(config, domaindata, subdomain, sshExec,
}
if (value.startsWith("create ")) {
let newdb = value.substr("create ".length).trim();
dbname = getDbName(domaindata['Username'], domainprefix == "db" ? newdb : domainprefix + '_' + newdb);
dbneedcreate = true;
matchedDB = matchDB(newdb)
if (!matchedDB) {
dbneedcreate = true;
}
}
const passRef = { pass: undefined }
if (dbneedcreate) {
await writeLog(`$> Creating db instance ${dbname} on Redis`);
await writeLog(await redisExec.add(domaindata['Username'], dbname, passRef));
} else if (value.startsWith("drop ")) {
let arg = value.substr("drop ".length).trim();
dbname = getDbName(domaindata['Username'], domainprefix == "db" ? arg : domainprefix + '_' + arg);
await writeLog(await redisExec.del(domaindata['Username'], dbname));
matchedDB = matchDB(arg);
if (matchedDB) {
await writeLog(`$> Pruning db instance ${dbname} on Redis`);
await writeLog(await redisExec.prune(dbname));
await writeLog(`$> Dropping db instance ${dbname} on Redis`);
await writeLog(await redisExec.del(domaindata['Username'], dbname));
} else {
await writeLog(`$> DB instance ${dbname} is not found on Redis`);
}
break;
} else if (value.startsWith("modify-pass ")) {
let arg = value.substr("modify-pass ".length).trim();
dbname = getDbName(domaindata['Username'], domainprefix == "db" ? arg : domainprefix + '_' + arg);
await writeLog(await redisExec.passwd(domaindata['Username'], dbname, passRef));
matchedDB = matchDB(arg);
if (matchedDB) {
await writeLog(`$> Regenerating password for db instance ${dbname} on Redis`);
await writeLog(await redisExec.passwd(domaindata['Username'], dbname, passRef));
}
} else if (value.startsWith("get ")) {
let arg = value.substr("get ".length).trim();
dbname = getDbName(domaindata['Username'], domainprefix == "db" ? arg : domainprefix + '_' + arg);
let matchedDB = instances.find(x => x.startsWith(dbname + ":"))
matchedDB = matchDB(arg);
if (matchedDB) {
passRef.pass = matchedDB.split(":")[1];
}
} else if (!value) {
await writeLog(`$> Redis is already initialized`);
let matchedDB = instances.find(x => x.startsWith(dbname + ":"))
matchedDB = matchDB(domainprefix)
if (matchedDB) {
passRef.pass = matchedDB.split(":")[1];
}
Expand Down

0 comments on commit eb815c0

Please sign in to comment.