diff --git a/.gitmodules b/.gitmodules index a57ba67..e43a13a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "kasmweb"] path = kasmweb url = https://github.com/kasmtech/noVNC.git - branch = apistats + branch = master diff --git a/builder/dockerfile.centos_core.build b/builder/dockerfile.centos_core.build index 06dad21..4574075 100644 --- a/builder/dockerfile.centos_core.build +++ b/builder/dockerfile.centos_core.build @@ -22,8 +22,7 @@ RUN cd /tmp/libwebp-1.0.2 && \ RUN useradd -m docker && echo "docker:docker" | chpasswd -COPY . /src -RUN chown -R docker:docker /src +COPY --chown=docker:docker . /src/ USER docker ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.debian_bullseye.build b/builder/dockerfile.debian_bullseye.build index 3c19f4c..0a8428e 100644 --- a/builder/dockerfile.debian_bullseye.build +++ b/builder/dockerfile.debian_bullseye.build @@ -24,8 +24,7 @@ RUN cd /tmp/libwebp-1.0.2 && \ RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo -COPY . /src -RUN chown -R docker:docker /src +COPY --chown=docker:docker . /src/ USER docker ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.debian_buster.build b/builder/dockerfile.debian_buster.build index 721b1a6..a47b6fe 100644 --- a/builder/dockerfile.debian_buster.build +++ b/builder/dockerfile.debian_buster.build @@ -24,8 +24,7 @@ RUN cd /tmp/libwebp-1.0.2 && \ RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo -COPY . /src -RUN chown -R docker:docker /src +COPY --chown=docker:docker . /src/ USER docker ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.fedora_thirtythree.build b/builder/dockerfile.fedora_thirtythree.build index be70715..8dc4b29 100644 --- a/builder/dockerfile.fedora_thirtythree.build +++ b/builder/dockerfile.fedora_thirtythree.build @@ -31,8 +31,7 @@ RUN cd /tmp/libwebp-1.0.2 && \ RUN useradd -m docker && echo "docker:docker" | chpasswd -COPY . /src -RUN chown -R docker:docker /src +COPY --chown=docker:docker . /src/ USER docker ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.kali_kali-rolling.build b/builder/dockerfile.kali_kali-rolling.build index 6087895..9705e42 100644 --- a/builder/dockerfile.kali_kali-rolling.build +++ b/builder/dockerfile.kali_kali-rolling.build @@ -24,8 +24,7 @@ RUN cd /tmp/libwebp-1.0.2 && \ RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo -COPY . /src -RUN chown -R docker:docker /src +COPY --chown=docker:docker . /src/ USER docker ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.ubuntu1604.build b/builder/dockerfile.ubuntu1604.build index a938ff8..8ca3260 100644 --- a/builder/dockerfile.ubuntu1604.build +++ b/builder/dockerfile.ubuntu1604.build @@ -14,8 +14,7 @@ RUN cd /tmp/libwebp-1.0.2 && ./configure && make && make install RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo -COPY . /src -RUN chown -R docker:docker /src +COPY --chown=docker:docker . /src/ USER docker diff --git a/builder/dockerfile.ubuntu_bionic.build b/builder/dockerfile.ubuntu_bionic.build index 8d530bd..42837ca 100644 --- a/builder/dockerfile.ubuntu_bionic.build +++ b/builder/dockerfile.ubuntu_bionic.build @@ -32,8 +32,7 @@ RUN cd /tmp/libwebp-1.0.2 && \ RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo -COPY . /src -RUN chown -R docker:docker /src +COPY --chown=docker:docker . /src/ USER docker ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.ubuntu_focal.build b/builder/dockerfile.ubuntu_focal.build index 9c52a77..d0562d1 100644 --- a/builder/dockerfile.ubuntu_focal.build +++ b/builder/dockerfile.ubuntu_focal.build @@ -24,8 +24,7 @@ RUN cd /tmp/libwebp-1.0.2 && \ RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo -COPY . /src -RUN chown -R docker:docker /src +COPY --chown=docker:docker . /src/ USER docker ENTRYPOINT ["/src/builder/build.sh"] diff --git a/common/network/TcpSocket.cxx b/common/network/TcpSocket.cxx index 141bdf7..f6f4a5a 100644 --- a/common/network/TcpSocket.cxx +++ b/common/network/TcpSocket.cxx @@ -40,6 +40,8 @@ #include #include #include +#include +#include #include "websocket.h" #include @@ -564,7 +566,7 @@ WebsocketListener::WebsocketListener(const struct sockaddr *listenaddr, if (bind(sock, &sa.u.sa, listenaddrlen) == -1) { int e = errorNumber; closesocket(sock); - throw SocketException("failed to bind socket", e); + throw SocketException("failed to bind socket, is someone else on our -websocketPort?", e); } listen(sock); // sets the internal fd @@ -574,13 +576,16 @@ WebsocketListener::WebsocketListener(const struct sockaddr *listenaddr, // internalSocket = socket(AF_UNIX, SOCK_STREAM, 0); + char sockname[32]; + sprintf(sockname, ".KasmVNCSock%u", getpid()); + struct sockaddr_un addr; addr.sun_family = AF_UNIX; - strcpy(addr.sun_path, ".KasmVNCSock"); + strcpy(addr.sun_path, sockname); addr.sun_path[0] = '\0'; if (bind(internalSocket, (struct sockaddr *) &addr, - sizeof(sa_family_t) + sizeof(".KasmVNCSock"))) { + sizeof(sa_family_t) + strlen(sockname))) { throw SocketException("failed to bind socket", errorNumber); } diff --git a/common/network/websocket.c b/common/network/websocket.c index 3d3111d..47ac11d 100644 --- a/common/network/websocket.c +++ b/common/network/websocket.c @@ -583,7 +583,7 @@ int parse_handshake(ws_ctx_t *ws_ctx, char *handshake) { headers->host[end-start] = '\0'; headers->origin[0] = '\0'; - start = strstr(handshake, "\r\nOrigin: "); + start = strcasestr(handshake, "\r\nOrigin: "); if (start) { start += 10; } else { diff --git a/common/network/websockify.c b/common/network/websockify.c index 08491c9..a97c189 100644 --- a/common/network/websockify.c +++ b/common/network/websockify.c @@ -21,6 +21,7 @@ #include #include #include +#include #include "websocket.h" /* @@ -223,9 +224,12 @@ static void do_proxy(ws_ctx_t *ws_ctx, int target) { void proxy_handler(ws_ctx_t *ws_ctx) { + char sockname[32]; + sprintf(sockname, ".KasmVNCSock%u", getpid()); + struct sockaddr_un addr; addr.sun_family = AF_UNIX; - strcpy(addr.sun_path, ".KasmVNCSock"); + strcpy(addr.sun_path, sockname); addr.sun_path[0] = '\0'; struct timeval tv; @@ -243,7 +247,7 @@ void proxy_handler(ws_ctx_t *ws_ctx) { handler_msg("connecting to VNC target\n"); if (connect(tsock, (struct sockaddr *) &addr, - sizeof(sa_family_t) + sizeof(".KasmVNCSock")) < 0) { + sizeof(sa_family_t) + strlen(sockname)) < 0) { handler_emsg("Could not connect to target: %s\n", strerror(errno)); diff --git a/common/rfb/VNCServerST.cxx b/common/rfb/VNCServerST.cxx index fd13cf3..a564021 100644 --- a/common/rfb/VNCServerST.cxx +++ b/common/rfb/VNCServerST.cxx @@ -273,6 +273,11 @@ void VNCServerST::removeSocket(network::Socket* sock) { std::list::iterator ci; for (ci = clients.begin(); ci != clients.end(); ci++) { if ((*ci)->getSock() == sock) { + + if (clipboardClient == *ci) + handleClipboardAnnounce(*ci, false); + clipboardRequestors.remove(*ci); + // - Delete the per-Socket resources delete *ci; diff --git a/kasmweb b/kasmweb index f9f5b01..ba40cac 160000 --- a/kasmweb +++ b/kasmweb @@ -1 +1 @@ -Subproject commit f9f5b01cc23f3084f83ccf15c144de130b8b3222 +Subproject commit ba40cacce068fa35fc706c41605db14c04348170