From 648c78ad8794fb14c840333ccc5726c12d661f3c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fabian=20Gr=C3=BCnbichler?= Date: Tue, 14 Jul 2020 13:28:37 +0200 Subject: [PATCH] build: rebase on libvncserver 0.9.13 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit upstream switched to cmake from autotools. it is possible to drop systemd via a build option now, so use that instead of patching. Signed-off-by: Fabian Grünbichler --- Makefile | 7 +- debian/control | 3 +- .../remove-systemd-socket-activation.patch | 227 ------------------ vncpatches/series | 1 - vncpatches/tls-auth-pluging.patch | 41 ++-- 5 files changed, 25 insertions(+), 254 deletions(-) delete mode 100644 vncpatches/remove-systemd-socket-activation.patch diff --git a/Makefile b/Makefile index a84205e..8f8611f 100644 --- a/Makefile +++ b/Makefile @@ -4,11 +4,11 @@ include /usr/share/dpkg/architecture.mk PACKAGE=vncterm GITVERSION:=$(shell cat .git/refs/heads/master) -VNCVER=0.9.11 +VNCVER=0.9.13 VNCREL=LibVNCServer-${VNCVER} VNCDIR=libvncserver-${VNCREL} VNCSRC=${VNCREL}.tar.gz -VNCLIB=${VNCDIR}/libvncserver/.libs/libvncserver.a +VNCLIB=${VNCDIR}/libvncserver.a DEB=${PACKAGE}_${DEB_VERSION_UPSTREAM_REVISION}_${DEB_BUILD_ARCH}.deb @@ -32,8 +32,7 @@ ${VNCLIB}: ${VNCSRC} tar xf ${VNCSRC} ln -s ../vncpatches ${VNCDIR}/patches cd ${VNCDIR}; quilt push -a - cd ${VNCDIR}; ./autogen.sh --without-ssl --without-websockets --without-tightvnc-filetransfer; - cd ${VNCDIR}; $(MAKE) + cd ${VNCDIR}; cmake -D WITH_GNUTLS=OFF -D WITH_OPENSSL=OFF -D WITH_WEBSOCKETS=OFF -D WITH_SYSTEMD=OFF -D WITH_TIGHTVNC_FILETRANSFER=OFF -D WITH_GCRYPT=OFF -D WITH_LZO=OFF -D BUILD_SHARED_LIBS=OFF .; cmake --build . vncterm: vncterm.c wchardata.c $(VNCLIB) $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $^ $(VNC_LIBS) diff --git a/debian/control b/debian/control index 89c0f5d..cb6c7b2 100644 --- a/debian/control +++ b/debian/control @@ -1,6 +1,7 @@ Source: vncterm Maintainer: Proxmox Support Team -Build-Depends: debhelper (>= 10~), +Build-Depends: cmake, + debhelper (>= 10~), libglib2.0-dev, libgnutls28-dev, libjpeg62-turbo-dev, diff --git a/vncpatches/remove-systemd-socket-activation.patch b/vncpatches/remove-systemd-socket-activation.patch deleted file mode 100644 index f190b94..0000000 --- a/vncpatches/remove-systemd-socket-activation.patch +++ /dev/null @@ -1,227 +0,0 @@ -commit 25e3dfeab75b6febdb6c1157e991c3bcbeb3eb86 -Author: Fabian Grünbichler -AuthorDate: Thu Feb 2 11:22:35 2017 +0100 -Commit: Fabian Grünbichler -CommitDate: Thu Feb 2 11:22:35 2017 +0100 - - Revert "Support systemd socket activation" - - unneeded extra build dep - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 9424d8d..4c56635 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -36,7 +36,6 @@ find_package(GnuTLS) - find_package(Threads) - find_package(X11) - find_package(OpenSSL) --find_package(PkgConfig) - find_library(LIBGCRYPT_LIBRARIES gcrypt) - - # Check whether the version of libjpeg we found was libjpeg-turbo and print a -@@ -103,17 +102,6 @@ if(PNG_FOUND) - endif(PNG_FOUND) - option(LIBVNCSERVER_ALLOW24BPP "Allow 24 bpp" ON) - --pkg_check_modules(SYSTEMD "libsystemd") --if(SYSTEMD_FOUND) -- option(LIBVNCSERVER_WITH_SYSTEMD "Build with systemd socket activation support" ON) --endif(SYSTEMD_FOUND) -- --if(LIBVNCSERVER_WITH_SYSTEMD) -- add_definitions(-DLIBVNCSERVER_WITH_SYSTEMD) -- include_directories(${SYSTEMD_INCLUDE_DIRS}) -- set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} ${SYSTEMD_LIBRARIES}) --endif(LIBVNCSERVER_WITH_SYSTEMD) -- - if(GNUTLS_FOUND) - set(LIBVNCSERVER_WITH_CLIENT_TLS 1) - option(LIBVNCSERVER_WITH_WEBSOCKETS "Build with websockets support (gnutls)" ON) -diff --git a/configure.ac b/configure.ac -index f13edb4..3f4b29a 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -68,9 +68,6 @@ if test ! -z "$with_ffmpeg"; then - fi - AM_CONDITIONAL(HAVE_MP3LAME, test "$HAVE_MP3LAME" = "true") - --PKG_CHECK_MODULES([LIBSYSTEMD], [libsystemd], [with_systemd=1], [with_systemd=0]) --AM_CONDITIONAL([WITH_SYSTEMD], [test $with_systemd -eq 1]) -- - # Seem to need this dummy here to induce the 'checking for egrep... grep -E', etc. - # before it seemed to be inside the with_jpeg conditional. - AC_CHECK_HEADER(thenonexistentheader.h, HAVE_THENONEXISTENTHEADER_H="true") -diff --git a/libvncserver/Makefile.am b/libvncserver/Makefile.am -index e25784b..2f23e31 100644 ---- a/libvncserver/Makefile.am -+++ b/libvncserver/Makefile.am -@@ -59,12 +59,6 @@ LIB_SRCS = main.c rfbserver.c rfbregion.c auth.c sockets.c $(WEBSOCKETSSRCS) \ - libvncserver_la_SOURCES=$(LIB_SRCS) - libvncserver_la_LIBADD=$(WEBSOCKETSSSLLIBS) - --if WITH_SYSTEMD --AM_CPPFLAGS += -DLIBVNCSERVER_WITH_SYSTEMD --libvncserver_la_CFLAGS = $(LIBSYSTEMD_CFLAGS) --libvncserver_la_LIBADD += $(LIBSYSTEMD_LIBS) --endif -- - lib_LTLIBRARIES=libvncserver.la - libvncserver_la_LDFLAGS = -version-info 1:0:0 - -diff --git a/libvncserver/sockets.c b/libvncserver/sockets.c -index bbc3d90..6467b1c 100644 ---- a/libvncserver/sockets.c -+++ b/libvncserver/sockets.c -@@ -77,10 +77,6 @@ - #include "rfbssl.h" - #endif - --#ifdef LIBVNCSERVER_WITH_SYSTEMD --#include --#endif -- - #if defined(__linux__) && defined(NEED_TIMEVAL) - struct timeval - { -@@ -126,54 +122,6 @@ int deny_severity=LOG_WARNING; - int rfbMaxClientWait = 20000; /* time (ms) after which we decide client has - gone away - needed to stop us hanging */ - --static rfbBool --rfbNewConnectionFromSock(rfbScreenInfoPtr rfbScreen, int sock) --{ -- const int one = 1; --#ifdef LIBVNCSERVER_IPv6 -- struct sockaddr_storage addr; --#else -- struct sockaddr_in addr; --#endif -- socklen_t addrlen = sizeof(addr); -- -- getpeername(sock, (struct sockaddr *)&addr, &addrlen); -- -- if(!rfbSetNonBlocking(sock)) { -- rfbLogPerror("rfbCheckFds: setnonblock"); -- closesocket(sock); -- return FALSE; -- } -- -- if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, -- (char *)&one, sizeof(one)) < 0) { -- rfbLogPerror("rfbCheckFds: setsockopt failed: can't set TCP_NODELAY flag, non TCP socket?"); -- } -- --#ifdef USE_LIBWRAP -- if(!hosts_ctl("vnc",STRING_UNKNOWN,inet_ntoa(addr.sin_addr), -- STRING_UNKNOWN)) { -- rfbLog("Rejected connection from client %s\n", -- inet_ntoa(addr.sin_addr)); -- closesocket(sock); -- return FALSE; -- } --#endif -- --#ifdef LIBVNCSERVER_IPv6 -- char host[1024]; -- if(getnameinfo((struct sockaddr*)&addr, addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST) != 0) { -- rfbLogPerror("rfbProcessNewConnection: error in getnameinfo"); -- } -- rfbLog("Got connection from client %s\n", host); --#else -- rfbLog("Got connection from client %s\n", inet_ntoa(addr.sin_addr)); --#endif -- -- rfbNewClient(rfbScreen,sock); -- return TRUE; --} -- - /* - * rfbInitSockets sets up the TCP and UDP sockets to listen for RFB - * connections. It does nothing if called again. -@@ -190,20 +138,6 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen) - - rfbScreen->socketState = RFB_SOCKET_READY; - --#ifdef LIBVNCSERVER_WITH_SYSTEMD -- if (sd_listen_fds(0) == 1) -- { -- int sock = SD_LISTEN_FDS_START + 0; -- if (sd_is_socket(sock, AF_UNSPEC, 0, 0)) -- rfbNewConnectionFromSock(rfbScreen, sock); -- else if (sd_is_socket(sock, AF_UNSPEC, 0, 1)) -- rfbProcessNewConnection(rfbScreen); -- return; -- } -- else -- rfbLog("Unable to establish connection with systemd socket\n"); --#endif -- - if (rfbScreen->inetdSock != -1) { - const int one = 1; - -@@ -479,7 +413,14 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec) - rfbBool - rfbProcessNewConnection(rfbScreenInfoPtr rfbScreen) - { -+ const int one = 1; - int sock = -1; -+#ifdef LIBVNCSERVER_IPv6 -+ struct sockaddr_storage addr; -+#else -+ struct sockaddr_in addr; -+#endif -+ socklen_t addrlen = sizeof(addr); - fd_set listen_fds; - int chosen_listen_sock = -1; - -@@ -500,12 +441,47 @@ rfbProcessNewConnection(rfbScreenInfoPtr rfbScreen) - if (rfbScreen->listen6Sock >= 0 && FD_ISSET(rfbScreen->listen6Sock, &listen_fds)) - chosen_listen_sock = rfbScreen->listen6Sock; - -- if ((sock = accept(chosen_listen_sock, NULL, NULL)) < 0) { -+ if ((sock = accept(chosen_listen_sock, -+ (struct sockaddr *)&addr, &addrlen)) < 0) { - rfbLogPerror("rfbCheckFds: accept"); - return FALSE; - } - -- return rfbNewConnectionFromSock(rfbScreen, sock); -+ if(!rfbSetNonBlocking(sock)) { -+ closesocket(sock); -+ return FALSE; -+ } -+ -+ if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, -+ (char *)&one, sizeof(one)) < 0) { -+ rfbLogPerror("rfbCheckFds: setsockopt failed: can't set TCP_NODELAY flag, non TCP socket?"); -+ } -+ -+#ifdef USE_LIBWRAP -+ if(!hosts_ctl("vnc",STRING_UNKNOWN,inet_ntoa(addr.sin_addr), -+ STRING_UNKNOWN)) { -+ rfbLog("Rejected connection from client %s\n", -+ inet_ntoa(addr.sin_addr)); -+ closesocket(sock); -+ return FALSE; -+ } -+#endif -+ -+#ifdef LIBVNCSERVER_IPv6 -+ { -+ char host[1024]; -+ if(getnameinfo((struct sockaddr*)&addr, addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST) != 0) { -+ rfbLogPerror("rfbProcessNewConnection: error in getnameinfo"); -+ } -+ rfbLog("Got connection from client %s\n", host); -+ } -+#else -+ rfbLog("Got connection from client %s\n", inet_ntoa(addr.sin_addr)); -+#endif -+ -+ rfbNewClient(rfbScreen,sock); -+ -+ return TRUE; - } - - diff --git a/vncpatches/series b/vncpatches/series index defbfe8..2fb1c30 100644 --- a/vncpatches/series +++ b/vncpatches/series @@ -1,2 +1 @@ -remove-systemd-socket-activation.patch tls-auth-pluging.patch diff --git a/vncpatches/tls-auth-pluging.patch b/vncpatches/tls-auth-pluging.patch index 17a8c47..837612f 100644 --- a/vncpatches/tls-auth-pluging.patch +++ b/vncpatches/tls-auth-pluging.patch @@ -1,23 +1,22 @@ -Index: vnc/libvncserver/auth.c +Index: libvncserver-LibVNCServer-0.9.13/libvncserver/auth.c =================================================================== -@@ -300,8 +300,9 @@ - int32_t securityType = rfbSecTypeInvalid; +--- libvncserver-LibVNCServer-0.9.13.orig/libvncserver/auth.c ++++ libvncserver-LibVNCServer-0.9.13/libvncserver/auth.c +@@ -301,7 +301,8 @@ rfbAuthNewClient(rfbClientPtr cl) if (!cl->screen->authPasswdData || cl->reverseConnection) { -- /* chk if this condition is valid or not. */ + /* chk if this condition is valid or not. */ - securityType = rfbSecTypeNone; -+ /* chk if this condition is valid or not. */ + /* we disable anonymous auth */ + // securityType = rfbSecTypeNone; } else if (cl->screen->authPasswdData) { securityType = rfbSecTypeVncAuth; } -Index: vnc/newterm/Makefile.am -Index: vnc/libvncserver/sockets.c +Index: libvncserver-LibVNCServer-0.9.13/libvncserver/sockets.c =================================================================== ---- vnc.orig/libvncserver/sockets.c 2011-01-20 16:42:41.000000000 +0100 -+++ vnc/libvncserver/sockets.c 2011-01-21 10:20:03.000000000 +0100 -@@ -613,7 +613,11 @@ rfbReadExactTimeout(rfbClientPtr cl, char* buf, int len, int timeout) +--- libvncserver-LibVNCServer-0.9.13.orig/libvncserver/sockets.c ++++ libvncserver-LibVNCServer-0.9.13/libvncserver/sockets.c +@@ -638,7 +638,11 @@ rfbReadExactTimeout(rfbClientPtr cl, cha n = read(sock, buf, len); } #else @@ -30,7 +29,7 @@ Index: vnc/libvncserver/sockets.c #endif if (n > 0) { -@@ -801,7 +805,11 @@ rfbWriteExact(rfbClientPtr cl, +@@ -826,7 +830,11 @@ rfbWriteExact(rfbClientPtr cl, n = rfbssl_write(cl, buf, len); else #endif @@ -42,21 +41,21 @@ Index: vnc/libvncserver/sockets.c if (n > 0) { -Index: vnc/rfb/rfb.h +Index: libvncserver-LibVNCServer-0.9.13/rfb/rfb.h =================================================================== ---- vnc.orig/rfb/rfb.h 2011-01-20 16:36:06.000000000 +0100 -+++ vnc/rfb/rfb.h 2011-01-21 06:44:22.000000000 +0100 -@@ -397,6 +397,9 @@ - struct _rfbStatList *Next; - } rfbStatList; +--- libvncserver-LibVNCServer-0.9.13.orig/rfb/rfb.h ++++ libvncserver-LibVNCServer-0.9.13/rfb/rfb.h +@@ -411,6 +411,9 @@ typedef struct _rfbStatList { + typedef struct _rfbSslCtx rfbSslCtx; + typedef struct _wsCtx wsCtx; +typedef ssize_t (*sock_read_fn_t)(struct _rfbClientRec *cl, void *buf, size_t count); +typedef ssize_t (*sock_write_fn_t)(struct _rfbClientRec *cl, const void *buf, size_t count); + typedef struct _rfbClientRec { - - /* back pointer to the screen */ -@@ -417,6 +420,10 @@ + + /** back pointer to the screen */ +@@ -431,6 +434,10 @@ typedef struct _rfbClientRec { void* clientData; ClientGoneHookPtr clientGoneHook; @@ -64,6 +63,6 @@ Index: vnc/rfb/rfb.h + sock_read_fn_t sock_read_fn; + sock_read_fn_t sock_write_fn; + - SOCKET sock; + rfbSocket sock; char *host; -- 2.39.2