Add home path

merge-requests/1/merge
Bsian 2019-12-23 17:08:42 +00:00
parent 82b3148fd3
commit 612d527986
No known key found for this signature in database
GPG Key ID: 097FB9A291026091
8 changed files with 14 additions and 12 deletions

View File

@ -155,7 +155,7 @@ export default class Util {
if (!account) throw new Error('Account not found'); if (!account) throw new Error('Account not found');
this.exec(`lock ${username}`); this.exec(`lock ${username}`);
const tasks = [ const tasks = [
this.exec(`deluser ${username} --remove-home --backup-to /management/Archives && rm -rf -R /home/${username} && groupdel ${username}`), this.exec(`deluser ${username} --remove-home --backup-to /management/Archives && rm -rf -R ${account.homepath} && groupdel ${account.homepath.replace('/home/', '')}`),
this.client.db.Account.deleteOne({ username }), this.client.db.Account.deleteOne({ username }),
]; ];
this.client.removeGuildMemberRole('446067825673633794', account.userID, '546457886440685578', 'Cloud Account Deleted').catch(); this.client.removeGuildMemberRole('446067825673633794', account.userID, '546457886440685578', 'Cloud Account Deleted').catch();
@ -240,7 +240,7 @@ export default class Util {
public getAcctHash(username: string) { public getAcctHash(username: string) {
try { try {
return fs.readFileSync(`/home/${username}/.securesign/auth`).toString(); return fs.readFileSync(`${username}/.securesign/auth`).toString();
} catch (error) { } catch (error) {
return null; return null;
} }

View File

@ -20,7 +20,7 @@ export default class DeleteAccount extends Command {
if (!args[1]) return this.client.commands.get('help').run(message, [this.name]); if (!args[1]) return this.client.commands.get('help').run(message, [this.name]);
const account = await this.client.db.Account.findOne({ $or: [{ username: args[0] }, { userID: args[0] }, { emailAddress: args[0] }] }); const account = await this.client.db.Account.findOne({ $or: [{ username: args[0] }, { userID: args[0] }, { emailAddress: args[0] }] });
if (!account) return message.channel.createMessage(`${this.client.stores.emojis.error} ***Account not found.***`); if (!account) return message.channel.createMessage(`${this.client.stores.emojis.error} ***Account not found.***`);
const { root, username, userID, emailAddress } = account; const { root, username, userID, emailAddress, homepath } = account;
if (root) return message.channel.createMessage(`${this.client.stores.emojis.error} ***Permission denied.***`); if (root) return message.channel.createMessage(`${this.client.stores.emojis.error} ***Permission denied.***`);
const pad = (number: number, amount: number): string => '0'.repeat(amount - number.toString().length) + number; const pad = (number: number, amount: number): string => '0'.repeat(amount - number.toString().length) + number;

View File

@ -24,7 +24,7 @@ export default class Disk extends Command {
if (account.root || args[0].includes('./')) return message.channel.createMessage(`${this.client.stores.emojis.error} ***Permission denied***`); if (account.root || args[0].includes('./')) return message.channel.createMessage(`${this.client.stores.emojis.error} ***Permission denied***`);
const diskReply = await message.channel.createMessage(`${this.client.stores.emojis.loading} ***Fetching total disk size may up to 10 minutes. This message will edit when the disk size has been located.***`); const diskReply = await message.channel.createMessage(`${this.client.stores.emojis.loading} ***Fetching total disk size may up to 10 minutes. This message will edit when the disk size has been located.***`);
const start = Date.now(); const start = Date.now();
const result = await this.client.util.exec(`du -s /home/${account.username}`); const result = await this.client.util.exec(`du -s ${account.homepath}`);
const end = Date.now(); const end = Date.now();
// @ts-ignore // @ts-ignore
const totalTime: string = moment.preciseDiff(start, end); const totalTime: string = moment.preciseDiff(start, end);

View File

@ -20,12 +20,12 @@ export default class Parse extends Command {
if (!account) return message.channel.createMessage(`***${this.client.stores.emojis.error} Cannot find user.***`); if (!account) return message.channel.createMessage(`***${this.client.stores.emojis.error} Cannot find user.***`);
let dir: string[]; let dir: string[];
try { try {
dir = await fs.readdir(`/home/${account.username}/Validation`); dir = await fs.readdir(`${account.homepath}/Validation`);
} catch (err) { } catch (err) {
return message.channel.createMessage(`***${this.client.stores.emojis.error} Cannot locate Validation directory.***`); return message.channel.createMessage(`***${this.client.stores.emojis.error} Cannot locate Validation directory.***`);
} }
if (!dir.length) return message.channel.createMessage(`***${this.client.stores.emojis.error} Cannot locate certificate.***`); if (!dir.length) return message.channel.createMessage(`***${this.client.stores.emojis.error} Cannot locate certificate.***`);
const cert = parseCert(`/home/${account.username}/Validation/${dir[0]}`); const cert = parseCert(`${account.homepath}/Validation/${dir[0]}`);
const subjectCommonName = cert.subject.commonName ? cert.subject.commonName : 'Not Specified'; const subjectCommonName = cert.subject.commonName ? cert.subject.commonName : 'Not Specified';
const subjectEmailAddress = cert.subject.emailAddress ? cert.subject.emailAddress : 'Not Specified'; const subjectEmailAddress = cert.subject.emailAddress ? cert.subject.emailAddress : 'Not Specified';
const subjectOrganization = cert.subject.organizationName ? cert.subject.organizationName : 'Not Specified'; const subjectOrganization = cert.subject.organizationName ? cert.subject.organizationName : 'Not Specified';
@ -39,7 +39,7 @@ export default class Parse extends Command {
const user = this.client.users.get(account.userID) ? this.client.users.get(account.userID) : await this.client.getRESTUser(account.userID); const user = this.client.users.get(account.userID) ? this.client.users.get(account.userID) : await this.client.getRESTUser(account.userID);
const embed = new RichEmbed(); const embed = new RichEmbed();
embed.setTitle('Parse x509 Certificate'); embed.setTitle('Parse x509 Certificate');
embed.setDescription(`/home/${account.username}/Validation/${dir[0]} | ${account.username} <@${user.id}>`); embed.setDescription(`${account.homepath}/Validation/${dir[0]} | ${account.username} <@${user.id}>`);
embed.setColor(3447003); embed.setColor(3447003);
embed.addField('Subject', `**Common Name:** ${subjectCommonName}\n**Email Address:** ${subjectEmailAddress}\n**Organization:** ${subjectOrganization}\n**Organizational Unit:** ${subjectOrganizationalUnit}\n**Country:** ${subjectCountry}`, true); embed.addField('Subject', `**Common Name:** ${subjectCommonName}\n**Email Address:** ${subjectEmailAddress}\n**Organization:** ${subjectOrganization}\n**Organizational Unit:** ${subjectOrganizationalUnit}\n**Country:** ${subjectCountry}`, true);
embed.addField('Issuer', `**Common Name:** ${issuerCommonName}\n**Email Address:** ${issuerEmailAddress}\n**Organization:** ${issuerOrganization}\n**Organizational Unit:** ${issuerOrganizationalUnit}\n**Country:** ${issuerCountry}`, true); embed.addField('Issuer', `**Common Name:** ${issuerCommonName}\n**Email Address:** ${issuerEmailAddress}\n**Organization:** ${issuerOrganization}\n**Organizational Unit:** ${issuerOrganizationalUnit}\n**Country:** ${issuerCountry}`, true);

View File

@ -24,13 +24,13 @@ export default class Parseall extends Command {
embed.setFooter(`Requested by ${message.member.username}#${message.member.discriminator}`, message.member.avatarURL); embed.setFooter(`Requested by ${message.member.username}#${message.member.discriminator}`, message.member.avatarURL);
embed.setTimestamp(); embed.setTimestamp();
const search = await this.client.db.Account.find(); const search = await this.client.db.Account.find();
const accounts = search.map((acc) => acc.username); const accounts = search.map((acc) => acc.homepath);
const final: string[] = []; const final: string[] = [];
accounts.forEach(async (a) => { accounts.forEach(async (a) => {
try { try {
const certFile = readdirSync(`/home/${a}/Validation`)[0]; const certFile = readdirSync(`${a}/Validation`)[0];
const { notAfter } = parseCert(`/home/${a}/Validation/${certFile}`); const { notAfter } = parseCert(`${a}/Validation/${certFile}`);
// @ts-ignore // @ts-ignore
const time = moment.preciseDiff(new Date(), notAfter); const time = moment.preciseDiff(new Date(), notAfter);

View File

@ -19,7 +19,7 @@ export default class SecureSign_ActivateKey extends Command {
if (!account) return message.channel.createMessage(`${this.client.stores.emojis.error} ***Account not found***`); if (!account) return message.channel.createMessage(`${this.client.stores.emojis.error} ***Account not found***`);
if (!account.hash) return message.channel.createMessage(`${this.client.stores.emojis.error} ***Account not initialized***`); if (!account.hash) return message.channel.createMessage(`${this.client.stores.emojis.error} ***Account not initialized***`);
const msg = await message.channel.createMessage(`${this.client.stores.emojis.loading} ***Activating key...***`); const msg = await message.channel.createMessage(`${this.client.stores.emojis.loading} ***Activating key...***`);
const hash = this.client.util.getAcctHash(account.username); const hash = this.client.util.getAcctHash(account.homepath);
try { try {
await axios({ await axios({
method: 'POST', method: 'POST',

View File

@ -26,7 +26,7 @@ export default class SecureSign_Init extends Command {
if (options.m && (!Number(options.m) || (options.m !== '256' && options.m !== '384' && options.m !== '512'))) return message.channel.createMessage(`${this.client.stores.emojis.error} ***Invalid SHA Digest selected, choose between \`256\`, \`384\` or \`512\``); if (options.m && (!Number(options.m) || (options.m !== '256' && options.m !== '384' && options.m !== '512'))) return message.channel.createMessage(`${this.client.stores.emojis.error} ***Invalid SHA Digest selected, choose between \`256\`, \`384\` or \`512\``);
const msg = await message.channel.createMessage(`${this.client.stores.emojis.loading} ***Creating certificate...***`); const msg = await message.channel.createMessage(`${this.client.stores.emojis.loading} ***Creating certificate...***`);
const hash = this.client.util.getAcctHash(account.username); const hash = this.client.util.getAcctHash(account.homepath);
// Check if they can generate certificate // Check if they can generate certificate
try { try {

View File

@ -3,6 +3,7 @@ import { Document, Schema, model } from 'mongoose';
export interface AccountInterface extends Document { export interface AccountInterface extends Document {
username: string, username: string,
userID: string, userID: string,
homepath: string
emailAddress: string, emailAddress: string,
createdBy: string, createdBy: string,
createdAt: Date, createdAt: Date,
@ -23,6 +24,7 @@ export interface AccountInterface extends Document {
const Account: Schema = new Schema({ const Account: Schema = new Schema({
username: String, username: String,
userID: String, userID: String,
homepath: String,
emailAddress: String, emailAddress: String,
createdBy: String, createdBy: String,
createdAt: Date, createdAt: Date,