mirror of
https://github.com/PowerShell/Win32-OpenSSH.git
synced 2025-07-22 13:34:43 +02:00
Merge remote-tracking branch 'refs/remotes/origin/L1'
This commit is contained in:
commit
b8d82456a7
12
.gitignore
vendored
12
.gitignore
vendored
@ -239,9 +239,18 @@ ssh_host_rsa_key
|
||||
ssh_host_rsa_key
|
||||
ssh_host_rsa_key
|
||||
ssh_host_dsa_key
|
||||
ssh_host_dsa_key.pub
|
||||
ssh_host_ecdsa_key.pub
|
||||
ssh_host_ecdsa_key
|
||||
ssh_host_ed25519_key
|
||||
ssh_host_ed25519_key.pub
|
||||
ssh_host_rsa_key.pub
|
||||
id_rsa.pub
|
||||
id_rsa
|
||||
id_dsa.pub
|
||||
id_dsa
|
||||
is_rsa
|
||||
is_rsa.pub
|
||||
regress/t10.out.pub
|
||||
regress/t12.out.pub
|
||||
regress/t6.out1
|
||||
@ -264,3 +273,6 @@ regress/t6.out2
|
||||
config.h
|
||||
configure
|
||||
config.h
|
||||
|
||||
#temp key files
|
||||
d2utmpa*
|
@ -87,7 +87,7 @@ LIBSSH_OBJS=${LIBOPENSSH_OBJS} \
|
||||
msg.o progressmeter.o dns.o entropy.o gss-genr.o umac.o umac128.o \
|
||||
ssh-pkcs11.o smult_curve25519_ref.o \
|
||||
poly1305.o chacha.o cipher-chachapoly.o \
|
||||
ssh-ed25519.o digest-openssl.o digest-libc.o hmac.o \
|
||||
ssh-ed25519.o digest-libc.o hmac.o \
|
||||
sc25519.o ge25519.o fe25519.o ed25519.o verify.o hash.o blocks.o \
|
||||
kex.o kexdh.o kexgex.o kexecdh.o kexc25519.o \
|
||||
kexdhc.o kexgexc.o kexecdhc.o kexc25519c.o \
|
||||
|
@ -1,2 +1,7 @@
|
||||
# OpenSSH
|
||||
Win32 port of OpenSSH
|
||||
|
||||
Look at the [wiki](https://github.com/PowerShell/Win32-OpenSSH/wiki) for help
|
||||
First release announcement is here:
|
||||
OpenSSH for Windows Update - Windows PowerShell Blog - Site Home - MSDN Blogs
|
||||
http://blogs.msdn.com/b/powershell/archive/2015/10/19/openssh-for-windows-update.aspx
|
||||
|
52
channels.c
52
channels.c
@ -1685,6 +1685,10 @@ channel_handle_rfd(Channel *c, fd_set *readset, fd_set *writeset)
|
||||
if (c->rfd != -1 && (force || FD_ISSET(c->rfd, readset))) {
|
||||
errno = 0;
|
||||
len = read(c->rfd, buf, sizeof(buf));
|
||||
#ifdef WIN32_FIXME
|
||||
if (len == 0)
|
||||
return 1; // in Win32 console read, there may be no data, but is ok
|
||||
#endif
|
||||
if (len < 0 && (errno == EINTR ||
|
||||
((errno == EAGAIN || errno == EWOULDBLOCK) && !force)))
|
||||
return 1;
|
||||
@ -2395,9 +2399,7 @@ channel_output_poll(void)
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef WIN32_FIXME
|
||||
int lftocrlf = 0;
|
||||
#endif
|
||||
|
||||
/* -- protocol input */
|
||||
|
||||
/* ARGSUSED */
|
||||
@ -2462,13 +2464,25 @@ channel_input_data(int type, u_int32_t seq, void *ctxt)
|
||||
#else
|
||||
if ( c->client_tty )
|
||||
telProcessNetwork ( data, data_len ); // run it by ANSI engine if it is the ssh client
|
||||
else
|
||||
else {
|
||||
if ( ( c->isatty) && (data_len ==1) && (data[0] == '\003') ) {
|
||||
/* send control-c to the shell process */
|
||||
if ( GenerateConsoleCtrlEvent ( CTRL_C_EVENT, 0 ) ) {
|
||||
}
|
||||
else {
|
||||
debug3("GenerateConsoleCtrlEvent failed with %d\n",GetLastError());
|
||||
}
|
||||
}
|
||||
else {
|
||||
buffer_append(&c->output, data, data_len); // it is the sshd server, so pass it on
|
||||
if ( c->isatty ) {
|
||||
buffer_append(&c->input, data, data_len); // we echo the data if it is sshd server and pty interactive mode
|
||||
if ( c->isatty ) { // we echo the data if it is sshd server and pty interactive mode
|
||||
buffer_append(&c->input, data, data_len);
|
||||
if ( (data_len ==1) && (data[0] == '\b') )
|
||||
buffer_append(&c->input, " \b", 2); // for backspace, we need to send space and another backspace for visual erase
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
packet_check_eom();
|
||||
@ -3913,10 +3927,11 @@ channel_connect_to_path(const char *path, char *ctype, char *rname)
|
||||
return connect_to(path, PORT_STREAMLOCAL, ctype, rname);
|
||||
}
|
||||
|
||||
#ifndef WIN32_FIXME
|
||||
void
|
||||
channel_send_window_changes(void)
|
||||
{
|
||||
#ifndef WIN32_FIXME
|
||||
|
||||
u_int i;
|
||||
struct winsize ws;
|
||||
|
||||
@ -3933,9 +3948,30 @@ channel_send_window_changes(void)
|
||||
packet_put_int((u_int)ws.ws_ypixel);
|
||||
packet_send();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#else // WIN32_FIXME
|
||||
void
|
||||
channel_send_window_changes(int col, int row, int xpixel, int ypixel)
|
||||
{
|
||||
u_int i;
|
||||
struct winsize ws;
|
||||
|
||||
for (i = 0; i < channels_alloc; i++) {
|
||||
if (channels[i] == NULL || !channels[i]->client_tty ||
|
||||
channels[i]->type != SSH_CHANNEL_OPEN)
|
||||
continue;
|
||||
channel_request_start(i, "window-change", 0);
|
||||
packet_put_int((u_int)col);
|
||||
packet_put_int((u_int)row);
|
||||
packet_put_int((u_int)xpixel);
|
||||
packet_put_int((u_int)ypixel);
|
||||
packet_send();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/* -- X11 forwarding */
|
||||
|
||||
/*
|
||||
|
@ -226,7 +226,12 @@ void channel_register_status_confirm(int, channel_confirm_cb *,
|
||||
channel_confirm_abandon_cb *, void *);
|
||||
void channel_cancel_cleanup(int);
|
||||
int channel_close_fd(int *);
|
||||
#ifndef WIN32_FIXME
|
||||
void channel_send_window_changes(void);
|
||||
#else
|
||||
void channel_send_window_changes(int, int, int, int);
|
||||
#endif
|
||||
|
||||
|
||||
/* protocol handler */
|
||||
|
||||
|
54
clientloop.c
54
clientloop.c
@ -119,6 +119,12 @@
|
||||
#include <sys/stat.h>
|
||||
|
||||
#define isatty(a) WSHELPisatty(a)
|
||||
|
||||
// Windows Console screen size change related
|
||||
extern int ScreenX;
|
||||
extern int ScrollBottom;
|
||||
int win_received_window_change_signal = 1;
|
||||
|
||||
#endif
|
||||
|
||||
/* import options */
|
||||
@ -162,7 +168,10 @@ static int escape_pending1; /* Last character was an escape (proto1 only) */
|
||||
static int last_was_cr; /* Last character was a newline. */
|
||||
static int exit_status; /* Used to store the command exit status. */
|
||||
static int stdin_eof; /* EOF has been encountered on stderr. */
|
||||
static Buffer stdin_buffer; /* Buffer for stdin data. */
|
||||
#ifndef WIN32_FIXME
|
||||
static
|
||||
#endif
|
||||
Buffer stdin_buffer; /* Buffer for stdin data. */
|
||||
static Buffer stdout_buffer; /* Buffer for stdout data. */
|
||||
static Buffer stderr_buffer; /* Buffer for stderr data. */
|
||||
static u_int buffer_high; /* Soft max buffer size. */
|
||||
@ -563,6 +572,25 @@ client_check_window_change(void)
|
||||
packet_put_int((u_int)ws.ws_ypixel);
|
||||
packet_send();
|
||||
}
|
||||
#else
|
||||
|
||||
if (! win_received_window_change_signal)
|
||||
return;
|
||||
/** XXX race */
|
||||
win_received_window_change_signal = 0;
|
||||
|
||||
debug2("client_check_window_change: changed");
|
||||
|
||||
if (compat20) {
|
||||
channel_send_window_changes(ScreenX, ScrollBottom, 640, 480);
|
||||
} else {
|
||||
packet_start(SSH_CMSG_WINDOW_SIZE);
|
||||
packet_put_int((u_int)ScreenX);
|
||||
packet_put_int((u_int)ScrollBottom);
|
||||
packet_put_int((u_int)640);
|
||||
packet_put_int((u_int)480);
|
||||
packet_send();
|
||||
}
|
||||
#endif /* !WIN32_FIXME */
|
||||
}
|
||||
|
||||
@ -1320,14 +1348,14 @@ process_escapes(Channel *c, Buffer *bin, Buffer *bout, Buffer *berr,
|
||||
* and append it to the buffer.
|
||||
*/
|
||||
last_was_cr = (ch == '\r' || ch == '\n');
|
||||
#ifdef WIN32_FIXME
|
||||
extern int lftocrlf ; // defined in channels.c file's channel_input_data() function for now
|
||||
if ( (lftocrlf == 1) && ( ch == '\n') ) {
|
||||
//#ifdef WIN32_FIXME
|
||||
//extern int lftocrlf ; // defined in channels.c file's channel_input_data() function for now
|
||||
//if ( (lftocrlf == 1) && ( ch == '\n') ) {
|
||||
// add a \r before \n if sshd server sent us ESC[20h during initial tty mode setting
|
||||
buffer_put_char(bin, '\r');
|
||||
bytes++;
|
||||
}
|
||||
#endif
|
||||
//buffer_put_char(bin, '\r');
|
||||
//bytes++;
|
||||
//}
|
||||
//#endif
|
||||
buffer_put_char(bin, ch);
|
||||
bytes++;
|
||||
}
|
||||
@ -2571,11 +2599,11 @@ client_session2_setup(int id, int want_tty, int want_subsystem,
|
||||
tty_make_modes(-1, tiop);
|
||||
|
||||
#else
|
||||
packet_put_cstring(term != NULL ? term : "");
|
||||
packet_put_int((u_int) 80 /*ws.ws_col*/);
|
||||
packet_put_int((u_int) 25 /*ws.ws_row*/);
|
||||
packet_put_int((u_int) 640 /*ws.ws_xpixel*/);
|
||||
packet_put_int((u_int) 480 /*ws.ws_ypixel*/);
|
||||
packet_put_cstring(term != NULL ? term : "vt220");
|
||||
packet_put_int((u_int) ScreenX);
|
||||
packet_put_int((u_int) ScrollBottom);
|
||||
packet_put_int((u_int) 640);
|
||||
packet_put_int((u_int) 480);
|
||||
tty_make_modes(-1, NULL);
|
||||
#endif /* else !WIN32_FIXME */
|
||||
packet_send();
|
||||
|
@ -19,11 +19,12 @@ LDFLAGS=-L. @LDFLAGS@ -L/lib/win32api
|
||||
|
||||
WIN32COMPATFILES = daemon.o gettimeofday.o homedirhelp.o pwd.o sfds.o \
|
||||
socket.o startupneeds.o strcasecmp.o syslog.o lsalogon.o lsastring.o \
|
||||
stringhelp.o deskright.o win32auth.o kerberos.o cng_cipher.o ansiprsr.o console.o tnnet.o
|
||||
stringhelp.o deskright.o win32auth.o kerberos.o cng_cipher.o ansiprsr.o \
|
||||
console.o tnnet.o conio.o tncon.o
|
||||
|
||||
WIN32COMPATLIB=@LIBWIN32COMPAT@
|
||||
|
||||
CNGFILES=cng_cipher.o
|
||||
CNGFILES=cng_cipher.o cng_digest.o
|
||||
|
||||
|
||||
.c.o:
|
||||
@ -44,6 +45,6 @@ distclean: clean
|
||||
|
||||
$(WIN32COMPATFILES): ../../../config.h
|
||||
|
||||
$(WIN32COMPATLIB): $(WIN32COMPATFILES)
|
||||
$(AR) rv $@ $(WIN32COMPATFILES)
|
||||
$(WIN32COMPATLIB): $(WIN32COMPATFILES) $(CNGFILES)
|
||||
$(AR) rv $@ $(WIN32COMPATFILES) $(CNGFILES)
|
||||
$(RANLIB) $@
|
||||
|
@ -1,17 +1,36 @@
|
||||
/* ansiprsr.c
|
||||
* Author: Pragma Systems, Inc. <www.pragmasys.com>
|
||||
* Contribution by Pragma Systems, Inc. for Microsoft openssh win32 port
|
||||
* Copyright (c) 2011, 2015 Pragma Systems, Inc.
|
||||
/*
|
||||
* Author: Microsoft Corp.
|
||||
*
|
||||
* Copyright (c) 2015 Microsoft Corp.
|
||||
* All rights reserved
|
||||
*
|
||||
* Microsoft openssh win32 port
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/* ansiprsr.c
|
||||
*
|
||||
* ANSI Parser to run on Win32 based operating systems.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice.
|
||||
* 2. Binaries produced provide no direct or implied warranties or any
|
||||
* guarantee of performance or suitability.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
@ -32,7 +51,6 @@
|
||||
// items used from other modules
|
||||
int NetWriteString(char* pszString, size_t cbString);
|
||||
TelParams Parameters;
|
||||
extern int lftocrlf;
|
||||
|
||||
extern int ScreenX;
|
||||
extern int ScreenY;
|
||||
@ -388,12 +406,10 @@ void ConSetExtendedMode(int iFunction, BOOL bEnable)
|
||||
case 20: // LNM Mode CSI 20h
|
||||
if (bEnable){
|
||||
VTMode |= MODE_LNM;
|
||||
Parameters.nReceiveCRLF = ENUM_LF;
|
||||
lftocrlf = 1;
|
||||
Parameters.nReceiveCRLF = ENUM_CRLF;
|
||||
}else{
|
||||
VTMode &= ~MODE_LNM;
|
||||
Parameters.nReceiveCRLF = ENUM_CRLF;
|
||||
lftocrlf = 0;
|
||||
Parameters.nReceiveCRLF = ENUM_LF;
|
||||
}
|
||||
break;
|
||||
case 25:
|
||||
|
@ -1,17 +1,36 @@
|
||||
/* ansiprsr.h
|
||||
* Author: Pragma Systems, Inc. <www.pragmasys.com>
|
||||
* Contribution by Pragma Systems, Inc. for Microsoft openssh win32 port
|
||||
* Copyright (c) 2011, 2015 Pragma Systems, Inc.
|
||||
/*
|
||||
* Author: Microsoft Corp.
|
||||
*
|
||||
* Copyright (c) 2015 Microsoft Corp.
|
||||
* All rights reserved
|
||||
*
|
||||
* Microsoft openssh win32 port
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/* ansiprsr.h
|
||||
*
|
||||
* ANSI Parser header file to run on Win32 based operating systems.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice.
|
||||
* 2. Binaries produced provide no direct or implied warranties or any
|
||||
* guarantee of performance or suitability.
|
||||
*/
|
||||
|
||||
#ifndef __ANSIPRSR_H
|
||||
@ -36,11 +55,28 @@ unsigned char * ParseVT52(unsigned char * pszBuffer, unsigned char * pszBufferEn
|
||||
|
||||
typedef struct _TelParams
|
||||
{
|
||||
int fLogging;
|
||||
FILE *fplogfile;
|
||||
|
||||
char *pInputFile;
|
||||
|
||||
char * szDebugInputFile;
|
||||
BOOL fDebugWait;
|
||||
|
||||
int timeOut;
|
||||
int fLocalEcho;
|
||||
int fTreatLFasCRLF;
|
||||
int fSendCROnly;
|
||||
int nReceiveCRLF;
|
||||
//_crlftype nReceiveCRLF;
|
||||
char sleepChar;
|
||||
char menuChar;
|
||||
|
||||
SOCKET Socket;
|
||||
BOOL bVT100Mode;
|
||||
|
||||
char *pAltKey;
|
||||
|
||||
} TelParams;
|
||||
|
||||
#endif
|
@ -1,19 +1,36 @@
|
||||
/* cng_cipher.c
|
||||
* Author: Pragma Systems, Inc. <www.pragmasys.com>
|
||||
* Contribution by Pragma Systems, Inc. for Microsoft openssh win32 port
|
||||
* Copyright (c) 2011, 2015 Pragma Systems, Inc.
|
||||
/*
|
||||
* Author: Microsoft Corp.
|
||||
*
|
||||
* Copyright (c) 2015 Microsoft Corp.
|
||||
* All rights reserved
|
||||
*
|
||||
* Common library for Windows Console Screen IO.
|
||||
* Contains Windows console related definition so that emulation code can draw
|
||||
* on Windows console screen surface.
|
||||
* Microsoft openssh win32 port
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/* cng_cipher.c
|
||||
*
|
||||
* Openssh ciphers implemented using Microsoft Crypto Next Generation (CNG).
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice.
|
||||
* 2. Binaries produced provide no direct or implied warranties or any
|
||||
* guarantee of performance or suitability.
|
||||
*/
|
||||
|
||||
#include <Windows.h>
|
||||
|
@ -1,19 +1,36 @@
|
||||
/* cng_cipher.h
|
||||
* Author: Pragma Systems, Inc. <www.pragmasys.com>
|
||||
* Contribution by Pragma Systems, Inc. for Microsoft openssh win32 port
|
||||
* Copyright (c) 2011, 2015 Pragma Systems, Inc.
|
||||
/*
|
||||
* Author: Microsoft Corp.
|
||||
*
|
||||
* Copyright (c) 2015 Microsoft Corp.
|
||||
* All rights reserved
|
||||
*
|
||||
* Common library for Windows Console Screen IO.
|
||||
* Contains Windows console related definition so that emulation code can draw
|
||||
* on Windows console screen surface.
|
||||
* Microsoft openssh win32 port
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/* cng_cipher.h
|
||||
*
|
||||
* Openssh ciphers implemented using Microsoft Crypto Next Generation (CNG).
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice.
|
||||
* 2. Binaries produced provide no direct or implied warranties or any
|
||||
* guarantee of performance or suitability.
|
||||
*/
|
||||
|
||||
|
||||
|
242
contrib/win32/win32compat/cng_digest.c
Normal file
242
contrib/win32/win32compat/cng_digest.c
Normal file
@ -0,0 +1,242 @@
|
||||
/*
|
||||
* Author: Microsoft Corp.
|
||||
*
|
||||
* Copyright (c) 2015 Microsoft Corp.
|
||||
* All rights reserved
|
||||
*
|
||||
* Microsoft openssh win32 port
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/* cng_digest.c
|
||||
*
|
||||
* Openssh digests implemented using Microsoft Crypto Next Generation (CNG).
|
||||
*
|
||||
*/
|
||||
|
||||
typedef unsigned int u_int;
|
||||
typedef unsigned char u_char;
|
||||
|
||||
|
||||
#include <limits.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <digest.h>
|
||||
#include <ssherr.h>
|
||||
|
||||
#include <Windows.h>
|
||||
#include <bcrypt.h>
|
||||
|
||||
|
||||
const u_char *sshbuf_ptr(const struct sshbuf *buf);
|
||||
size_t sshbuf_len(const struct sshbuf *buf);
|
||||
|
||||
|
||||
|
||||
struct ssh_digest_ctx {
|
||||
int alg;
|
||||
BCRYPT_ALG_HANDLE cng_alg_handle;
|
||||
BCRYPT_HASH_HANDLE hash_handle;
|
||||
};
|
||||
|
||||
struct ssh_digest {
|
||||
int id;
|
||||
const char *name;
|
||||
size_t digest_len;
|
||||
const wchar_t * cng_alg_name;
|
||||
};
|
||||
|
||||
/* NB. Indexed directly by algorithm number */
|
||||
const struct ssh_digest digests[] = {
|
||||
{ SSH_DIGEST_MD5, "MD5", 16, BCRYPT_MD5_ALGORITHM },
|
||||
{ SSH_DIGEST_RIPEMD160, "RIPEMD160", 20, NULL }, /* not supported */
|
||||
{ SSH_DIGEST_SHA1, "SHA1", 20, BCRYPT_SHA1_ALGORITHM },
|
||||
{ SSH_DIGEST_SHA256, "SHA256", 32, BCRYPT_SHA256_ALGORITHM },
|
||||
{ SSH_DIGEST_SHA384, "SHA384", 48, BCRYPT_SHA384_ALGORITHM },
|
||||
{ SSH_DIGEST_SHA512, "SHA512", 64, BCRYPT_SHA512_ALGORITHM },
|
||||
{ -1, NULL, 0, NULL },
|
||||
};
|
||||
|
||||
static const struct ssh_digest *
|
||||
ssh_digest_by_alg(int alg)
|
||||
{
|
||||
if (alg < 0 || alg >= SSH_DIGEST_MAX)
|
||||
return NULL;
|
||||
if (digests[alg].id != alg) /* sanity */
|
||||
return NULL;
|
||||
if (digests[alg].cng_alg_name == NULL)
|
||||
return NULL;
|
||||
return &(digests[alg]);
|
||||
}
|
||||
|
||||
int
|
||||
ssh_digest_alg_by_name(const char *name)
|
||||
{
|
||||
int alg;
|
||||
|
||||
for (alg = 0; digests[alg].id != -1; alg++) {
|
||||
if (_stricmp(name, digests[alg].name) == 0)
|
||||
return digests[alg].id;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
const char *
|
||||
ssh_digest_alg_name(int alg)
|
||||
{
|
||||
const struct ssh_digest *digest = ssh_digest_by_alg(alg);
|
||||
|
||||
return digest == NULL ? NULL : digest->name;
|
||||
}
|
||||
|
||||
size_t
|
||||
ssh_digest_bytes(int alg)
|
||||
{
|
||||
const struct ssh_digest *digest = ssh_digest_by_alg(alg);
|
||||
|
||||
return digest == NULL ? 0 : digest->digest_len;
|
||||
}
|
||||
|
||||
size_t
|
||||
ssh_digest_blocksize(struct ssh_digest_ctx *ctx)
|
||||
{
|
||||
HRESULT hr = S_OK;
|
||||
DWORD blocksize = 0;
|
||||
DWORD count;
|
||||
|
||||
hr = BCryptGetProperty(ctx->cng_alg_handle, BCRYPT_HASH_BLOCK_LENGTH, (PUCHAR)&blocksize, sizeof(DWORD), &count, 0);
|
||||
|
||||
return (size_t)blocksize;
|
||||
}
|
||||
|
||||
struct ssh_digest_ctx *
|
||||
ssh_digest_start(int alg)
|
||||
{
|
||||
const struct ssh_digest *digest = ssh_digest_by_alg(alg);
|
||||
struct ssh_digest_ctx *ret;
|
||||
HRESULT hr = S_OK;
|
||||
|
||||
if (digest == NULL || ((ret = (struct ssh_digest_ctx *)malloc(sizeof(*ret))) == NULL))
|
||||
return NULL;
|
||||
ret->alg = alg;
|
||||
|
||||
if ((hr = BCryptOpenAlgorithmProvider(&(ret->cng_alg_handle), digest->cng_alg_name, NULL, 0)) != S_OK){
|
||||
free(ret);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if ((hr = BCryptCreateHash(ret->cng_alg_handle, &(ret->hash_handle), NULL, 0, NULL, 0, 0)) != S_OK)
|
||||
{
|
||||
BCryptCloseAlgorithmProvider(ret->cng_alg_handle, 0);
|
||||
free(ret);
|
||||
return NULL;
|
||||
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
ssh_digest_copy_state(struct ssh_digest_ctx *from, struct ssh_digest_ctx *to)
|
||||
{
|
||||
HRESULT hr = S_OK;
|
||||
|
||||
if (from->alg != to->alg)
|
||||
return SSH_ERR_INVALID_ARGUMENT;
|
||||
if ((hr = BCryptDuplicateHash(from->hash_handle, &(to->hash_handle),NULL,0,0)) != S_OK)
|
||||
return SSH_ERR_LIBCRYPTO_ERROR;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
ssh_digest_update(struct ssh_digest_ctx *ctx, const void *m, size_t mlen)
|
||||
{
|
||||
HRESULT hr = S_OK;
|
||||
if ((hr = BCryptHashData(ctx->hash_handle, (PUCHAR)m, mlen, 0)) != S_OK)
|
||||
return SSH_ERR_LIBCRYPTO_ERROR;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
ssh_digest_update_buffer(struct ssh_digest_ctx *ctx, const struct sshbuf *b)
|
||||
{
|
||||
return ssh_digest_update(ctx, sshbuf_ptr(b), sshbuf_len(b));
|
||||
}
|
||||
|
||||
int
|
||||
ssh_digest_final(struct ssh_digest_ctx *ctx, u_char *d, size_t dlen)
|
||||
{
|
||||
const struct ssh_digest *digest = ssh_digest_by_alg(ctx->alg);
|
||||
u_int l = dlen;
|
||||
HRESULT hr = S_OK;
|
||||
|
||||
if (dlen > UINT_MAX)
|
||||
return SSH_ERR_INVALID_ARGUMENT;
|
||||
if (dlen < digest->digest_len) /* No truncation allowed */
|
||||
return SSH_ERR_INVALID_ARGUMENT;
|
||||
if ((hr = BCryptFinishHash(ctx->hash_handle, d, digest->digest_len, 0)) != S_OK)
|
||||
return SSH_ERR_LIBCRYPTO_ERROR;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
ssh_digest_free(struct ssh_digest_ctx *ctx)
|
||||
{
|
||||
if (ctx != NULL) {
|
||||
BCryptCloseAlgorithmProvider(ctx->cng_alg_handle, 0);
|
||||
BCryptDestroyHash(ctx->hash_handle);
|
||||
explicit_bzero(ctx, sizeof(*ctx));
|
||||
free(ctx);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
ssh_digest_memory(int alg, const void *m, size_t mlen, u_char *d, size_t dlen)
|
||||
{
|
||||
const struct ssh_digest *digest = ssh_digest_by_alg(alg);
|
||||
struct ssh_digest_ctx *ctx = ssh_digest_start(alg);
|
||||
u_int mdlen;
|
||||
|
||||
if (digest == NULL)
|
||||
return SSH_ERR_INVALID_ARGUMENT;
|
||||
if (dlen > UINT_MAX)
|
||||
return SSH_ERR_INVALID_ARGUMENT;
|
||||
if (dlen < digest->digest_len)
|
||||
return SSH_ERR_INVALID_ARGUMENT;
|
||||
mdlen = dlen;
|
||||
if (ssh_digest_update(ctx, m, mlen) != 0 ||
|
||||
ssh_digest_final(ctx, d, dlen) != 0)
|
||||
return -1;
|
||||
ssh_digest_free(ctx);
|
||||
return 0;
|
||||
}
|
||||
|
||||
const u_char *sshbuf_ptr(const struct sshbuf *buf);
|
||||
size_t sshbuf_len(const struct sshbuf *buf);
|
||||
|
||||
|
||||
int
|
||||
ssh_digest_buffer(int alg, const struct sshbuf *b, u_char *d, size_t dlen)
|
||||
{
|
||||
return ssh_digest_memory(alg, sshbuf_ptr(b), sshbuf_len(b), d, dlen);
|
||||
return 0;
|
||||
}
|
183
contrib/win32/win32compat/conio.c
Normal file
183
contrib/win32/win32compat/conio.c
Normal file
@ -0,0 +1,183 @@
|
||||
/*
|
||||
* Author: Microsoft Corp.
|
||||
*
|
||||
* Copyright (c) 2015 Microsoft Corp.
|
||||
* All rights reserved
|
||||
*
|
||||
* Microsoft openssh win32 port
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/* conio.c
|
||||
*
|
||||
* Inserts data into Windows Console Input. Needed WriteToConsole() API implemented.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#include <console.h>
|
||||
#include <conio.h>
|
||||
|
||||
COORD lastCursorLoc = { 0, 0 };
|
||||
BYTE KeyboardState[256];
|
||||
INPUT_RECORD srec;
|
||||
DWORD dwGlobalConsoleMode ;
|
||||
|
||||
int WriteToConsole(HANDLE fd, unsigned char *buf, size_t len, size_t *dwWritten, void *flag)
|
||||
{
|
||||
static KEY_EVENT_RECORD *pkey;
|
||||
static KEY_EVENT_RECORD *pkey2;
|
||||
static INPUT_RECORD irec[2];
|
||||
static BOOL bInitKeyboard = TRUE;
|
||||
size_t ctr;
|
||||
int rc;
|
||||
DWORD dwRecords;
|
||||
DWORD vkey;
|
||||
BOOL bNeedToWait = TRUE;
|
||||
CONSOLE_SCREEN_BUFFER_INFO csbi;
|
||||
|
||||
int scr_width = 80; /* screen horizontal width, e.g. 80 */
|
||||
int scr_height = 25; /* screen vertical length, e.g. 25 */
|
||||
char tmpbuf[2];
|
||||
int local_echo = 0;
|
||||
|
||||
/*
|
||||
* Need to set pkey and pkey2 which we use below. Initialize the keyboard state table.
|
||||
*/
|
||||
if (bInitKeyboard)
|
||||
{
|
||||
GetKeyboardState(KeyboardState);
|
||||
bInitKeyboard = FALSE;
|
||||
srec.EventType = KEY_EVENT;
|
||||
srec.Event.KeyEvent.bKeyDown = TRUE;
|
||||
srec.Event.KeyEvent.wRepeatCount = 1;
|
||||
srec.Event.KeyEvent.wVirtualKeyCode = 0x10;
|
||||
srec.Event.KeyEvent.wVirtualScanCode = 0x2a;
|
||||
srec.Event.KeyEvent.uChar.AsciiChar = 0;
|
||||
srec.Event.KeyEvent.uChar.UnicodeChar = 0;
|
||||
srec.Event.KeyEvent.dwControlKeyState = 0x10;
|
||||
|
||||
irec[0].EventType = KEY_EVENT; /* init key down message */
|
||||
pkey = &(irec[0].Event.KeyEvent);
|
||||
pkey->wRepeatCount = 1;
|
||||
pkey->bKeyDown = TRUE;
|
||||
|
||||
irec[1].EventType = KEY_EVENT; /* init key up message */
|
||||
pkey2 = &(irec[1].Event.KeyEvent);
|
||||
pkey2->wRepeatCount = 1;
|
||||
pkey2->bKeyDown = FALSE;
|
||||
}
|
||||
|
||||
// Stream mode processing
|
||||
if (local_echo)
|
||||
{
|
||||
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
|
||||
}
|
||||
|
||||
GetConsoleMode(fd, &dwGlobalConsoleMode);
|
||||
|
||||
ctr = 0;
|
||||
while (ctr < len)
|
||||
{
|
||||
if (local_echo)
|
||||
{
|
||||
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
|
||||
lastCursorLoc.Y = csbi.dwCursorPosition.Y;
|
||||
lastCursorLoc.X = csbi.dwCursorPosition.X;
|
||||
}
|
||||
{
|
||||
pkey->dwControlKeyState = 0x00000000;
|
||||
pkey->uChar.AsciiChar = buf[ctr]; /* next char in ascii */
|
||||
|
||||
mbtowc(&(pkey->uChar.UnicodeChar), (const char *)&(buf[ctr]), 1);
|
||||
vkey = VkKeyScan(pkey->uChar.AsciiChar);
|
||||
|
||||
if ((BYTE)(vkey >> 8) != 0xFF) // high order word
|
||||
{
|
||||
if (vkey & 0x0100 || (KeyboardState[VK_LSHIFT] & 0x80)) /* high word gives shift, ctrl, alt status */
|
||||
pkey->dwControlKeyState |= SHIFT_PRESSED; /* shift key presssed*/
|
||||
if (vkey & 0x0200 || (KeyboardState[VK_LCONTROL] & 0x80))
|
||||
pkey->dwControlKeyState |= LEFT_CTRL_PRESSED; /* any ctrl really*/
|
||||
if ((vkey & 0x0400) || (KeyboardState[VK_LMENU] & 0x80))
|
||||
pkey->dwControlKeyState |= LEFT_ALT_PRESSED; /* any ALT really*/
|
||||
}
|
||||
if ((BYTE)vkey != 0xFF) // low order word
|
||||
{
|
||||
pkey->wVirtualKeyCode = (BYTE)vkey;
|
||||
pkey->wVirtualScanCode = MapVirtualKey(pkey->wVirtualKeyCode, 0);
|
||||
if (pkey->uChar.UnicodeChar == 0x1b) // stream mode fix for Admark ESC sequences
|
||||
pkey->wVirtualKeyCode = 0x00db;
|
||||
|
||||
|
||||
}
|
||||
|
||||
/* we need to mimic key up and key down */
|
||||
if (pkey->dwControlKeyState & 0x0100)
|
||||
{
|
||||
srec.Event.KeyEvent.bKeyDown = TRUE;
|
||||
srec.Event.KeyEvent.dwControlKeyState = 0x10;
|
||||
WriteConsoleInput(fd, &srec, 1, &dwRecords); /* write shift down */
|
||||
tmpbuf[0] = irec[0].Event.KeyEvent.uChar.AsciiChar;
|
||||
tmpbuf[1] = '\0';
|
||||
}
|
||||
|
||||
pkey->bKeyDown = TRUE; /*since pkey is mucked by others we do it again*/
|
||||
|
||||
/* dup these into key up message structure from key down message */
|
||||
pkey2->wVirtualKeyCode = pkey->wVirtualKeyCode;
|
||||
pkey2->wVirtualScanCode = pkey->wVirtualScanCode;
|
||||
pkey2->uChar.AsciiChar = pkey->uChar.AsciiChar;
|
||||
pkey2->uChar.UnicodeChar = pkey->uChar.UnicodeChar;
|
||||
pkey2->dwControlKeyState = pkey->dwControlKeyState;
|
||||
|
||||
WriteConsoleInput(fd, irec, 2, &dwRecords); /* key down,up msgs */
|
||||
tmpbuf[0] = irec[0].Event.KeyEvent.uChar.AsciiChar;
|
||||
tmpbuf[1] = '\0';
|
||||
if (pkey->dwControlKeyState & 0x0100)
|
||||
{
|
||||
srec.Event.KeyEvent.bKeyDown = FALSE;
|
||||
srec.Event.KeyEvent.dwControlKeyState = 0x0;
|
||||
WriteConsoleInput(fd, &srec, 1, &dwRecords); /* write shift up */
|
||||
|
||||
}
|
||||
//if ((local_echo))
|
||||
//{
|
||||
// bNeedToWait = EchoInputCharacter(buf[ctr], &csbi.dwCursorPosition, dwGlobalConsoleMode);
|
||||
//}
|
||||
}
|
||||
ctr++;
|
||||
Sleep(0);
|
||||
}
|
||||
|
||||
*dwWritten = len;
|
||||
|
||||
//netflush();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1,19 +1,38 @@
|
||||
/* console.c
|
||||
* Author: Pragma Systems, Inc. <www.pragmasys.com>
|
||||
* Contribution by Pragma Systems, Inc. for Microsoft openssh win32 port
|
||||
* Copyright (c) 2011, 2015 Pragma Systems, Inc.
|
||||
/*
|
||||
* Author: Microsoft Corp.
|
||||
*
|
||||
* Copyright (c) 2015 Microsoft Corp.
|
||||
* All rights reserved
|
||||
*
|
||||
* Microsoft openssh win32 port
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/* console.c
|
||||
*
|
||||
* Common library for Windows Console Screen IO.
|
||||
* Contains Windows console related definition so that emulation code can draw
|
||||
* on Windows console screen surface.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice.
|
||||
* 2. Binaries produced provide no direct or implied warranties or any
|
||||
* guarantee of performance or suitability.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
|
@ -1,8 +1,33 @@
|
||||
/* console.h
|
||||
* Author: Pragma Systems, Inc. <www.pragmasys.com>
|
||||
* Contribution by Pragma Systems, Inc. for Microsoft openssh win32 port
|
||||
* Copyright (c) 2011, 2015 Pragma Systems, Inc.
|
||||
/*
|
||||
* Author: Microsoft Corp.
|
||||
*
|
||||
* Copyright (c) 2015 Microsoft Corp.
|
||||
* All rights reserved
|
||||
*
|
||||
* Microsoft openssh win32 port
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/* console.h
|
||||
*
|
||||
* Common library for Windows Console Screen IO.
|
||||
* Contains Windows console related definition so that emulation code can draw
|
||||
@ -11,9 +36,6 @@
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice.
|
||||
* 2. Binaries produced provide no direct or implied warranties or any
|
||||
* guarantee of performance or suitability.
|
||||
*/
|
||||
|
||||
#ifndef __PRAGMA_CONSOLE_h
|
||||
|
@ -54,6 +54,7 @@ extern void debug3(const char *fmt,...);
|
||||
extern void error(const char *fmt,...);
|
||||
extern void fatal(const char *fmt,...);
|
||||
|
||||
int glob_itissshclient = 0; // ssh client turns it to 1
|
||||
static int winsock_initialized = 0;
|
||||
|
||||
extern int logfd;
|
||||
@ -1545,7 +1546,26 @@ int socketpair(int socks[2])
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
int DataAvailable ( HANDLE h )
|
||||
{
|
||||
INPUT_RECORD irec = {0};
|
||||
|
||||
DWORD events_read = 0;
|
||||
|
||||
int ret = PeekConsoleInput (h, &irec, 1, &events_read);
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (events_read) // && irec.EventType == KEY_EVENT)
|
||||
{
|
||||
return events_read ;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
int peekConsoleRead(int sfd)
|
||||
{
|
||||
DWORD sleep_time = 0;
|
||||
@ -2391,8 +2411,9 @@ int WSHELPread(int sfd, char *dst, unsigned int max)
|
||||
SOCKET sock;
|
||||
|
||||
int ret = -1;
|
||||
int sfd_type = get_sfd_type(sfd);
|
||||
|
||||
switch(get_sfd_type(sfd))
|
||||
switch (sfd_type)
|
||||
{
|
||||
case SFD_TYPE_SOCKET:
|
||||
{
|
||||
@ -2450,8 +2471,9 @@ int WSHELPread(int sfd, char *dst, unsigned int max)
|
||||
|
||||
case SFD_TYPE_FD:
|
||||
case SFD_TYPE_PIPE:
|
||||
case SFD_TYPE_CONSOLE:
|
||||
//case SFD_TYPE_CONSOLE:
|
||||
{
|
||||
|
||||
ret = _read(sfd_to_fd(sfd), dst, max);
|
||||
|
||||
if (FD_ISSET(sfd_to_fd(sfd), &debug_sfds))
|
||||
@ -2470,6 +2492,25 @@ int WSHELPread(int sfd, char *dst, unsigned int max)
|
||||
sfd, GetLastError());
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case SFD_TYPE_CONSOLE:
|
||||
{
|
||||
//if (sfd_type == SFD_TYPE_CONSOLE) {
|
||||
// we could be send here due to ctrl-c input, so no data to read
|
||||
//if ( DataAvailable (sfd_to_handle(sfd)) <=0 )
|
||||
//return 1; // no data to read
|
||||
//}
|
||||
ret = ReadConsoleForTermEmul( sfd_to_handle(sfd), dst, max);
|
||||
|
||||
if (ret < 0)
|
||||
{
|
||||
error("read from pipe/console sfd [%d] failed with error code [%d]",
|
||||
sfd, GetLastError());
|
||||
}
|
||||
if (ret == 0)
|
||||
return 0; //1;
|
||||
|
||||
break;
|
||||
}
|
||||
case 99:
|
||||
@ -2519,7 +2560,11 @@ int WSHELPwrite(int sfd, const char *buf, unsigned int max)
|
||||
|
||||
int ret = -1;
|
||||
|
||||
switch(get_sfd_type(sfd))
|
||||
int sfd_type = get_sfd_type(sfd);
|
||||
if ( (glob_itissshclient) && ( sfd_type == SFD_TYPE_CONSOLE ) )
|
||||
sfd_type = SFD_TYPE_PIPE ; // client write type uses _write() in place ofn console insertion
|
||||
|
||||
switch(sfd_type)
|
||||
{
|
||||
case SFD_TYPE_SOCKET:
|
||||
{
|
||||
@ -2616,7 +2661,7 @@ int WSHELPwrite(int sfd, const char *buf, unsigned int max)
|
||||
|
||||
case SFD_TYPE_FD:
|
||||
case SFD_TYPE_PIPE:
|
||||
case SFD_TYPE_CONSOLE:
|
||||
//case SFD_TYPE_CONSOLE:
|
||||
{
|
||||
ret = _write(sfd_to_fd(sfd), buf, max);
|
||||
|
||||
@ -2649,6 +2694,15 @@ int WSHELPwrite(int sfd, const char *buf, unsigned int max)
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case SFD_TYPE_CONSOLE:
|
||||
{
|
||||
//ret = _write(sfd_to_fd(sfd), buf, max);
|
||||
DWORD dwWritten = 0 ;
|
||||
ret = WriteToConsole(sfd_to_handle(sfd), buf, max, &dwWritten, 0) ;
|
||||
ret = max ;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
762
contrib/win32/win32compat/tncon.c
Normal file
762
contrib/win32/win32compat/tncon.c
Normal file
@ -0,0 +1,762 @@
|
||||
/*
|
||||
* Author: Microsoft Corp.
|
||||
*
|
||||
* Copyright (c) 2015 Microsoft Corp.
|
||||
* All rights reserved
|
||||
*
|
||||
* Microsoft openssh win32 port
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/* tncon.c
|
||||
*
|
||||
* Console reading calls for building an emulator over Windows Console. MS win32 port of ssh.exe client uses it.
|
||||
*
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <winsock2.h>
|
||||
#include <windows.h>
|
||||
|
||||
#include "ansiprsr.h"
|
||||
#include "tncon.h"
|
||||
#include "tnnet.h"
|
||||
|
||||
extern bool gbVTAppMode;
|
||||
|
||||
char *glob_out = NULL ;
|
||||
int glob_outlen = 0;
|
||||
int glob_space = 0;
|
||||
|
||||
// For our case, in NetWriteString2(), we do not use socket, but write the out going data to
|
||||
// a global buffer setup by ReadConsoleForTermEmul() function below
|
||||
int NetWriteString2(SOCKET sock, char* source, size_t len, int options)
|
||||
{
|
||||
while ( len > 0 ) {
|
||||
//printf("[%c]", *source);
|
||||
if (glob_outlen >= glob_space)
|
||||
return glob_outlen; // no more room to copy, this much got done
|
||||
*glob_out++ = *source++ ;
|
||||
len--;
|
||||
glob_outlen++;
|
||||
}
|
||||
|
||||
return glob_outlen;
|
||||
}
|
||||
|
||||
TelParams Parameters;
|
||||
TelParams* pParams = &Parameters ;
|
||||
|
||||
void ConInputInitParams(void)
|
||||
{
|
||||
memset( &Parameters, '\0', sizeof( TelParams ) );
|
||||
|
||||
// set default values
|
||||
Parameters.szDebugInputFile = NULL;
|
||||
Parameters.fDebugWait= FALSE;
|
||||
Parameters.nReceiveCRLF = ENUM_LF;
|
||||
//Parameters.fSendCROnly = TRUE; //FALSE;
|
||||
Parameters.sleepChar = '`';
|
||||
Parameters.menuChar = '\035'; // CTRL-]
|
||||
Parameters.pAltKey = "\x01"; // default
|
||||
|
||||
HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
|
||||
DWORD dwMode;
|
||||
GetConsoleMode(hInput, &dwMode);
|
||||
SetConsoleMode(hInput, (dwMode & ~(ENABLE_LINE_INPUT |
|
||||
ENABLE_ECHO_INPUT | ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT)) | ENABLE_WINDOW_INPUT );
|
||||
|
||||
extern int glob_itissshclient;
|
||||
glob_itissshclient = 1; // tell our contrib/win32/win32compat/socket.c code it is for ssh client side
|
||||
|
||||
}
|
||||
|
||||
unsigned char NAWSSTR[] = { "\xff\xfa\x1f\x00\x00\x00\x00\xff\xf0"};
|
||||
|
||||
extern int ScreenY;
|
||||
extern int ScreenX;
|
||||
|
||||
extern int ScrollTop;
|
||||
extern int ScrollBottom;
|
||||
|
||||
int DataAvailableCount ( HANDLE h )
|
||||
{
|
||||
INPUT_RECORD irec[64];
|
||||
|
||||
DWORD events_read = 0;
|
||||
|
||||
int ret = PeekConsoleInput (h, &irec, 64, &events_read);
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (events_read) // && irec.EventType == KEY_EVENT)
|
||||
{
|
||||
return events_read ;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ReadConsoleForTermEmul( HANDLE hInput, char *destin, int destinlen)
|
||||
{
|
||||
//HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
|
||||
HANDLE hHandle[] = {hInput, NULL};
|
||||
DWORD nHandle = 1;
|
||||
DWORD dwInput;
|
||||
unsigned char szResponse[50];
|
||||
INPUT_RECORD InputRecord;
|
||||
DWORD dwControlKeyState, rc;
|
||||
BOOL bCapsOn, bShift;
|
||||
char aChar;
|
||||
unsigned char octets[20];
|
||||
|
||||
glob_out = destin ;
|
||||
glob_space = destinlen ;
|
||||
glob_outlen = 0;
|
||||
|
||||
int dataavail = DataAvailableCount (hInput) ;
|
||||
|
||||
while (dataavail > 0)
|
||||
{
|
||||
if (glob_outlen >= destinlen)
|
||||
return glob_outlen ; // user given space is full, so return with whatever we read so far
|
||||
|
||||
//rc = WaitForMultipleObjects(nHandle, hHandle, FALSE, INFINITE);
|
||||
rc = WAIT_OBJECT_0 ;
|
||||
switch (rc)
|
||||
{
|
||||
case WAIT_OBJECT_0:
|
||||
{
|
||||
ReadConsoleInputW(hInput, &InputRecord, 1, &dwInput);
|
||||
dataavail--;
|
||||
switch (InputRecord.EventType)
|
||||
{
|
||||
case WINDOW_BUFFER_SIZE_EVENT:
|
||||
memcpy(szResponse,NAWSSTR,9);
|
||||
szResponse[4] = ConScreenSizeX();
|
||||
szResponse[6] = ConWindowSizeY(); // visible window size - not buffer
|
||||
ScreenX = ConScreenSizeX();
|
||||
ScreenY = ConWindowSizeY(); // visible window size - not buffer
|
||||
//NetWriteString2(pParams->Socket,(char *) szResponse, 9,0); // it needs to got out to remote sshd
|
||||
break;
|
||||
|
||||
case FOCUS_EVENT:
|
||||
case MENU_EVENT:
|
||||
break;
|
||||
|
||||
case KEY_EVENT:
|
||||
// Remove all of the keys we don't care about
|
||||
bCapsOn = (InputRecord.Event.KeyEvent.dwControlKeyState & CAPSLOCK_ON);
|
||||
bShift = (InputRecord.Event.KeyEvent.dwControlKeyState & SHIFT_PRESSED);
|
||||
dwControlKeyState = InputRecord.Event.KeyEvent.dwControlKeyState & ~(CAPSLOCK_ON | ENHANCED_KEY | NUMLOCK_ON | SCROLLLOCK_ON );
|
||||
if (InputRecord.Event.KeyEvent.uChar.UnicodeChar)
|
||||
{
|
||||
if (InputRecord.Event.KeyEvent.bKeyDown)
|
||||
{
|
||||
ConRestoreViewRect();
|
||||
int n = WideCharToMultiByte(GetConsoleCP(),0,&(InputRecord.Event.KeyEvent.uChar.UnicodeChar),1,(LPSTR)octets,20,NULL,NULL);
|
||||
|
||||
if (pParams->fLocalEcho){
|
||||
// ConWriteCharW( InputRecord.Event.KeyEvent.uChar.UnicodeChar );
|
||||
ConWriteString((char *)octets,n);
|
||||
}
|
||||
if ((dwControlKeyState == LEFT_ALT_PRESSED) ||
|
||||
(dwControlKeyState == RIGHT_ALT_PRESSED))
|
||||
NetWriteString2(pParams->Socket, (char *)pParams->pAltKey, 1, 0);
|
||||
|
||||
switch (InputRecord.Event.KeyEvent.uChar.UnicodeChar)
|
||||
{
|
||||
case 0xd:
|
||||
if (pParams->nReceiveCRLF == ENUM_LF)
|
||||
NetWriteString2(pParams->Socket, "\n", 1, 0);
|
||||
else
|
||||
NetWriteString2(pParams->Socket, "\r\n", 2, 0);
|
||||
break;
|
||||
|
||||
case VK_ESCAPE:
|
||||
NetWriteString2(pParams->Socket, (char *)ESCAPE_KEY, 1, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
NetWriteString2(pParams->Socket, (char *)octets, n, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//Non Unicode key
|
||||
if (InputRecord.Event.KeyEvent.bKeyDown)
|
||||
{
|
||||
|
||||
switch(InputRecord.Event.KeyEvent.wVirtualKeyCode)
|
||||
{
|
||||
case VK_UP:
|
||||
NetWriteString2(pParams->Socket, (char *)(gbVTAppMode?APP_UP_ARROW:UP_ARROW), 3, 0);
|
||||
break;
|
||||
case VK_DOWN:
|
||||
NetWriteString2(pParams->Socket, (char *)(gbVTAppMode?APP_DOWN_ARROW:DOWN_ARROW), 3, 0);
|
||||
break;
|
||||
case VK_RIGHT:
|
||||
NetWriteString2(pParams->Socket, (char *)(gbVTAppMode?APP_RIGHT_ARROW:RIGHT_ARROW), 3, 0);
|
||||
break;
|
||||
case VK_LEFT:
|
||||
NetWriteString2(pParams->Socket, (char *)(gbVTAppMode?APP_LEFT_ARROW:LEFT_ARROW), 3, 0);
|
||||
break;
|
||||
case VK_F1:
|
||||
if ( dwControlKeyState == 0 )
|
||||
{
|
||||
if (pParams->bVT100Mode)
|
||||
NetWriteString2(pParams->Socket, (char *)VT100_PF1_KEY, strlen(VT100_PF1_KEY), 0);
|
||||
else
|
||||
NetWriteString2(pParams->Socket, (char *)PF1_KEY, strlen(PF1_KEY), 0);
|
||||
}
|
||||
else if ( dwControlKeyState == SHIFT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_PF1_KEY, strlen(SHIFT_PF1_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_CTRL_PRESSED ||
|
||||
dwControlKeyState == RIGHT_CTRL_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)CTRL_PF1_KEY, strlen(CTRL_PF1_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_ALT_PRESSED ||
|
||||
dwControlKeyState == RIGHT_ALT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_PF1_KEY, strlen(ALT_PF1_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) )
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_CTRL_PF1_KEY, strlen(SHIFT_ALT_CTRL_PF1_KEY), 0);
|
||||
else if((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_CTRL_PF1_KEY, strlen(ALT_CTRL_PF1_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) ))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_PF1_KEY, strlen(SHIFT_ALT_PF1_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_CTRL_PF1_KEY, strlen(SHIFT_CTRL_PF1_KEY), 0);
|
||||
break;
|
||||
case VK_F2:
|
||||
if ( dwControlKeyState == 0 )
|
||||
{
|
||||
if (pParams->bVT100Mode)
|
||||
NetWriteString2(pParams->Socket, (char *)VT100_PF2_KEY, strlen(VT100_PF2_KEY), 0);
|
||||
else
|
||||
NetWriteString2(pParams->Socket, (char *)PF2_KEY, strlen(PF2_KEY), 0);
|
||||
}
|
||||
else if ( dwControlKeyState == SHIFT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_PF2_KEY, strlen(SHIFT_PF2_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_CTRL_PRESSED ||
|
||||
dwControlKeyState == RIGHT_CTRL_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)CTRL_PF2_KEY, strlen(CTRL_PF2_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_ALT_PRESSED ||
|
||||
dwControlKeyState == RIGHT_ALT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_PF2_KEY, strlen(ALT_PF2_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) )
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_CTRL_PF2_KEY, strlen(SHIFT_ALT_CTRL_PF2_KEY), 0);
|
||||
else if((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_CTRL_PF2_KEY, strlen(ALT_CTRL_PF2_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) ))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_PF2_KEY, strlen(SHIFT_ALT_PF2_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_CTRL_PF2_KEY, strlen(SHIFT_CTRL_PF2_KEY), 0);
|
||||
break;
|
||||
case VK_F3:
|
||||
if ( dwControlKeyState == 0 )
|
||||
{
|
||||
if (pParams->bVT100Mode)
|
||||
NetWriteString2(pParams->Socket, (char *)VT100_PF3_KEY, strlen(VT100_PF3_KEY), 0);
|
||||
else
|
||||
NetWriteString2(pParams->Socket, (char *)PF3_KEY, strlen(PF3_KEY), 0);
|
||||
}
|
||||
else if ( dwControlKeyState == SHIFT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_PF3_KEY, strlen(SHIFT_PF3_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_CTRL_PRESSED ||
|
||||
dwControlKeyState == RIGHT_CTRL_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)CTRL_PF3_KEY, strlen(CTRL_PF3_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_ALT_PRESSED ||
|
||||
dwControlKeyState == RIGHT_ALT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_PF3_KEY, strlen(ALT_PF3_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) )
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_CTRL_PF3_KEY, strlen(SHIFT_ALT_CTRL_PF3_KEY), 0);
|
||||
else if((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_CTRL_PF3_KEY, strlen(ALT_CTRL_PF3_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) ))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_PF3_KEY, strlen(SHIFT_ALT_PF3_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_CTRL_PF3_KEY, strlen(SHIFT_CTRL_PF3_KEY), 0);
|
||||
break;
|
||||
case VK_F4:
|
||||
if ( dwControlKeyState == 0 )
|
||||
{
|
||||
if (pParams->bVT100Mode)
|
||||
NetWriteString2(pParams->Socket, (char *)VT100_PF4_KEY, strlen(VT100_PF4_KEY), 0);
|
||||
else
|
||||
NetWriteString2(pParams->Socket, (char *)PF4_KEY, strlen(PF4_KEY), 0);
|
||||
}
|
||||
else if ( dwControlKeyState == SHIFT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_PF4_KEY, strlen(SHIFT_PF4_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_CTRL_PRESSED ||
|
||||
dwControlKeyState == RIGHT_CTRL_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)CTRL_PF4_KEY, strlen(CTRL_PF4_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_ALT_PRESSED ||
|
||||
dwControlKeyState == RIGHT_ALT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_PF4_KEY, strlen(ALT_PF4_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) )
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_CTRL_PF4_KEY, strlen(SHIFT_ALT_CTRL_PF4_KEY), 0);
|
||||
else if((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_CTRL_PF4_KEY, strlen(ALT_CTRL_PF4_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) ))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_PF4_KEY, strlen(SHIFT_ALT_PF4_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_CTRL_PF4_KEY, strlen(SHIFT_CTRL_PF4_KEY), 0);
|
||||
break;
|
||||
case VK_F5:
|
||||
if ( dwControlKeyState == 0 )
|
||||
{
|
||||
NetWriteString2(pParams->Socket, (char *)PF5_KEY, strlen(PF5_KEY), 0);
|
||||
}
|
||||
else if ( dwControlKeyState == SHIFT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_PF5_KEY, strlen(SHIFT_PF5_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_CTRL_PRESSED ||
|
||||
dwControlKeyState == RIGHT_CTRL_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)CTRL_PF5_KEY, strlen(CTRL_PF5_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_ALT_PRESSED ||
|
||||
dwControlKeyState == RIGHT_ALT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_PF5_KEY, strlen(ALT_PF5_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) )
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_CTRL_PF5_KEY, strlen(SHIFT_ALT_CTRL_PF5_KEY), 0);
|
||||
else if((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_CTRL_PF5_KEY, strlen(ALT_CTRL_PF5_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) ))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_PF5_KEY, strlen(SHIFT_ALT_PF5_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_CTRL_PF5_KEY, strlen(SHIFT_CTRL_PF5_KEY), 0);
|
||||
break;
|
||||
case VK_F6:
|
||||
if ( dwControlKeyState == 0 )
|
||||
NetWriteString2(pParams->Socket, (char *)PF6_KEY, strlen(PF6_KEY), 0);
|
||||
else if ( dwControlKeyState == SHIFT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_PF6_KEY, strlen(SHIFT_PF6_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_CTRL_PRESSED ||
|
||||
dwControlKeyState == RIGHT_CTRL_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)CTRL_PF6_KEY, strlen(CTRL_PF6_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_ALT_PRESSED ||
|
||||
dwControlKeyState == RIGHT_ALT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_PF6_KEY, strlen(ALT_PF6_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) )
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_CTRL_PF6_KEY, strlen(SHIFT_ALT_CTRL_PF6_KEY), 0);
|
||||
else if((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_CTRL_PF6_KEY, strlen(ALT_CTRL_PF6_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) ))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_PF6_KEY, strlen(SHIFT_ALT_PF6_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_CTRL_PF6_KEY, strlen(SHIFT_CTRL_PF6_KEY), 0);
|
||||
break;
|
||||
case VK_F7:
|
||||
if ( dwControlKeyState == 0 )
|
||||
NetWriteString2(pParams->Socket, (char *)PF7_KEY, strlen(PF7_KEY), 0);
|
||||
else if ( dwControlKeyState == SHIFT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_PF7_KEY, strlen(SHIFT_PF7_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_CTRL_PRESSED ||
|
||||
dwControlKeyState == RIGHT_CTRL_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)CTRL_PF7_KEY, strlen(CTRL_PF7_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_ALT_PRESSED ||
|
||||
dwControlKeyState == RIGHT_ALT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_PF7_KEY, strlen(ALT_PF7_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) )
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_CTRL_PF7_KEY, strlen(SHIFT_ALT_CTRL_PF7_KEY), 0);
|
||||
else if((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_CTRL_PF7_KEY, strlen(ALT_CTRL_PF7_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) ))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_PF7_KEY, strlen(SHIFT_ALT_PF7_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_CTRL_PF7_KEY, strlen(SHIFT_CTRL_PF7_KEY), 0);
|
||||
break;
|
||||
case VK_F8:
|
||||
if ( dwControlKeyState == 0 )
|
||||
NetWriteString2(pParams->Socket, (char *)PF8_KEY, strlen(PF8_KEY), 0);
|
||||
else if ( dwControlKeyState == SHIFT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_PF8_KEY, strlen(SHIFT_PF8_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_CTRL_PRESSED ||
|
||||
dwControlKeyState == RIGHT_CTRL_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)CTRL_PF8_KEY, strlen(CTRL_PF8_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_ALT_PRESSED ||
|
||||
dwControlKeyState == RIGHT_ALT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_PF8_KEY, strlen(ALT_PF8_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) )
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_CTRL_PF8_KEY, strlen(SHIFT_ALT_CTRL_PF8_KEY), 0);
|
||||
else if((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_CTRL_PF8_KEY, strlen(ALT_CTRL_PF8_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) ))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_PF8_KEY, strlen(SHIFT_ALT_PF8_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_CTRL_PF8_KEY, strlen(SHIFT_CTRL_PF8_KEY), 0);
|
||||
break;
|
||||
case VK_F9:
|
||||
if ( dwControlKeyState == 0 )
|
||||
NetWriteString2(pParams->Socket, (char *)PF9_KEY, strlen(PF9_KEY), 0);
|
||||
else if ( dwControlKeyState == SHIFT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_PF9_KEY, strlen(SHIFT_PF9_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_CTRL_PRESSED ||
|
||||
dwControlKeyState == RIGHT_CTRL_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)CTRL_PF9_KEY, strlen(CTRL_PF9_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_ALT_PRESSED ||
|
||||
dwControlKeyState == RIGHT_ALT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_PF9_KEY, strlen(ALT_PF9_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) )
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_CTRL_PF9_KEY, strlen(SHIFT_ALT_CTRL_PF9_KEY), 0);
|
||||
else if((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_CTRL_PF9_KEY, strlen(ALT_CTRL_PF9_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) ))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_PF9_KEY, strlen(SHIFT_ALT_PF9_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_CTRL_PF9_KEY, strlen(SHIFT_CTRL_PF9_KEY), 0);
|
||||
break;
|
||||
case VK_F10:
|
||||
if ( dwControlKeyState == 0 )
|
||||
NetWriteString2(pParams->Socket, (char *)PF10_KEY, strlen(PF10_KEY), 0);
|
||||
else if ( dwControlKeyState == SHIFT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_PF10_KEY, strlen(SHIFT_PF10_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_CTRL_PRESSED ||
|
||||
dwControlKeyState == RIGHT_CTRL_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)CTRL_PF10_KEY, strlen(CTRL_PF10_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_ALT_PRESSED ||
|
||||
dwControlKeyState == RIGHT_ALT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_PF10_KEY, strlen(ALT_PF10_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) )
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_CTRL_PF10_KEY, strlen(SHIFT_ALT_CTRL_PF10_KEY), 0);
|
||||
else if((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_CTRL_PF10_KEY, strlen(ALT_CTRL_PF10_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) ))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_PF10_KEY, strlen(SHIFT_ALT_PF10_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_CTRL_PF10_KEY, strlen(SHIFT_CTRL_PF10_KEY), 0);
|
||||
break;
|
||||
case VK_F11:
|
||||
if ( dwControlKeyState == 0 )
|
||||
NetWriteString2(pParams->Socket, (char *)PF11_KEY, strlen(PF11_KEY), 0);
|
||||
else if ( dwControlKeyState == SHIFT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_PF11_KEY, strlen(SHIFT_PF11_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_CTRL_PRESSED ||
|
||||
dwControlKeyState == RIGHT_CTRL_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)CTRL_PF11_KEY, strlen(CTRL_PF11_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_ALT_PRESSED ||
|
||||
dwControlKeyState == RIGHT_ALT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_PF11_KEY, strlen(ALT_PF11_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) )
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_CTRL_PF11_KEY, strlen(SHIFT_ALT_CTRL_PF11_KEY), 0);
|
||||
else if((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_CTRL_PF11_KEY, strlen(ALT_CTRL_PF11_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) ))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_PF11_KEY, strlen(SHIFT_ALT_PF11_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_CTRL_PF11_KEY, strlen(SHIFT_CTRL_PF11_KEY), 0);
|
||||
break;
|
||||
case VK_F12:
|
||||
if ( dwControlKeyState == 0 )
|
||||
NetWriteString2(pParams->Socket, (char *)PF12_KEY, strlen(PF12_KEY), 0);
|
||||
else if ( dwControlKeyState == SHIFT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_PF12_KEY, strlen(SHIFT_PF12_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_CTRL_PRESSED ||
|
||||
dwControlKeyState == RIGHT_CTRL_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)CTRL_PF12_KEY, strlen(CTRL_PF12_KEY), 0);
|
||||
else if ( dwControlKeyState == LEFT_ALT_PRESSED ||
|
||||
dwControlKeyState == RIGHT_ALT_PRESSED )
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_PF12_KEY, strlen(ALT_PF12_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) )
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_CTRL_PF12_KEY, strlen(SHIFT_ALT_CTRL_PF12_KEY), 0);
|
||||
else if((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)ALT_CTRL_PF12_KEY, strlen(ALT_CTRL_PF12_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & RIGHT_ALT_PRESSED) ||
|
||||
(dwControlKeyState & LEFT_ALT_PRESSED) ))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_ALT_PF12_KEY, strlen(SHIFT_ALT_PF12_KEY), 0);
|
||||
else if((dwControlKeyState & SHIFT_PRESSED)
|
||||
&&
|
||||
((dwControlKeyState & LEFT_CTRL_PRESSED) ||
|
||||
(dwControlKeyState & RIGHT_CTRL_PRESSED)))
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_CTRL_PF12_KEY, strlen(SHIFT_CTRL_PF12_KEY), 0);
|
||||
break;
|
||||
case VK_PRIOR:
|
||||
#ifdef PHYS_KEY_MAP
|
||||
NetWriteString2(pParams->Socket, (char *)REMOVE_KEY,4, 0);
|
||||
#else
|
||||
NetWriteString2(pParams->Socket, (char *)PREV_KEY, 4, 0);
|
||||
#endif
|
||||
break;
|
||||
case VK_NEXT:
|
||||
NetWriteString2(pParams->Socket, (char *)NEXT_KEY, 4, 0);
|
||||
break;
|
||||
case VK_END:
|
||||
#ifdef PHYS_KEY_MAP
|
||||
NetWriteString2(pParams->Socket, (char *)PREV_KEY,4, 0);
|
||||
#else
|
||||
NetWriteString2(pParams->Socket, (char *)SELECT_KEY, 4, 0);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case VK_HOME:
|
||||
#ifdef PHYS_KEY_MAP
|
||||
NetWriteString2(pParams->Socket, (char *)INSERT_KEY,4, 0);
|
||||
#else
|
||||
NetWriteString2(pParams->Socket, (char *)FIND_KEY, 4, 0);
|
||||
#endif
|
||||
break;
|
||||
case VK_INSERT:
|
||||
#ifdef PHYS_KEY_MAP
|
||||
NetWriteString2(pParams->Socket, (char *)FIND_KEY,4, 0);
|
||||
#else
|
||||
NetWriteString2(pParams->Socket, (char *)INSERT_KEY, 4, 0);
|
||||
|
||||
#endif
|
||||
break;
|
||||
case VK_DELETE:
|
||||
#ifdef PHYS_KEY_MAP
|
||||
NetWriteString2(pParams->Socket, (char *)SELECT_KEY,4, 0);
|
||||
#else
|
||||
NetWriteString2(pParams->Socket, (char *)REMOVE_KEY, 4, 0);
|
||||
#endif
|
||||
break;
|
||||
case VK_TAB:
|
||||
if (dwControlKeyState == SHIFT_PRESSED)
|
||||
NetWriteString2(pParams->Socket, (char *)SHIFT_TAB_KEY, 3, 0);
|
||||
break;
|
||||
case VK_ESCAPE:
|
||||
NetWriteString2(pParams->Socket, (char *)ESCAPE_KEY, 1, 0);
|
||||
break;
|
||||
case VK_SHIFT:
|
||||
case VK_CONTROL:
|
||||
case VK_CAPITAL:
|
||||
// NOP on these
|
||||
break;
|
||||
default:
|
||||
{
|
||||
aChar = InputRecord.Event.KeyEvent.uChar.AsciiChar;
|
||||
NetWriteString2(pParams->Socket, (char *)&aChar, 1, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
return glob_outlen;
|
||||
}
|
||||
}
|
||||
|
||||
return glob_outlen ;
|
||||
}
|
||||
|
||||
|
@ -1,17 +1,36 @@
|
||||
/* tncon.h
|
||||
* Author: Pragma Systems, Inc. <www.pragmasys.com>
|
||||
* Contribution by Pragma Systems, Inc. for Microsoft openssh win32 port
|
||||
* Copyright (c) 2011, 2015 Pragma Systems, Inc.
|
||||
/*
|
||||
* Author: Microsoft Corp.
|
||||
*
|
||||
* Copyright (c) 2015 Microsoft Corp.
|
||||
* All rights reserved
|
||||
*
|
||||
* Microsoft openssh win32 port
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/* tncon.h
|
||||
*
|
||||
* Contains terminal emulation console related key definition
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice.
|
||||
* 2. Binaries produced provide no direct or implied warranties or any
|
||||
* guarantee of performance or suitability.
|
||||
*/
|
||||
#ifndef __TNCON_H
|
||||
#define __TNCON_H
|
||||
|
@ -1,17 +1,36 @@
|
||||
/* tnnet.c
|
||||
* Author: Pragma Systems, Inc. <www.pragmasys.com>
|
||||
* Contribution by Pragma Systems, Inc. for Microsoft openssh win32 port
|
||||
* Copyright (c) 2011, 2015 Pragma Systems, Inc.
|
||||
/*
|
||||
* Author: Microsoft Corp.
|
||||
*
|
||||
* Copyright (c) 2015 Microsoft Corp.
|
||||
* All rights reserved
|
||||
*
|
||||
* Microsoft openssh win32 port
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/* tnnet.c
|
||||
*
|
||||
* Contains terminal emulation related network calls to invoke ANSI parsing engine
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice.
|
||||
* 2. Binaries produced provide no direct or implied warranties or any
|
||||
* guarantee of performance or suitability.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
|
@ -1,17 +1,36 @@
|
||||
/* tnnet.h
|
||||
* Author: Pragma Systems, Inc. <www.pragmasys.com>
|
||||
* Contribution by Pragma Systems, Inc. for Microsoft openssh win32 port
|
||||
* Copyright (c) 2011, 2015 Pragma Systems, Inc.
|
||||
/*
|
||||
* Author: Microsoft Corp.
|
||||
*
|
||||
* Copyright (c) 2015 Microsoft Corp.
|
||||
* All rights reserved
|
||||
*
|
||||
* Microsoft openssh win32 port
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/* tnnet.h
|
||||
*
|
||||
* Contains terminal emulation related network calls to invoke ANSI parsing engine
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice.
|
||||
* 2. Binaries produced provide no direct or implied warranties or any
|
||||
* guarantee of performance or suitability.
|
||||
*/
|
||||
|
||||
#ifndef __TNNET_H
|
||||
|
@ -1 +0,0 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6mQW39+Uvy7DPCJd6aHJ0RXDnL+NC7VsC+SUAvosyMwb3PrxjFobyJ24yl6HEpdHvmlbNkipObew3T/drNQ0QK/H4Wt/7mkIdxN6IbF9hpFaLt8Fyd0yd7cpdxGHjYVEjuUBHgsOI/2k2V3zZx/c31X87Zjwb18JM8DKNk/ewKBj1MZVDcBdIWQT5WORPmpCVV7CeLE1TiXc5b2/2wNOOBdKPuDYBDGdPShqD91IaXmIs9KFUo4jFBE/V+K6fesUngudnouKdhFzSokoXbIpFNyi5L2TURtS9ebwm0Zkaz2xW86DJ6bSMtuMqhUDsJOZFmHh8NnTwuSDPUVXhlzbZ @oasis
|
@ -1 +0,0 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCci4oy7TlKHy9d8+4slhm66MzE9haGbasI3Wwt6LqrvK6X0jtVCA+04nBWoBH7m+8UJrd6mqldSsOVETiZFLm4sNl95MmKirWHmoSeJy12wyovQXYkyYRH0T4J2lDna6JbgCPuaZpgIq88sxb/Z8RVf9fjStd6aNIyM95BalRnL839mYJxXpfPNMBkXGED3w/m5S6GgxX8VrP1cC6N+kXao5nyctZqFZAQbtj122LAeFNWN6W0Ehy5mx1VETFII+h9vSJ2LwDNHNrYBPV2IOtJ/tQ8ajSoc60bNvJjJtgld/he3KlmrgjtKcC4Akr1Bmegm+iI4pg2VgUnpocTdDfb @oasis
|
12
d2utmpa00672
12
d2utmpa00672
@ -1,12 +0,0 @@
|
||||
-----BEGIN DSA PRIVATE KEY-----
|
||||
MIIBuwIBAAKBgQC8GRz9p5YiVi9BA7jNO3MXV2NkPlMfCv2xjieBE6bflmHKoKhC
|
||||
ewlyrk1SfLJQgVbOZvdrgtsuYGgKfpqu8qWlVnEHOLYSa6f6CDcjRXa5X+T2+tBZ
|
||||
zYZ7UBlEFuDLoCEpSOopsDzPz+wvyGBH7/DPtHhbLB/ipIZYXMe/QXcyFwIVAIA9
|
||||
pz8MNAL+c9x9cNW9V40GIlnBAoGAWXg5YYAHb/+ZRHXBTTULmY8LT8Mhp8JDrIWY
|
||||
TE+JHlFmGtHJsajoQNo5yFCj6ep1YqeKSZdj3x0JXSJDLLQNuiaGL74MdEasYt3g
|
||||
rG04HE7k3tXfSwSM0cKhSFU/MKo9rhXStRcKdG5ZN4d+pTnoyV/ncfooiRJprqXH
|
||||
l4yv2vMCgYEAp8OaX5N4UtY0KID34SNj5b3hsAoK5IZ3mBsX7Ngg6Rbnr7h2s5sK
|
||||
sus5FiMtmymVssY84YZTRVP6oZWSShG/WOcUQrzo8zxKH9cj6pc/haSraTakSXLK
|
||||
bbsI2Bj1nMYmXZxSelLUZS0Xwsp3EVxxLYmrzduXyV3ewvrHFZ1q6jsCFH3IbB4V
|
||||
XAMosp5QzPxxeQQtAjVD
|
||||
-----END DSA PRIVATE KEY-----
|
@ -1,7 +0,0 @@
|
||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
||||
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
|
||||
QyNTUxOQAAACDsm6kHU3O2x/KuzcbAUhZGYsoc4Gn6YiFcuulsx4gsyAAAAJAJSj5MCUo+
|
||||
TAAAAAtzc2gtZWQyNTUxOQAAACDsm6kHU3O2x/KuzcbAUhZGYsoc4Gn6YiFcuulsx4gsyA
|
||||
AAAECGe69spV/5acdoNqiARzB79o5ASCy2SQ6Ng7SWENmDguybqQdTc7bH8q7NxsBSFkZi
|
||||
yhzgafpiIVy66WzHiCzIAAAABkBvYXNpcwECAwQFBgc=
|
||||
-----END OPENSSH PRIVATE KEY-----
|
@ -1 +0,0 @@
|
||||
ssh-dss AAAAB3NzaC1kc3MAAACBALwZHP2nliJWL0EDuM07cxdXY2Q+Ux8K/bGOJ4ETpt+WYcqgqEJ7CXKuTVJ8slCBVs5m92uC2y5gaAp+mq7ypaVWcQc4thJrp/oINyNFdrlf5Pb60FnNhntQGUQW4MugISlI6imwPM/P7C/IYEfv8M+0eFssH+Kkhlhcx79BdzIXAAAAFQCAPac/DDQC/nPcfXDVvVeNBiJZwQAAAIBZeDlhgAdv/5lEdcFNNQuZjwtPwyGnwkOshZhMT4keUWYa0cmxqOhA2jnIUKPp6nVip4pJl2PfHQldIkMstA26JoYvvgx0Rqxi3eCsbTgcTuTe1d9LBIzRwqFIVT8wqj2uFdK1Fwp0blk3h36lOejJX+dx+iiJEmmupceXjK/a8wAAAIEAp8OaX5N4UtY0KID34SNj5b3hsAoK5IZ3mBsX7Ngg6Rbnr7h2s5sKsus5FiMtmymVssY84YZTRVP6oZWSShG/WOcUQrzo8zxKH9cj6pc/haSraTakSXLKbbsI2Bj1nMYmXZxSelLUZS0Xwsp3EVxxLYmrzduXyV3ewvrHFZ1q6js= @oasis
|
@ -1 +0,0 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCci4oy7TlKHy9d8+4slhm66MzE9haGbasI3Wwt6LqrvK6X0jtVCA+04nBWoBH7m+8UJrd6mqldSsOVETiZFLm4sNl95MmKirWHmoSeJy12wyovQXYkyYRH0T4J2lDna6JbgCPuaZpgIq88sxb/Z8RVf9fjStd6aNIyM95BalRnL839mYJxXpfPNMBkXGED3w/m5S6GgxX8VrP1cC6N+kXao5nyctZqFZAQbtj122LAeFNWN6W0Ehy5mx1VETFII+h9vSJ2LwDNHNrYBPV2IOtJ/tQ8ajSoc60bNvJjJtgld/he3KlmrgjtKcC4Akr1Bmegm+iI4pg2VgUnpocTdDfb @oasis
|
27
d2utmpa02828
27
d2utmpa02828
@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAupkFt/flL8uwzwiXemhydEVw5y/jQu1bAvklAL6LMjMG9z68
|
||||
YxaG8iduMpehxKXR75pWzZIqTm3sN0/3azUNECvx+Frf+5pCHcTeiGxfYaRWi7fB
|
||||
cndMne3KXcRh42FRI7lAR4LDiP9pNld82cf3N9V/O2Y8G9fCTPAyjZP3sCgY9TGV
|
||||
Q3AXSFkE+VjkT5qQlVewnixNU4l3OW9v9sDTjgXSj7g2AQxnT0oag/dSGl5iLPSh
|
||||
VKOIxQRP1fiun3rFJ4LnZ6LinYRc0qJKF2yKRTcouS9k1EbUvXm8JtGZGs9sVvOg
|
||||
yem0jLbjKoVA7CTmRZh4fDZ08Lkgz1FV4Zc22QIDAQABAoIBAGkkUFSZGksUO0xt
|
||||
Su1ubQ+XEUczdJsBo4bJXFBPDZ/7oLEwaHZs+xz3muBnEH/9741TKhYrhisrRS7l
|
||||
oESIYBP8rxuCGTNseFTN2ZaFejlKoHmZ0Sbukf1rP9wWDBJTg6TdfZrN0+AeCurT
|
||||
4UXVpzeO1WJi+Pu3V4SC0/lypt5aw2F1urfoWSaUR43xiYpnjMNQ6dDvVoXA4R2X
|
||||
lMvvdAimTyA3XFDQILlUz6UHH01nEDO6n3T7VjB8UxiJrV5Oyy/aREBIJRiEHf5t
|
||||
dkZjVmtoKhAxKsOCyne/BZ3G1dYIGAhEM/SPqMQtPWy7U95ZaKQbF/Y5BhZb+5d6
|
||||
88HG6QECgYEA3VXddhNh8Ore1rrmlG/5/hwFg9BfP74Gt+lZcmT1Gwh9EBdcn3he
|
||||
xn4kBiw3m1kYyJw3wUfg/zINerqPz57EV669aVaDOVXbqTsFHOsFa74wMERYfV+/
|
||||
eBn7lFdwxOXq4vfDMzq0Ph+wtFvA+C2IkQVk60PR94dJMTn5VLm26nsCgYEA19Jm
|
||||
Hfvm/P/9oc4+rtkTUrs5BDHloBJ28TydZ84bI4B4n1/pJOWKrZ4y4kATic00+otW
|
||||
sncOVAeFq7Nj8yJ1XRCxKnjbhR2q/FZQf8f0c5xVWh4iXRt6Zf5hVcCmkle8SV6M
|
||||
vQb5zpRbzQTx+nrbut6RMbQPVHy5BIXhdzIeHbsCgYAik41bKr/8INTa+quWuL93
|
||||
AO2jn+OhU5A9HskIY9kedf8DioK/rtAvdfkuta2iKRMEE9Np8E6nzyvn5kkdCBJo
|
||||
GDYixI8PX+hG0Z+E2von0Lg6chLY0yJYIsb4b4iAWeKNvmLSF/OcWNsD8el9W6+f
|
||||
6BXR4vBkGNBITmQy5ig7DQKBgQCcfVLOKvkyOewOhx2sano4YsjU4dk+WCUmhm0b
|
||||
97Z155GO/lxvBIGpoiwDIbMJGGJxyNb0UJ9zDoE+HrU6dqHi+Vd9FGUYAIsarPtx
|
||||
q+r0aUb6MR95o5L8oZayNx6Qvk0oZgZmichYofpujkdm9+6bcQaWo5j6CfWd8fWq
|
||||
GAz+QQKBgHBOyyzXC7HSy+IAu/Jo3kpkgTqjYUIsmig5QKamHo/5FP8FCq4ZVR1L
|
||||
CYrpCVzbvjAjBnSm1/3UngjS3PPldUYjGIbez3gK/jJTfnzfsVghnQsZOd97YxuX
|
||||
TusifzCTcDZEUIZSdxL72EpbGtkYqVeDl4SjU0ZMfSIyiEsfyDFw
|
||||
-----END RSA PRIVATE KEY-----
|
@ -1,5 +0,0 @@
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHcCAQEEIOrwk5LCELxzRGufJcI3ogOmaqYwNGYg0KIZqnQysKsPoAoGCCqGSM49
|
||||
AwEHoUQDQgAEXkGf9akhGRCleBfum8S5D11uWdOngABaPtFj7OHGk4u8gncSGf3g
|
||||
uQj9j5MSCt9BV57GXKXgb0Xu0TH0wXbNqA==
|
||||
-----END EC PRIVATE KEY-----
|
@ -1 +0,0 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6mQW39+Uvy7DPCJd6aHJ0RXDnL+NC7VsC+SUAvosyMwb3PrxjFobyJ24yl6HEpdHvmlbNkipObew3T/drNQ0QK/H4Wt/7mkIdxN6IbF9hpFaLt8Fyd0yd7cpdxGHjYVEjuUBHgsOI/2k2V3zZx/c31X87Zjwb18JM8DKNk/ewKBj1MZVDcBdIWQT5WORPmpCVV7CeLE1TiXc5b2/2wNOOBdKPuDYBDGdPShqD91IaXmIs9KFUo4jFBE/V+K6fesUngudnouKdhFzSokoXbIpFNyi5L2TURtS9ebwm0Zkaz2xW86DJ6bSMtuMqhUDsJOZFmHh8NnTwuSDPUVXhlzbZ @oasis
|
@ -1 +0,0 @@
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOybqQdTc7bH8q7NxsBSFkZiyhzgafpiIVy66WzHiCzI @oasis
|
@ -1 +0,0 @@
|
||||
ssh-dss AAAAB3NzaC1kc3MAAACBALwZHP2nliJWL0EDuM07cxdXY2Q+Ux8K/bGOJ4ETpt+WYcqgqEJ7CXKuTVJ8slCBVs5m92uC2y5gaAp+mq7ypaVWcQc4thJrp/oINyNFdrlf5Pb60FnNhntQGUQW4MugISlI6imwPM/P7C/IYEfv8M+0eFssH+Kkhlhcx79BdzIXAAAAFQCAPac/DDQC/nPcfXDVvVeNBiJZwQAAAIBZeDlhgAdv/5lEdcFNNQuZjwtPwyGnwkOshZhMT4keUWYa0cmxqOhA2jnIUKPp6nVip4pJl2PfHQldIkMstA26JoYvvgx0Rqxi3eCsbTgcTuTe1d9LBIzRwqFIVT8wqj2uFdK1Fwp0blk3h36lOejJX+dx+iiJEmmupceXjK/a8wAAAIEAp8OaX5N4UtY0KID34SNj5b3hsAoK5IZ3mBsX7Ngg6Rbnr7h2s5sKsus5FiMtmymVssY84YZTRVP6oZWSShG/WOcUQrzo8zxKH9cj6pc/haSraTakSXLKbbsI2Bj1nMYmXZxSelLUZS0Xwsp3EVxxLYmrzduXyV3ewvrHFZ1q6js= @oasis
|
@ -1 +0,0 @@
|
||||
ssh-dss AAAAB3NzaC1kc3MAAACBALwZHP2nliJWL0EDuM07cxdXY2Q+Ux8K/bGOJ4ETpt+WYcqgqEJ7CXKuTVJ8slCBVs5m92uC2y5gaAp+mq7ypaVWcQc4thJrp/oINyNFdrlf5Pb60FnNhntQGUQW4MugISlI6imwPM/P7C/IYEfv8M+0eFssH+Kkhlhcx79BdzIXAAAAFQCAPac/DDQC/nPcfXDVvVeNBiJZwQAAAIBZeDlhgAdv/5lEdcFNNQuZjwtPwyGnwkOshZhMT4keUWYa0cmxqOhA2jnIUKPp6nVip4pJl2PfHQldIkMstA26JoYvvgx0Rqxi3eCsbTgcTuTe1d9LBIzRwqFIVT8wqj2uFdK1Fwp0blk3h36lOejJX+dx+iiJEmmupceXjK/a8wAAAIEAp8OaX5N4UtY0KID34SNj5b3hsAoK5IZ3mBsX7Ngg6Rbnr7h2s5sKsus5FiMtmymVssY84YZTRVP6oZWSShG/WOcUQrzo8zxKH9cj6pc/haSraTakSXLKbbsI2Bj1nMYmXZxSelLUZS0Xwsp3EVxxLYmrzduXyV3ewvrHFZ1q6js= @oasis
|
12
d2utmpa05272
12
d2utmpa05272
@ -1,12 +0,0 @@
|
||||
-----BEGIN DSA PRIVATE KEY-----
|
||||
MIIBuwIBAAKBgQC8GRz9p5YiVi9BA7jNO3MXV2NkPlMfCv2xjieBE6bflmHKoKhC
|
||||
ewlyrk1SfLJQgVbOZvdrgtsuYGgKfpqu8qWlVnEHOLYSa6f6CDcjRXa5X+T2+tBZ
|
||||
zYZ7UBlEFuDLoCEpSOopsDzPz+wvyGBH7/DPtHhbLB/ipIZYXMe/QXcyFwIVAIA9
|
||||
pz8MNAL+c9x9cNW9V40GIlnBAoGAWXg5YYAHb/+ZRHXBTTULmY8LT8Mhp8JDrIWY
|
||||
TE+JHlFmGtHJsajoQNo5yFCj6ep1YqeKSZdj3x0JXSJDLLQNuiaGL74MdEasYt3g
|
||||
rG04HE7k3tXfSwSM0cKhSFU/MKo9rhXStRcKdG5ZN4d+pTnoyV/ncfooiRJprqXH
|
||||
l4yv2vMCgYEAp8OaX5N4UtY0KID34SNj5b3hsAoK5IZ3mBsX7Ngg6Rbnr7h2s5sK
|
||||
sus5FiMtmymVssY84YZTRVP6oZWSShG/WOcUQrzo8zxKH9cj6pc/haSraTakSXLK
|
||||
bbsI2Bj1nMYmXZxSelLUZS0Xwsp3EVxxLYmrzduXyV3ewvrHFZ1q6jsCFH3IbB4V
|
||||
XAMosp5QzPxxeQQtAjVD
|
||||
-----END DSA PRIVATE KEY-----
|
@ -1 +0,0 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6mQW39+Uvy7DPCJd6aHJ0RXDnL+NC7VsC+SUAvosyMwb3PrxjFobyJ24yl6HEpdHvmlbNkipObew3T/drNQ0QK/H4Wt/7mkIdxN6IbF9hpFaLt8Fyd0yd7cpdxGHjYVEjuUBHgsOI/2k2V3zZx/c31X87Zjwb18JM8DKNk/ewKBj1MZVDcBdIWQT5WORPmpCVV7CeLE1TiXc5b2/2wNOOBdKPuDYBDGdPShqD91IaXmIs9KFUo4jFBE/V+K6fesUngudnouKdhFzSokoXbIpFNyi5L2TURtS9ebwm0Zkaz2xW86DJ6bSMtuMqhUDsJOZFmHh8NnTwuSDPUVXhlzbZ @oasis
|
@ -1,5 +0,0 @@
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHcCAQEEIOrwk5LCELxzRGufJcI3ogOmaqYwNGYg0KIZqnQysKsPoAoGCCqGSM49
|
||||
AwEHoUQDQgAEXkGf9akhGRCleBfum8S5D11uWdOngABaPtFj7OHGk4u8gncSGf3g
|
||||
uQj9j5MSCt9BV57GXKXgb0Xu0TH0wXbNqA==
|
||||
-----END EC PRIVATE KEY-----
|
12
d2utmpa07284
12
d2utmpa07284
@ -1,12 +0,0 @@
|
||||
-----BEGIN DSA PRIVATE KEY-----
|
||||
MIIBuwIBAAKBgQC8GRz9p5YiVi9BA7jNO3MXV2NkPlMfCv2xjieBE6bflmHKoKhC
|
||||
ewlyrk1SfLJQgVbOZvdrgtsuYGgKfpqu8qWlVnEHOLYSa6f6CDcjRXa5X+T2+tBZ
|
||||
zYZ7UBlEFuDLoCEpSOopsDzPz+wvyGBH7/DPtHhbLB/ipIZYXMe/QXcyFwIVAIA9
|
||||
pz8MNAL+c9x9cNW9V40GIlnBAoGAWXg5YYAHb/+ZRHXBTTULmY8LT8Mhp8JDrIWY
|
||||
TE+JHlFmGtHJsajoQNo5yFCj6ep1YqeKSZdj3x0JXSJDLLQNuiaGL74MdEasYt3g
|
||||
rG04HE7k3tXfSwSM0cKhSFU/MKo9rhXStRcKdG5ZN4d+pTnoyV/ncfooiRJprqXH
|
||||
l4yv2vMCgYEAp8OaX5N4UtY0KID34SNj5b3hsAoK5IZ3mBsX7Ngg6Rbnr7h2s5sK
|
||||
sus5FiMtmymVssY84YZTRVP6oZWSShG/WOcUQrzo8zxKH9cj6pc/haSraTakSXLK
|
||||
bbsI2Bj1nMYmXZxSelLUZS0Xwsp3EVxxLYmrzduXyV3ewvrHFZ1q6jsCFH3IbB4V
|
||||
XAMosp5QzPxxeQQtAjVD
|
||||
-----END DSA PRIVATE KEY-----
|
@ -1 +0,0 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCci4oy7TlKHy9d8+4slhm66MzE9haGbasI3Wwt6LqrvK6X0jtVCA+04nBWoBH7m+8UJrd6mqldSsOVETiZFLm4sNl95MmKirWHmoSeJy12wyovQXYkyYRH0T4J2lDna6JbgCPuaZpgIq88sxb/Z8RVf9fjStd6aNIyM95BalRnL839mYJxXpfPNMBkXGED3w/m5S6GgxX8VrP1cC6N+kXao5nyctZqFZAQbtj122LAeFNWN6W0Ehy5mx1VETFII+h9vSJ2LwDNHNrYBPV2IOtJ/tQ8ajSoc60bNvJjJtgld/he3KlmrgjtKcC4Akr1Bmegm+iI4pg2VgUnpocTdDfb @oasis
|
27
d2utmpa08080
27
d2utmpa08080
@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAupkFt/flL8uwzwiXemhydEVw5y/jQu1bAvklAL6LMjMG9z68
|
||||
YxaG8iduMpehxKXR75pWzZIqTm3sN0/3azUNECvx+Frf+5pCHcTeiGxfYaRWi7fB
|
||||
cndMne3KXcRh42FRI7lAR4LDiP9pNld82cf3N9V/O2Y8G9fCTPAyjZP3sCgY9TGV
|
||||
Q3AXSFkE+VjkT5qQlVewnixNU4l3OW9v9sDTjgXSj7g2AQxnT0oag/dSGl5iLPSh
|
||||
VKOIxQRP1fiun3rFJ4LnZ6LinYRc0qJKF2yKRTcouS9k1EbUvXm8JtGZGs9sVvOg
|
||||
yem0jLbjKoVA7CTmRZh4fDZ08Lkgz1FV4Zc22QIDAQABAoIBAGkkUFSZGksUO0xt
|
||||
Su1ubQ+XEUczdJsBo4bJXFBPDZ/7oLEwaHZs+xz3muBnEH/9741TKhYrhisrRS7l
|
||||
oESIYBP8rxuCGTNseFTN2ZaFejlKoHmZ0Sbukf1rP9wWDBJTg6TdfZrN0+AeCurT
|
||||
4UXVpzeO1WJi+Pu3V4SC0/lypt5aw2F1urfoWSaUR43xiYpnjMNQ6dDvVoXA4R2X
|
||||
lMvvdAimTyA3XFDQILlUz6UHH01nEDO6n3T7VjB8UxiJrV5Oyy/aREBIJRiEHf5t
|
||||
dkZjVmtoKhAxKsOCyne/BZ3G1dYIGAhEM/SPqMQtPWy7U95ZaKQbF/Y5BhZb+5d6
|
||||
88HG6QECgYEA3VXddhNh8Ore1rrmlG/5/hwFg9BfP74Gt+lZcmT1Gwh9EBdcn3he
|
||||
xn4kBiw3m1kYyJw3wUfg/zINerqPz57EV669aVaDOVXbqTsFHOsFa74wMERYfV+/
|
||||
eBn7lFdwxOXq4vfDMzq0Ph+wtFvA+C2IkQVk60PR94dJMTn5VLm26nsCgYEA19Jm
|
||||
Hfvm/P/9oc4+rtkTUrs5BDHloBJ28TydZ84bI4B4n1/pJOWKrZ4y4kATic00+otW
|
||||
sncOVAeFq7Nj8yJ1XRCxKnjbhR2q/FZQf8f0c5xVWh4iXRt6Zf5hVcCmkle8SV6M
|
||||
vQb5zpRbzQTx+nrbut6RMbQPVHy5BIXhdzIeHbsCgYAik41bKr/8INTa+quWuL93
|
||||
AO2jn+OhU5A9HskIY9kedf8DioK/rtAvdfkuta2iKRMEE9Np8E6nzyvn5kkdCBJo
|
||||
GDYixI8PX+hG0Z+E2von0Lg6chLY0yJYIsb4b4iAWeKNvmLSF/OcWNsD8el9W6+f
|
||||
6BXR4vBkGNBITmQy5ig7DQKBgQCcfVLOKvkyOewOhx2sano4YsjU4dk+WCUmhm0b
|
||||
97Z155GO/lxvBIGpoiwDIbMJGGJxyNb0UJ9zDoE+HrU6dqHi+Vd9FGUYAIsarPtx
|
||||
q+r0aUb6MR95o5L8oZayNx6Qvk0oZgZmichYofpujkdm9+6bcQaWo5j6CfWd8fWq
|
||||
GAz+QQKBgHBOyyzXC7HSy+IAu/Jo3kpkgTqjYUIsmig5QKamHo/5FP8FCq4ZVR1L
|
||||
CYrpCVzbvjAjBnSm1/3UngjS3PPldUYjGIbez3gK/jJTfnzfsVghnQsZOd97YxuX
|
||||
TusifzCTcDZEUIZSdxL72EpbGtkYqVeDl4SjU0ZMfSIyiEsfyDFw
|
||||
-----END RSA PRIVATE KEY-----
|
@ -1,7 +0,0 @@
|
||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
||||
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
|
||||
QyNTUxOQAAACDsm6kHU3O2x/KuzcbAUhZGYsoc4Gn6YiFcuulsx4gsyAAAAJAJSj5MCUo+
|
||||
TAAAAAtzc2gtZWQyNTUxOQAAACDsm6kHU3O2x/KuzcbAUhZGYsoc4Gn6YiFcuulsx4gsyA
|
||||
AAAECGe69spV/5acdoNqiARzB79o5ASCy2SQ6Ng7SWENmDguybqQdTc7bH8q7NxsBSFkZi
|
||||
yhzgafpiIVy66WzHiCzIAAAABkBvYXNpcwECAwQFBgc=
|
||||
-----END OPENSSH PRIVATE KEY-----
|
27
d2utmpa08916
27
d2utmpa08916
@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpQIBAAKCAQEAnIuKMu05Sh8vXfPuLJYZuujMxPYWhm2rCN1sLei6q7yul9I7
|
||||
VQgPtOJwVqAR+5vvFCa3epqpXUrDlRE4mRS5uLDZfeTJioq1h5qEnictdsMqL0F2
|
||||
JMmER9E+CdpQ52uiW4Aj7mmaYCKvPLMW/2fEVX/X40rXemjSMjPeQWpUZy/N/ZmC
|
||||
cV6XzzTAZFxhA98P5uUuhoMV/Faz9XAujfpF2qOZ8nLWahWQEG7Y9dtiwHhTVjel
|
||||
tBIcuZsdVRExSCPofb0idi8AzRza2AT1diDrSf7UPGo0qHOtGzbyYybYJXf4Xtyp
|
||||
Zq4I7SnAuAJK9QZnoJvoiOKYNlYFJ6aHE3Q32wIDAQABAoIBAAg70qYBEi1S3JPt
|
||||
e45+ypWpHvQRGXgylndd5g24GvFjeC9mEFbVmLXj3xK/UpLQTc/ahXX+YoAUqZrS
|
||||
kA6FJ4uOSbI0cWFHEGs0dls3Jk4Dz9kycTtYGgwI9mFgSTcS0zRK1hj5FvSNfngL
|
||||
117Rn2L72WgMDK9UihG35q28IPpYVUTN7W+qU5YdG9m5KutBjmq9lStc6eeHqMYH
|
||||
EBo3WwMh43oBhcqbebowgQLIkQTcnVdDwsjT8GYEI7onH4SnQWapch7ogXERu34w
|
||||
SDNhcQ5N4gSV/Urj5+RuA78s3eKb3zZMW3lLvmr4re6BZWa/E6XmYq8k2KAB12TX
|
||||
5QaYqnECgYEAzlhlLMPXuOqcQp1O1TyVNxWwJ9Q8TqhLjnbFASLCzFU2E0lup0mH
|
||||
2wK0cL8KhljT6rYzKFFp2ik5+1TzHKxEvnyzB89IJ3z/5e0AYssyv1oRnzMx9amg
|
||||
+04BxP4iAo1Fs9xN60PhsjHfIBj8jH3EJcla0G/zY0JE510cDRCa/YkCgYEAwjdG
|
||||
JBjva6vgwZiiZ5QoOmH0WIsOnNB5VjzOONXUrpYSNMBDGougnt9eOeyUbAGgPBLT
|
||||
10eR9oR06DLacn/jw75u07NCBfqxTSdW+xziG54DnK24vONBS4KmbA/v4u1mMaIn
|
||||
OxRfx++3lcOvrMeUqjA5ZrUUW5VXV/dNg0IStUMCgYEAxSEptzR6GMz576H9ODYi
|
||||
j3eGzOYznymk1TueRdGBrFgTyyUyM1tKEO9qlvPMCEFAY1EhWnk82RDdtcCYaWIi
|
||||
YqEbIHDki+UdS/m5jqh1mN1hTGhKaFlf0/XYNuxabXmth4EGZ6Z4Lhb7BN0aGNXl
|
||||
1/ufaNYq/T7IOQh4zfp5N5ECgYEAgcpYmIUFc4owsJAlcF0FqUaO+aEsicWUYPpP
|
||||
wpG8CVSHJDOcZKANHj8eBE3DPo6zm5Hlekf9FqacThS2AbDP8J9SBy4ToFVRqcLx
|
||||
kO1TeatWtJ0wCSNCHolYWH0qDhgipGa+GvBZtg7QPEjDHQ9fnYCOy8GVskKSVVoS
|
||||
tfYw9GsCgYEAjhgQ2pedGUGHdRY8upI7iQkGIAjsmNKExIIc7oPCiFO5d23XXsuV
|
||||
lNjHie84Ty7mimuGn9kCX0GzJAHOJBV1cVAannZ+SA+PxcsIez3wAt1KxQIkfw6o
|
||||
3vzanOICnGhZ22SFyib1h+0OveVXshJc3DeWlgiDxQN2Ox8BUN2KBFs=
|
||||
-----END RSA PRIVATE KEY-----
|
27
d2utmpa09000
27
d2utmpa09000
@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpQIBAAKCAQEAnIuKMu05Sh8vXfPuLJYZuujMxPYWhm2rCN1sLei6q7yul9I7
|
||||
VQgPtOJwVqAR+5vvFCa3epqpXUrDlRE4mRS5uLDZfeTJioq1h5qEnictdsMqL0F2
|
||||
JMmER9E+CdpQ52uiW4Aj7mmaYCKvPLMW/2fEVX/X40rXemjSMjPeQWpUZy/N/ZmC
|
||||
cV6XzzTAZFxhA98P5uUuhoMV/Faz9XAujfpF2qOZ8nLWahWQEG7Y9dtiwHhTVjel
|
||||
tBIcuZsdVRExSCPofb0idi8AzRza2AT1diDrSf7UPGo0qHOtGzbyYybYJXf4Xtyp
|
||||
Zq4I7SnAuAJK9QZnoJvoiOKYNlYFJ6aHE3Q32wIDAQABAoIBAAg70qYBEi1S3JPt
|
||||
e45+ypWpHvQRGXgylndd5g24GvFjeC9mEFbVmLXj3xK/UpLQTc/ahXX+YoAUqZrS
|
||||
kA6FJ4uOSbI0cWFHEGs0dls3Jk4Dz9kycTtYGgwI9mFgSTcS0zRK1hj5FvSNfngL
|
||||
117Rn2L72WgMDK9UihG35q28IPpYVUTN7W+qU5YdG9m5KutBjmq9lStc6eeHqMYH
|
||||
EBo3WwMh43oBhcqbebowgQLIkQTcnVdDwsjT8GYEI7onH4SnQWapch7ogXERu34w
|
||||
SDNhcQ5N4gSV/Urj5+RuA78s3eKb3zZMW3lLvmr4re6BZWa/E6XmYq8k2KAB12TX
|
||||
5QaYqnECgYEAzlhlLMPXuOqcQp1O1TyVNxWwJ9Q8TqhLjnbFASLCzFU2E0lup0mH
|
||||
2wK0cL8KhljT6rYzKFFp2ik5+1TzHKxEvnyzB89IJ3z/5e0AYssyv1oRnzMx9amg
|
||||
+04BxP4iAo1Fs9xN60PhsjHfIBj8jH3EJcla0G/zY0JE510cDRCa/YkCgYEAwjdG
|
||||
JBjva6vgwZiiZ5QoOmH0WIsOnNB5VjzOONXUrpYSNMBDGougnt9eOeyUbAGgPBLT
|
||||
10eR9oR06DLacn/jw75u07NCBfqxTSdW+xziG54DnK24vONBS4KmbA/v4u1mMaIn
|
||||
OxRfx++3lcOvrMeUqjA5ZrUUW5VXV/dNg0IStUMCgYEAxSEptzR6GMz576H9ODYi
|
||||
j3eGzOYznymk1TueRdGBrFgTyyUyM1tKEO9qlvPMCEFAY1EhWnk82RDdtcCYaWIi
|
||||
YqEbIHDki+UdS/m5jqh1mN1hTGhKaFlf0/XYNuxabXmth4EGZ6Z4Lhb7BN0aGNXl
|
||||
1/ufaNYq/T7IOQh4zfp5N5ECgYEAgcpYmIUFc4owsJAlcF0FqUaO+aEsicWUYPpP
|
||||
wpG8CVSHJDOcZKANHj8eBE3DPo6zm5Hlekf9FqacThS2AbDP8J9SBy4ToFVRqcLx
|
||||
kO1TeatWtJ0wCSNCHolYWH0qDhgipGa+GvBZtg7QPEjDHQ9fnYCOy8GVskKSVVoS
|
||||
tfYw9GsCgYEAjhgQ2pedGUGHdRY8upI7iQkGIAjsmNKExIIc7oPCiFO5d23XXsuV
|
||||
lNjHie84Ty7mimuGn9kCX0GzJAHOJBV1cVAannZ+SA+PxcsIez3wAt1KxQIkfw6o
|
||||
3vzanOICnGhZ22SFyib1h+0OveVXshJc3DeWlgiDxQN2Ox8BUN2KBFs=
|
||||
-----END RSA PRIVATE KEY-----
|
27
d2utmpa09040
27
d2utmpa09040
@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpQIBAAKCAQEAnIuKMu05Sh8vXfPuLJYZuujMxPYWhm2rCN1sLei6q7yul9I7
|
||||
VQgPtOJwVqAR+5vvFCa3epqpXUrDlRE4mRS5uLDZfeTJioq1h5qEnictdsMqL0F2
|
||||
JMmER9E+CdpQ52uiW4Aj7mmaYCKvPLMW/2fEVX/X40rXemjSMjPeQWpUZy/N/ZmC
|
||||
cV6XzzTAZFxhA98P5uUuhoMV/Faz9XAujfpF2qOZ8nLWahWQEG7Y9dtiwHhTVjel
|
||||
tBIcuZsdVRExSCPofb0idi8AzRza2AT1diDrSf7UPGo0qHOtGzbyYybYJXf4Xtyp
|
||||
Zq4I7SnAuAJK9QZnoJvoiOKYNlYFJ6aHE3Q32wIDAQABAoIBAAg70qYBEi1S3JPt
|
||||
e45+ypWpHvQRGXgylndd5g24GvFjeC9mEFbVmLXj3xK/UpLQTc/ahXX+YoAUqZrS
|
||||
kA6FJ4uOSbI0cWFHEGs0dls3Jk4Dz9kycTtYGgwI9mFgSTcS0zRK1hj5FvSNfngL
|
||||
117Rn2L72WgMDK9UihG35q28IPpYVUTN7W+qU5YdG9m5KutBjmq9lStc6eeHqMYH
|
||||
EBo3WwMh43oBhcqbebowgQLIkQTcnVdDwsjT8GYEI7onH4SnQWapch7ogXERu34w
|
||||
SDNhcQ5N4gSV/Urj5+RuA78s3eKb3zZMW3lLvmr4re6BZWa/E6XmYq8k2KAB12TX
|
||||
5QaYqnECgYEAzlhlLMPXuOqcQp1O1TyVNxWwJ9Q8TqhLjnbFASLCzFU2E0lup0mH
|
||||
2wK0cL8KhljT6rYzKFFp2ik5+1TzHKxEvnyzB89IJ3z/5e0AYssyv1oRnzMx9amg
|
||||
+04BxP4iAo1Fs9xN60PhsjHfIBj8jH3EJcla0G/zY0JE510cDRCa/YkCgYEAwjdG
|
||||
JBjva6vgwZiiZ5QoOmH0WIsOnNB5VjzOONXUrpYSNMBDGougnt9eOeyUbAGgPBLT
|
||||
10eR9oR06DLacn/jw75u07NCBfqxTSdW+xziG54DnK24vONBS4KmbA/v4u1mMaIn
|
||||
OxRfx++3lcOvrMeUqjA5ZrUUW5VXV/dNg0IStUMCgYEAxSEptzR6GMz576H9ODYi
|
||||
j3eGzOYznymk1TueRdGBrFgTyyUyM1tKEO9qlvPMCEFAY1EhWnk82RDdtcCYaWIi
|
||||
YqEbIHDki+UdS/m5jqh1mN1hTGhKaFlf0/XYNuxabXmth4EGZ6Z4Lhb7BN0aGNXl
|
||||
1/ufaNYq/T7IOQh4zfp5N5ECgYEAgcpYmIUFc4owsJAlcF0FqUaO+aEsicWUYPpP
|
||||
wpG8CVSHJDOcZKANHj8eBE3DPo6zm5Hlekf9FqacThS2AbDP8J9SBy4ToFVRqcLx
|
||||
kO1TeatWtJ0wCSNCHolYWH0qDhgipGa+GvBZtg7QPEjDHQ9fnYCOy8GVskKSVVoS
|
||||
tfYw9GsCgYEAjhgQ2pedGUGHdRY8upI7iQkGIAjsmNKExIIc7oPCiFO5d23XXsuV
|
||||
lNjHie84Ty7mimuGn9kCX0GzJAHOJBV1cVAannZ+SA+PxcsIez3wAt1KxQIkfw6o
|
||||
3vzanOICnGhZ22SFyib1h+0OveVXshJc3DeWlgiDxQN2Ox8BUN2KBFs=
|
||||
-----END RSA PRIVATE KEY-----
|
@ -1,5 +0,0 @@
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHcCAQEEIOrwk5LCELxzRGufJcI3ogOmaqYwNGYg0KIZqnQysKsPoAoGCCqGSM49
|
||||
AwEHoUQDQgAEXkGf9akhGRCleBfum8S5D11uWdOngABaPtFj7OHGk4u8gncSGf3g
|
||||
uQj9j5MSCt9BV57GXKXgb0Xu0TH0wXbNqA==
|
||||
-----END EC PRIVATE KEY-----
|
@ -1,7 +0,0 @@
|
||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
||||
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
|
||||
QyNTUxOQAAACDsm6kHU3O2x/KuzcbAUhZGYsoc4Gn6YiFcuulsx4gsyAAAAJAJSj5MCUo+
|
||||
TAAAAAtzc2gtZWQyNTUxOQAAACDsm6kHU3O2x/KuzcbAUhZGYsoc4Gn6YiFcuulsx4gsyA
|
||||
AAAECGe69spV/5acdoNqiARzB79o5ASCy2SQ6Ng7SWENmDguybqQdTc7bH8q7NxsBSFkZi
|
||||
yhzgafpiIVy66WzHiCzIAAAABkBvYXNpcwECAwQFBgc=
|
||||
-----END OPENSSH PRIVATE KEY-----
|
27
d2utmpa09348
27
d2utmpa09348
@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAupkFt/flL8uwzwiXemhydEVw5y/jQu1bAvklAL6LMjMG9z68
|
||||
YxaG8iduMpehxKXR75pWzZIqTm3sN0/3azUNECvx+Frf+5pCHcTeiGxfYaRWi7fB
|
||||
cndMne3KXcRh42FRI7lAR4LDiP9pNld82cf3N9V/O2Y8G9fCTPAyjZP3sCgY9TGV
|
||||
Q3AXSFkE+VjkT5qQlVewnixNU4l3OW9v9sDTjgXSj7g2AQxnT0oag/dSGl5iLPSh
|
||||
VKOIxQRP1fiun3rFJ4LnZ6LinYRc0qJKF2yKRTcouS9k1EbUvXm8JtGZGs9sVvOg
|
||||
yem0jLbjKoVA7CTmRZh4fDZ08Lkgz1FV4Zc22QIDAQABAoIBAGkkUFSZGksUO0xt
|
||||
Su1ubQ+XEUczdJsBo4bJXFBPDZ/7oLEwaHZs+xz3muBnEH/9741TKhYrhisrRS7l
|
||||
oESIYBP8rxuCGTNseFTN2ZaFejlKoHmZ0Sbukf1rP9wWDBJTg6TdfZrN0+AeCurT
|
||||
4UXVpzeO1WJi+Pu3V4SC0/lypt5aw2F1urfoWSaUR43xiYpnjMNQ6dDvVoXA4R2X
|
||||
lMvvdAimTyA3XFDQILlUz6UHH01nEDO6n3T7VjB8UxiJrV5Oyy/aREBIJRiEHf5t
|
||||
dkZjVmtoKhAxKsOCyne/BZ3G1dYIGAhEM/SPqMQtPWy7U95ZaKQbF/Y5BhZb+5d6
|
||||
88HG6QECgYEA3VXddhNh8Ore1rrmlG/5/hwFg9BfP74Gt+lZcmT1Gwh9EBdcn3he
|
||||
xn4kBiw3m1kYyJw3wUfg/zINerqPz57EV669aVaDOVXbqTsFHOsFa74wMERYfV+/
|
||||
eBn7lFdwxOXq4vfDMzq0Ph+wtFvA+C2IkQVk60PR94dJMTn5VLm26nsCgYEA19Jm
|
||||
Hfvm/P/9oc4+rtkTUrs5BDHloBJ28TydZ84bI4B4n1/pJOWKrZ4y4kATic00+otW
|
||||
sncOVAeFq7Nj8yJ1XRCxKnjbhR2q/FZQf8f0c5xVWh4iXRt6Zf5hVcCmkle8SV6M
|
||||
vQb5zpRbzQTx+nrbut6RMbQPVHy5BIXhdzIeHbsCgYAik41bKr/8INTa+quWuL93
|
||||
AO2jn+OhU5A9HskIY9kedf8DioK/rtAvdfkuta2iKRMEE9Np8E6nzyvn5kkdCBJo
|
||||
GDYixI8PX+hG0Z+E2von0Lg6chLY0yJYIsb4b4iAWeKNvmLSF/OcWNsD8el9W6+f
|
||||
6BXR4vBkGNBITmQy5ig7DQKBgQCcfVLOKvkyOewOhx2sano4YsjU4dk+WCUmhm0b
|
||||
97Z155GO/lxvBIGpoiwDIbMJGGJxyNb0UJ9zDoE+HrU6dqHi+Vd9FGUYAIsarPtx
|
||||
q+r0aUb6MR95o5L8oZayNx6Qvk0oZgZmichYofpujkdm9+6bcQaWo5j6CfWd8fWq
|
||||
GAz+QQKBgHBOyyzXC7HSy+IAu/Jo3kpkgTqjYUIsmig5QKamHo/5FP8FCq4ZVR1L
|
||||
CYrpCVzbvjAjBnSm1/3UngjS3PPldUYjGIbez3gK/jJTfnzfsVghnQsZOd97YxuX
|
||||
TusifzCTcDZEUIZSdxL72EpbGtkYqVeDl4SjU0ZMfSIyiEsfyDFw
|
||||
-----END RSA PRIVATE KEY-----
|
@ -1 +0,0 @@
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOybqQdTc7bH8q7NxsBSFkZiyhzgafpiIVy66WzHiCzI @oasis
|
@ -1 +0,0 @@
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOybqQdTc7bH8q7NxsBSFkZiyhzgafpiIVy66WzHiCzI @oasis
|
12
id_dsa
12
id_dsa
@ -1,12 +0,0 @@
|
||||
-----BEGIN DSA PRIVATE KEY-----
|
||||
MIIBuwIBAAKBgQC8GRz9p5YiVi9BA7jNO3MXV2NkPlMfCv2xjieBE6bflmHKoKhC
|
||||
ewlyrk1SfLJQgVbOZvdrgtsuYGgKfpqu8qWlVnEHOLYSa6f6CDcjRXa5X+T2+tBZ
|
||||
zYZ7UBlEFuDLoCEpSOopsDzPz+wvyGBH7/DPtHhbLB/ipIZYXMe/QXcyFwIVAIA9
|
||||
pz8MNAL+c9x9cNW9V40GIlnBAoGAWXg5YYAHb/+ZRHXBTTULmY8LT8Mhp8JDrIWY
|
||||
TE+JHlFmGtHJsajoQNo5yFCj6ep1YqeKSZdj3x0JXSJDLLQNuiaGL74MdEasYt3g
|
||||
rG04HE7k3tXfSwSM0cKhSFU/MKo9rhXStRcKdG5ZN4d+pTnoyV/ncfooiRJprqXH
|
||||
l4yv2vMCgYEAp8OaX5N4UtY0KID34SNj5b3hsAoK5IZ3mBsX7Ngg6Rbnr7h2s5sK
|
||||
sus5FiMtmymVssY84YZTRVP6oZWSShG/WOcUQrzo8zxKH9cj6pc/haSraTakSXLK
|
||||
bbsI2Bj1nMYmXZxSelLUZS0Xwsp3EVxxLYmrzduXyV3ewvrHFZ1q6jsCFH3IbB4V
|
||||
XAMosp5QzPxxeQQtAjVD
|
||||
-----END DSA PRIVATE KEY-----
|
@ -1 +0,0 @@
|
||||
ssh-dss AAAAB3NzaC1kc3MAAACBALwZHP2nliJWL0EDuM07cxdXY2Q+Ux8K/bGOJ4ETpt+WYcqgqEJ7CXKuTVJ8slCBVs5m92uC2y5gaAp+mq7ypaVWcQc4thJrp/oINyNFdrlf5Pb60FnNhntQGUQW4MugISlI6imwPM/P7C/IYEfv8M+0eFssH+Kkhlhcx79BdzIXAAAAFQCAPac/DDQC/nPcfXDVvVeNBiJZwQAAAIBZeDlhgAdv/5lEdcFNNQuZjwtPwyGnwkOshZhMT4keUWYa0cmxqOhA2jnIUKPp6nVip4pJl2PfHQldIkMstA26JoYvvgx0Rqxi3eCsbTgcTuTe1d9LBIzRwqFIVT8wqj2uFdK1Fwp0blk3h36lOejJX+dx+iiJEmmupceXjK/a8wAAAIEAp8OaX5N4UtY0KID34SNj5b3hsAoK5IZ3mBsX7Ngg6Rbnr7h2s5sKsus5FiMtmymVssY84YZTRVP6oZWSShG/WOcUQrzo8zxKH9cj6pc/haSraTakSXLKbbsI2Bj1nMYmXZxSelLUZS0Xwsp3EVxxLYmrzduXyV3ewvrHFZ1q6js= @oasis
|
27
id_rsa
27
id_rsa
@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAupkFt/flL8uwzwiXemhydEVw5y/jQu1bAvklAL6LMjMG9z68
|
||||
YxaG8iduMpehxKXR75pWzZIqTm3sN0/3azUNECvx+Frf+5pCHcTeiGxfYaRWi7fB
|
||||
cndMne3KXcRh42FRI7lAR4LDiP9pNld82cf3N9V/O2Y8G9fCTPAyjZP3sCgY9TGV
|
||||
Q3AXSFkE+VjkT5qQlVewnixNU4l3OW9v9sDTjgXSj7g2AQxnT0oag/dSGl5iLPSh
|
||||
VKOIxQRP1fiun3rFJ4LnZ6LinYRc0qJKF2yKRTcouS9k1EbUvXm8JtGZGs9sVvOg
|
||||
yem0jLbjKoVA7CTmRZh4fDZ08Lkgz1FV4Zc22QIDAQABAoIBAGkkUFSZGksUO0xt
|
||||
Su1ubQ+XEUczdJsBo4bJXFBPDZ/7oLEwaHZs+xz3muBnEH/9741TKhYrhisrRS7l
|
||||
oESIYBP8rxuCGTNseFTN2ZaFejlKoHmZ0Sbukf1rP9wWDBJTg6TdfZrN0+AeCurT
|
||||
4UXVpzeO1WJi+Pu3V4SC0/lypt5aw2F1urfoWSaUR43xiYpnjMNQ6dDvVoXA4R2X
|
||||
lMvvdAimTyA3XFDQILlUz6UHH01nEDO6n3T7VjB8UxiJrV5Oyy/aREBIJRiEHf5t
|
||||
dkZjVmtoKhAxKsOCyne/BZ3G1dYIGAhEM/SPqMQtPWy7U95ZaKQbF/Y5BhZb+5d6
|
||||
88HG6QECgYEA3VXddhNh8Ore1rrmlG/5/hwFg9BfP74Gt+lZcmT1Gwh9EBdcn3he
|
||||
xn4kBiw3m1kYyJw3wUfg/zINerqPz57EV669aVaDOVXbqTsFHOsFa74wMERYfV+/
|
||||
eBn7lFdwxOXq4vfDMzq0Ph+wtFvA+C2IkQVk60PR94dJMTn5VLm26nsCgYEA19Jm
|
||||
Hfvm/P/9oc4+rtkTUrs5BDHloBJ28TydZ84bI4B4n1/pJOWKrZ4y4kATic00+otW
|
||||
sncOVAeFq7Nj8yJ1XRCxKnjbhR2q/FZQf8f0c5xVWh4iXRt6Zf5hVcCmkle8SV6M
|
||||
vQb5zpRbzQTx+nrbut6RMbQPVHy5BIXhdzIeHbsCgYAik41bKr/8INTa+quWuL93
|
||||
AO2jn+OhU5A9HskIY9kedf8DioK/rtAvdfkuta2iKRMEE9Np8E6nzyvn5kkdCBJo
|
||||
GDYixI8PX+hG0Z+E2von0Lg6chLY0yJYIsb4b4iAWeKNvmLSF/OcWNsD8el9W6+f
|
||||
6BXR4vBkGNBITmQy5ig7DQKBgQCcfVLOKvkyOewOhx2sano4YsjU4dk+WCUmhm0b
|
||||
97Z155GO/lxvBIGpoiwDIbMJGGJxyNb0UJ9zDoE+HrU6dqHi+Vd9FGUYAIsarPtx
|
||||
q+r0aUb6MR95o5L8oZayNx6Qvk0oZgZmichYofpujkdm9+6bcQaWo5j6CfWd8fWq
|
||||
GAz+QQKBgHBOyyzXC7HSy+IAu/Jo3kpkgTqjYUIsmig5QKamHo/5FP8FCq4ZVR1L
|
||||
CYrpCVzbvjAjBnSm1/3UngjS3PPldUYjGIbez3gK/jJTfnzfsVghnQsZOd97YxuX
|
||||
TusifzCTcDZEUIZSdxL72EpbGtkYqVeDl4SjU0ZMfSIyiEsfyDFw
|
||||
-----END RSA PRIVATE KEY-----
|
@ -1 +0,0 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6mQW39+Uvy7DPCJd6aHJ0RXDnL+NC7VsC+SUAvosyMwb3PrxjFobyJ24yl6HEpdHvmlbNkipObew3T/drNQ0QK/H4Wt/7mkIdxN6IbF9hpFaLt8Fyd0yd7cpdxGHjYVEjuUBHgsOI/2k2V3zZx/c31X87Zjwb18JM8DKNk/ewKBj1MZVDcBdIWQT5WORPmpCVV7CeLE1TiXc5b2/2wNOOBdKPuDYBDGdPShqD91IaXmIs9KFUo4jFBE/V+K6fesUngudnouKdhFzSokoXbIpFNyi5L2TURtS9ebwm0Zkaz2xW86DJ6bSMtuMqhUDsJOZFmHh8NnTwuSDPUVXhlzbZ @oasis
|
27
is_rsa
27
is_rsa
@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpQIBAAKCAQEAnIuKMu05Sh8vXfPuLJYZuujMxPYWhm2rCN1sLei6q7yul9I7
|
||||
VQgPtOJwVqAR+5vvFCa3epqpXUrDlRE4mRS5uLDZfeTJioq1h5qEnictdsMqL0F2
|
||||
JMmER9E+CdpQ52uiW4Aj7mmaYCKvPLMW/2fEVX/X40rXemjSMjPeQWpUZy/N/ZmC
|
||||
cV6XzzTAZFxhA98P5uUuhoMV/Faz9XAujfpF2qOZ8nLWahWQEG7Y9dtiwHhTVjel
|
||||
tBIcuZsdVRExSCPofb0idi8AzRza2AT1diDrSf7UPGo0qHOtGzbyYybYJXf4Xtyp
|
||||
Zq4I7SnAuAJK9QZnoJvoiOKYNlYFJ6aHE3Q32wIDAQABAoIBAAg70qYBEi1S3JPt
|
||||
e45+ypWpHvQRGXgylndd5g24GvFjeC9mEFbVmLXj3xK/UpLQTc/ahXX+YoAUqZrS
|
||||
kA6FJ4uOSbI0cWFHEGs0dls3Jk4Dz9kycTtYGgwI9mFgSTcS0zRK1hj5FvSNfngL
|
||||
117Rn2L72WgMDK9UihG35q28IPpYVUTN7W+qU5YdG9m5KutBjmq9lStc6eeHqMYH
|
||||
EBo3WwMh43oBhcqbebowgQLIkQTcnVdDwsjT8GYEI7onH4SnQWapch7ogXERu34w
|
||||
SDNhcQ5N4gSV/Urj5+RuA78s3eKb3zZMW3lLvmr4re6BZWa/E6XmYq8k2KAB12TX
|
||||
5QaYqnECgYEAzlhlLMPXuOqcQp1O1TyVNxWwJ9Q8TqhLjnbFASLCzFU2E0lup0mH
|
||||
2wK0cL8KhljT6rYzKFFp2ik5+1TzHKxEvnyzB89IJ3z/5e0AYssyv1oRnzMx9amg
|
||||
+04BxP4iAo1Fs9xN60PhsjHfIBj8jH3EJcla0G/zY0JE510cDRCa/YkCgYEAwjdG
|
||||
JBjva6vgwZiiZ5QoOmH0WIsOnNB5VjzOONXUrpYSNMBDGougnt9eOeyUbAGgPBLT
|
||||
10eR9oR06DLacn/jw75u07NCBfqxTSdW+xziG54DnK24vONBS4KmbA/v4u1mMaIn
|
||||
OxRfx++3lcOvrMeUqjA5ZrUUW5VXV/dNg0IStUMCgYEAxSEptzR6GMz576H9ODYi
|
||||
j3eGzOYznymk1TueRdGBrFgTyyUyM1tKEO9qlvPMCEFAY1EhWnk82RDdtcCYaWIi
|
||||
YqEbIHDki+UdS/m5jqh1mN1hTGhKaFlf0/XYNuxabXmth4EGZ6Z4Lhb7BN0aGNXl
|
||||
1/ufaNYq/T7IOQh4zfp5N5ECgYEAgcpYmIUFc4owsJAlcF0FqUaO+aEsicWUYPpP
|
||||
wpG8CVSHJDOcZKANHj8eBE3DPo6zm5Hlekf9FqacThS2AbDP8J9SBy4ToFVRqcLx
|
||||
kO1TeatWtJ0wCSNCHolYWH0qDhgipGa+GvBZtg7QPEjDHQ9fnYCOy8GVskKSVVoS
|
||||
tfYw9GsCgYEAjhgQ2pedGUGHdRY8upI7iQkGIAjsmNKExIIc7oPCiFO5d23XXsuV
|
||||
lNjHie84Ty7mimuGn9kCX0GzJAHOJBV1cVAannZ+SA+PxcsIez3wAt1KxQIkfw6o
|
||||
3vzanOICnGhZ22SFyib1h+0OveVXshJc3DeWlgiDxQN2Ox8BUN2KBFs=
|
||||
-----END RSA PRIVATE KEY-----
|
@ -1 +0,0 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCci4oy7TlKHy9d8+4slhm66MzE9haGbasI3Wwt6LqrvK6X0jtVCA+04nBWoBH7m+8UJrd6mqldSsOVETiZFLm4sNl95MmKirWHmoSeJy12wyovQXYkyYRH0T4J2lDna6JbgCPuaZpgIq88sxb/Z8RVf9fjStd6aNIyM95BalRnL839mYJxXpfPNMBkXGED3w/m5S6GgxX8VrP1cC6N+kXao5nyctZqFZAQbtj122LAeFNWN6W0Ehy5mx1VETFII+h9vSJ2LwDNHNrYBPV2IOtJ/tQ8ajSoc60bNvJjJtgld/he3KlmrgjtKcC4Akr1Bmegm+iI4pg2VgUnpocTdDfb @oasis
|
@ -362,7 +362,7 @@ read_passphrase(const char *prompt, int flags)
|
||||
}
|
||||
else {
|
||||
|
||||
_putch( (int) '*' ); // show a star in place of what is typed
|
||||
//_putch( (int) '*' ); // show a star in place of what is typed
|
||||
len++; // keep reading in the loop
|
||||
}
|
||||
}
|
||||
|
139
session.c
139
session.c
@ -494,6 +494,46 @@ do_authenticated1(Authctxt *authctxt)
|
||||
#ifndef WIN32_FIXME
|
||||
#define USE_PIPES 1
|
||||
#endif
|
||||
|
||||
#ifdef WIN32_FIXME
|
||||
HANDLE hConIn = NULL;
|
||||
HANDLE hConOut = NULL;
|
||||
HANDLE hConErr = NULL;
|
||||
|
||||
BOOL MakeNewConsole(void)
|
||||
{
|
||||
BOOL bRet = TRUE;
|
||||
|
||||
if (!(bRet = FreeConsole())) return bRet;
|
||||
if (!(bRet = AllocConsole())) return bRet;
|
||||
HANDLE hTemp;
|
||||
|
||||
hTemp = CreateFile("CONIN$",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,0,0);
|
||||
if (INVALID_HANDLE_VALUE != hTemp)
|
||||
{
|
||||
DuplicateHandle(GetCurrentProcess(),hTemp,GetCurrentProcess(),&hConIn, 0,TRUE,DUPLICATE_SAME_ACCESS);
|
||||
CloseHandle(hTemp);
|
||||
} else
|
||||
return FALSE;
|
||||
|
||||
hTemp = CreateFile("CONOUT$",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
|
||||
if (INVALID_HANDLE_VALUE != hTemp)
|
||||
{
|
||||
DuplicateHandle(GetCurrentProcess(),hTemp,GetCurrentProcess(),&hConOut, 0,TRUE,DUPLICATE_SAME_ACCESS);
|
||||
DuplicateHandle(GetCurrentProcess(),hTemp,GetCurrentProcess(),&hConErr, 0,TRUE,DUPLICATE_SAME_ACCESS);
|
||||
CloseHandle(hTemp);
|
||||
|
||||
} else
|
||||
return FALSE;
|
||||
|
||||
SetStdHandle(STD_INPUT_HANDLE,hConIn);
|
||||
SetStdHandle(STD_OUTPUT_HANDLE,hConOut);
|
||||
SetStdHandle(STD_ERROR_HANDLE,hConErr);
|
||||
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
* This is called to fork and execute a command when we have no tty. This
|
||||
* will call do_child from the child, and server_loop from the parent after
|
||||
@ -545,10 +585,13 @@ do_exec_no_pty(Session *s, const char *command)
|
||||
char *exec_command;
|
||||
char *laddr;
|
||||
char buf[256];
|
||||
int prot_scr_width = 80;
|
||||
int prot_scr_height = 25;
|
||||
|
||||
if (!command)
|
||||
{
|
||||
exec_command = s->pw->pw_shell;
|
||||
//exec_command = "c:\\tools\\echoit.exe"; // temp
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -561,7 +604,29 @@ do_exec_no_pty(Session *s, const char *command)
|
||||
* Create three socket pairs for stdin, stdout and stderr
|
||||
*/
|
||||
|
||||
HANDLE wfdtocmd = -1;
|
||||
int retcode = -1;
|
||||
if ( (!s -> is_subsystem) && (s ->ttyfd != -1))
|
||||
{
|
||||
//FreeConsole();
|
||||
//AllocConsole();
|
||||
MakeNewConsole();
|
||||
prot_scr_width = s->col;
|
||||
prot_scr_height = s->row;
|
||||
extern HANDLE hConsole ;
|
||||
hConsole = GetStdHandle (STD_OUTPUT_HANDLE);
|
||||
ConSetScreenSize( s->col, s->row );
|
||||
s->ptyfd = hConsole ; // the pty is the Windows console output handle in our Win32 port
|
||||
|
||||
wfdtocmd = GetStdHandle (STD_INPUT_HANDLE) ; // we use this console handle to feed input to Windows shell cmd.exe
|
||||
sockin[1] = allocate_sfd((int)wfdtocmd); // put the std input handle in our global general handle table
|
||||
//if (sockin[1] >= 0)
|
||||
// sfd_set_to_console(sockin[1]); // mark it as Console type
|
||||
|
||||
}
|
||||
else
|
||||
socketpair(sockin);
|
||||
|
||||
socketpair(sockout);
|
||||
socketpair(sockerr);
|
||||
|
||||
@ -569,10 +634,14 @@ do_exec_no_pty(Session *s, const char *command)
|
||||
debug3("sockout[0]: %d sockout[1]: %d", sockout[0], sockout[1]);
|
||||
debug3("sockerr[0]: %d sockerr[1]: %d", sockerr[0], sockerr[1]);
|
||||
|
||||
if ( (s -> is_subsystem) || (s ->ttyfd == -1))
|
||||
crlf_sfd(sockin[1]);
|
||||
|
||||
crlf_sfd(sockout[1]);
|
||||
|
||||
if ( (s -> is_subsystem) || (s ->ttyfd == -1))
|
||||
SetHandleInformation(sfd_to_handle(sockin[1]), HANDLE_FLAG_INHERIT, 0);
|
||||
|
||||
SetHandleInformation(sfd_to_handle(sockout[1]), HANDLE_FLAG_INHERIT, 0);
|
||||
SetHandleInformation(sfd_to_handle(sockerr[1]), HANDLE_FLAG_INHERIT, 0);
|
||||
|
||||
@ -583,12 +652,35 @@ do_exec_no_pty(Session *s, const char *command)
|
||||
memset(&si, 0 , sizeof(STARTUPINFO));
|
||||
|
||||
si.cb = sizeof(STARTUPINFO);
|
||||
si.lpReserved = 0;
|
||||
si.lpTitle = NULL; /* NULL means use exe name as title */
|
||||
si.dwX = 0;
|
||||
si.dwY = 0;
|
||||
si.dwXSize = prot_scr_width;
|
||||
si.dwYSize = prot_scr_height;
|
||||
si.dwXCountChars = prot_scr_width;
|
||||
si.dwYCountChars = prot_scr_height;
|
||||
si.dwFillAttribute = 0;
|
||||
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESIZE | STARTF_USECOUNTCHARS; // | STARTF_USESHOWWINDOW ;
|
||||
si.wShowWindow = 0; // FALSE ;
|
||||
si.cbReserved2 = 0;
|
||||
si.lpReserved2 = 0;
|
||||
|
||||
if ( (!s -> is_subsystem) && (s ->ttyfd != -1) ) {
|
||||
si.hStdInput = GetStdHandle (STD_INPUT_HANDLE) ; // shell tty interactive session gets a console input for Win32
|
||||
si.hStdOutput = (HANDLE) sfd_to_handle(sockout[0]);
|
||||
si.hStdError = (HANDLE) sfd_to_handle(sockerr[0]);
|
||||
si.lpDesktop = NULL ; //winstadtname_w ;
|
||||
}
|
||||
else {
|
||||
si.hStdInput = (HANDLE) sfd_to_handle(sockin[0]);
|
||||
si.hStdOutput = (HANDLE) sfd_to_handle(sockout[0]);
|
||||
si.hStdError = (HANDLE) sfd_to_handle(sockerr[0]);
|
||||
si.wShowWindow = SW_HIDE;
|
||||
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
|
||||
si.lpDesktop = L"winsta0\\default";
|
||||
si.lpDesktop = NULL; //L"winsta0\\default";
|
||||
}
|
||||
//si.wShowWindow = SW_HIDE;
|
||||
//si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
|
||||
|
||||
|
||||
SetEnvironmentVariable("USER", s->pw->pw_name);
|
||||
SetEnvironmentVariable("USERNAME", s->pw->pw_name);
|
||||
@ -785,12 +877,13 @@ do_exec_no_pty(Session *s, const char *command)
|
||||
|
||||
GetUserName(name, &size);
|
||||
|
||||
//if (!(s -> is_subsystem)) {
|
||||
if (!(s -> is_subsystem)) {
|
||||
// Send to the remote client ANSI/VT Sequence so that they send us CRLF in place of LF
|
||||
//Channel *c=channel_by_id ( s->chanid );
|
||||
//buffer_append(&c->input, "\033[20h", 5);
|
||||
//channel_output_poll();
|
||||
//}
|
||||
char *inittermseq = "\033[20h\033[?7h\0" ; // LFtoCRLF AUTOWRAPON
|
||||
Channel *c=channel_by_id ( s->chanid );
|
||||
buffer_append(&c->input, inittermseq, strlen(inittermseq));
|
||||
channel_output_poll();
|
||||
}
|
||||
|
||||
//if (s ->ttyfd != -1) {
|
||||
// set the channel to tty interactive type
|
||||
@ -813,9 +906,11 @@ do_exec_no_pty(Session *s, const char *command)
|
||||
wchar_t exec_command_w[MAX_PATH];
|
||||
|
||||
MultiByteToWideChar(CP_UTF8, 0, exec_command, -1, exec_command_w, MAX_PATH);
|
||||
DWORD dwStartupFlags = CREATE_SUSPENDED ; // 0
|
||||
|
||||
SetConsoleCtrlHandler(NULL, FALSE);
|
||||
b = CreateProcessAsUserW(hToken, NULL, exec_command_w, NULL, NULL, TRUE,
|
||||
CREATE_NEW_PROCESS_GROUP, NULL, s -> pw -> pw_dir,
|
||||
/*CREATE_NEW_PROCESS_GROUP*/ dwStartupFlags, NULL, s -> pw -> pw_dir,
|
||||
&si, &pi);
|
||||
/*
|
||||
* If CreateProcessAsUser() fails we will try CreateProcess()
|
||||
@ -825,7 +920,7 @@ do_exec_no_pty(Session *s, const char *command)
|
||||
if ((!b) && (strcmp(name, s -> pw -> pw_name) == 0))
|
||||
{
|
||||
b = CreateProcessW(NULL, exec_command_w, NULL, NULL, TRUE,
|
||||
CREATE_NEW_PROCESS_GROUP, NULL, s -> pw -> pw_dir,
|
||||
/*CREATE_NEW_PROCESS_GROUP*/ dwStartupFlags, NULL, s -> pw -> pw_dir,
|
||||
&si, &pi);
|
||||
}
|
||||
|
||||
@ -847,14 +942,6 @@ do_exec_no_pty(Session *s, const char *command)
|
||||
|
||||
s -> authctxt -> currentToken_ = hToken;
|
||||
|
||||
/*
|
||||
* Close child thread and process handles so it can go away
|
||||
*/
|
||||
|
||||
CloseHandle(pi.hThread);
|
||||
|
||||
// CloseHandle(pi.hProcess);
|
||||
|
||||
/*
|
||||
* Log the process handle (fake it as the pid) for termination lookups
|
||||
*/
|
||||
@ -876,11 +963,23 @@ do_exec_no_pty(Session *s, const char *command)
|
||||
/*
|
||||
* We are the parent. Close the child sides of the socket pairs.
|
||||
*/
|
||||
|
||||
if ( (s -> is_subsystem) || (s ->ttyfd == -1))
|
||||
close(sockin[0]);
|
||||
|
||||
close(sockout[0]);
|
||||
close(sockerr[0]);
|
||||
|
||||
ResumeThread ( pi.hThread ); /* now let cmd shell main thread be active s we have closed all i/o file handle that cmd will use */
|
||||
SetConsoleCtrlHandler(NULL, TRUE);
|
||||
|
||||
/*
|
||||
* Close child thread handles as we do not need it. Process handle we keep so that we can know if it has died o not
|
||||
*/
|
||||
|
||||
CloseHandle(pi.hThread);
|
||||
|
||||
// CloseHandle(pi.hProcess);
|
||||
|
||||
/*
|
||||
* Clear loginmsg, since it's the child's responsibility to display
|
||||
* it to the user, otherwise multiple sessions may accumulate
|
||||
@ -2629,7 +2728,9 @@ session_pty_req(Session *s)
|
||||
pty_setowner(s->pw, s->tty);
|
||||
|
||||
/* Set window size from the packet. */
|
||||
#ifndef WIN32_FIXME
|
||||
pty_change_window_size(s->ptyfd, s->row, s->col, s->xpixel, s->ypixel);
|
||||
#endif
|
||||
|
||||
packet_check_eom();
|
||||
session_proctitle(s);
|
||||
|
10
sftp.c
10
sftp.c
@ -294,12 +294,10 @@ local_do_shell(const char *args)
|
||||
{
|
||||
#ifdef WIN32_FIXME
|
||||
|
||||
/*
|
||||
* Not implemented on native Win32.
|
||||
*/
|
||||
|
||||
fprintf(stderr, "Local shell is not implemented on Win32.\n");
|
||||
|
||||
if (!*args) {
|
||||
args = (char *) getenv("ComSpec"); // get name of Windows cmd shell
|
||||
}
|
||||
system(args); // execute the shell or cmd given
|
||||
#else
|
||||
|
||||
/*
|
||||
|
40
ssh.c
40
ssh.c
@ -296,12 +296,38 @@ static void CleanUpProxyProcess()
|
||||
}
|
||||
}
|
||||
|
||||
extern Buffer stdin_buffer; /* Buffer for stdin data. */
|
||||
/*
|
||||
* This function handles exit signal.
|
||||
*/
|
||||
|
||||
BOOL WINAPI CtrlHandlerRoutine(DWORD dwCtrlType)
|
||||
{
|
||||
|
||||
switch( dwCtrlType )
|
||||
{
|
||||
// Handle the CTRL-C signal.
|
||||
case CTRL_C_EVENT:
|
||||
// send CTRL_C code to the remote app via sshd server
|
||||
//buffer_put_char(&stdin_buffer, 0x3); // control-c is decimal 3
|
||||
//Beep( 750, 300 );
|
||||
//return( TRUE ); // we have handled it. FALSE would be go to next handler
|
||||
|
||||
case CTRL_BREAK_EVENT:
|
||||
// send CTRL_BREAK to the remote side ?
|
||||
//return TRUE;
|
||||
|
||||
case CTRL_CLOSE_EVENT:
|
||||
case CTRL_LOGOFF_EVENT:
|
||||
case CTRL_SHUTDOWN_EVENT:
|
||||
// send SHELL_CODE_TERMINATE to the remote side
|
||||
//return FALSE ; // go to next handler
|
||||
|
||||
default:
|
||||
break;
|
||||
//return FALSE;
|
||||
}
|
||||
|
||||
debug("Exit signal received...");
|
||||
|
||||
CleanUpProxyProcess();
|
||||
@ -311,6 +337,7 @@ BOOL WINAPI CtrlHandlerRoutine(DWORD dwCtrlType)
|
||||
cleanup_exit(0);
|
||||
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
|
||||
#endif /* WIN32_FIXME */
|
||||
@ -580,6 +607,7 @@ set_addrinfo_port(struct addrinfo *addrs, int port)
|
||||
/*
|
||||
* Main program for the ssh client.
|
||||
*/
|
||||
|
||||
int
|
||||
main(int ac, char **av)
|
||||
{
|
||||
@ -606,9 +634,6 @@ main(int ac, char **av)
|
||||
* parent server is stopped.
|
||||
*/
|
||||
|
||||
AllocConsole();
|
||||
ConInit( STD_OUTPUT_HANDLE, TRUE );
|
||||
|
||||
SetConsoleCtrlHandler(CtrlHandlerRoutine, TRUE);
|
||||
|
||||
/*
|
||||
@ -1502,6 +1527,15 @@ main(int ac, char **av)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef WIN32_FIXME
|
||||
if (tty_flag) {
|
||||
//AllocConsole();
|
||||
ConInputInitParams(); // init the Console input side with global parameters
|
||||
HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
|
||||
ConInit( STD_OUTPUT_HANDLE, TRUE ); //init the output console surface for us to write
|
||||
}
|
||||
#endif
|
||||
|
||||
exit_status = compat20 ? ssh_session2() : ssh_session();
|
||||
packet_close();
|
||||
|
||||
|
@ -1,12 +0,0 @@
|
||||
-----BEGIN DSA PRIVATE KEY-----
|
||||
MIIBvAIBAAKBgQC6S1DTs1okCcExu9s0TzZ1I9O2SJIBKFImynjNqZcwohAiO40n
|
||||
GSLEUR3A/lhE87zLSXRGdcGGgwL9EZ7J99G+0w0JPiec4/6VhrExZ+sLf0Wucepv
|
||||
r/iVblp3j61EVjJXAAiCk2tLC8BywAMlAJfnTcYaho0aHlNm1slk3kDBTwIVAMi1
|
||||
PXi8QETGZ044NO7EpNE2+C0NAoGBAKnvjaX/u8Gr+LUP+nz73Owbr43X44D01ZbG
|
||||
Dy66ahBQxXO9I+lu8MCazcMZhhxdsEaEY0qBd2WNVLaI2aiIszVQ2nhgIRtjbiyC
|
||||
gvJZjVqfVQntbLzFSvL6C2KXzdWHu/0zszpOq+4CBXOioZ0R+/nt4p+9IjWOg0XJ
|
||||
DeeLAkpKAoGBAJVMlVzMtmEMmk4QN64FJ6l3DxGSbNBM+FeflgUneTu0l8FxQfR0
|
||||
ELl+lW39JzeqFoCHwTbDlifw5tNJOQZO+lDKj+gCNopuXPA9ZuPJKWFxmRxt9Bpk
|
||||
B04V+ldSN2TnrlBSEmaDrmw7mCj+8gXYg3leSTWPYhzrIeTNgtyk9TzIAhQlwADD
|
||||
GP+ZNisGS0TgHf0GVxvQSw==
|
||||
-----END DSA PRIVATE KEY-----
|
@ -1 +0,0 @@
|
||||
ssh-dss AAAAB3NzaC1kc3MAAACBAOundiq2N+PFt35FSi7+j0uZo+wNil5dtOvmo+dbAUHD1V0AXL6s99aVZHkilDNUpbdtxqUrdmTIoRjFbOtDQv3YQhBsqF8SZds2tD6BPclw0RRODcmQxU5ZdaqnzJdUoOhVvXgZ8KzDklkaDNhKp+HFxIe0Mbo9FKpwP5nWkLVbAAAAFQC1Cke3wXxqdmYqXKq0eSmwtpHI4QAAAIEAzxx3GUs75EGaH1bm6K4Qj2Gnh1fW79hpm2UkiWyUZfVtUBRz8FCAOqq8XTXbr17K6kHHRjbS7Cq2OG4rdcadrLmr2QQ63OslQf4Y3HYeppcRnpkxARH1QtkVBqbNVaNN8Cr4yB9NPKVza0kZIjdGLKZybMYBIPxKNsyR+U3pNmAAAACAFDgF4qswcm0KqCW+xe4cnHXVMCoFBTsPWKtAFQHG5z4LMglZJxQvizULQNlBwNfxlfzaGDo3URxh3p2db1m3qpWOVTWy7ytmiEJbf/HQlg9JELyhvcMhY8LAmz1JUPjKyQHhttOPykScZFeF9x9jkDIP+KcN6EsjceyscogCPbA= @oasis
|
@ -1,5 +0,0 @@
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHcCAQEEIOrwk5LCELxzRGufJcI3ogOmaqYwNGYg0KIZqnQysKsPoAoGCCqGSM49
|
||||
AwEHoUQDQgAEXkGf9akhGRCleBfum8S5D11uWdOngABaPtFj7OHGk4u8gncSGf3g
|
||||
uQj9j5MSCt9BV57GXKXgb0Xu0TH0wXbNqA==
|
||||
-----END EC PRIVATE KEY-----
|
@ -1 +0,0 @@
|
||||
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBF5Bn/WpIRkQpXgX7pvEuQ9dblnTp4AAWj7RY+zhxpOLvIJ3Ehn94LkI/Y+TEgrfQVeexlyl4G9F7tEx9MF2zag= @oasis
|
@ -1,7 +0,0 @@
|
||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
||||
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
|
||||
QyNTUxOQAAACDsm6kHU3O2x/KuzcbAUhZGYsoc4Gn6YiFcuulsx4gsyAAAAJAJSj5MCUo+
|
||||
TAAAAAtzc2gtZWQyNTUxOQAAACDsm6kHU3O2x/KuzcbAUhZGYsoc4Gn6YiFcuulsx4gsyA
|
||||
AAAECGe69spV/5acdoNqiARzB79o5ASCy2SQ6Ng7SWENmDguybqQdTc7bH8q7NxsBSFkZi
|
||||
yhzgafpiIVy66WzHiCzIAAAABkBvYXNpcwECAwQFBgc=
|
||||
-----END OPENSSH PRIVATE KEY-----
|
@ -1 +0,0 @@
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOybqQdTc7bH8q7NxsBSFkZiyhzgafpiIVy66WzHiCzI @oasis
|
@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEArlGMB9Z1b5AdNfsQTg2IsemKin/UsDLKVwJ5GFFYRXTLlDm9
|
||||
LkGQqn7VCwdwR1Ff7oTJu16kpRIIXjEpMh9Mhcc2LfPiv2po4oXeEx6sreYM3TDv
|
||||
votqlKUrrjKuK1vxbabl6zgrOpJ9v1ssEREYG/D1Xquejj8p5VVnPTCh24JVDRhX
|
||||
PGU2O8CKI29T86N60ziyt4Y0Op61BKDbivgiXpNn+mM0y2R6eLpXuplb8Beh7wUS
|
||||
Whjz2TNqPk3lYYSfLGEDK3Owwxj12hVjBlY3VqZLFZ0Y6FMPohf5rDg9lpAInCg9
|
||||
qRc8K0/iaMkEhCGd/9arIVjTHHQT0OtutfGSKwIDAQABAoIBAQCYBWH7i9oKm0H+
|
||||
S5+ikkb98U/zDRwtNX4kd3Gn9Xjnyb2o3NnRNzi0l7uvzKLsb1kcKA3OK/GmS52k
|
||||
l3b30TfpCxyC4siCaohh1KEhR4UMey4I0J6kK+2dCJaZanVeNubL29tzUR7SC+NC
|
||||
OH6ru56s72ztTPoPz6H38I0CXiEpzoReKP9+2r1DPHhDeY0J1T4ebLYiWEvd4uLx
|
||||
7i6nKyCzmjOWuVSIG5uQzBvqk59ycPrVK/EpKCGlJDLgnVrTcQAb9VexOYKfxcDi
|
||||
grbl3RO1aucd5HvvPpu0r802j82ccnwj/WbNLNG+UCCISDNXxeBPgo/rdfdgJLQc
|
||||
R74/9+7RAoGBAOPbZZzHXWvWMdtZr9RRtMX3Ovz2Z+NRP/eKYz8vv9HUp4JpkA76
|
||||
UDVFofk1vHjAOrbUDL5977i4Grv23ZRxcDV+yKlpiwo2N4PTON/n5rk+VmTt6OLs
|
||||
cL8bbLrNCutThyA5ZrDSyh6/c0lewlEvikssH8KZeoZuK6eWRk4HxPwHAoGBAMPZ
|
||||
UaGibgfXav7Nrnm/7rBT9M2PiFYGpGw0XsWIB7d3P5jqLeOiuoKUaP/PLHISIOx5
|
||||
rFeZgYCDo0z61e6gWiDA7fLDCoW9TF5BN5x+ulc2xHYg6lZg0HKSEOeAFKP8o/IT
|
||||
k3u3HockPbXfuyFfrQwDx9L1i3V1USfrAb6iMje9AoGAYoVt1TE6yrLN0etgpGxD
|
||||
vslcfx5H4zkxcGYs7ZhG14Kcfz4HpQJEhhQ6qde7S3bKrFzZudAYRAWOwbFHM7Us
|
||||
8GSGfQH+tYal0GEXGXFbCMPUdUWNSfkz8t330Hlx/Dicl6laJqCt9kePoKzRVms4
|
||||
37IPdYQJP3EJfSfz9C9V1CcCgYEAtfGqmJKhzb8es2C5enoIcN9OSbnSWrkI/00X
|
||||
zkK1iIfMGW9U+mkvBCiD80Kwc7jLxWSz6x285XtlthpBrNJjaJJTfHgdymk2DUph
|
||||
M42351YF5ghmK6D9hbKU6bxfcIlAdaAiH4jbX4kXm2MiIbsUtFi+xwk+afx3TLJS
|
||||
iJt+M7ECgYAG7rcLKuooI6mOpPVtqugFGBWKxrh2GC9Hj22H3uHW9UcIfU5TO763
|
||||
i/mcS5VrXIGUZn1qw+FE7vnwG5ypBbV03R9CON+LXVnuT7r0jff2yhMJ7n3ieXc5
|
||||
otjABjFJr9wX2mQ2kn5ugs57rPpOHbQldRqfawBXklHwY7swXm2OAg==
|
||||
-----END RSA PRIVATE KEY-----
|
@ -1 +0,0 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGVZzgrkEiQwiqb3F7bu39dayPGJqdCg1xLhS4S7nrFfcCFqHmuOqzp4wwxUacYaCOXitTJK0pmfgfT2O67xSRDWemTQhadN29E9BfYMWtkNgbA4sfYJUXIcVZtLJNqoNTmPC5mvbJJub6E3wm8800aiVCyZIVdTsumLnOlPXvguE0rKN62g39PiDzVHwexkoxbtbs52wh2IodDkN4Fma+r9YTlm3FMipo/3HDo75G/SQNeOA9TKhS1MEQ4kQ1eTW+UzMMFuQyNzt8q6OcyaGYhxN6zgmFiW8Hp/yQJDcw/QDhoPVdXAONnLsNE89s63e85nPdm70pyswOadEdlIeX @oasis
|
32
sshd.c
32
sshd.c
@ -1707,8 +1707,12 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
|
||||
|
||||
memset(&si, 0 , sizeof(STARTUPINFO));
|
||||
|
||||
char remotesoc[64];
|
||||
snprintf ( remotesoc, sizeof(remotesoc), "%d", sfd_to_handle(*newsock));
|
||||
SetEnvironmentVariable("SSHD_REMSOC", remotesoc);
|
||||
|
||||
si.cb = sizeof(STARTUPINFO);
|
||||
si.hStdInput = (HANDLE) sfd_to_handle(*newsock);
|
||||
si.hStdInput = GetStdHandle(STD_INPUT_HANDLE); //(HANDLE) sfd_to_handle(*newsock);
|
||||
si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
|
||||
si.wShowWindow = SW_HIDE;
|
||||
@ -1886,6 +1890,19 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
|
||||
|
||||
BOOL WINAPI CtrlHandlerRoutine(DWORD dwCtrlType)
|
||||
{
|
||||
switch( dwCtrlType )
|
||||
{
|
||||
case CTRL_C_EVENT:
|
||||
return TRUE; // control C will be passed to shell but sshd wil not exit
|
||||
|
||||
case CTRL_BREAK_EVENT:
|
||||
case CTRL_LOGOFF_EVENT:
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
debug("Exit signal received...");
|
||||
|
||||
cleanup_exit(0);
|
||||
@ -2776,19 +2793,22 @@ main(int ac, char **av)
|
||||
}
|
||||
else
|
||||
{
|
||||
STARTUPINFO si;
|
||||
//STARTUPINFO si;
|
||||
|
||||
memset(&si, 0 , sizeof(STARTUPINFO));
|
||||
//memset(&si, 0 , sizeof(STARTUPINFO));
|
||||
|
||||
si.cb = sizeof(STARTUPINFO);
|
||||
//si.cb = sizeof(STARTUPINFO);
|
||||
|
||||
/*
|
||||
* Get the stdin handle from process info to use for client
|
||||
*/
|
||||
|
||||
GetStartupInfo(&si);
|
||||
//GetStartupInfo(&si);
|
||||
|
||||
sock_in = sock_out = newsock = allocate_sfd(si.hStdInput);
|
||||
int remotesochandle ;
|
||||
remotesochandle = atoi( getenv("SSHD_REMSOC") );
|
||||
|
||||
sock_in = sock_out = newsock = allocate_sfd(remotesochandle) ; //si.hStdInput);
|
||||
|
||||
/*
|
||||
* We don't have a startup_pipe
|
||||
|
Loading…
x
Reference in New Issue
Block a user