5
0
mirror of git://git.proxmox.com/git/vncterm.git synced 2024-12-21 17:33:50 +03:00

build: rebase on libvncserver 0.9.13

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 <f.gruenbichler@proxmox.com>
This commit is contained in:
Fabian Grünbichler 2020-07-14 13:28:37 +02:00 committed by Thomas Lamprecht
parent 7618ac7810
commit 648c78ad87
5 changed files with 25 additions and 254 deletions

View File

@ -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)

3
debian/control vendored
View File

@ -1,6 +1,7 @@
Source: vncterm
Maintainer: Proxmox Support Team <support@proxmox.com>
Build-Depends: debhelper (>= 10~),
Build-Depends: cmake,
debhelper (>= 10~),
libglib2.0-dev,
libgnutls28-dev,
libjpeg62-turbo-dev,

View File

@ -1,227 +0,0 @@
commit 25e3dfeab75b6febdb6c1157e991c3bcbeb3eb86
Author: Fabian Grünbichler <f.gruenbichler@proxmox.com>
AuthorDate: Thu Feb 2 11:22:35 2017 +0100
Commit: Fabian Grünbichler <f.gruenbichler@proxmox.com>
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 <systemd/sd-daemon.h>
-#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;
}

View File

@ -1,2 +1 @@
remove-systemd-socket-activation.patch
tls-auth-pluging.patch

View File

@ -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;