Explorar el Código

Use <user>@<hostname> as the default desktop name

Is a lot more useful default than the previous "x11", or "x0vncserver".
At the same time give x0vncserver a parameter to change the name.
tags/v1.11.90
Pierre Ossman hace 3 años
padre
commit
775d432ec7

+ 36
- 1
unix/x0vncserver/x0vncserver.cxx Ver fichero

@@ -25,6 +25,8 @@
#include <sys/stat.h>
#include <unistd.h>
#include <errno.h>
#include <pwd.h>

#include <rfb/Logger_stdio.h>
#include <rfb/LogWriter.h>
#include <rfb/VNCServerST.h>
@@ -50,11 +52,14 @@ using namespace network;

static LogWriter vlog("Main");

static const char* defaultDesktopName();

IntParameter pollingCycle("PollingCycle", "Milliseconds per one polling "
"cycle; actual interval may be dynamically "
"adjusted to satisfy MaxProcessorUsage setting", 30);
IntParameter maxProcessorUsage("MaxProcessorUsage", "Maximum percentage of "
"CPU time to be consumed", 35);
StringParameter desktopName("desktop", "Name of VNC desktop", defaultDesktopName());
StringParameter displayname("display", "The X display", "");
IntParameter rfbport("rfbport", "TCP port to listen for RFB protocol",5900);
StringParameter rfbunixpath("rfbunixpath", "Unix socket to listen for RFB protocol", "");
@@ -64,6 +69,36 @@ BoolParameter localhostOnly("localhost",
"Only allow connections from localhost",
false);

static const char* defaultDesktopName()
{
static char* name = NULL;

char hostname[HOST_NAME_MAX + 1];
struct passwd* pwent;

size_t len;

delete [] name;

if (gethostname(hostname, sizeof(hostname)) == -1)
return "";

pwent = getpwuid(getuid());
if (pwent == NULL)
return "";

len = snprintf(NULL, 0, "%s@%s", pwent->pw_name, hostname);
if (len < 0)
return "";

name = new char[len + 1];

snprintf(name, len + 1, "%s@%s", pwent->pw_name, hostname);

return name;
}


//
// Allow the main loop terminate itself gracefully on receiving a signal.
//
@@ -261,7 +296,7 @@ int main(int argc, char** argv)
}
XDesktop desktop(dpy, &geo);

VNCServerST server("x0vncserver", &desktop);
VNCServerST server(desktopName, &desktop);

if (rfbunixpath.getValueStr()[0] != '\0') {
listeners.push_back(new network::UnixListener(rfbunixpath, rfbunixmode));

+ 5
- 0
unix/x0vncserver/x0vncserver.man Ver fichero

@@ -46,6 +46,11 @@ arbitrary.

.SH PARAMETERS

.TP
.B \-desktop \fIdesktop-name\fP
Each desktop has a name which may be displayed by the viewer. It defaults to
"<user>@<hostname>".
.
.TP
.B \-display \fIdisplay\fP
The X display name. If not specified, it defaults to the value of the

+ 1
- 1
unix/xserver/hw/vnc/Xvnc.man Ver fichero

@@ -72,7 +72,7 @@ case-insensitive.
.TP
.B \-desktop \fIdesktop-name\fP
Each desktop has a name which may be displayed by the viewer. It defaults to
"x11".
"<user>@<hostname>".
.
.TP
.B \-rfbport \fIport\fP

+ 35
- 1
unix/xserver/hw/vnc/vncExtInit.cc Ver fichero

@@ -19,6 +19,9 @@

#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>

#include <set>
#include <string>
@@ -73,10 +76,12 @@ struct CaseInsensitiveCompare {
typedef std::set<std::string, CaseInsensitiveCompare> ParamSet;
static ParamSet allowOverrideSet;

static const char* defaultDesktopName();

rfb::IntParameter rfbport("rfbport", "TCP port to listen for RFB protocol",0);
rfb::StringParameter rfbunixpath("rfbunixpath", "Unix socket to listen for RFB protocol", "");
rfb::IntParameter rfbunixmode("rfbunixmode", "Unix socket access mode", 0600);
rfb::StringParameter desktopName("desktop", "Name of VNC desktop","x11");
rfb::StringParameter desktopName("desktop", "Name of VNC desktop", defaultDesktopName());
rfb::BoolParameter localhostOnly("localhost",
"Only allow connections from localhost",
false);
@@ -95,6 +100,35 @@ rfb::BoolParameter sendPrimary("SendPrimary",
"Send the PRIMARY as well as the CLIPBOARD selection",
true);

static const char* defaultDesktopName()
{
static char* name = NULL;

char hostname[HOST_NAME_MAX + 1];
struct passwd* pwent;

size_t len;

delete [] name;

if (gethostname(hostname, sizeof(hostname)) == -1)
return "";

pwent = getpwuid(getuid());
if (pwent == NULL)
return "";

len = snprintf(NULL, 0, "%s@%s", pwent->pw_name, hostname);
if (len < 0)
return "";

name = new char[len + 1];

snprintf(name, len + 1, "%s@%s", pwent->pw_name, hostname);

return name;
}

static PixelFormat vncGetPixelFormat(int scrIdx)
{
int depth, bpp;

Cargando…
Cancelar
Guardar