| 2420 |
pvar->ask4passwd = 0; // disabled(default) (2006.9.18 maya) |
pvar->ask4passwd = 0; // disabled(default) (2006.9.18 maya) |
| 2421 |
pvar->userauth_retry_count = 0; |
pvar->userauth_retry_count = 0; |
| 2422 |
pvar->decomp_buffer = NULL; |
pvar->decomp_buffer = NULL; |
| 2423 |
|
pvar->ssh2_authlist = NULL; // (2007.4.27 yutaka) |
| 2424 |
|
|
| 2425 |
} |
} |
| 2426 |
|
|
| 2927 |
buffer_free(pvar->decomp_buffer); |
buffer_free(pvar->decomp_buffer); |
| 2928 |
pvar->decomp_buffer = NULL; |
pvar->decomp_buffer = NULL; |
| 2929 |
} |
} |
| 2930 |
|
|
| 2931 |
|
if (pvar->ssh2_authlist != NULL) { // (2007.4.27 yutaka) |
| 2932 |
|
free(pvar->ssh2_authlist); |
| 2933 |
|
pvar->ssh2_authlist = NULL; |
| 2934 |
|
} |
| 2935 |
} |
} |
| 2936 |
#endif |
#endif |
| 2937 |
|
|
| 6187 |
} |
} |
| 6188 |
buffer_put_string(msg, s, strlen(s)); |
buffer_put_string(msg, s, strlen(s)); |
| 6189 |
|
|
| 6190 |
if (pvar->auth_state.cur_cred.method == SSH_AUTH_PASSWORD) { // パスワード認証 |
if (pvar->ssh2_authlist == NULL) { // "none"メソッドの送信 |
| 6191 |
|
// 認証リストをサーバから取得する。 |
| 6192 |
|
// SSH2_MSG_USERAUTH_FAILUREが返るが、サーバにはログは残らない。 |
| 6193 |
|
// (2007.4.27 yutaka) |
| 6194 |
|
s = connect_id; |
| 6195 |
|
buffer_put_string(msg, s, strlen(s)); |
| 6196 |
|
s = "none"; // method name |
| 6197 |
|
buffer_put_string(msg, s, strlen(s)); |
| 6198 |
|
|
| 6199 |
|
} else if (pvar->auth_state.cur_cred.method == SSH_AUTH_PASSWORD) { // パスワード認証 |
| 6200 |
// 初回は keyboard-interactive メソッドでトライする (2005.1.22 yutaka) |
// 初回は keyboard-interactive メソッドでトライする (2005.1.22 yutaka) |
| 6201 |
// cf. http://www.openssh.com/txt/draft-ietf-secsh-auth-kbdinteract-02.txt |
// cf. http://www.openssh.com/txt/draft-ietf-secsh-auth-kbdinteract-02.txt |
| 6202 |
|
|
| 6203 |
|
// 認証リストに"password"がなければ、keyboard-interactiveでトライする。(2007.4.27 yutaka) |
| 6204 |
|
if (strstr(pvar->ssh2_authlist, "password") == NULL) { |
| 6205 |
|
pvar->settings.ssh2_keyboard_interactive = 1; |
| 6206 |
|
pvar->keyboard_interactive_done = 0; |
| 6207 |
|
} |
| 6208 |
|
|
| 6209 |
if (pvar->settings.ssh2_keyboard_interactive == 1 && |
if (pvar->settings.ssh2_keyboard_interactive == 1 && |
| 6210 |
pvar->keyboard_interactive_done == 0) { // keyboard-interactive method |
pvar->keyboard_interactive_done == 0) { // keyboard-interactive method |
| 6211 |
pvar->keyboard_interactive_done = 1; |
pvar->keyboard_interactive_done = 1; |
| 6501 |
|
|
| 6502 |
static BOOL handle_SSH2_userauth_failure(PTInstVar pvar) |
static BOOL handle_SSH2_userauth_failure(PTInstVar pvar) |
| 6503 |
{ |
{ |
| 6504 |
|
int len; |
| 6505 |
|
char *data; |
| 6506 |
|
char *cstring; |
| 6507 |
|
int partial; |
| 6508 |
|
|
| 6509 |
|
// 6byte(サイズ+パディング+タイプ)を取り除いた以降のペイロード |
| 6510 |
|
data = pvar->ssh_state.payload; |
| 6511 |
|
// パケットサイズ - (パディングサイズ+1);真のパケットサイズ |
| 6512 |
|
len = pvar->ssh_state.payloadlen; |
| 6513 |
|
|
| 6514 |
|
cstring = buffer_get_string(&data, NULL); // 認証リストの取得 |
| 6515 |
|
partial = data[0]; |
| 6516 |
|
data += 1; |
| 6517 |
|
|
| 6518 |
|
// 認証リストが空の場合はまだログインをしていない。 |
| 6519 |
|
if (pvar->ssh2_authlist == NULL) { |
| 6520 |
|
pvar->ssh2_authlist = cstring; // 不要になったらフリーすること |
| 6521 |
|
|
| 6522 |
|
handle_SSH2_authrequest(pvar); // ログイン処理へ |
| 6523 |
|
return TRUE; |
| 6524 |
|
} |
| 6525 |
|
|
| 6526 |
// TCP connection closed |
// TCP connection closed |
| 6527 |
//notify_closed_connection(pvar); |
//notify_closed_connection(pvar); |
| 6528 |
|
|
| 7397 |
|
|
| 7398 |
/* |
/* |
| 7399 |
* $Log: not supported by cvs2svn $ |
* $Log: not supported by cvs2svn $ |
| 7400 |
|
* Revision 1.75 2007/04/26 12:21:24 maya |
| 7401 |
|
* ssh2_channel_new() の返り値をチェックするように修正した。 |
| 7402 |
|
* |
| 7403 |
* Revision 1.74 2007/04/26 11:11:10 maya |
* Revision 1.74 2007/04/26 11:11:10 maya |
| 7404 |
* Fix a bug. |
* Fix a bug. |
| 7405 |
* |
* |