mirror of
git://git.proxmox.com/git/vncterm.git
synced 2025-03-11 04:58:20 +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
|
PACKAGE=vncterm
|
||||||
GITVERSION:=$(shell cat .git/refs/heads/master)
|
GITVERSION:=$(shell cat .git/refs/heads/master)
|
||||||
|
|
||||||
VNCVER=0.9.11
|
VNCVER=0.9.13
|
||||||
VNCREL=LibVNCServer-${VNCVER}
|
VNCREL=LibVNCServer-${VNCVER}
|
||||||
VNCDIR=libvncserver-${VNCREL}
|
VNCDIR=libvncserver-${VNCREL}
|
||||||
VNCSRC=${VNCREL}.tar.gz
|
VNCSRC=${VNCREL}.tar.gz
|
||||||
VNCLIB=${VNCDIR}/libvncserver/.libs/libvncserver.a
|
VNCLIB=${VNCDIR}/libvncserver.a
|
||||||
|
|
||||||
DEB=${PACKAGE}_${DEB_VERSION_UPSTREAM_REVISION}_${DEB_BUILD_ARCH}.deb
|
DEB=${PACKAGE}_${DEB_VERSION_UPSTREAM_REVISION}_${DEB_BUILD_ARCH}.deb
|
||||||
|
|
||||||
@ -32,8 +32,7 @@ ${VNCLIB}: ${VNCSRC}
|
|||||||
tar xf ${VNCSRC}
|
tar xf ${VNCSRC}
|
||||||
ln -s ../vncpatches ${VNCDIR}/patches
|
ln -s ../vncpatches ${VNCDIR}/patches
|
||||||
cd ${VNCDIR}; quilt push -a
|
cd ${VNCDIR}; quilt push -a
|
||||||
cd ${VNCDIR}; ./autogen.sh --without-ssl --without-websockets --without-tightvnc-filetransfer;
|
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 .
|
||||||
cd ${VNCDIR}; $(MAKE)
|
|
||||||
|
|
||||||
vncterm: vncterm.c wchardata.c $(VNCLIB)
|
vncterm: vncterm.c wchardata.c $(VNCLIB)
|
||||||
$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $^ $(VNC_LIBS)
|
$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $^ $(VNC_LIBS)
|
||||||
|
3
debian/control
vendored
3
debian/control
vendored
@ -1,6 +1,7 @@
|
|||||||
Source: vncterm
|
Source: vncterm
|
||||||
Maintainer: Proxmox Support Team <support@proxmox.com>
|
Maintainer: Proxmox Support Team <support@proxmox.com>
|
||||||
Build-Depends: debhelper (>= 10~),
|
Build-Depends: cmake,
|
||||||
|
debhelper (>= 10~),
|
||||||
libglib2.0-dev,
|
libglib2.0-dev,
|
||||||
libgnutls28-dev,
|
libgnutls28-dev,
|
||||||
libjpeg62-turbo-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
|
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 @@
|
--- libvncserver-LibVNCServer-0.9.13.orig/libvncserver/auth.c
|
||||||
int32_t securityType = rfbSecTypeInvalid;
|
+++ libvncserver-LibVNCServer-0.9.13/libvncserver/auth.c
|
||||||
|
@@ -301,7 +301,8 @@ rfbAuthNewClient(rfbClientPtr cl)
|
||||||
|
|
||||||
if (!cl->screen->authPasswdData || cl->reverseConnection) {
|
if (!cl->screen->authPasswdData || cl->reverseConnection) {
|
||||||
- /* chk if this condition is valid or not. */
|
/* chk if this condition is valid or not. */
|
||||||
- securityType = rfbSecTypeNone;
|
- securityType = rfbSecTypeNone;
|
||||||
+ /* chk if this condition is valid or not. */
|
|
||||||
+ /* we disable anonymous auth */
|
+ /* we disable anonymous auth */
|
||||||
+ // securityType = rfbSecTypeNone;
|
+ // securityType = rfbSecTypeNone;
|
||||||
} else if (cl->screen->authPasswdData) {
|
} else if (cl->screen->authPasswdData) {
|
||||||
securityType = rfbSecTypeVncAuth;
|
securityType = rfbSecTypeVncAuth;
|
||||||
}
|
}
|
||||||
Index: vnc/newterm/Makefile.am
|
Index: libvncserver-LibVNCServer-0.9.13/libvncserver/sockets.c
|
||||||
Index: vnc/libvncserver/sockets.c
|
|
||||||
===================================================================
|
===================================================================
|
||||||
--- vnc.orig/libvncserver/sockets.c 2011-01-20 16:42:41.000000000 +0100
|
--- libvncserver-LibVNCServer-0.9.13.orig/libvncserver/sockets.c
|
||||||
+++ vnc/libvncserver/sockets.c 2011-01-21 10:20:03.000000000 +0100
|
+++ libvncserver-LibVNCServer-0.9.13/libvncserver/sockets.c
|
||||||
@@ -613,7 +613,11 @@ rfbReadExactTimeout(rfbClientPtr cl, char* buf, int len, int timeout)
|
@@ -638,7 +638,11 @@ rfbReadExactTimeout(rfbClientPtr cl, cha
|
||||||
n = read(sock, buf, len);
|
n = read(sock, buf, len);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@ -30,7 +29,7 @@ Index: vnc/libvncserver/sockets.c
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (n > 0) {
|
if (n > 0) {
|
||||||
@@ -801,7 +805,11 @@ rfbWriteExact(rfbClientPtr cl,
|
@@ -826,7 +830,11 @@ rfbWriteExact(rfbClientPtr cl,
|
||||||
n = rfbssl_write(cl, buf, len);
|
n = rfbssl_write(cl, buf, len);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
@ -42,21 +41,21 @@ Index: vnc/libvncserver/sockets.c
|
|||||||
|
|
||||||
if (n > 0) {
|
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
|
--- libvncserver-LibVNCServer-0.9.13.orig/rfb/rfb.h
|
||||||
+++ vnc/rfb/rfb.h 2011-01-21 06:44:22.000000000 +0100
|
+++ libvncserver-LibVNCServer-0.9.13/rfb/rfb.h
|
||||||
@@ -397,6 +397,9 @@
|
@@ -411,6 +411,9 @@ typedef struct _rfbStatList {
|
||||||
struct _rfbStatList *Next;
|
typedef struct _rfbSslCtx rfbSslCtx;
|
||||||
} rfbStatList;
|
typedef struct _wsCtx wsCtx;
|
||||||
|
|
||||||
+typedef ssize_t (*sock_read_fn_t)(struct _rfbClientRec *cl, void *buf, size_t count);
|
+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 ssize_t (*sock_write_fn_t)(struct _rfbClientRec *cl, const void *buf, size_t count);
|
||||||
+
|
+
|
||||||
typedef struct _rfbClientRec {
|
typedef struct _rfbClientRec {
|
||||||
|
|
||||||
/* back pointer to the screen */
|
/** back pointer to the screen */
|
||||||
@@ -417,6 +420,10 @@
|
@@ -431,6 +434,10 @@ typedef struct _rfbClientRec {
|
||||||
void* clientData;
|
void* clientData;
|
||||||
ClientGoneHookPtr clientGoneHook;
|
ClientGoneHookPtr clientGoneHook;
|
||||||
|
|
||||||
@ -64,6 +63,6 @@ Index: vnc/rfb/rfb.h
|
|||||||
+ sock_read_fn_t sock_read_fn;
|
+ sock_read_fn_t sock_read_fn;
|
||||||
+ sock_read_fn_t sock_write_fn;
|
+ sock_read_fn_t sock_write_fn;
|
||||||
+
|
+
|
||||||
SOCKET sock;
|
rfbSocket sock;
|
||||||
char *host;
|
char *host;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user