Merge branch 'master' into create_ubuntu20_package

pull/20/head
Dmitry Maksyoma 4 years ago
commit c32137fa17

@ -0,0 +1,21 @@
image: docker
services:
- docker:dind
stages:
- build
build:
stage: build
script:
- ls -l
- pwd
- apk add bash
- bash builder/build-tarball
- bash builder/build-deb
- mkdir output
- cp builder/build/kasmvncserver_*.deb output/
- cp builder/build/kasmvnc.*.tar.gz output/
artifacts:
paths:
- output/

@ -423,7 +423,7 @@ extern settings_t settings;
WebsocketListener::WebsocketListener(const struct sockaddr *listenaddr, WebsocketListener::WebsocketListener(const struct sockaddr *listenaddr,
socklen_t listenaddrlen, socklen_t listenaddrlen,
bool sslonly, const char *cert, bool sslonly, const char *cert, const char *certkey,
const char *basicauth, const char *basicauth,
const char *httpdir) const char *httpdir)
{ {
@ -496,7 +496,7 @@ WebsocketListener::WebsocketListener(const struct sockaddr *listenaddr,
settings.basicauth = basicauth; settings.basicauth = basicauth;
settings.cert = cert; settings.cert = cert;
settings.key = ""; settings.key = certkey;
settings.ssl_only = sslonly; settings.ssl_only = sslonly;
settings.verbose = vlog.getLevel() >= vlog.LEVEL_DEBUG; settings.verbose = vlog.getLevel() >= vlog.LEVEL_DEBUG;
settings.httpdir = NULL; settings.httpdir = NULL;
@ -673,7 +673,7 @@ void network::createTcpListeners(std::list<SocketListener*> *listeners,
void network::createWebsocketListeners(std::list<SocketListener*> *listeners, void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
const struct addrinfo *ai, const struct addrinfo *ai,
bool sslonly, const char *cert, bool sslonly, const char *cert, const char *certkey,
const char *basicauth, const char *basicauth,
const char *httpdir) const char *httpdir)
{ {
@ -701,7 +701,7 @@ void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
try { try {
new_listeners.push_back(new WebsocketListener(current->ai_addr, new_listeners.push_back(new WebsocketListener(current->ai_addr,
current->ai_addrlen, current->ai_addrlen,
sslonly, cert, basicauth, sslonly, cert, certkey, basicauth,
httpdir)); httpdir));
} catch (SocketException& e) { } catch (SocketException& e) {
// Ignore this if it is due to lack of address family support on // Ignore this if it is due to lack of address family support on
@ -729,6 +729,7 @@ void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
const char *addr, const char *addr,
bool sslonly, bool sslonly,
const char *cert, const char *cert,
const char *certkey,
const char *basicauth, const char *basicauth,
const char *httpdir) const char *httpdir)
{ {
@ -757,7 +758,7 @@ void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
ai[1].ai_addrlen = sizeof(sa[1].u.sin6); ai[1].ai_addrlen = sizeof(sa[1].u.sin6);
ai[1].ai_next = NULL; ai[1].ai_next = NULL;
createWebsocketListeners(listeners, ai, sslonly, cert, basicauth, httpdir); createWebsocketListeners(listeners, ai, sslonly, cert, certkey, basicauth, httpdir);
} else { } else {
struct addrinfo *ai, hints; struct addrinfo *ai, hints;
char service[16]; char service[16];
@ -780,7 +781,7 @@ void network::createWebsocketListeners(std::list<SocketListener*> *listeners,
gai_strerror(result)); gai_strerror(result));
try { try {
createWebsocketListeners(listeners, ai, sslonly, cert, basicauth, httpdir); createWebsocketListeners(listeners, ai, sslonly, cert, certkey, basicauth, httpdir);
} catch(...) { } catch(...) {
freeaddrinfo(ai); freeaddrinfo(ai);
throw; throw;

@ -90,7 +90,8 @@ namespace network {
class WebsocketListener : public SocketListener { class WebsocketListener : public SocketListener {
public: public:
WebsocketListener(const struct sockaddr *listenaddr, socklen_t listenaddrlen, WebsocketListener(const struct sockaddr *listenaddr, socklen_t listenaddrlen,
bool sslonly, const char *cert, const char *basicauth, bool sslonly, const char *cert, const char *certkey,
const char *basicauth,
const char *httpdir); const char *httpdir);
virtual int getMyPort(); virtual int getMyPort();
@ -110,6 +111,7 @@ namespace network {
const char *addr, const char *addr,
bool sslonly, bool sslonly,
const char *cert, const char *cert,
const char *certkey,
const char *basicauth, const char *basicauth,
const char *httpdir); const char *httpdir);
void createTcpListeners(std::list<SocketListener*> *listeners, void createTcpListeners(std::list<SocketListener*> *listeners,
@ -121,6 +123,7 @@ namespace network {
const struct addrinfo *ai, const struct addrinfo *ai,
bool sslonly, bool sslonly,
const char *cert, const char *cert,
const char *certkey,
const char *basicauth, const char *basicauth,
const char *httpdir); const char *httpdir);

@ -1181,38 +1181,13 @@ uint8_t EncodeManager::getEncoderType(const Rect& rect, const PixelBuffer *pb,
const PixelBuffer *scaledpb, const Rect& scaledrect) const const PixelBuffer *scaledpb, const Rect& scaledrect) const
{ {
struct RectInfo info; struct RectInfo info;
unsigned int divisor, maxColours; unsigned int maxColours = 256;
PixelBuffer *ppb; PixelBuffer *ppb;
Encoder *encoder; Encoder *encoder;
bool useRLE; bool useRLE;
EncoderType type; EncoderType type;
// FIXME: This is roughly the algorithm previously used by the Tight
// encoder. It seems a bit backwards though, that higher
// compression setting means spending less effort in building
// a palette. It might be that they figured the increase in
// zlib setting compensated for the loss.
if (conn->cp.compressLevel == -1)
divisor = 2 * 8;
else
divisor = conn->cp.compressLevel * 8;
if (divisor < 4)
divisor = 4;
maxColours = rect.area()/divisor;
// Special exception inherited from the Tight encoder
if (activeEncoders[encoderFullColour] == encoderTightJPEG) {
if ((conn->cp.compressLevel != -1) && (conn->cp.compressLevel < 2))
maxColours = 24;
else
maxColours = 96;
}
if (maxColours < 2)
maxColours = 2;
encoder = encoders[activeEncoders[encoderIndexedRLE]]; encoder = encoders[activeEncoders[encoderIndexedRLE]];
if (maxColours > encoder->maxPaletteSize) if (maxColours > encoder->maxPaletteSize)
maxColours = encoder->maxPaletteSize; maxColours = encoder->maxPaletteSize;

@ -13,7 +13,11 @@ window.addEventListener("load", function() {
document.head.appendChild(loader); document.head.appendChild(loader);
}); });
window.addEventListener("load", function() { window.addEventListener("load", function() {
document.getElementById("noVNC_connect_button").click(); var connect_btn_el = document.getElementById("noVNC_connect_button");
if (typeof(connect_btn_el) != 'undefined' && connect_btn_el != null)
{
connect_btn_el.click();
}
}); });
import * as Log from '../core/util/logging.js'; import * as Log from '../core/util/logging.js';

@ -1076,9 +1076,7 @@ export default class RFB extends EventTargetMixin {
return false; return false;
} }
*/ */
if (!this._rfb_credentials.password) { this._rfb_credentials.password = "";
this._rfb_credentials.password = "";
}
// TODO(directxman12): make genDES not require an Array // TODO(directxman12): make genDES not require an Array
const challenge = Array.prototype.slice.call(this._sock.rQshiftBytes(16)); const challenge = Array.prototype.slice.call(this._sock.rQshiftBytes(16));

@ -315,6 +315,12 @@ Listen for websocket connections on this port, default 6800.
SSL pem cert to use for websocket connections, default empty/not used. SSL pem cert to use for websocket connections, default empty/not used.
. .
.TP .TP
.B \-key \fIpath\fP
SSL pem key to use for websocket connections, default empty/not used.
Only use this if you have the cert and key in separate files. If they
are in the same file, use \fB-cert\fP.
.
.TP
.B \-sslOnly .B \-sslOnly
Require SSL for websocket connections. Default off, non-SSL allowed. Require SSL for websocket connections. Default off, non-SSL allowed.
. .

@ -87,6 +87,7 @@ rfb::BoolParameter noWebsocket("noWebsocket",
false); false);
rfb::IntParameter websocketPort("websocketPort", "websocket port to listen for", 6800); rfb::IntParameter websocketPort("websocketPort", "websocket port to listen for", 6800);
rfb::StringParameter cert("cert", "SSL pem cert to use for websocket connections", ""); rfb::StringParameter cert("cert", "SSL pem cert to use for websocket connections", "");
rfb::StringParameter certkey("key", "SSL pem key to use for websocket connections (if separate)", "");
rfb::BoolParameter sslonly("sslOnly", "Require SSL for websockets", false); rfb::BoolParameter sslonly("sslOnly", "Require SSL for websockets", false);
rfb::StringParameter basicauth("BasicAuth", "user:pass for HTTP basic auth for websockets", ""); rfb::StringParameter basicauth("BasicAuth", "user:pass for HTTP basic auth for websockets", "");
rfb::StringParameter interface("interface", rfb::StringParameter interface("interface",
@ -224,7 +225,7 @@ void vncExtensionInit(void)
if (!noWebsocket) if (!noWebsocket)
network::createWebsocketListeners(&listeners, websocketPort, network::createWebsocketListeners(&listeners, websocketPort,
localhostOnly ? "local" : addr, localhostOnly ? "local" : addr,
sslonly, cert, basicauth, httpDir); sslonly, cert, certkey, basicauth, httpDir);
else if (localhostOnly) else if (localhostOnly)
network::createLocalTcpListeners(&listeners, port); network::createLocalTcpListeners(&listeners, port);
else else

Loading…
Cancel
Save