forked from engineering/cloudservices
Merge branch 'master' of gitlab.libraryofcode.org:engineering/cloudservices-rewrite
commit
009bdad83e
|
@ -4,6 +4,7 @@ import { Client } from '..';
|
||||||
import Build from './securesign_build';
|
import Build from './securesign_build';
|
||||||
import Init from './securesign_init';
|
import Init from './securesign_init';
|
||||||
import Account from './securesign_account';
|
import Account from './securesign_account';
|
||||||
|
import ActivateKey from './securesign_activatekey';
|
||||||
|
|
||||||
export default class SecureSign extends Command {
|
export default class SecureSign extends Command {
|
||||||
constructor(client: Client) {
|
constructor(client: Client) {
|
||||||
|
@ -12,7 +13,7 @@ export default class SecureSign extends Command {
|
||||||
this.description = 'Runs SecureSign CLI commands';
|
this.description = 'Runs SecureSign CLI commands';
|
||||||
this.usage = `Run ${this.client.config.prefix}${this.name} [subcommand] for usage information`;
|
this.usage = `Run ${this.client.config.prefix}${this.name} [subcommand] for usage information`;
|
||||||
this.aliases = ['ss'];
|
this.aliases = ['ss'];
|
||||||
this.subcmds = [Build, Init, Account];
|
this.subcmds = [Build, Init, Account, ActivateKey];
|
||||||
this.enabled = true;
|
this.enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
import { Message } from 'eris';
|
||||||
|
import axios from 'axios';
|
||||||
|
import { Client } from '..';
|
||||||
|
import { Command } from '../class';
|
||||||
|
|
||||||
|
export default class SecureSign_ActivateKey extends Command {
|
||||||
|
constructor(client: Client) {
|
||||||
|
super(client);
|
||||||
|
this.name = 'activatekey';
|
||||||
|
this.description = 'Claims an Activation Key';
|
||||||
|
this.usage = `${this.client.config.prefix}securesign activatekey [key]`;
|
||||||
|
this.enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async run(message: Message, args: string[]) {
|
||||||
|
try {
|
||||||
|
if (!args[0]) return this.client.commands.get('help').run(message, ['securesign', this.name]);
|
||||||
|
const account = await this.client.db.Account.findOne({ userID: message.author.id });
|
||||||
|
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***`);
|
||||||
|
const msg = await message.channel.createMessage(`${this.client.stores.emojis.loading} ***Activating key...***`);
|
||||||
|
try {
|
||||||
|
await axios({
|
||||||
|
method: 'POST',
|
||||||
|
url: 'https://api.securesign.org/account/keys/activation',
|
||||||
|
headers: { Authorization: account.hash, 'Content-Type': 'application/json' },
|
||||||
|
data: JSON.stringify({ key: args[0] }),
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
const { code } = error.response.data;
|
||||||
|
if (code === 1001) {
|
||||||
|
await this.client.db.Account.updateOne({ hash: account.hash }, { $set: { hash: null } });
|
||||||
|
this.client.getDMChannel(account.userID).then((channel) => channel.createMessage('Your SecureSign password has been reset - please reinitialize your SecureSign account')).catch();
|
||||||
|
return msg.edit(`${this.client.stores.emojis.error} ***Authentication failed***`);
|
||||||
|
}
|
||||||
|
if (code === 1002) return msg.edit(`${this.client.stores.emojis.error} ***Invalid Activation Key***`);
|
||||||
|
if (code === 1003) return msg.edit(`${this.client.stores.emojis.error} ***${error.response.data.message}***`);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
return msg.edit(`${this.client.stores.emojis.success} ***Activation Key Accepted***`);
|
||||||
|
} catch (error) {
|
||||||
|
return this.client.util.handleError(error, message, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ import { Client } from '..';
|
||||||
|
|
||||||
export default function checkSS(client: Client) {
|
export default function checkSS(client: Client) {
|
||||||
setInterval(async () => {
|
setInterval(async () => {
|
||||||
|
try {
|
||||||
const accounts = await client.db.Account.find();
|
const accounts = await client.db.Account.find();
|
||||||
const hashes = accounts.filter((h) => h.hash);
|
const hashes = accounts.filter((h) => h.hash);
|
||||||
for (const { hash, userID } of hashes) {
|
for (const { hash, userID } of hashes) {
|
||||||
|
@ -16,10 +17,13 @@ export default function checkSS(client: Client) {
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
const { status } = error.response;
|
const { status } = error.response;
|
||||||
if (status === 400 || status === 401 || status === 403 || status === 404) {
|
if (status === 400 || status === 401 || status === 403 || status === 404) {
|
||||||
client.db.Account.updateOne({ hash }, { $set: { hash: null } });
|
await client.db.Account.updateOne({ hash }, { $set: { hash: null } });
|
||||||
client.getDMChannel(userID).then((channel) => channel.createMessage('Your SecureSign password has been reset - please reinitialize your SecureSign account')).catch();
|
client.getDMChannel(userID).then((channel) => channel.createMessage('Your SecureSign password has been reset - please reinitialize your SecureSign account')).catch();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (error) {
|
||||||
|
client.util.handleError(error);
|
||||||
|
}
|
||||||
}, 60000);
|
}, 60000);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue