forked from engineering/cloudservices
added command
parent
b1c261cb57
commit
56d1ce3e30
|
@ -0,0 +1,56 @@
|
||||||
|
import { parseCert } from '@ghaiklor/x509';
|
||||||
|
import { Message } from 'eris';
|
||||||
|
import { readdirSync } from 'fs';
|
||||||
|
import moment from 'moment';
|
||||||
|
import { Client } from '..';
|
||||||
|
import { Command, RichEmbed } from '../class';
|
||||||
|
|
||||||
|
export default class Parseall extends Command {
|
||||||
|
constructor(client: Client) {
|
||||||
|
super(client);
|
||||||
|
|
||||||
|
this.name = 'parseall';
|
||||||
|
this.description = 'Displays certificate validation for all accounts';
|
||||||
|
this.usage = `${this.client.config.prefix}parseall`;
|
||||||
|
this.permissions = { roles: ['446104438969466890'] };
|
||||||
|
this.aliases = ['checkcerts', 'verifyall', 'verifycerts'];
|
||||||
|
}
|
||||||
|
|
||||||
|
public async run(message: Message, args: string[]) {
|
||||||
|
try {
|
||||||
|
const embed = new RichEmbed();
|
||||||
|
embed.setTitle('Certificate Validation');
|
||||||
|
embed.setAuthor(this.client.user.username, this.client.user.avatarURL);
|
||||||
|
embed.setFooter(`Requested by ${message.member.username}#${message.member.discriminator}`, message.member.avatarURL);
|
||||||
|
const search = await this.client.db.Account.find();
|
||||||
|
const accounts = search.map((acc) => acc.username);
|
||||||
|
const initial = accounts.map((acc) => `${this.client.stores.emojis.loading} **${acc}** Loading...`);
|
||||||
|
embed.setDescription(initial.join('\n'));
|
||||||
|
// @ts-ignore
|
||||||
|
const msg = await message.channel.createMessage({ embed });
|
||||||
|
|
||||||
|
accounts.forEach(async (a) => {
|
||||||
|
try {
|
||||||
|
const certFile = readdirSync(`/home/${a}/Validation`)[0];
|
||||||
|
const { notAfter } = parseCert(`/home/${a}/Validation/${certFile}`);
|
||||||
|
// @ts-ignore
|
||||||
|
const time = moment.preciseDiff(new Date(), notAfter);
|
||||||
|
|
||||||
|
if (notAfter < new Date()) initial[accounts.findIndex((acc) => acc === a)] = `${this.client.stores.emojis.error} **${a}** Certificate expired ${time} ago`;
|
||||||
|
else initial[accounts.findIndex((acc) => acc === a)] = `${this.client.stores.emojis.success} **${a}** Certificate expires in ${time}`;
|
||||||
|
|
||||||
|
embed.setDescription(initial.join('\n'));
|
||||||
|
await msg.edit({ embed });
|
||||||
|
} catch (error) {
|
||||||
|
if (error.message.includes('no such file or directory') || error.message.includes('File doesn\'t exist.')) {
|
||||||
|
initial[accounts.findIndex((acc) => acc === a)] = `${this.client.stores.emojis.error} **${a}** Unable to locate certificate`;
|
||||||
|
embed.setDescription(initial.join('\n'));
|
||||||
|
await msg.edit({ embed });
|
||||||
|
} else throw error;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
this.client.util.handleError(error, message, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue