History

added QML + C++ system for whitelists

Kasen IO committed 6 years ago

Commit 2e36c401 parent 69769394 files · +152 −2Browse files

Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 4 files). Show all

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+27−2
@@ -84,6 +84,11 @@ · 83 unmodified lines
84#include "../../midi/src/Midi.h" // FIXME why won't a simpler include work?84#include "../../midi/src/Midi.h" // FIXME why won't a simpler include work?
85#include "MIDIEvent.h"85#include "MIDIEvent.h"
86 86
87#include "SettingHandle.h"
88// #include "SettingManager.h"
89// #include "SettingInterface.h"
90// #include "SettingHelpers.h"
91
87const QString ScriptEngine::_SETTINGS_ENABLE_EXTENDED_EXCEPTIONS {92const QString ScriptEngine::_SETTINGS_ENABLE_EXTENDED_EXCEPTIONS {
88 "com.highfidelity.experimental.enableExtendedJSExceptions"93 "com.highfidelity.experimental.enableExtendedJSExceptions"
89};94};
@@ -2362,10 +2367,30 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co · 2272 unmodified lines
2362 QList<QString> safeURLS = { "https://FAKEURL.t43wt4g4g44FAKE" };2367 QList<QString> safeURLS = { "https://FAKEURL.t43wt4g4g44FAKE" };
2363 safeURLS += qEnvironmentVariable("EXTRA_WHITELIST").split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts);2368 safeURLS += qEnvironmentVariable("EXTRA_WHITELIST").split(QRegExp("\\s*,\\s*"), QString::SkipEmptyParts);
2364 2369
2370 // PULL SAFEURLS FROM INTERFACE.JSON Settings
2371
2372 QVariant raw = Setting::Handle<QVariant>("private/settingsSafeURLS").get();
2373 // qDebug() << "raw value" << raw;
2374 // qDebug() << "raw value as list" << raw.toList();
2375 QStringList settingsSafeURLS = raw.toString().split(QRegExp("[\r\n]+"));
2376 safeURLS += settingsSafeURLS;
2377
2378 // QVariantList settingsSafeURLS = Setting::Handle<QVariantList>("private/settingsSafeURLS").get();
2379 // qCDebug(scriptengine) << "ESWsafeURLS" << safeURLS;
2380
2381 // for (QVariantList::iterator surl = settingsSafeURLS.begin(); surl != settingsSafeURLS.end(); surl++)
2382 // {
2383 // safeURLS += (*surl).toString();
2384 // }
2385
2386 // for (const auto& s : settingsSafeURLS) safeURLS << s.toString();
2387
2388 // END PULL SAFEURLS FROM INTERFACE.JSON Settings
2389
2365 bool isInWhitelist = false; // assume unsafe2390 bool isInWhitelist = false; // assume unsafe
2366 for (const auto& str : safeURLS) {2391 for (const auto& str : safeURLS) {
2367 // qDebug() << "CHECKING" << entityID.toString() << scriptOrURL << "AGAINST" << str;2392 // qDebug() << "CHECKING" << entityID.toString() << scriptOrURL << "AGAINST" << str;
2368 qDebug() << "SCRIPTOURL STARTSWITH" << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN"2393 qCDebug(scriptengine) << "SCRIPT URL STARTSWITH" << scriptOrURL << "TESTING AGAINST" << str << "RESULTS IN"
2369 << scriptOrURL.startsWith(str);2394 << scriptOrURL.startsWith(str);
2370 if (scriptOrURL.startsWith(str)) {2395 if (scriptOrURL.startsWith(str)) {
2371 isInWhitelist = true;2396 isInWhitelist = true;
@@ -2373,7 +2398,7 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co · 1 unmodified line
2373 }2398 }
2374 }2399 }
2375 if (!isInWhitelist) {2400 if (!isInWhitelist) {
2376 qDebug() << "(disabled entity script)" << entityID.toString() << scriptOrURL;2401 qCDebug(scriptengine) << "(disabled entity script)" << entityID.toString() << scriptOrURL;
2377 exception = makeError("UNSAFE_ENTITY_SCRIPTS == 0");2402 exception = makeError("UNSAFE_ENTITY_SCRIPTS == 0");
2378 } else {2403 } else {
2379 QTimer timeout;2404 QTimer timeout;