Skip to content

Commit

Permalink
implement secrets check
Browse files Browse the repository at this point in the history
  • Loading branch information
ebiggz committed Oct 13, 2020
1 parent 4e8dc2e commit 8f2db6d
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 10 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Expand Up @@ -77,7 +77,7 @@ resources/overlay/js/port.js
eslint.log.htm
doc/
*.iws
keys.json
secrets.json

# Editors
.idea/
Expand Down
6 changes: 3 additions & 3 deletions backend/auth/twitch-auth.js
Expand Up @@ -5,10 +5,10 @@ const accountAccess = require("../common/account-access");
const logger = require("../logwrapper");
const axios = require("axios").default;

const keys = require("../../keys.json");
const { secrets } = require("../secrets-manager");

const TWITCH_CLIENT_ID = keys.twitchClientId;
const TWITCH_CLIENT_SECRET = keys.twitchClientSecret;
const TWITCH_CLIENT_ID = secrets.twitchClientId;
const TWITCH_CLIENT_SECRET = secrets.twitchClientSecret;

exports.TWITCH_CLIENT_ID = TWITCH_CLIENT_ID;
exports.TWITCH_CLIENT_SECRET = TWITCH_CLIENT_SECRET;
Expand Down
6 changes: 3 additions & 3 deletions backend/integrations/builtin/streamlabs/streamlabs.js
Expand Up @@ -3,7 +3,7 @@ const EventEmitter = require("events");
const io = require("socket.io-client");
const request = require("request");

const keys = require("../../../../keys.json");
const { secrets } = require("../../../secrets-manager");

const slEventHandler = require("./events/streamlabs-event-handler");
const slVariableLoader = require("./variables/streamlabs-variable-loader");
Expand All @@ -20,8 +20,8 @@ const integrationDefinition = {
name: "StreamLabs",
redirectUriHost: "localhost",
client: {
id: keys.streamLabsClientId,
secret: keys.streamLabsClientSecret
id: secrets.streamLabsClientId,
secret: secrets.streamLabsClientSecret
},
auth: {
tokenHost: 'https://streamlabs.com',
Expand Down
6 changes: 3 additions & 3 deletions backend/integrations/builtin/tipeeestream/tipeeestream.js
Expand Up @@ -3,7 +3,7 @@ const EventEmitter = require("events");
const io = require("socket.io-client");
const request = require("request");
const logger = require("../../../logwrapper");
const keys = require("../../../../keys.json");
const { secrets } = require("../../../secrets-manager");

const tsEventHandler = require("./events/tipeeestream-event-handler");

Expand All @@ -17,8 +17,8 @@ const integrationDefinition = {
id: "tipeeestream",
name: "TipeeeStream",
client: {
id: keys.tipeeeStreamClientId,
secret: keys.tipeeeStreamClientSecret
id: secrets.tipeeeStreamClientId,
secret: secrets.tipeeeStreamClientSecret
},
auth: {
tokenHost: 'https://api.tipeeestream.com',
Expand Down
51 changes: 51 additions & 0 deletions backend/secrets-manager.js
@@ -0,0 +1,51 @@
"use strict";

const logger = require("./logwrapper");

/**
* @typedef FirebotSecrets
* @property {string} twitchClientId
* @property {string} twitchClientSecret
* @property {string} tipeeeStreamClientId
* @property {string} tipeeeStreamClientSecret
* @property {string} streamLabsClientId
* @property {string} streamLabsClientSecret
*/

exports.testSecrets = () => {
try {
/**@type {FirebotSecrets} */
const secrets = require("../secrets.json") || {};

/**@type {(keyof FirebotSecrets)[]} */
const expected = [
"twitchClientId",
"twitchClientSecret",
"tipeeeStreamClientId",
"tipeeeStreamClientSecret",
"streamLabsClientId",
"streamLabsClientSecret"
];
const missing = expected.filter(k => secrets[k] == null);

if (missing.length) {
logger.error(`secrets.json is missing the following keys: ${missing.join(", ")}`);
return false;
}

return true;
} catch (err) {
logger.error("Unable to find secrets.json in the root directory. Please create it.");
return false;
}
};

/**@type {FirebotSecrets} */
let secrets = {};
try {
secrets = require("../secrets.json");
} catch (error) {
//silently fail
}

exports.secrets = secrets;
6 changes: 6 additions & 0 deletions main.js
Expand Up @@ -2,6 +2,7 @@
const { app } = require("electron");

const logger = require("./backend/logwrapper");
const secretsManager = require("./backend/secrets-manager");
const { handleSquirrelEvents } = require("./backend/app-management/squirrel-events");
const {
whenReady,
Expand All @@ -12,6 +13,11 @@ const {

logger.info("Starting Firebot...");

if (!secretsManager.testSecrets()) {
app.quit();
return;
}

// Handle any squirrel install/update events
// returns false if the rest of app execution should stop.
if (!handleSquirrelEvents()) {
Expand Down

0 comments on commit 8f2db6d

Please sign in to comment.