summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/js/config.js57
-rw-r--r--server/js/paths.js46
2 files changed, 103 insertions, 0 deletions
diff --git a/server/js/config.js b/server/js/config.js
new file mode 100644
index 0000000..5e0bc7b
--- /dev/null
+++ b/server/js/config.js
@@ -0,0 +1,57 @@
+"use strict";
+
+// Imports
+const fs = require('fs');
+const path = require('path');
+const { ensureFolder, envPaths } = require('./paths');
+
+// Handling Variables
+const indentation = '\t';
+const configFolder = ensureFolder(path.join(envPaths.CONFIG, 'sneedbay'));
+const defaultConfigPath = path.join(configFolder, 'config.json');
+const defaultConfig = {
+ 'settings': {
+ 'nsfw_content': false,
+ 'port': undefined
+ }
+};
+var loadedConfig = {};
+
+// Functions
+function createConfig(customConfig, configPath)
+{
+ const path = configPath || defaultConfigPath;
+ const config = customConfig || defaultConfig;
+
+ try
+ {
+ fs.writeFileSync(path, JSON.stringify(config, null, indentation), 'utf-8');
+ }
+
+ catch (err)
+ {
+ console.log(err);
+ }
+}
+
+function loadConfig(configPath)
+{
+ const path = configPath || defaultConfigPath;
+
+ if (configPath && !fs.existsSync(path))
+ {
+ createConfig(defaultConfig, path);
+ }
+
+ try
+ {
+ this.loadedConfig = JSON.parse(fs.readFileSync(path));
+ }
+
+ catch (err)
+ {
+ console.log(err);
+ }
+}
+
+module.exports = { loadConfig, defaultConfigPath, loadedConfig, createConfig }; \ No newline at end of file
diff --git a/server/js/paths.js b/server/js/paths.js
new file mode 100644
index 0000000..003d9c0
--- /dev/null
+++ b/server/js/paths.js
@@ -0,0 +1,46 @@
+"use strict";
+
+const fs = require('fs');
+const path = require('path');
+const os = require('os');
+
+function ensureFolder(folder)
+{
+ try
+ {
+ if (!fs.existsSync(folder))
+ {
+ fs.mkdirSync(folder, { recursive: true });
+ }
+ }
+
+ catch (err)
+ {
+ console.log(err);
+ }
+
+ return folder;
+}
+
+const envPaths = {
+ 'linux': function () {
+ return {
+ HOME: os.homedir(),
+ DATA: process.env.XDG_DATA_HOME || ensureFolder(path.join(os.homedir(), '.local', 'share')),
+ CONFIG: process.env.XDG_CONFIG_HOME || ensureFolder(path.join(os.homedir(), '.config')),
+ CACHE: process.env.XDG_CACHE_HOME || ensureFolder(path.join(os.homedir(), '.cache'))
+ }
+ },
+
+ 'win32': function () {
+ return {
+ HOME: os.homedir(),
+ DATA: process.env.APPDATA || ensureFolder(path.join(os.homedir(), 'AppData', 'Roaming')),
+ CONFIG: process.env.APPDATA || ensureFolder(path.join(os.homedir(), 'AppData', 'Roaming')),
+ CACHE: process.env.TEMP || process.env.TMP || path.join(process.env.LOCALAPPDATA, 'Temp') || ensureFolder(path.join(os.homedir(), 'AppData', 'Local', 'Temp'))
+ }
+ }
+
+} [os.platform()]();
+
+module.exports = {ensureFolder, envPaths}; \ No newline at end of file