Package Details: guacamole-server 0.9.12-3

Git Clone URL: https://aur.archlinux.org/guacamole-server.git (read-only)
Package Base: guacamole-server
Description: Guacamole proxy daemon
Upstream URL: http://guacamole.sourceforge.net/
Keywords: guacamole
Licenses: GPL3
Replaces: guacd, libguac, libguac-client-rdp, libguac-client-ssh, libguac-client-vnc
Submitter: ShyPixie
Maintainer: figue (figuepluto, jfigueras)
Last Packager: jfigueras
Votes: 16
Popularity: 0.791937
First Submitted: 2013-09-17 15:21
Last Updated: 2017-06-07 09:31

Latest Comments

gekkoman commented on 2017-05-03 06:58

Upstream issue: wont compile against openssl_1.1 due to API changes

RDP detection broken as per previous.

Had a quick play and the following compiles against openssl_1.1

diff -ru -x '*.lo' -x '*.o' -x '*.la' -x '*.a' -x '*.Plo' -x '*.Tpo' src/guacamole-server-0.9.12-incubating/src/common-ssh/buffer.c orig/guacamole-server-0.9.12-incubating/src/common-ssh/buffer.c
--- src/guacamole-server-0.9.12-incubating/src/common-ssh/buffer.c 2017-05-03 03:23:20.563784201 +1000
+++ orig/guacamole-server-0.9.12-incubating/src/common-ssh/buffer.c 2017-03-19 11:38:03.000000000 +1100
@@ -54,7 +54,7 @@
*buffer += length;
}

-void guac_common_ssh_buffer_write_bignum(char** buffer, const BIGNUM* value) {
+void guac_common_ssh_buffer_write_bignum(char** buffer, BIGNUM* value) {

unsigned char* bn_buffer;
int length;
diff -ru -x '*.lo' -x '*.o' -x '*.la' -x '*.a' -x '*.Plo' -x '*.Tpo' src/guacamole-server-0.9.12-incubating/src/common-ssh/common-ssh/buffer.h orig/guacamole-server-0.9.12-incubating/src/common-ssh/common-ssh/buffer.h
--- src/guacamole-server-0.9.12-incubating/src/common-ssh/common-ssh/buffer.h 2017-05-03 03:29:01.013794762 +1000
+++ orig/guacamole-server-0.9.12-incubating/src/common-ssh/common-ssh/buffer.h 2017-03-19 11:38:03.000000000 +1100
@@ -76,7 +76,7 @@
* @param value
* The value to write.
*/
-void guac_common_ssh_buffer_write_bignum(char** buffer, const BIGNUM* value);
+void guac_common_ssh_buffer_write_bignum(char** buffer, BIGNUM* value);

/**
* Writes the given data the given buffer, advancing the buffer pointer by the
diff -ru -x '*.lo' -x '*.o' -x '*.la' -x '*.a' -x '*.Plo' -x '*.Tpo' src/guacamole-server-0.9.12-incubating/src/common-ssh/key.c orig/guacamole-server-0.9.12-incubating/src/common-ssh/key.c
--- src/guacamole-server-0.9.12-incubating/src/common-ssh/key.c 2017-05-03 03:26:48.373790647 +1000
+++ orig/guacamole-server-0.9.12-incubating/src/common-ssh/key.c 2017-03-19 11:38:03.000000000 +1100
@@ -43,8 +43,6 @@
char* public_key;
char* pos;

- const BIGNUM *n, *e, *p, *q, *g, *pub;
-
/* Create BIO for reading key from memory */
key_bio = BIO_new_mem_buf(data, length);

@@ -73,9 +71,8 @@

/* Derive public key */
guac_common_ssh_buffer_write_string(&pos, "ssh-rsa", sizeof("ssh-rsa")-1);
- RSA_get0_key(rsa_key, &n, &e, NULL);
- guac_common_ssh_buffer_write_bignum(&pos, e);
- guac_common_ssh_buffer_write_bignum(&pos, n);
+ guac_common_ssh_buffer_write_bignum(&pos, rsa_key->e);
+ guac_common_ssh_buffer_write_bignum(&pos, rsa_key->n);

/* Save public key to structure */
key->public_key = public_key;
@@ -108,12 +105,10 @@

/* Derive public key */
guac_common_ssh_buffer_write_string(&pos, "ssh-dss", sizeof("ssh-dss")-1);
- DSA_get0_pqg(dsa_key, &p, &q, &g);
- DSA_get0_key(dsa_key, &pub, NULL);
- guac_common_ssh_buffer_write_bignum(&pos, p);
- guac_common_ssh_buffer_write_bignum(&pos, q);
- guac_common_ssh_buffer_write_bignum(&pos, g);
- guac_common_ssh_buffer_write_bignum(&pos, pub);
+ guac_common_ssh_buffer_write_bignum(&pos, dsa_key->p);
+ guac_common_ssh_buffer_write_bignum(&pos, dsa_key->q);
+ guac_common_ssh_buffer_write_bignum(&pos, dsa_key->g);
+ guac_common_ssh_buffer_write_bignum(&pos, dsa_key->pub_key);

/* Save public key to structure */
key->public_key = public_key;
@@ -161,20 +156,19 @@
int length, unsigned char* sig) {

const EVP_MD* md;
- EVP_MD_CTX *md_ctx=EVP_MD_CTX_new();
+ EVP_MD_CTX md_ctx;

unsigned char digest[EVP_MAX_MD_SIZE];
unsigned int dlen, len;
- const BIGNUM *pr = NULL, *ps = NULL;

/* Get SHA1 digest */
if ((md = EVP_get_digestbynid(NID_sha1)) == NULL)
return -1;

/* Digest data */
- EVP_DigestInit(md_ctx, md);
- EVP_DigestUpdate(md_ctx, data, length);
- EVP_DigestFinal(md_ctx, digest, &dlen);
+ EVP_DigestInit(&md_ctx, md);
+ EVP_DigestUpdate(&md_ctx, data, length);
+ EVP_DigestFinal(&md_ctx, digest, &dlen);

/* Sign with key */
switch (key->type) {
@@ -188,10 +182,10 @@

DSA_SIG* dsa_sig = DSA_do_sign(digest, dlen, key->dsa);
if (dsa_sig != NULL) {
- DSA_SIG_get0(dsa_sig, &pr, &ps);
+
/* Compute size of each half of signature */
- int rlen = BN_num_bytes(pr);
- int slen = BN_num_bytes(ps);
+ int rlen = BN_num_bytes(dsa_sig->r);
+ int slen = BN_num_bytes(dsa_sig->s);

/* Ensure each number is within the required size */
if (rlen > DSA_SIG_NUMBER_SIZE || slen > DSA_SIG_NUMBER_SIZE)
@@ -201,11 +195,11 @@
memset(sig, 0, DSA_SIG_SIZE);

/* Add R at the end of the first block of the signature */
- BN_bn2bin(pr, sig + DSA_SIG_SIZE
+ BN_bn2bin(dsa_sig->r, sig + DSA_SIG_SIZE
- DSA_SIG_NUMBER_SIZE - rlen);

/* Add S at the end of the second block of the signature */
- BN_bn2bin(ps, sig + DSA_SIG_SIZE - slen);
+ BN_bn2bin(dsa_sig->s, sig + DSA_SIG_SIZE - slen);

/* Done */
DSA_SIG_free(dsa_sig);
diff -ru -x '*.lo' -x '*.o' -x '*.la' -x '*.a' -x '*.Plo' -x '*.Tpo' src/guacamole-server-0.9.12-incubating/src/common-ssh/ssh.c orig/guacamole-server-0.9.12-incubating/src/common-ssh/ssh.c
--- src/guacamole-server-0.9.12-incubating/src/common-ssh/ssh.c 2017-05-03 03:16:42.227105179 +1000
+++ orig/guacamole-server-0.9.12-incubating/src/common-ssh/ssh.c 2017-03-19 11:38:03.000000000 +1100
@@ -67,20 +67,18 @@
* The line number of the function setting the lock, for debugging
* purposes.
*/
-/*
static void guac_common_ssh_openssl_locking_callback(int mode, int n,
const char* file, int line){

- // Lock given mutex upon request
+ /* Lock given mutex upon request */
if (mode & CRYPTO_LOCK)
pthread_mutex_lock(&(guac_common_ssh_openssl_locks[n]));

- // Unlock given mutex upon request
+ /* Unlock given mutex upon request */
else if (mode & CRYPTO_UNLOCK)
pthread_mutex_unlock(&(guac_common_ssh_openssl_locks[n]));

}
-*/

/**
* Called by OpenSSL when determining the current thread ID.
@@ -88,9 +86,9 @@
* @return
* An ID which uniquely identifies the current thread.
*/
-/*static unsigned long guac_common_ssh_openssl_id_callback() {
+static unsigned long guac_common_ssh_openssl_id_callback() {
return (unsigned long) pthread_self();
-}*/
+}

/**
* Creates the given number of mutexes, such that OpenSSL will have at least

figue commented on 2017-02-12 23:05

@kaz I've been testing for a while to enable this, basically my idea is to use the old freerdp-1.2.0_beta1+android9-3-x86_64.pkg.tar.xz package, because the latest official support for freerdp was that version. So because I need the latest freerdp from community, my idea was to install this freerdp in /opt for instance, then, add some includes on configure command to build against this freerdp... So I believed this could work:

export PATH="/opt/freerdp-120-guacamole:$PATH"
./configure --prefix=/usr --sbindir=/usr/bin CPPFLAGS="-Wno-error=pedantic -Wno-deprecated-declarations -I/opt/freerdp-120-guacamole/include" LDFLAGS='-L/opt/freerdp-120-guacamole/lib'

Unfortunately, freerdp checks fail... So my next step was try "a trick" (sed -e 's/have_freerdp=no/have_freerdp=yes/g' -i configure.ac).

[...]
make[3]: se entra en el directorio '/home/figue/packages/guacamole-server-freerdp/src/guacamole-server-0.9.11-incubating/src/protocols/rdp'
CC guacai_client_la-audio_input.lo
CC guacai_client_la-ptr_string.lo
CC guacdr_client_la-rdp_fs.lo
CC guacdr_client_la-rdp_stream.lo
CC guacdr_client_la-unicode.lo
CC guacsvc_client_la-rdp_svc.lo
CC libguac_client_rdp_la-audio_input.lo
CC libguac_client_rdp_la-client.lo
CC libguac_client_rdp_la-dvc.lo
CC libguac_client_rdp_la-input.lo
CC libguac_client_rdp_la-keyboard.lo
CC libguac_client_rdp_la-ptr_string.lo
CC libguac_client_rdp_la-rdp.lo
CC libguac_client_rdp_la-rdp_bitmap.lo
CC libguac_client_rdp_la-rdp_cliprdr.lo
CC libguac_client_rdp_la-rdp_color.lo
CC libguac_client_rdp_la-rdp_disp.lo
CC libguac_client_rdp_la-rdp_fs.lo
CC libguac_client_rdp_la-rdp_gdi.lo
CC libguac_client_rdp_la-rdp_glyph.lo
CC libguac_client_rdp_la-rdp_keymap.lo
CC libguac_client_rdp_la-rdp_pointer.lo
CC libguac_client_rdp_la-rdp_rail.lo
CC libguac_client_rdp_la-rdp_settings.lo
CC libguac_client_rdp_la-rdp_stream.lo
CC libguac_client_rdp_la-rdp_svc.lo
[...]

So, it seems that module is built now... but then after restarting the guacd service and tomcat, RDP connections don't work:

feb 12 16:04:36 DESA2338 guacd[16832]: Creating new client for protocol "rdp"
feb 12 16:04:36 DESA2338 guacd[16832]: Connection ID is "$396958b0-80ee-4b3a-98fc-bc52cab911f0"
feb 12 16:04:36 DESA2338 guacd[21748]: Support for protocol "rdp" is not installed
feb 12 16:04:36 DESA2338 guacd[16832]: Connection "$396958b0-80ee-4b3a-98fc-bc52cab911f0" removed.

So, no luck at this moment...

kaz commented on 2017-02-12 13:05

FreeRDP is not working again. CPPFLAGS="-Wno-error=pedantic -Wno-deprecated-declarations" are as per recommendation.

------------------------------------------------
guacamole-server version 0.9.11-incubating
------------------------------------------------

Library status:

freerdp ............. no
pango ............... yes
libavcodec .......... yes
libavutil ........... yes
libssh2 ............. yes
libssl .............. yes
libswscale .......... yes
libtelnet ........... yes
libVNCServer ........ yes
libvorbis ........... yes
libpulse ............ yes
libwebp ............. yes

Protocol support:

RDP ....... no
SSH ....... yes
Telnet .... yes
VNC ....... yes

Services / tools:

guacd ...... yes
guacenc .... yes

Init scripts: no

pacman -Qi freerdp
Name : freerdp
Version : 1:1.2.0_20170201-2
Description : Free RDP client
Architecture : x86_64
URL : http://freerdp.sourceforge.net
Licenses : GPL
Groups : None
Provides : libwinpr-tools2.so=2-64 libfreerdp-client2.so=2-64 libfreerdp2.so=2-64 libwinpr2.so=2-64
Depends On : openssl libxcursor libcups alsa-lib libxext libxdamage ffmpeg libxkbfile libxinerama libxv libpulse
libxkbfile libxrender libxfixes gst-plugins-base-libs
Optional Deps : None
Required By : None
Optional For : None
Conflicts With : None
Replaces : None
Installed Size : 5.15 MiB
Packager : Bartlomiej Piotrowski <bpiotrowski@archlinux.org>
Build Date : Thu 02 Feb 2017 10:56:08 AM MSK
Install Date : Sun 12 Feb 2017 03:00:05 PM MSK
Install Reason : Explicitly installed
Install Script : No
Validated By : Signature

SanskritFritz commented on 2017-02-09 11:06

It's ok, sorry for the noise.

figue commented on 2017-02-09 11:03

Yes I am... Only a small delay in push :P

SanskritFritz commented on 2017-02-09 10:51

You sure? Something went wrong, the package is still at 0.9.9-9.

figue commented on 2017-02-09 10:46

Adopted and updated!

SanskritFritz commented on 2017-02-09 10:36

Thanks figue for taking over.

figue commented on 2017-02-06 12:08

@Black_Codec I successfully built guacamole server and client 0.9.11. I had to change only guacamole directory to guacamole-incubating, as well as webapp name to be copied with the new name.

EDIT!!! Ok, I've removed my old message because I forgot to apply sql upgrades... So Guacamole finally started. I had to upgrade database schema and copy the new mysql connector. A briefly summary:

- Download jdbc from http://guacamole.incubator.apache.org/releases/0.9.11-incubating/
- Decompress and copy guacamole-auth-jdbc-mysql-0.9.11-incubating.jar to /usr/share/tomcat7/.guacamole/extensions
- Upgrade database schema applying the following files to guacamole_db (sql are not accumulative):
* guacamole-auth-jdbc-0.9.11-incubating/mysql/schema/upgrade/upgrade-pre-0.9.10.sql
* guacamole-auth-jdbc-0.9.11-incubating/mysql/schema/upgrade/upgrade-pre-0.9.11.sql
- Start tomcat7 and guacd service.
- Now, webapp URL has changed to http://myhost/guacamole-incubating

SanskritFritz commented on 2017-02-01 04:34

Can you tell us briefly about the problem you got? I plan to use this.

All comments