Do not hide WebSocket API when missing permission (#6186)
This commit is contained in:
+1
-1
@@ -6,7 +6,7 @@
|
|||||||
- Minor: Added cached emotes fallback when fetching from a provider fails. (#6125)
|
- Minor: Added cached emotes fallback when fetching from a provider fails. (#6125)
|
||||||
- Minor: Add an option for the reduced opacity of message history. (#6121)
|
- Minor: Add an option for the reduced opacity of message history. (#6121)
|
||||||
- Minor: Make paused chat indicator more visible, and fix its zoom behavior. (#6123)
|
- Minor: Make paused chat indicator more visible, and fix its zoom behavior. (#6123)
|
||||||
- Minor: Added WebSocket API for plugins. (#6076)
|
- Minor: Added WebSocket API for plugins. (#6076, #6186)
|
||||||
- Minor: Allow for themes to set transparent values for window background on Linux. (#6137)
|
- Minor: Allow for themes to set transparent values for window background on Linux. (#6137)
|
||||||
- Minor: Popup overlay now only draws an outline when being interacted with. (#6140)
|
- Minor: Popup overlay now only draws an outline when being interacted with. (#6140)
|
||||||
- Minor: Made filters searchable in the Settings dialog search bar. (#5890)
|
- Minor: Made filters searchable in the Settings dialog search bar. (#5890)
|
||||||
|
|||||||
@@ -221,16 +221,12 @@ void PluginController::initSol(sol::state_view &lua, Plugin *plugin)
|
|||||||
lua::api::ChannelRef::createUserType(c2);
|
lua::api::ChannelRef::createUserType(c2);
|
||||||
lua::api::HTTPResponse::createUserType(c2);
|
lua::api::HTTPResponse::createUserType(c2);
|
||||||
lua::api::HTTPRequest::createUserType(c2);
|
lua::api::HTTPRequest::createUserType(c2);
|
||||||
|
lua::api::WebSocket::createUserType(c2, plugin);
|
||||||
c2["ChannelType"] = lua::createEnumTable<Channel::Type>(lua);
|
c2["ChannelType"] = lua::createEnumTable<Channel::Type>(lua);
|
||||||
c2["HTTPMethod"] = lua::createEnumTable<NetworkRequestType>(lua);
|
c2["HTTPMethod"] = lua::createEnumTable<NetworkRequestType>(lua);
|
||||||
c2["EventType"] = lua::createEnumTable<lua::api::EventType>(lua);
|
c2["EventType"] = lua::createEnumTable<lua::api::EventType>(lua);
|
||||||
c2["LogLevel"] = lua::createEnumTable<lua::api::LogLevel>(lua);
|
c2["LogLevel"] = lua::createEnumTable<lua::api::LogLevel>(lua);
|
||||||
|
|
||||||
if (plugin->hasNetworkPermission())
|
|
||||||
{
|
|
||||||
lua::api::WebSocket::createUserType(c2, plugin);
|
|
||||||
}
|
|
||||||
|
|
||||||
sol::table io = g["io"];
|
sol::table io = g["io"];
|
||||||
io.set_function(
|
io.set_function(
|
||||||
"open", sol::overload(&lua::api::io_open, &lua::api::io_open_modeless));
|
"open", sol::overload(&lua::api::io_open, &lua::api::io_open_modeless));
|
||||||
|
|||||||
@@ -31,6 +31,11 @@ void WebSocket::createUserType(sol::table &c2, Plugin *plugin)
|
|||||||
c2.new_usertype<WebSocket>(
|
c2.new_usertype<WebSocket>(
|
||||||
"WebSocket",
|
"WebSocket",
|
||||||
sol::factories([plugin](const QString &spec, sol::variadic_args args) {
|
sol::factories([plugin](const QString &spec, sol::variadic_args args) {
|
||||||
|
if (!plugin->hasNetworkPermission())
|
||||||
|
{
|
||||||
|
throw std::runtime_error(
|
||||||
|
"Plugin does not have permission to use websockets");
|
||||||
|
}
|
||||||
QUrl url(spec);
|
QUrl url(spec);
|
||||||
if (url.scheme() != "wss" && url.scheme() != "ws")
|
if (url.scheme() != "wss" && url.scheme() != "ws")
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -786,9 +786,14 @@ TEST_F(PluginTest, testWebSocketNoPerms)
|
|||||||
configure();
|
configure();
|
||||||
|
|
||||||
bool res = lua->script(R"lua(
|
bool res = lua->script(R"lua(
|
||||||
return c2["WebSocket"] == nil
|
return c2["WebSocket"] ~= nil
|
||||||
)lua");
|
)lua");
|
||||||
ASSERT_TRUE(res);
|
ASSERT_TRUE(res);
|
||||||
|
|
||||||
|
const char *shouldThrow = R"lua(
|
||||||
|
return c2.WebSocket.new('wss://127.0.0.1:9050/echo')
|
||||||
|
)lua";
|
||||||
|
EXPECT_ANY_THROW(lua->script(shouldThrow));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(PluginTest, testWebSocketApi)
|
TEST_F(PluginTest, testWebSocketApi)
|
||||||
|
|||||||
Reference in New Issue
Block a user