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:
parent
7618ac7810
commit
648c78ad87
7
Makefile
7
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)
|
||||
|
3
debian/control
vendored
3
debian/control
vendored
@ -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,
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -1,2 +1 @@
|
||||
remove-systemd-socket-activation.patch
|
||||
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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user