diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/js/config.js | 57 | ||||
-rw-r--r-- | server/js/paths.js | 46 |
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 |