Files
Media-Aggregation-and-Sorti…/ServerFiles/config.js
T

57 lines
1.6 KiB
JavaScript

const path = require('path');
const fs = require('fs');
const CONFIG_DIR = path.join(__dirname, '.config');
const PHOTOS_PATH_FILE = path.join(__dirname, 'nas_config.txt');
const DB_PATH = path.join(CONFIG_DIR, 'nas.db');
const PASSWORD_FILE = path.join(CONFIG_DIR, '.credentials');
const DEFAULT_PORT = 9500;
function ensureConfigDir() {
if (!fs.existsSync(CONFIG_DIR)) {
fs.mkdirSync(CONFIG_DIR, { recursive: true });
}
}
function getPhotosPath() {
if (!fs.existsSync(PHOTOS_PATH_FILE)) return null;
let raw = fs.readFileSync(PHOTOS_PATH_FILE, 'utf-8');
// Strip UTF-8 BOM
raw = raw.replace(/^\uFEFF/, '');
// Strip ALL control characters (CR, LF, null, tabs, zero-width spaces, etc.)
// except forward-slash and backslash which are path separators
raw = raw.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F\r\n]/g, '');
// Strip zero-width / non-breaking unicode junk that can sneak in from copy-paste
raw = raw.replace(/[\u200B\u200C\u200D\uFEFF\u00A0]/g, '');
raw = raw.trim();
// Take only the first line in case there are multiple lines
raw = raw.split('\n')[0].trim();
if (!raw) return null;
// Return the path exactly as written — do NOT use path.resolve()
// because it mangles Linux paths on Windows and vice versa
return raw;
}
function setPhotosPath(p) {
// Clean and write as plain UTF-8 with unix line ending, no BOM
const clean = p.replace(/[\r\n\x00]/g, '').trim();
fs.writeFileSync(PHOTOS_PATH_FILE, clean, 'utf-8');
}
module.exports = {
CONFIG_DIR,
PHOTOS_PATH_FILE,
DB_PATH,
PASSWORD_FILE,
DEFAULT_PORT,
ensureConfigDir,
getPhotosPath,
setPhotosPath,
};