diff --git a/Base/etc/SystemServer.ini b/Base/etc/SystemServer.ini index 7a7909b580..5f0afb4707 100644 --- a/Base/etc/SystemServer.ini +++ b/Base/etc/SystemServer.ini @@ -8,15 +8,6 @@ SystemModes=text,graphical MultiInstance=true AcceptSocketConnections=true -[WebContent] -Socket=/tmp/portal/webcontent -SocketPermissions=600 -Lazy=true -User=anon -SystemModes=graphical -MultiInstance=true -AcceptSocketConnections=true - [ImageDecoder] Socket=/tmp/portal/image SocketPermissions=600 diff --git a/Base/home/anon/.config/SystemServer.ini b/Base/home/anon/.config/SystemServer.ini index e18d5c0bb2..abab78ce31 100644 --- a/Base/home/anon/.config/SystemServer.ini +++ b/Base/home/anon/.config/SystemServer.ini @@ -11,6 +11,14 @@ SystemModes=text,graphical MultiInstance=true AcceptSocketConnections=true +[WebContent] +Socket=/tmp/user/%uid/portal/webcontent +SocketPermissions=600 +Lazy=true +SystemModes=graphical +MultiInstance=true +AcceptSocketConnections=true + [LaunchServer] Socket=/tmp/user/%uid/portal/launch SocketPermissions=600 diff --git a/Documentation/Browser/ProcessArchitecture.md b/Documentation/Browser/ProcessArchitecture.md index 0dc17d4e89..ea065f8304 100644 --- a/Documentation/Browser/ProcessArchitecture.md +++ b/Documentation/Browser/ProcessArchitecture.md @@ -30,9 +30,13 @@ This process can decode images (PNG, JPEG, BMP, ICO, PBM, etc.) into bitmaps. Ea ### How processes are spawned -To get a fresh **WebContent** process, anyone with the suitable file system permissions can spawn one by connecting to the socket at `/tmp/portal/webcontent`. This socket is managed by **SystemServer** and will spawn a new instance of **WebContent** for every connection. +To get a fresh **WebContent** process, anyone with the suitable file system permissions can spawn one by connecting to +the socket at `/tmp/user/%uid/portal/webcontent`, with `%uid` being the uid of the current user. This socket is managed +by ** +SystemServer** and will spawn a new instance of **WebContent** for every connection. -The same basic concept applies to **RequestServer** and **ImageDecoder** as well, except that those services are spawned by **WebContent** as needed, not by **Browser**. +The same basic concept applies to **RequestServer** and **ImageDecoder** as well, except that those services are spawned +by **WebContent** as needed, not by **Browser**. ## Class overview diff --git a/Userland/Applications/Browser/main.cpp b/Userland/Applications/Browser/main.cpp index 530a43512b..2af157d710 100644 --- a/Userland/Applications/Browser/main.cpp +++ b/Userland/Applications/Browser/main.cpp @@ -86,7 +86,7 @@ ErrorOr serenity_main(Main::Arguments arguments) TRY(Core::System::unveil("/etc/timezone", "r")); TRY(Core::System::unveil("/tmp/portal/filesystemaccess", "rw")); TRY(Core::System::unveil("/tmp/portal/image", "rw")); - TRY(Core::System::unveil("/tmp/portal/webcontent", "rw")); + TRY(Core::System::unveil("/tmp/user/%uid/portal/webcontent", "rw")); TRY(Core::System::unveil("/tmp/user/%uid/portal/request", "rw")); TRY(Core::System::unveil("/bin/BrowserSettings", "x")); TRY(Core::System::unveil(nullptr, nullptr)); diff --git a/Userland/Applications/Help/main.cpp b/Userland/Applications/Help/main.cpp index a07460aebd..26ae9de146 100644 --- a/Userland/Applications/Help/main.cpp +++ b/Userland/Applications/Help/main.cpp @@ -35,7 +35,7 @@ ErrorOr serenity_main(Main::Arguments arguments) TRY(Core::System::unveil("/usr/share/man", "r")); TRY(Core::System::unveil("/tmp/portal/filesystemaccess", "rw")); TRY(Core::System::unveil("/tmp/user/%uid/portal/launch", "rw")); - TRY(Core::System::unveil("/tmp/portal/webcontent", "rw")); + TRY(Core::System::unveil("/tmp/user/%uid/portal/webcontent", "rw")); TRY(Core::System::unveil(nullptr, nullptr)); String start_page; diff --git a/Userland/Applications/Mail/main.cpp b/Userland/Applications/Mail/main.cpp index a517003884..7970ad6137 100644 --- a/Userland/Applications/Mail/main.cpp +++ b/Userland/Applications/Mail/main.cpp @@ -26,7 +26,7 @@ ErrorOr serenity_main(Main::Arguments arguments) TRY(Core::System::unveil("/res", "r")); TRY(Core::System::unveil("/etc", "r")); - TRY(Core::System::unveil("/tmp/portal/webcontent", "rw")); + TRY(Core::System::unveil("/tmp/user/%uid/portal/webcontent", "rw")); TRY(Core::System::unveil("/tmp/portal/lookup", "rw")); TRY(Core::System::unveil("/tmp/user/%uid/portal/launch", "rw")); TRY(Core::System::unveil(nullptr, nullptr)); diff --git a/Userland/Applications/Spreadsheet/main.cpp b/Userland/Applications/Spreadsheet/main.cpp index 24bf243667..7b523f1aed 100644 --- a/Userland/Applications/Spreadsheet/main.cpp +++ b/Userland/Applications/Spreadsheet/main.cpp @@ -44,7 +44,7 @@ ErrorOr serenity_main(Main::Arguments arguments) } } - TRY(Core::System::unveil("/tmp/portal/webcontent", "rw")); + TRY(Core::System::unveil("/tmp/user/%uid/portal/webcontent", "rw")); // For writing temporary files when exporting. TRY(Core::System::unveil("/tmp", "crw")); TRY(Core::System::unveil("/etc", "r")); diff --git a/Userland/Applications/TextEditor/main.cpp b/Userland/Applications/TextEditor/main.cpp index 2186bd9533..e8e56d6074 100644 --- a/Userland/Applications/TextEditor/main.cpp +++ b/Userland/Applications/TextEditor/main.cpp @@ -33,7 +33,7 @@ ErrorOr serenity_main(Main::Arguments arguments) TRY(Core::System::unveil("/res", "r")); TRY(Core::System::unveil("/tmp/user/%uid/portal/launch", "rw")); - TRY(Core::System::unveil("/tmp/portal/webcontent", "rw")); + TRY(Core::System::unveil("/tmp/user/%uid/portal/webcontent", "rw")); TRY(Core::System::unveil("/tmp/portal/filesystemaccess", "rw")); TRY(Core::System::unveil(nullptr, nullptr)); diff --git a/Userland/Applications/Welcome/main.cpp b/Userland/Applications/Welcome/main.cpp index 94f3c1a7c4..1f11ab127f 100644 --- a/Userland/Applications/Welcome/main.cpp +++ b/Userland/Applications/Welcome/main.cpp @@ -22,7 +22,7 @@ ErrorOr serenity_main(Main::Arguments arguments) TRY(Core::System::unveil("/res", "r")); TRY(Core::System::unveil("/home", "r")); - TRY(Core::System::unveil("/tmp/portal/webcontent", "rw")); + TRY(Core::System::unveil("/tmp/user/%uid/portal/webcontent", "rw")); TRY(Core::System::unveil("/bin/Help", "x")); TRY(Core::System::unveil(nullptr, nullptr)); auto app_icon = GUI::Icon::default_icon("app-welcome"sv); diff --git a/Userland/Libraries/LibWebView/WebContentClient.h b/Userland/Libraries/LibWebView/WebContentClient.h index ecb722f3cd..b305a75ed9 100644 --- a/Userland/Libraries/LibWebView/WebContentClient.h +++ b/Userland/Libraries/LibWebView/WebContentClient.h @@ -19,7 +19,7 @@ class OutOfProcessWebView; class WebContentClient final : public IPC::ConnectionToServer , public WebContentClientEndpoint { - IPC_CLIENT_CONNECTION(WebContentClient, "/tmp/portal/webcontent"sv); + IPC_CLIENT_CONNECTION(WebContentClient, "/tmp/user/%uid/portal/webcontent"sv); public: Function on_web_content_process_crash;