diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js index 2494c8e8..13d18076 100644 --- a/zefie_wtvp_minisrv/app.js +++ b/zefie_wtvp_minisrv/app.js @@ -789,10 +789,9 @@ async function handleSocket(socket) { function integrateConfig(main, user) { Object.keys(user).forEach(function (k) { - if (typeof (user[k]) == 'object') { + if (typeof (user[k]) == 'object' && user[k] != null) { // new entry if (!main[k]) main[k] = new Array(); - // go down the rabbit hole main[k] = integrateConfig(main[k], user[k]); } else { @@ -819,33 +818,36 @@ function returnAbsolsutePath(path) { var z_title = "zefie's wtv minisrv v" + require('./package.json').version; console.log("**** Welcome to " + z_title + " ****"); -var read_config = false; - -if (fs.existsSync(__dirname + "/user_config.json")) { - try { - var minisrv_config = JSON.parse(fs.readFileSync(__dirname + "/user_config.json")); - console.log(" *** Reading user configuration..."); - read_config = true; - } - catch (e) { - console.log("Error reading user_config.json, failling back to global config", e); - } +console.log(" *** Reading global configuration..."); +try { + var minisrv_config = JSON.parse(fs.readFileSync(__dirname + "/config.json")); +} catch (e) { + throw ("ERROR: Could not read config.json", e); } - -if (fs.existsSync(__dirname + "/config.json") && !read_config) { - try { - console.log(" *** Reading global configuration..."); - var minisrv_config = JSON.parse(fs.readFileSync(__dirname + "/config.json")); - read_config = true; - } catch (e) { - console.log ("ERROR: Could not read config.json", e); - } -} - var service_vaults = new Array(); +try { + if (fs.lstatSync(__dirname + "/user_config.json")) { + console.log(" *** Reading user configuration..."); + try { + var minisrv_user_config = JSON.parse(fs.readFileSync(__dirname + "/user_config.json")); + } catch (e) { + console.log("ERROR: Could not read user_config.json", e); + var throw_me = true; + } + // file exists and we read and parsed it, but the variable is undefined + // Likely a syntax parser error that did not trip the exception check above + try { + minisrv_config = integrateConfig(minisrv_config, minisrv_user_config) + } catch (e) { + console.log("ERROR: Could not read user_config.json", e); + } + } +} catch (e) { + if (zdebug) console.log(" * Notice: Could not find user configuration (user_config.json). Using default configuration."); +} -if (!read_config) { +if (throw_me) { throw ("An error has occured while reading the configuration files."); } diff --git a/zefie_wtvp_minisrv/config.json b/zefie_wtvp_minisrv/config.json index dad23fbd..5f175b8f 100644 --- a/zefie_wtvp_minisrv/config.json +++ b/zefie_wtvp_minisrv/config.json @@ -55,16 +55,16 @@ "http": { "port": 1650, "connections": 3, - "use_external_proxy": true, - "external_proxy_is_socks": true, + "use_external_proxy": false, + "external_proxy_is_socks": false, "external_proxy_host": "127.0.0.1", "external_proxy_port": 1080 }, "https": { "port": 1650, "connections": 3, - "use_external_proxy": true, - "external_proxy_is_socks": true, + "use_external_proxy": false, + "external_proxy_is_socks": false, "external_proxy_host": "127.0.0.1", "external_proxy_port": 1080 } diff --git a/zefie_wtvp_minisrv/user_config.example.json b/zefie_wtvp_minisrv/user_config.example.json new file mode 100644 index 00000000..b6e9f49a --- /dev/null +++ b/zefie_wtvp_minisrv/user_config.example.json @@ -0,0 +1,26 @@ +{ + "config": { + "service_ip": "192.168.11.8", + "service_name": "MyWebTV", + "send_tellyscripts": true, + "hide_ssid_in_logs": true, + "verbosity": 0 + }, + "services": { + "wtv-log": { + "write_logs_to_disk": true + }, + "wtv-some-custom-service": { + "port": 1609, + "connections": 1 + }, + "wtv-tricks": { + "service_ip": "192.168.11.8", + "port": 1702, + "nobind": true + }, + "wtv-music": { + "disabled": true + } + } +} \ No newline at end of file