mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-06-30 19:12:48 -05:00
Revamp of the local X11 connection code. We now parse X display
strings more rigorously, and then we look up the local X authority data in .Xauthority _ourself_ rather than delegating to an external xauth program. This is (negligibly) more efficient on Unix, assuming I haven't got it wrong in some subtle way, but its major benefit is that we can now support X authority lookups on Windows as well provided the user points us at an appropriate X authority file in the standard format. A new Windows-specific config option has been added for this purpose. [originally from svn r8305]
This commit is contained in:
@ -377,4 +377,14 @@ void win_setup_config_box(struct controlbox *b, HWND *hwndp, int has_help,
|
||||
*/
|
||||
if (!midsession || (protocol == PROT_SERIAL))
|
||||
ser_setup_config_box(b, midsession, 0x1F, 0x0F);
|
||||
|
||||
/*
|
||||
* $XAUTHORITY is not reliable on Windows, so we provide a
|
||||
* means to override it.
|
||||
*/
|
||||
s = ctrl_getset(b, "Connection/SSH/X11", "x11", "X11 forwarding");
|
||||
ctrl_filesel(s, "X authority file for local display", 't',
|
||||
NULL, FALSE, "Select X authority file",
|
||||
HELPCTX(ssh_tunnels_xauthority),
|
||||
dlg_stdfilesel_handler, I(offsetof(Config, xauthfile)));
|
||||
}
|
||||
|
@ -121,6 +121,7 @@
|
||||
#define WINHELP_CTX_translation_linedraw "translation.linedraw:config-linedraw"
|
||||
#define WINHELP_CTX_ssh_tunnels_x11 "ssh.tunnels.x11:config-ssh-x11"
|
||||
#define WINHELP_CTX_ssh_tunnels_x11auth "ssh.tunnels.x11auth:config-ssh-x11auth"
|
||||
#define WINHELP_CTX_ssh_tunnels_xauthority "ssh.tunnels.xauthority:config-ssh-xauthority"
|
||||
#define WINHELP_CTX_ssh_tunnels_portfwd "ssh.tunnels.portfwd:config-ssh-portfwd"
|
||||
#define WINHELP_CTX_ssh_tunnels_portfwd_localhost "ssh.tunnels.portfwd.localhost:config-ssh-portfwd-localhost"
|
||||
#define WINHELP_CTX_ssh_tunnels_portfwd_ipversion "ssh.tunnels.portfwd.ipversion:config-ssh-portfwd-address-family"
|
||||
|
@ -8,14 +8,6 @@
|
||||
|
||||
OSVERSIONINFO osVersion;
|
||||
|
||||
void platform_get_x11_auth(char *display, int *proto,
|
||||
unsigned char *data, int *datalen)
|
||||
{
|
||||
/* We don't support this at all under Windows. */
|
||||
}
|
||||
|
||||
const char platform_x11_best_transport[] = "localhost";
|
||||
|
||||
char *platform_get_x_display(void) {
|
||||
/* We may as well check for DISPLAY in case it's useful. */
|
||||
return dupstr(getenv("DISPLAY"));
|
||||
|
@ -19,6 +19,12 @@ int get_userpass_input(prompts_t *p, unsigned char *in, int inlen)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void platform_get_x11_auth(struct X11Display *display, const Config *cfg)
|
||||
{
|
||||
/* Do nothing, therefore no auth. */
|
||||
}
|
||||
const int platform_uses_x11_unix_by_default = TRUE;
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
* File access abstraction.
|
||||
*/
|
||||
|
18
windows/winx11.c
Normal file
18
windows/winx11.c
Normal file
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* winx11.c: fetch local auth data for X forwarding.
|
||||
*/
|
||||
|
||||
#include <ctype.h>
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "putty.h"
|
||||
#include "ssh.h"
|
||||
|
||||
void platform_get_x11_auth(struct X11Display *disp, const Config *cfg)
|
||||
{
|
||||
if (cfg->xauthfile.path[0])
|
||||
x11_get_auth_from_authfile(disp, cfg->xauthfile.path);
|
||||
}
|
||||
|
||||
const int platform_uses_x11_unix_by_default = FALSE;
|
Reference in New Issue
Block a user