Develop and Download Open Source Software

Browse Subversion Repository

Diff of /branches/ssh_chacha20poly1305/ttssh2/ttxssh/ssh.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6799 by doda, Mon Jun 12 10:43:28 2017 UTC revision 6800 by doda, Mon Jun 12 10:43:31 2017 UTC
# Line 2848  void SSH_notify_win_size(PTInstVar pvar, Line 2848  void SSH_notify_win_size(PTInstVar pvar,
2848                          unsigned char FAR *outmsg =                          unsigned char FAR *outmsg =
2849                                  begin_send_packet(pvar, SSH_CMSG_WINDOW_SIZE, 16);                                  begin_send_packet(pvar, SSH_CMSG_WINDOW_SIZE, 16);
2850    
2851                          set_uint32(outmsg, rows);                          set_uint32(outmsg, rows);     // window height (characters)
2852                          set_uint32(outmsg + 4, cols);                          set_uint32(outmsg + 4, cols); // window width  (characters)
2853                          set_uint32(outmsg + 8, x);                          set_uint32(outmsg + 8, x);    // window width  (pixels)
2854                          set_uint32(outmsg + 12, y);                          set_uint32(outmsg + 12, y);   // window height (pixels)
2855                          finish_send_packet(pvar);                          finish_send_packet(pvar);
2856                            logprintf(pvar, LOG_LEVEL_VERBOSE, __FUNCTION__ ": sending SSH_CMSG_WINDOW_SIZE. "
2857                                      "cols: %d, rows: %d, x: %d, y: %d", cols, rows, x, y);
2858                  }                  }
2859    
2860          } else if (SSHv2(pvar)) { // ターミナルサイズ変更通知の追加 (2005.1.4 yutaka)          } else if (SSHv2(pvar)) {
2861                                        // SSH2かどうかのチェックも行う。(2005.1.5 yutaka)                  // ターミナルサイズ変更通知の追加 (2005.1.4 yutaka)
2862                    // SSH2かどうかのチェックも行う。(2005.1.5 yutaka)
2863                  buffer_t *msg;                  buffer_t *msg;
2864                  char *s;                  char *req_type = "window-change";
2865                  unsigned char *outmsg;                  unsigned char *outmsg;
2866                  int len;                  int len;
2867                  Channel_t *c;                  Channel_t *c;
# Line 2873  void SSH_notify_win_size(PTInstVar pvar, Line 2876  void SSH_notify_win_size(PTInstVar pvar,
2876                          return;                          return;
2877                  }                  }
2878                  buffer_put_int(msg, c->remote_id);                  buffer_put_int(msg, c->remote_id);
2879                  s = "window-change";                  buffer_put_string(msg, req_type, strlen(req_type));
2880                  buffer_put_string(msg, s, strlen(s));                  buffer_put_char(msg, 0);    // want_reply
2881                  buffer_put_char(msg, 0);  // wantconfirm                  buffer_put_int(msg, cols);  // columns
2882                  buffer_put_int(msg, pvar->ssh_state.win_cols);  // columns                  buffer_put_int(msg, rows);  // lines
2883                  buffer_put_int(msg, pvar->ssh_state.win_rows);  // lines                  buffer_put_int(msg, x);     // window width (pixel):
2884                  buffer_put_int(msg, x);  // window width (pixel):                  buffer_put_int(msg, y);     // window height (pixel):
                 buffer_put_int(msg, y);  // window height (pixel):  
2885                  len = buffer_len(msg);                  len = buffer_len(msg);
2886                  outmsg = begin_send_packet(pvar, SSH2_MSG_CHANNEL_REQUEST, len);                  outmsg = begin_send_packet(pvar, SSH2_MSG_CHANNEL_REQUEST, len);
2887                  memcpy(outmsg, buffer_ptr(msg), len);                  memcpy(outmsg, buffer_ptr(msg), len);
2888                  finish_send_packet(pvar);                  finish_send_packet(pvar);
2889                  buffer_free(msg);                  buffer_free(msg);
2890    
2891                  notify_verbose_message(pvar, "SSH2_MSG_CHANNEL_REQUEST was sent at SSH_notify_win_size().", LOG_LEVEL_VERBOSE);                  logprintf(pvar, LOG_LEVEL_VERBOSE, __FUNCTION__ ": sending SSH2_MSG_CHANNEL_REQUEST. "
2892                              "local: %d, remote: %d, request-type: %s, cols: %d, rows: %d, x: %d, y: %d",
2893                              c->self_id, c->remote_id, req_type, cols, rows, x, y);
2894    
2895          } else {          } else {
2896                  // SSHでない場合は何もしない。                  // SSHでない場合は何もしない。
   
2897          }          }
   
2898  }  }
2899    
2900  // ブレーク信号を送る。  // ブレーク信号を送る -- RFC 4335
2901  // OpenSSH の"~B"に相当する。ただし、SSH2のみ。  // OpenSSH の"~B"に相当する。
2902  // (2010.9.27 yutaka)  // (2010.9.27 yutaka)
2903  int SSH_notify_break_signal(PTInstVar pvar)  int SSH_notify_break_signal(PTInstVar pvar)
2904  {  {
2905          int ret = 0;          int ret = 0;
2906    
2907          if (SSHv1(pvar)) {          if (SSHv2(pvar)) { // SSH2 のみ対応
                 // 何もしない。  
   
         } else if (SSHv2(pvar)) {  
2908                  buffer_t *msg;                  buffer_t *msg;
2909                  char *s;                  char *req_type = "break";
2910                  unsigned char *outmsg;                  unsigned char *outmsg;
2911                  int len;                  int len;
2912                  Channel_t *c;                  Channel_t *c;
# Line 2921  int SSH_notify_break_signal(PTInstVar pv Line 2920  int SSH_notify_break_signal(PTInstVar pv
2920                          goto error;                          goto error;
2921                  }                  }
2922                  buffer_put_int(msg, c->remote_id);                  buffer_put_int(msg, c->remote_id);
2923                  s = "break";                  buffer_put_string(msg, req_type, strlen(req_type));
2924                  buffer_put_string(msg, s, strlen(s));                  buffer_put_char(msg, 0);  // want_reply
2925                  buffer_put_char(msg, 0);  // wantconfirm                  buffer_put_int(msg, 1000);  // break-length (msec)
                 buffer_put_int(msg, 1000);    
2926                  len = buffer_len(msg);                  len = buffer_len(msg);
2927                  outmsg = begin_send_packet(pvar, SSH2_MSG_CHANNEL_REQUEST, len);                  outmsg = begin_send_packet(pvar, SSH2_MSG_CHANNEL_REQUEST, len);
2928                  memcpy(outmsg, buffer_ptr(msg), len);                  memcpy(outmsg, buffer_ptr(msg), len);
2929                  finish_send_packet(pvar);                  finish_send_packet(pvar);
2930                  buffer_free(msg);                  buffer_free(msg);
2931    
2932                  notify_verbose_message(pvar, "SSH2_MSG_CHANNEL_REQUEST was sent at SSH_notify_break_signal().", LOG_LEVEL_VERBOSE);                  logprintf(pvar, LOG_LEVEL_VERBOSE, __FUNCTION__ ": sending SSH2_MSG_CHANNEL_REQUEST. "
2933                              "local: %d, remote: %d, request-type: %s, break-length: %d",
2934                              c->self_id, c->remote_id, req_type, 1000);
2935    
2936                  ret = 1;                  ret = 1;
   
         } else {  
                 // SSHでない場合は何もしない。  
   
2937          }          }
2938    
2939  error:  error:
# Line 3680  void SSH_request_X11_forwarding(PTInstVa Line 3676  void SSH_request_X11_forwarding(PTInstVa
3676          } else {          } else {
3677                  // SSH2: X11 port-forwarding (2005.7.2 yutaka)                  // SSH2: X11 port-forwarding (2005.7.2 yutaka)
3678                  buffer_t *msg;                  buffer_t *msg;
3679                  char *s;                  char *req_type = "x11-req";
3680                  unsigned char *outmsg;                  unsigned char *outmsg;
3681                  int len;                  int len;
3682                  Channel_t *c;                  Channel_t *c;
# Line 3709  void SSH_request_X11_forwarding(PTInstVa Line 3705  void SSH_request_X11_forwarding(PTInstVa
3705                  newdata[newlen - 1] = '\0';                  newdata[newlen - 1] = '\0';
3706    
3707                  buffer_put_int(msg, c->remote_id);                  buffer_put_int(msg, c->remote_id);
3708                  s = "x11-req";                  buffer_put_string(msg, req_type, strlen(req_type)); // service name
3709                  buffer_put_string(msg, s, strlen(s)); // service name                  buffer_put_char(msg, 0);  // want_reply (false)
3710                  buffer_put_char(msg, 0);  // want confirm (false)                  buffer_put_char(msg, 0);  // single connection
                 buffer_put_char(msg, 0);  // XXX bool single connection  
3711    
3712                  s = auth_protocol; // MIT-MAGIC-COOKIE-1                  buffer_put_string(msg, auth_protocol, strlen(auth_protocol)); // protocol ("MIT-MAGIC-COOKIE-1")
3713                  buffer_put_string(msg, s, strlen(s));                  buffer_put_string(msg, newdata, strlen(newdata)); // cookie
                 s = newdata;  
                 buffer_put_string(msg, s, strlen(s));  
3714    
3715                  buffer_put_int(msg, screen_num);                  buffer_put_int(msg, screen_num);
3716    
# Line 3727  void SSH_request_X11_forwarding(PTInstVa Line 3720  void SSH_request_X11_forwarding(PTInstVa
3720                  finish_send_packet(pvar);                  finish_send_packet(pvar);
3721                  buffer_free(msg);                  buffer_free(msg);
3722    
3723                  notify_verbose_message(pvar, "SSH2_MSG_CHANNEL_REQUEST was sent at SSH_request_X11_forwarding().", LOG_LEVEL_VERBOSE);                  logprintf(pvar, LOG_LEVEL_VERBOSE, __FUNCTION__ ": sending SSH2_MSG_CHANNEL_REQUEST. "
3724                              "local: %d, remote: %d, request-type: %s, proto: %s, cookie: %s, screen: %d",
3725                              c->self_id, c->remote_id, req_type, auth_protocol, newdata, screen_num);
3726    
3727                  free(newdata);                  free(newdata);
3728          }          }
# Line 7420  static BOOL send_channel_request_gen(PTI Line 7415  static BOOL send_channel_request_gen(PTI
7415  BOOL send_pty_request(PTInstVar pvar, Channel_t *c)  BOOL send_pty_request(PTInstVar pvar, Channel_t *c)
7416  {  {
7417          buffer_t *msg, *ttymsg;          buffer_t *msg, *ttymsg;
7418          char *s = "pty-req";  // pseudo terminalのリクエスト          char *req_type = "pty-req";  // pseudo terminalのリクエスト
7419          unsigned char *outmsg;          unsigned char *outmsg;
7420          int len, x, y;          int len, x, y;
7421  #ifdef DONT_WANTCONFIRM  #ifdef DONT_WANTCONFIRM
7422          int wantconfirm = 0; // false          int want_reply = 0; // false
7423  #else  #else
7424          int wantconfirm = 1; // true          int want_reply = 1; // true
7425  #endif  #endif
7426    
7427          // pty open          // pty open
# Line 7443  BOOL send_pty_request(PTInstVar pvar, Ch Line 7438  BOOL send_pty_request(PTInstVar pvar, Ch
7438          }          }
7439    
7440          buffer_put_int(msg, c->remote_id);          buffer_put_int(msg, c->remote_id);
7441          buffer_put_string(msg, s, strlen(s));          buffer_put_string(msg, req_type, strlen(req_type));
7442          buffer_put_char(msg, wantconfirm);  // wantconfirm (disableに変更 2005/3/28 yutaka)          buffer_put_char(msg, want_reply);  // want_reply (disableに変更 2005/3/28 yutaka)
7443    
7444          s = pvar->ts->TermType; // TERM          buffer_put_string(msg, pvar->ts->TermType, strlen(pvar->ts->TermType));
         buffer_put_string(msg, s, strlen(s));  
7445          buffer_put_int(msg, pvar->ssh_state.win_cols);  // columns          buffer_put_int(msg, pvar->ssh_state.win_cols);  // columns
7446          buffer_put_int(msg, pvar->ssh_state.win_rows);  // lines          buffer_put_int(msg, pvar->ssh_state.win_rows);  // lines
7447          get_window_pixel_size(pvar, &x, &y);          get_window_pixel_size(pvar, &x, &y);
# Line 7494  BOOL send_pty_request(PTInstVar pvar, Ch Line 7488  BOOL send_pty_request(PTInstVar pvar, Ch
7488          buffer_free(ttymsg);          buffer_free(ttymsg);
7489    
7490          notify_verbose_message(pvar, "SSH2_MSG_CHANNEL_REQUEST was sent at send_pty_request().", LOG_LEVEL_VERBOSE);          notify_verbose_message(pvar, "SSH2_MSG_CHANNEL_REQUEST was sent at send_pty_request().", LOG_LEVEL_VERBOSE);
7491            logprintf(pvar, LOG_LEVEL_VERBOSE, __FUNCTION__ ": sending SSH2_MSG_CHANNEL_REQUEST. "
7492                      "local: %d, remote: %d, request-type: %s, "
7493                      "term: %s, cols: %d, rows: %d, x: %d, y: %d, "
7494                      "out-speed: %d, in-speed: %d, verase: %s, onlcr: %s",
7495                      c->self_id, c->remote_id, req_type, pvar->ts->TermType,
7496                      pvar->ssh_state.win_cols, pvar->ssh_state.win_rows, x, y,
7497                      9600, 9600, (pvar->ts->BSKey==IdBS)?"^h":"^?", (pvar->ts->CRReceive==IdBS)?"on":"off");
7498    
7499          pvar->session_nego_status = 2;          pvar->session_nego_status = 2;
7500    
7501          if (wantconfirm == 0) {          if (want_reply == 0) {
7502                  handle_SSH2_channel_success(pvar);                  handle_SSH2_channel_success(pvar);
7503          }          }
7504    

Legend:
Removed from v.6799  
changed lines
  Added in v.6800

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26