| 54 |
#include <commctrl.h> |
#include <commctrl.h> |
| 55 |
#include <commdlg.h> |
#include <commdlg.h> |
| 56 |
#include <winsock2.h> |
#include <winsock2.h> |
| 57 |
static char FAR *ProtocolFamilyList[] = { "UNSPEC", "IPv6", "IPv4", NULL }; |
static char *ProtocolFamilyList[] = { "UNSPEC", "IPv6", "IPv4", NULL }; |
| 58 |
|
|
| 59 |
#include <Lmcons.h> |
#include <Lmcons.h> |
| 60 |
|
|
| 99 |
static HFONT DlgSetupFont; |
static HFONT DlgSetupFont; |
| 100 |
static HFONT DlgKeygenFont; |
static HFONT DlgKeygenFont; |
| 101 |
|
|
| 102 |
static TInstVar FAR *pvar; |
static TInstVar *pvar; |
| 103 |
|
|
| 104 |
typedef struct { |
typedef struct { |
| 105 |
int cnt; |
int cnt; |
| 171 |
ssh_heartbeat_lock_finalize(); |
ssh_heartbeat_lock_finalize(); |
| 172 |
} |
} |
| 173 |
|
|
| 174 |
static void PASCAL FAR TTXInit(PTTSet ts, PComVar cv) |
static void PASCAL TTXInit(PTTSet ts, PComVar cv) |
| 175 |
{ |
{ |
| 176 |
pvar->settings = *pvar->ts_SSH; |
pvar->settings = *pvar->ts_SSH; |
| 177 |
pvar->ts = ts; |
pvar->ts = ts; |
| 274 |
* Remove unsupported cipher or duplicated cipher. |
* Remove unsupported cipher or duplicated cipher. |
| 275 |
* Add unspecified ciphers at the end of list. |
* Add unspecified ciphers at the end of list. |
| 276 |
*/ |
*/ |
| 277 |
static void normalize_cipher_order(char FAR * buf) |
static void normalize_cipher_order(char *buf) |
| 278 |
{ |
{ |
| 279 |
/* SSH_CIPHER_NONE means that all ciphers below that one are disabled. |
/* SSH_CIPHER_NONE means that all ciphers below that one are disabled. |
| 280 |
We *never* allow no encryption. */ |
We *never* allow no encryption. */ |
| 310 |
normalize_generic_order(buf, default_strings, NUM_ELEM(default_strings)); |
normalize_generic_order(buf, default_strings, NUM_ELEM(default_strings)); |
| 311 |
} |
} |
| 312 |
|
|
| 313 |
static void normalize_kex_order(char FAR * buf) |
static void normalize_kex_order(char *buf) |
| 314 |
{ |
{ |
| 315 |
static char default_strings[] = { |
static char default_strings[] = { |
| 316 |
KEX_ECDH_SHA2_256, |
KEX_ECDH_SHA2_256, |
| 329 |
normalize_generic_order(buf, default_strings, NUM_ELEM(default_strings)); |
normalize_generic_order(buf, default_strings, NUM_ELEM(default_strings)); |
| 330 |
} |
} |
| 331 |
|
|
| 332 |
static void normalize_host_key_order(char FAR * buf) |
static void normalize_host_key_order(char *buf) |
| 333 |
{ |
{ |
| 334 |
static char default_strings[] = { |
static char default_strings[] = { |
| 335 |
KEY_ECDSA256, |
KEY_ECDSA256, |
| 344 |
normalize_generic_order(buf, default_strings, NUM_ELEM(default_strings)); |
normalize_generic_order(buf, default_strings, NUM_ELEM(default_strings)); |
| 345 |
} |
} |
| 346 |
|
|
| 347 |
static void normalize_mac_order(char FAR * buf) |
static void normalize_mac_order(char *buf) |
| 348 |
{ |
{ |
| 349 |
static char default_strings[] = { |
static char default_strings[] = { |
| 350 |
HMAC_SHA2_512, |
HMAC_SHA2_512, |
| 362 |
normalize_generic_order(buf, default_strings, NUM_ELEM(default_strings)); |
normalize_generic_order(buf, default_strings, NUM_ELEM(default_strings)); |
| 363 |
} |
} |
| 364 |
|
|
| 365 |
static void normalize_comp_order(char FAR * buf) |
static void normalize_comp_order(char *buf) |
| 366 |
{ |
{ |
| 367 |
static char default_strings[] = { |
static char default_strings[] = { |
| 368 |
COMP_DELAYED, |
COMP_DELAYED, |
| 381 |
pvar->ts_SSH->TryDefaultAuth = FALSE; |
pvar->ts_SSH->TryDefaultAuth = FALSE; |
| 382 |
} |
} |
| 383 |
|
|
| 384 |
static BOOL read_BOOL_option(PCHAR fileName, char FAR * keyName, BOOL def) |
static BOOL read_BOOL_option(PCHAR fileName, char *keyName, BOOL def) |
| 385 |
{ |
{ |
| 386 |
char buf[1024]; |
char buf[1024]; |
| 387 |
|
|
| 397 |
} |
} |
| 398 |
} |
} |
| 399 |
|
|
| 400 |
static void read_string_option(PCHAR fileName, char FAR * keyName, |
static void read_string_option(PCHAR fileName, char *keyName, |
| 401 |
char FAR * def, char FAR * buf, int bufSize) |
char *def, char *buf, int bufSize) |
| 402 |
{ |
{ |
| 403 |
|
|
| 404 |
buf[0] = 0; |
buf[0] = 0; |
| 408 |
static void read_ssh_options(PTInstVar pvar, PCHAR fileName) |
static void read_ssh_options(PTInstVar pvar, PCHAR fileName) |
| 409 |
{ |
{ |
| 410 |
char buf[1024]; |
char buf[1024]; |
| 411 |
TS_SSH FAR *settings = pvar->ts_SSH; |
TS_SSH *settings = pvar->ts_SSH; |
| 412 |
|
|
| 413 |
#define READ_STD_STRING_OPTION(name) \ |
#define READ_STD_STRING_OPTION(name) \ |
| 414 |
read_string_option(fileName, #name, "", settings->name, sizeof(settings->name)) |
read_string_option(fileName, #name, "", settings->name, sizeof(settings->name)) |
| 536 |
} |
} |
| 537 |
|
|
| 538 |
static void write_ssh_options(PTInstVar pvar, PCHAR fileName, |
static void write_ssh_options(PTInstVar pvar, PCHAR fileName, |
| 539 |
TS_SSH FAR * settings, BOOL copy_forward) |
TS_SSH *settings, BOOL copy_forward) |
| 540 |
{ |
{ |
| 541 |
char buf[1024]; |
char buf[1024]; |
| 542 |
|
|
| 664 |
int tries; |
int tries; |
| 665 |
SOCKET connecter; |
SOCKET connecter; |
| 666 |
struct addrinfo hints; |
struct addrinfo hints; |
| 667 |
struct addrinfo FAR *res; |
struct addrinfo *res; |
| 668 |
struct addrinfo FAR *res0; |
struct addrinfo *res0; |
| 669 |
unsigned short port; |
unsigned short port; |
| 670 |
char pname[NI_MAXHOST]; |
char pname[NI_MAXHOST]; |
| 671 |
|
|
| 722 |
return 0; |
return 0; |
| 723 |
} |
} |
| 724 |
|
|
| 725 |
static int PASCAL FAR TTXconnect(SOCKET s, |
static int PASCAL TTXconnect(SOCKET s, |
| 726 |
const struct sockaddr FAR * name, |
const struct sockaddr *name, |
| 727 |
int namelen) |
int namelen) |
| 728 |
{ |
{ |
| 729 |
if (pvar->socket == INVALID_SOCKET || pvar->socket != s) { |
if (pvar->socket == INVALID_SOCKET || pvar->socket != s) { |
| 736 |
switch (pvar->ts->ProtocolFamily) { |
switch (pvar->ts->ProtocolFamily) { |
| 737 |
case AF_INET: |
case AF_INET: |
| 738 |
len = sizeof(struct sockaddr_in); |
len = sizeof(struct sockaddr_in); |
| 739 |
((struct sockaddr_in FAR *) &ss)->sin_family = AF_INET; |
((struct sockaddr_in *) &ss)->sin_family = AF_INET; |
| 740 |
((struct sockaddr_in FAR *) &ss)->sin_addr.s_addr = INADDR_ANY; |
((struct sockaddr_in *) &ss)->sin_addr.s_addr = INADDR_ANY; |
| 741 |
((struct sockaddr_in FAR *) &ss)->sin_port = |
((struct sockaddr_in *) &ss)->sin_port = |
| 742 |
htons(find_local_port(pvar)); |
htons(find_local_port(pvar)); |
| 743 |
break; |
break; |
| 744 |
case AF_INET6: |
case AF_INET6: |
| 745 |
len = sizeof(struct sockaddr_in6); |
len = sizeof(struct sockaddr_in6); |
| 746 |
((struct sockaddr_in6 FAR *) &ss)->sin6_family = AF_INET6; |
((struct sockaddr_in6 *) &ss)->sin6_family = AF_INET6; |
| 747 |
memset(&((struct sockaddr_in6 FAR *) &ss)->sin6_addr, 0, |
memset(&((struct sockaddr_in6 *) &ss)->sin6_addr, 0, |
| 748 |
sizeof(struct in_addr6)); |
sizeof(struct in_addr6)); |
| 749 |
((struct sockaddr_in6 FAR *) &ss)->sin6_port = |
((struct sockaddr_in6 *) &ss)->sin6_port = |
| 750 |
htons(find_local_port(pvar)); |
htons(find_local_port(pvar)); |
| 751 |
break; |
break; |
| 752 |
default: |
default: |
| 754 |
break; |
break; |
| 755 |
} |
} |
| 756 |
|
|
| 757 |
bind(s, (struct sockaddr FAR *) &ss, len); |
bind(s, (struct sockaddr *) &ss, len); |
| 758 |
} |
} |
| 759 |
|
|
| 760 |
return (pvar->Pconnect) (s, name, namelen); |
return (pvar->Pconnect) (s, name, namelen); |
| 761 |
} |
} |
| 762 |
|
|
| 763 |
static int PASCAL FAR TTXWSAAsyncSelect(SOCKET s, HWND hWnd, u_int wMsg, |
static int PASCAL TTXWSAAsyncSelect(SOCKET s, HWND hWnd, u_int wMsg, |
| 764 |
long lEvent) |
long lEvent) |
| 765 |
{ |
{ |
| 766 |
if (s == pvar->socket) { |
if (s == pvar->socket) { |
| 776 |
return (pvar->PWSAAsyncSelect) (s, hWnd, wMsg, lEvent); |
return (pvar->PWSAAsyncSelect) (s, hWnd, wMsg, lEvent); |
| 777 |
} |
} |
| 778 |
|
|
| 779 |
static int PASCAL FAR TTXrecv(SOCKET s, char FAR * buf, int len, int flags) |
static int PASCAL TTXrecv(SOCKET s, char *buf, int len, int flags) |
| 780 |
{ |
{ |
| 781 |
if (s == pvar->socket) { |
if (s == pvar->socket) { |
| 782 |
int ret; |
int ret; |
| 791 |
} |
} |
| 792 |
} |
} |
| 793 |
|
|
| 794 |
static int PASCAL FAR TTXsend(SOCKET s, char const FAR * buf, int len, |
static int PASCAL TTXsend(SOCKET s, char const *buf, int len, |
| 795 |
int flags) |
int flags) |
| 796 |
{ |
{ |
| 797 |
if (s == pvar->socket) { |
if (s == pvar->socket) { |
| 850 |
LOG_LEVEL_VERBOSE); |
LOG_LEVEL_VERBOSE); |
| 851 |
} |
} |
| 852 |
|
|
| 853 |
void notify_closed_connection(PTInstVar pvar, char FAR * send_msg) |
void notify_closed_connection(PTInstVar pvar, char *send_msg) |
| 854 |
{ |
{ |
| 855 |
SSH_notify_disconnecting(pvar, send_msg); |
SSH_notify_disconnecting(pvar, send_msg); |
| 856 |
AUTH_notify_disconnecting(pvar); |
AUTH_notify_disconnecting(pvar); |
| 860 |
pvar->socket, MAKELPARAM(FD_CLOSE, 0)); |
pvar->socket, MAKELPARAM(FD_CLOSE, 0)); |
| 861 |
} |
} |
| 862 |
|
|
| 863 |
static void add_err_msg(PTInstVar pvar, char FAR * msg) |
static void add_err_msg(PTInstVar pvar, char *msg) |
| 864 |
{ |
{ |
| 865 |
if (pvar->err_msg != NULL) { |
if (pvar->err_msg != NULL) { |
| 866 |
int buf_len = strlen(pvar->err_msg) + 3 + strlen(msg); |
int buf_len = strlen(pvar->err_msg) + 3 + strlen(msg); |
| 867 |
char FAR *buf = (char FAR *) malloc(buf_len); |
char *buf = (char *) malloc(buf_len); |
| 868 |
|
|
| 869 |
strncpy_s(buf, buf_len, pvar->err_msg, _TRUNCATE); |
strncpy_s(buf, buf_len, pvar->err_msg, _TRUNCATE); |
| 870 |
strncat_s(buf, buf_len, "\n\n", _TRUNCATE); |
strncat_s(buf, buf_len, "\n\n", _TRUNCATE); |
| 876 |
} |
} |
| 877 |
} |
} |
| 878 |
|
|
| 879 |
void notify_nonfatal_error(PTInstVar pvar, char FAR * msg) |
void notify_nonfatal_error(PTInstVar pvar, char *msg) |
| 880 |
{ |
{ |
| 881 |
if (!pvar->showing_err) { |
if (!pvar->showing_err) { |
| 882 |
// 未接続の状態では通知先ウィンドウがないので、デスクトップをオーナーとして |
// 未接続の状態では通知先ウィンドウがないので、デスクトップをオーナーとして |
| 898 |
} |
} |
| 899 |
} |
} |
| 900 |
|
|
| 901 |
void notify_fatal_error(PTInstVar pvar, char FAR * msg, BOOL send_disconnect) |
void notify_fatal_error(PTInstVar pvar, char *msg, BOOL send_disconnect) |
| 902 |
{ |
{ |
| 903 |
if (msg[0] != 0) { |
if (msg[0] != 0) { |
| 904 |
notify_verbose_message(pvar, msg, LOG_LEVEL_FATAL); |
notify_verbose_message(pvar, msg, LOG_LEVEL_FATAL); |
| 920 |
} |
} |
| 921 |
} |
} |
| 922 |
|
|
| 923 |
void notify_verbose_message(PTInstVar pvar, char FAR * msg, int level) |
void notify_verbose_message(PTInstVar pvar, char *msg, int level) |
| 924 |
{ |
{ |
| 925 |
if (level <= pvar->session_settings.LogLevel) { |
if (level <= pvar->session_settings.LogLevel) { |
| 926 |
char buf[1024]; |
char buf[1024]; |
| 1045 |
} |
} |
| 1046 |
} |
} |
| 1047 |
|
|
| 1048 |
static void PASCAL FAR TTXOpenTCP(TTXSockHooks FAR * hooks) |
static void PASCAL TTXOpenTCP(TTXSockHooks *hooks) |
| 1049 |
{ |
{ |
| 1050 |
if (pvar->settings.Enabled) { |
if (pvar->settings.Enabled) { |
| 1051 |
// TCPLocalEcho/TCPCRSend を無効にする (maya 2007.4.25) |
// TCPLocalEcho/TCPCRSend を無効にする (maya 2007.4.25) |
| 1090 |
} |
} |
| 1091 |
} |
} |
| 1092 |
|
|
| 1093 |
static void PASCAL FAR TTXCloseTCP(TTXSockHooks FAR * hooks) |
static void PASCAL TTXCloseTCP(TTXSockHooks *hooks) |
| 1094 |
{ |
{ |
| 1095 |
if (pvar->session_settings.Enabled) { |
if (pvar->session_settings.Enabled) { |
| 1096 |
pvar->socket = INVALID_SOCKET; |
pvar->socket = INVALID_SOCKET; |
| 1644 |
return FALSE; |
return FALSE; |
| 1645 |
} |
} |
| 1646 |
|
|
| 1647 |
static BOOL FAR PASCAL TTXGetHostName(HWND parent, PGetHNRec rec) |
static BOOL PASCAL TTXGetHostName(HWND parent, PGetHNRec rec) |
| 1648 |
{ |
{ |
| 1649 |
return (BOOL) DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_HOSTDLG), |
return (BOOL) DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_HOSTDLG), |
| 1650 |
parent, TTXHostDlg, (LONG) rec); |
parent, TTXHostDlg, (LONG) rec); |
| 1651 |
} |
} |
| 1652 |
|
|
| 1653 |
static void PASCAL FAR TTXGetUIHooks(TTXUIHooks FAR * hooks) |
static void PASCAL TTXGetUIHooks(TTXUIHooks *hooks) |
| 1654 |
{ |
{ |
| 1655 |
*hooks->GetHostName = TTXGetHostName; |
*hooks->GetHostName = TTXGetHostName; |
| 1656 |
} |
} |
| 1657 |
|
|
| 1658 |
static void FAR PASCAL TTXReadINIFile(PCHAR fileName, PTTSet ts) |
static void PASCAL TTXReadINIFile(PCHAR fileName, PTTSet ts) |
| 1659 |
{ |
{ |
| 1660 |
(pvar->ReadIniFile) (fileName, ts); |
(pvar->ReadIniFile) (fileName, ts); |
| 1661 |
read_ssh_options(pvar, fileName); |
read_ssh_options(pvar, fileName); |
| 1664 |
FWDUI_load_settings(pvar); |
FWDUI_load_settings(pvar); |
| 1665 |
} |
} |
| 1666 |
|
|
| 1667 |
static void FAR PASCAL TTXWriteINIFile(PCHAR fileName, PTTSet ts) |
static void PASCAL TTXWriteINIFile(PCHAR fileName, PTTSet ts) |
| 1668 |
{ |
{ |
| 1669 |
(pvar->WriteIniFile) (fileName, ts); |
(pvar->WriteIniFile) (fileName, ts); |
| 1670 |
*pvar->ts_SSH = pvar->settings; |
*pvar->ts_SSH = pvar->settings; |
| 1674 |
} |
} |
| 1675 |
|
|
| 1676 |
static void read_ssh_options_from_user_file(PTInstVar pvar, |
static void read_ssh_options_from_user_file(PTInstVar pvar, |
| 1677 |
char FAR * user_file_name) |
char *user_file_name) |
| 1678 |
{ |
{ |
| 1679 |
if (user_file_name[0] == '.') { |
if (user_file_name[0] == '.') { |
| 1680 |
read_ssh_options(pvar, user_file_name); |
read_ssh_options(pvar, user_file_name); |
| 1727 |
} |
} |
| 1728 |
} |
} |
| 1729 |
|
|
| 1730 |
static void FAR PASCAL TTXParseParam(PCHAR param, PTTSet ts, PCHAR DDETopic) { |
static void PASCAL TTXParseParam(PCHAR param, PTTSet ts, PCHAR DDETopic) { |
| 1731 |
int param_len=strlen(param); |
int param_len=strlen(param); |
| 1732 |
int opt_len = param_len+1; |
int opt_len = param_len+1; |
| 1733 |
char *option = (char *)calloc(opt_len, sizeof(char)); |
char *option = (char *)calloc(opt_len, sizeof(char)); |
| 2098 |
(pvar->ParseParam) (param, ts, DDETopic); |
(pvar->ParseParam) (param, ts, DDETopic); |
| 2099 |
} |
} |
| 2100 |
|
|
| 2101 |
static void PASCAL FAR TTXGetSetupHooks(TTXSetupHooks FAR * hooks) |
static void PASCAL TTXGetSetupHooks(TTXSetupHooks *hooks) |
| 2102 |
{ |
{ |
| 2103 |
pvar->ReadIniFile = *hooks->ReadIniFile; |
pvar->ReadIniFile = *hooks->ReadIniFile; |
| 2104 |
pvar->WriteIniFile = *hooks->WriteIniFile; |
pvar->WriteIniFile = *hooks->WriteIniFile; |
| 2109 |
*hooks->ParseParam = TTXParseParam; |
*hooks->ParseParam = TTXParseParam; |
| 2110 |
} |
} |
| 2111 |
|
|
| 2112 |
static void PASCAL FAR TTXSetWinSize(int rows, int cols) |
static void PASCAL TTXSetWinSize(int rows, int cols) |
| 2113 |
{ |
{ |
| 2114 |
SSH_notify_win_size(pvar, cols, rows); |
SSH_notify_win_size(pvar, cols, rows); |
| 2115 |
} |
} |
| 2116 |
|
|
| 2117 |
static void insertMenuBeforeItem(HMENU menu, WORD beforeItemID, WORD flags, |
static void insertMenuBeforeItem(HMENU menu, WORD beforeItemID, WORD flags, |
| 2118 |
WORD newItemID, char FAR * text) |
WORD newItemID, char *text) |
| 2119 |
{ |
{ |
| 2120 |
int i, j; |
int i, j; |
| 2121 |
|
|
| 2157 |
return NULL; |
return NULL; |
| 2158 |
} |
} |
| 2159 |
|
|
| 2160 |
static void PASCAL FAR TTXModifyMenu(HMENU menu) |
static void PASCAL TTXModifyMenu(HMENU menu) |
| 2161 |
{ |
{ |
| 2162 |
pvar->FileMenu = GetFileMenu(menu); |
pvar->FileMenu = GetFileMenu(menu); |
| 2163 |
|
|
| 2182 |
insertMenuBeforeItem(menu, 50170, MF_GRAYED, ID_SSHSCPMENU, pvar->ts->UIMsg); |
insertMenuBeforeItem(menu, 50170, MF_GRAYED, ID_SSHSCPMENU, pvar->ts->UIMsg); |
| 2183 |
} |
} |
| 2184 |
|
|
| 2185 |
static void PASCAL FAR TTXModifyPopupMenu(HMENU menu) { |
static void PASCAL TTXModifyPopupMenu(HMENU menu) { |
| 2186 |
if (menu == pvar->FileMenu) { |
if (menu == pvar->FileMenu) { |
| 2187 |
if (pvar->cv->Ready && pvar->settings.Enabled) |
if (pvar->cv->Ready && pvar->settings.Enabled) |
| 2188 |
EnableMenuItem(menu, ID_SSHSCPMENU, MF_BYCOMMAND | MF_ENABLED); |
EnableMenuItem(menu, ID_SSHSCPMENU, MF_BYCOMMAND | MF_ENABLED); |
| 2405 |
strncat_s(buf2, sizeof(buf2), fp, _TRUNCATE); |
strncat_s(buf2, sizeof(buf2), fp, _TRUNCATE); |
| 2406 |
free(fp); |
free(fp); |
| 2407 |
|
|
| 2408 |
SendDlgItemMessage(dlg, IDC_ABOUTTEXT, WM_SETTEXT, 0, (LPARAM)(char FAR *)buf2); |
SendDlgItemMessage(dlg, IDC_ABOUTTEXT, WM_SETTEXT, 0, (LPARAM)(char *)buf2); |
| 2409 |
} |
} |
| 2410 |
} |
} |
| 2411 |
|
|
| 2605 |
return FALSE; |
return FALSE; |
| 2606 |
} |
} |
| 2607 |
|
|
| 2608 |
static char FAR *get_cipher_name(int cipher) |
static char *get_cipher_name(int cipher) |
| 2609 |
{ |
{ |
| 2610 |
switch (cipher) { |
switch (cipher) { |
| 2611 |
case SSH_CIPHER_NONE: |
case SSH_CIPHER_NONE: |
| 2823 |
|
|
| 2824 |
for (i = 0; pvar->settings.CipherOrder[i] != 0; i++) { |
for (i = 0; pvar->settings.CipherOrder[i] != 0; i++) { |
| 2825 |
int cipher = pvar->settings.CipherOrder[i] - '0'; |
int cipher = pvar->settings.CipherOrder[i] - '0'; |
| 2826 |
char FAR *name = get_cipher_name(cipher); |
char *name = get_cipher_name(cipher); |
| 2827 |
|
|
| 2828 |
if (name != NULL) { |
if (name != NULL) { |
| 2829 |
SendMessage(cipherControl, LB_ADDSTRING, 0, (LPARAM) name); |
SendMessage(cipherControl, LB_ADDSTRING, 0, (LPARAM) name); |
| 2837 |
normalize_kex_order(pvar->settings.KexOrder); |
normalize_kex_order(pvar->settings.KexOrder); |
| 2838 |
for (i = 0; pvar->settings.KexOrder[i] != 0; i++) { |
for (i = 0; pvar->settings.KexOrder[i] != 0; i++) { |
| 2839 |
int index = pvar->settings.KexOrder[i] - '0'; |
int index = pvar->settings.KexOrder[i] - '0'; |
| 2840 |
char FAR *name = NULL; |
char *name = NULL; |
| 2841 |
|
|
| 2842 |
if (index == 0) { |
if (index == 0) { |
| 2843 |
UTIL_get_lang_msg("DLG_SSHSETUP_KEX_BORDER", pvar, |
UTIL_get_lang_msg("DLG_SSHSETUP_KEX_BORDER", pvar, |
| 2858 |
normalize_host_key_order(pvar->settings.HostKeyOrder); |
normalize_host_key_order(pvar->settings.HostKeyOrder); |
| 2859 |
for (i = 0; pvar->settings.HostKeyOrder[i] != 0; i++) { |
for (i = 0; pvar->settings.HostKeyOrder[i] != 0; i++) { |
| 2860 |
int index = pvar->settings.HostKeyOrder[i] - '0'; |
int index = pvar->settings.HostKeyOrder[i] - '0'; |
| 2861 |
char FAR *name = NULL; |
char *name = NULL; |
| 2862 |
|
|
| 2863 |
if (index == 0) { |
if (index == 0) { |
| 2864 |
UTIL_get_lang_msg("DLG_SSHSETUP_HOST_KEY_BORDER", pvar, |
UTIL_get_lang_msg("DLG_SSHSETUP_HOST_KEY_BORDER", pvar, |
| 2879 |
normalize_mac_order(pvar->settings.MacOrder); |
normalize_mac_order(pvar->settings.MacOrder); |
| 2880 |
for (i = 0; pvar->settings.MacOrder[i] != 0; i++) { |
for (i = 0; pvar->settings.MacOrder[i] != 0; i++) { |
| 2881 |
int index = pvar->settings.MacOrder[i] - '0'; |
int index = pvar->settings.MacOrder[i] - '0'; |
| 2882 |
char FAR *name = NULL; |
char *name = NULL; |
| 2883 |
|
|
| 2884 |
if (index == 0) { |
if (index == 0) { |
| 2885 |
UTIL_get_lang_msg("DLG_SSHSETUP_MAC_BORDER", pvar, |
UTIL_get_lang_msg("DLG_SSHSETUP_MAC_BORDER", pvar, |
| 2900 |
normalize_comp_order(pvar->settings.CompOrder); |
normalize_comp_order(pvar->settings.CompOrder); |
| 2901 |
for (i = 0; pvar->settings.CompOrder[i] != 0; i++) { |
for (i = 0; pvar->settings.CompOrder[i] != 0; i++) { |
| 2902 |
int index = pvar->settings.CompOrder[i] - '0'; |
int index = pvar->settings.CompOrder[i] - '0'; |
| 2903 |
char FAR *name = NULL; |
char *name = NULL; |
| 2904 |
|
|
| 2905 |
if (index == 0) { |
if (index == 0) { |
| 2906 |
UTIL_get_lang_msg("DLG_SSHSETUP_COMP_BORDER", pvar, |
UTIL_get_lang_msg("DLG_SSHSETUP_COMP_BORDER", pvar, |
| 2977 |
|
|
| 2978 |
} |
} |
| 2979 |
|
|
| 2980 |
void get_teraterm_dir_relative_name(char FAR * buf, int bufsize, |
void get_teraterm_dir_relative_name(char *buf, int bufsize, |
| 2981 |
char FAR * basename) |
char *basename) |
| 2982 |
{ |
{ |
| 2983 |
int filename_start = 0; |
int filename_start = 0; |
| 2984 |
int i; |
int i; |
| 3002 |
} |
} |
| 3003 |
} |
} |
| 3004 |
|
|
| 3005 |
int copy_teraterm_dir_relative_path(char FAR * dest, int destsize, |
int copy_teraterm_dir_relative_path(char *dest, int destsize, |
| 3006 |
char FAR * basename) |
char *basename) |
| 3007 |
{ |
{ |
| 3008 |
char buf[1024]; |
char buf[1024]; |
| 3009 |
int filename_start = 0; |
int filename_start = 0; |
| 3254 |
SendMessage(listbox, LB_GETTEXT, curPos, (LPARAM) buf); |
SendMessage(listbox, LB_GETTEXT, curPos, (LPARAM) buf); |
| 3255 |
SendMessage(listbox, LB_DELETESTRING, curPos, 0); |
SendMessage(listbox, LB_DELETESTRING, curPos, 0); |
| 3256 |
SendMessage(listbox, LB_INSERTSTRING, newPos, |
SendMessage(listbox, LB_INSERTSTRING, newPos, |
| 3257 |
(LPARAM) (char FAR *) buf); |
(LPARAM) (char *) buf); |
| 3258 |
SendMessage(listbox, LB_SETCURSEL, newPos, 0); |
SendMessage(listbox, LB_SETCURSEL, newPos, 0); |
| 3259 |
} |
} |
| 3260 |
} |
} |
| 3261 |
} |
} |
| 3262 |
|
|
| 3263 |
static int get_keys_file_name(HWND parent, char FAR * buf, int bufsize, |
static int get_keys_file_name(HWND parent, char *buf, int bufsize, |
| 3264 |
int readonly) |
int readonly) |
| 3265 |
{ |
{ |
| 3266 |
OPENFILENAME params; |
OPENFILENAME params; |
| 5149 |
} |
} |
| 5150 |
|
|
| 5151 |
|
|
| 5152 |
static int PASCAL FAR TTXProcessCommand(HWND hWin, WORD cmd) |
static int PASCAL TTXProcessCommand(HWND hWin, WORD cmd) |
| 5153 |
{ |
{ |
| 5154 |
char uimsg[MAX_UIMSG]; |
char uimsg[MAX_UIMSG]; |
| 5155 |
|
|
| 5223 |
return 1; |
return 1; |
| 5224 |
case ID_SSHASYNCMESSAGEBOX: |
case ID_SSHASYNCMESSAGEBOX: |
| 5225 |
if (pvar->err_msg != NULL) { |
if (pvar->err_msg != NULL) { |
| 5226 |
char FAR *msg = pvar->err_msg; |
char *msg = pvar->err_msg; |
| 5227 |
|
|
| 5228 |
/* Could there be a buffer overrun bug anywhere in Win32 |
/* Could there be a buffer overrun bug anywhere in Win32 |
| 5229 |
MessageBox? Who knows? I'm paranoid. */ |
MessageBox? Who knows? I'm paranoid. */ |
| 5323 |
strncpy_s(dst, dst_len, str, _TRUNCATE); |
strncpy_s(dst, dst_len, str, _TRUNCATE); |
| 5324 |
} |
} |
| 5325 |
|
|
| 5326 |
static void PASCAL FAR TTXSetCommandLine(PCHAR cmd, int cmdlen, |
static void PASCAL TTXSetCommandLine(PCHAR cmd, int cmdlen, |
| 5327 |
PGetHNRec rec) |
PGetHNRec rec) |
| 5328 |
{ |
{ |
| 5329 |
char tmpFile[MAX_PATH]; |
char tmpFile[MAX_PATH]; |
| 5442 |
This function is called for each extension, in reverse load order (see |
This function is called for each extension, in reverse load order (see |
| 5443 |
below). |
below). |
| 5444 |
*/ |
*/ |
| 5445 |
static void PASCAL FAR TTXEnd(void) |
static void PASCAL TTXEnd(void) |
| 5446 |
{ |
{ |
| 5447 |
uninit_TTSSH(pvar); |
uninit_TTSSH(pvar); |
| 5448 |
|
|
| 5487 |
}; |
}; |
| 5488 |
|
|
| 5489 |
BOOL __declspec(dllexport) |
BOOL __declspec(dllexport) |
| 5490 |
PASCAL FAR TTXBind(WORD Version, TTXExports FAR * exports) |
PASCAL TTXBind(WORD Version, TTXExports *exports) |
| 5491 |
{ |
{ |
| 5492 |
int size = sizeof(Exports) - sizeof(exports->size); |
int size = sizeof(Exports) - sizeof(exports->size); |
| 5493 |
/* do version checking if necessary */ |
/* do version checking if necessary */ |
| 5496 |
if (size > exports->size) { |
if (size > exports->size) { |
| 5497 |
size = exports->size; |
size = exports->size; |
| 5498 |
} |
} |
| 5499 |
memcpy((char FAR *) exports + sizeof(exports->size), |
memcpy((char *) exports + sizeof(exports->size), |
| 5500 |
(char FAR *) &Exports + sizeof(exports->size), size); |
(char *) &Exports + sizeof(exports->size), size); |
| 5501 |
return TRUE; |
return TRUE; |
| 5502 |
} |
} |
| 5503 |
|
|