Develop and Download Open Source Software

Browse Subversion Repository

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

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

revision 3194 by maya, Fri Dec 19 08:46:05 2008 UTC revision 3195 by doda, Thu Dec 25 11:17:49 2008 UTC
# Line 28  SOFTWARE, EVEN IF ADVISED OF THE POSSIBI Line 28  SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
28    
29  /* Tera Term extension mechanism  /* Tera Term extension mechanism
30     Robert O'Callahan (roc+tt@cs.cmu.edu)     Robert O'Callahan (roc+tt@cs.cmu.edu)
31      
32     Tera Term by Takashi Teranishi (teranishi@rikaxp.riken.go.jp)     Tera Term by Takashi Teranishi (teranishi@rikaxp.riken.go.jp)
33  */  */
34    
# Line 417  static void write_ssh_options(PTInstVar Line 417  static void write_ssh_options(PTInstVar
417          WritePrivateProfileString("TTSSH", "HeartBeat", buf, fileName);          WritePrivateProfileString("TTSSH", "HeartBeat", buf, fileName);
418    
419          // Remember password (2006.8.5 yutaka)          // Remember password (2006.8.5 yutaka)
420          WritePrivateProfileString("TTSSH", "RememberPassword",          WritePrivateProfileString("TTSSH", "RememberPassword",
421              settings->remember_password ? "1" : "0",              settings->remember_password ? "1" : "0",
422              fileName);              fileName);
423    
424          // 初回の認証ダイアログでサポートされているメソッドをチェックし、          // 初回の認証ダイアログでサポートされているメソッドをチェックし、
# Line 898  LRESULT CALLBACK HostnameEditProc(HWND d Line 898  LRESULT CALLBACK HostnameEditProc(HWND d
898                                                                          str[select] = '\0';                                                                          str[select] = '\0';
899    
900                                                                  }                                                                  }
901                                                          }                                                          }
902    
903                                                          if (wParam == 0x55) { // カーソルより左側をすべて消す                                                          if (wParam == 0x55) { // カーソルより左側をすべて消す
904                                                                  if (select >= len) {                                                                  if (select >= len) {
# Line 1119  static BOOL CALLBACK TTXHostDlg(HWND dlg Line 1119  static BOOL CALLBACK TTXHostDlg(HWND dlg
1119                          SendDlgItemMessage(dlg, IDC_HOSTCOM, CB_SETCURSEL, w - 1, 0);                          SendDlgItemMessage(dlg, IDC_HOSTCOM, CB_SETCURSEL, w - 1, 0);
1120                  else {                                  /* All com ports are already used */                  else {                                  /* All com ports are already used */
1121                          GetHNRec->PortType = IdTCPIP;                          GetHNRec->PortType = IdTCPIP;
1122                          enable_dlg_items(dlg, IDC_HOSTSERIAL, IDC_HOSTSERIAL, FALSE);                          enable_dlg_items(dlg, IDC_HOSTSERIAL, IDC_HOSTSERIAL, FALSE);
1123                  }                  }
1124    
1125                  CheckRadioButton(dlg, IDC_HOSTTCPIP, IDC_HOSTSERIAL,                  CheckRadioButton(dlg, IDC_HOSTTCPIP, IDC_HOSTSERIAL,
# Line 1128  static BOOL CALLBACK TTXHostDlg(HWND dlg Line 1128  static BOOL CALLBACK TTXHostDlg(HWND dlg
1128                  if (GetHNRec->PortType == IdTCPIP) {                  if (GetHNRec->PortType == IdTCPIP) {
1129                          enable_dlg_items(dlg, IDC_HOSTCOMLABEL, IDC_HOSTCOM, FALSE);                          enable_dlg_items(dlg, IDC_HOSTCOMLABEL, IDC_HOSTCOM, FALSE);
1130    
1131                          enable_dlg_items(dlg, IDC_SSH_VERSION, IDC_SSH_VERSION, TRUE);                          enable_dlg_items(dlg, IDC_SSH_VERSION, IDC_SSH_VERSION, TRUE);
1132                          enable_dlg_items(dlg, IDC_SSH_VERSION_LABEL, IDC_SSH_VERSION_LABEL, TRUE);                          enable_dlg_items(dlg, IDC_SSH_VERSION_LABEL, IDC_SSH_VERSION_LABEL, TRUE);
1133    
1134                          enable_dlg_items(dlg, IDC_HISTORY, IDC_HISTORY, TRUE); // enabled                          enable_dlg_items(dlg, IDC_HISTORY, IDC_HISTORY, TRUE); // enabled
1135                  }                  }
# Line 1233  static BOOL CALLBACK TTXHostDlg(HWND dlg Line 1233  static BOOL CALLBACK TTXHostDlg(HWND dlg
1233                                          } else if (IsDlgButtonChecked(dlg, IDC_HOSTSSH)) {                                          } else if (IsDlgButtonChecked(dlg, IDC_HOSTSSH)) {
1234                                                  pvar->hostdlg_Enabled = TRUE;                                                  pvar->hostdlg_Enabled = TRUE;
1235    
1236                                                  // check SSH protocol version                                                  // check SSH protocol version
1237                                                  memset(afstr, 0, sizeof(afstr));                                                  memset(afstr, 0, sizeof(afstr));
1238                                                  GetDlgItemText(dlg, IDC_SSH_VERSION, afstr, sizeof(afstr));                                                  GetDlgItemText(dlg, IDC_SSH_VERSION, afstr, sizeof(afstr));
1239                                                  if (_stricmp(afstr, "SSH1") == 0) {                                                  if (_stricmp(afstr, "SSH1") == 0) {
# Line 1566  static int parse_option(PTInstVar pvar, Line 1566  static int parse_option(PTInstVar pvar,
1566                          pvar->settings.Enabled = 0;                          pvar->settings.Enabled = 0;
1567    
1568                  } else if (MATCH_STR(option + 1, "auth") == 0) {                  } else if (MATCH_STR(option + 1, "auth") == 0) {
1569                          // SSH2自動ログインオプションの追加                          // SSH2自動ログインオプションの追加
1570                          //                          //
1571                          // SYNOPSIS: /ssh /auth=passowrd /user=ユーザ名 /passwd=パスワード                          // SYNOPSIS: /ssh /auth=passowrd /user=ユーザ名 /passwd=パスワード
1572                          //           /ssh /auth=publickey /user=ユーザ名 /passwd=パスワード /keyfile=パス                          //           /ssh /auth=publickey /user=ユーザ名 /passwd=パスワード /keyfile=パス
# Line 1701  static int parse_option(PTInstVar pvar, Line 1701  static int parse_option(PTInstVar pvar,
1701    
1702                  return OPTION_REPLACE;                  return OPTION_REPLACE;
1703          }          }
1704            else if (strchr(option, '@') != NULL) {
1705                    //
1706                    // user@host 形式のサポート
1707                    //   取り合えずsshでのみサポートの為、ユーザ名はttssh内で潰す。
1708                    //   (ssh接続以外 --  ttsshには関係ない場合でも)
1709                    //   将来的にtelnet authentication optionをサポートした時は
1710                    //   Tera Term本体で処理するようにする予定。
1711                    //
1712                    char *p;
1713                    p = strchr(option, '@');
1714                    *p = 0;
1715    
1716                    strncpy_s(pvar->ssh2_username, sizeof(pvar->ssh2_username), option, _TRUNCATE);
1717    
1718                    // ユーザ名部分をスペースで潰す。
1719                    // 後続のTTXやTera Term本体で解釈する時にはスペースを読み飛ばすので、
1720                    // ホスト名を先頭に詰める必要は無い。
1721                    memset(option, ' ', p-option+1);
1722    
1723                    return OPTION_REPLACE;
1724            }
1725    
1726          return OPTION_NONE;          return OPTION_NONE;
1727  }  }
# Line 1918  void get_file_version(char *exefile, int Line 1939  void get_file_version(char *exefile, int
1939          }          }
1940    
1941          ret = VerQueryValue(buf,          ret = VerQueryValue(buf,
1942                          "\\VarFileInfo\\Translation",                          "\\VarFileInfo\\Translation",
1943                          (LPVOID *)&lplgcode, &unLen);                          (LPVOID *)&lplgcode, &unLen);
1944          if (ret == FALSE)          if (ret == FALSE)
1945                  goto error;                  goto error;
1946    
1947          for (i = 0 ; i < (int)(unLen / sizeof(LANGANDCODEPAGE)) ; i++) {          for (i = 0 ; i < (int)(unLen / sizeof(LANGANDCODEPAGE)) ; i++) {
1948                  _snprintf_s(fmt, sizeof(fmt), _TRUNCATE,                  _snprintf_s(fmt, sizeof(fmt), _TRUNCATE,
1949                              "\\StringFileInfo\\%04x%04x\\FileVersion",                              "\\StringFileInfo\\%04x%04x\\FileVersion",
1950                              lplgcode[i].wLanguage, lplgcode[i].wCodePage);                              lplgcode[i].wLanguage, lplgcode[i].wCodePage);
1951                  VerQueryValue(buf, fmt, &pbuf, &unLen);                  VerQueryValue(buf, fmt, &pbuf, &unLen);
1952                  if (unLen > 0) { // get success                  if (unLen > 0) { // get success
# Line 1962  static void init_about_dlg(PTInstVar pva Line 1983  static void init_about_dlg(PTInstVar pva
1983          GetDlgItemText(dlg, IDOK, uimsg, sizeof(uimsg));          GetDlgItemText(dlg, IDOK, uimsg, sizeof(uimsg));
1984          UTIL_get_lang_msg("BTN_OK", pvar, uimsg);          UTIL_get_lang_msg("BTN_OK", pvar, uimsg);
1985          SetDlgItemText(dlg, IDOK, pvar->ts->UIMsg);          SetDlgItemText(dlg, IDOK, pvar->ts->UIMsg);
1986            
1987          // TTSSHのバージョンを設定する (2005.2.28 yutaka)          // TTSSHのバージョンを設定する (2005.2.28 yutaka)
1988          get_file_version("ttxssh.dll", &a, &b, &c, &d);          get_file_version("ttxssh.dll", &a, &b, &c, &d);
1989          _snprintf_s(buf, sizeof(buf), _TRUNCATE,          _snprintf_s(buf, sizeof(buf), _TRUNCATE,
# Line 2211  static void init_setup_dlg(PTInstVar pva Line 2232  static void init_setup_dlg(PTInstVar pva
2232          int i;          int i;
2233          int ch;          int ch;
2234          char uimsg[MAX_UIMSG];          char uimsg[MAX_UIMSG];
2235            
2236          GetWindowText(dlg, uimsg, sizeof(uimsg));          GetWindowText(dlg, uimsg, sizeof(uimsg));
2237          UTIL_get_lang_msg("DLG_SSHSETUP_TITLE", pvar, uimsg);          UTIL_get_lang_msg("DLG_SSHSETUP_TITLE", pvar, uimsg);
2238          SetWindowText(dlg, pvar->ts->UIMsg);          SetWindowText(dlg, pvar->ts->UIMsg);
# Line 2260  static void init_setup_dlg(PTInstVar pva Line 2281  static void init_setup_dlg(PTInstVar pva
2281          GetDlgItemText(dlg, IDCANCEL, uimsg, sizeof(uimsg));          GetDlgItemText(dlg, IDCANCEL, uimsg, sizeof(uimsg));
2282          UTIL_get_lang_msg("BTN_CANCEL", pvar, uimsg);          UTIL_get_lang_msg("BTN_CANCEL", pvar, uimsg);
2283          SetDlgItemText(dlg, IDCANCEL, pvar->ts->UIMsg);          SetDlgItemText(dlg, IDCANCEL, pvar->ts->UIMsg);
2284            
2285          SendMessage(compressionControl, TBM_SETRANGE, TRUE, MAKELONG(0, 9));          SendMessage(compressionControl, TBM_SETRANGE, TRUE, MAKELONG(0, 9));
2286          SendMessage(compressionControl, TBM_SETPOS, TRUE,          SendMessage(compressionControl, TBM_SETPOS, TRUE,
2287                      pvar->settings.CompressionLevel);                      pvar->settings.CompressionLevel);
# Line 2731  error: Line 2752  error:
2752    
2753    
2754  //  //
2755  // RC4  // RC4
2756  //  //
2757    
2758  /* Size of key to use */  /* Size of key to use */
# Line 2969  int uuencode(unsigned char *src, int src Line 2990  int uuencode(unsigned char *src, int src
2990                  output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4);                  output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4);
2991                  output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6);                  output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6);
2992                  output[3] = input[2] & 0x3f;                  output[3] = input[2] & 0x3f;
2993                  if (output[0] >= 64 ||                  if (output[0] >= 64 ||
2994                      output[1] >= 64 ||                      output[1] >= 64 ||
2995                      output[2] >= 64 ||                      output[2] >= 64 ||
2996                      output[3] >= 64)                      output[3] >= 64)
# Line 2992  int uuencode(unsigned char *src, int src Line 3013  int uuencode(unsigned char *src, int src
3013                  output[0] = input[0] >> 2;                  output[0] = input[0] >> 2;
3014                  output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4);                  output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4);
3015                  output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6);                  output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6);
3016                  if (output[0] >= 64 ||                  if (output[0] >= 64 ||
3017                      output[1] >= 64 ||                      output[1] >= 64 ||
3018                      output[2] >= 64)                      output[2] >= 64)
3019                          return -1;                          return -1;
# Line 3104  static BOOL CALLBACK TTXScpDialog(HWND d Line 3125  static BOOL CALLBACK TTXScpDialog(HWND d
3125                          }                          }
3126                          return FALSE;                          return FALSE;
3127    
3128                  case IDCANCEL:                                    case IDCANCEL:
3129                          EndDialog(dlg, 0); // dialog close                          EndDialog(dlg, 0); // dialog close
3130                          return TRUE;                          return TRUE;
3131    
# Line 3149  static BOOL CALLBACK TTXKeyGenerator(HWN Line 3170  static BOOL CALLBACK TTXKeyGenerator(HWN
3170          HFONT font;          HFONT font;
3171    
3172          switch (msg) {          switch (msg) {
3173          case WM_INITDIALOG:          case WM_INITDIALOG:
3174                  {                  {
3175                  GetWindowText(dlg, uimsg, sizeof(uimsg));                  GetWindowText(dlg, uimsg, sizeof(uimsg));
3176                  UTIL_get_lang_msg("DLG_KEYGEN_TITLE", pvar, uimsg);                  UTIL_get_lang_msg("DLG_KEYGEN_TITLE", pvar, uimsg);
# Line 3236  static BOOL CALLBACK TTXKeyGenerator(HWN Line 3257  static BOOL CALLBACK TTXKeyGenerator(HWN
3257                          }                          }
3258                          return TRUE;                          return TRUE;
3259    
3260                  case IDCANCEL:                                    case IDCANCEL:
3261                          // don't forget to free SSH resource!                          // don't forget to free SSH resource!
3262                          free_ssh_key();                          free_ssh_key();
3263                          EndDialog(dlg, 0); // dialog close                          EndDialog(dlg, 0); // dialog close
# Line 3359  static BOOL CALLBACK TTXKeyGenerator(HWN Line 3380  static BOOL CALLBACK TTXKeyGenerator(HWN
3380                                          buffer_put_bignum2(b, rsa->e);                                          buffer_put_bignum2(b, rsa->e);
3381                                          buffer_put_bignum2(b, rsa->n);                                          buffer_put_bignum2(b, rsa->n);
3382                                  }                                  }
3383                                    
3384                                  blob = buffer_ptr(b);                                  blob = buffer_ptr(b);
3385                                  len = buffer_len(b);                                  len = buffer_len(b);
3386                                  uuenc = malloc(len * 2);                                  uuenc = malloc(len * 2);
# Line 3386  public_error: Line 3407  public_error:
3407                          break;                          break;
3408    
3409                  // saving private key file                  // saving private key file
3410                  case IDC_SAVE_PRIVATE_KEY:                  case IDC_SAVE_PRIVATE_KEY:
3411                          {                          {
3412                          char buf[1024], buf_conf[1024];  // passphrase                          char buf[1024], buf_conf[1024];  // passphrase
3413                          int ret;                          int ret;
3414                          OPENFILENAME ofn;                          OPENFILENAME ofn;
3415                          char filename[MAX_PATH];                          char filename[MAX_PATH];
# Line 3503  public_error: Line 3524  public_error:
3524                                  // padding with 8byte align                                  // padding with 8byte align
3525                                  while (buffer_len(b) % 8) {                                  while (buffer_len(b) % 8) {
3526                                          buffer_put_char(b, 0);                                          buffer_put_char(b, 0);
3527                                  }                                  }
3528    
3529                                  //                                  //
3530                                  // step(2)                                  // step(2)
# Line 3631  static int PASCAL FAR TTXProcessCommand( Line 3652  static int PASCAL FAR TTXProcessCommand(
3652          }          }
3653    
3654          switch (cmd) {          switch (cmd) {
3655          case ID_SSHSCPMENU:          case ID_SSHSCPMENU:
3656                  if (DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_SSHSCP), hWin, TTXScpDialog,                  if (DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_SSHSCP), hWin, TTXScpDialog,
3657                          (LPARAM) pvar) == -1) {                          (LPARAM) pvar) == -1) {
3658                          UTIL_get_lang_msg("MSG_CREATEWINDOW_SCP_ERROR", pvar,                          UTIL_get_lang_msg("MSG_CREATEWINDOW_SCP_ERROR", pvar,
# Line 3642  static int PASCAL FAR TTXProcessCommand( Line 3663  static int PASCAL FAR TTXProcessCommand(
3663                  }                  }
3664                  return 1;                  return 1;
3665    
3666          case ID_SSHKEYGENMENU:          case ID_SSHKEYGENMENU:
3667                  if (DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_SSHKEYGEN), hWin, TTXKeyGenerator,                  if (DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_SSHKEYGEN), hWin, TTXKeyGenerator,
3668                          (LPARAM) pvar) == -1) {                          (LPARAM) pvar) == -1) {
3669                          UTIL_get_lang_msg("MSG_CREATEWINDOW_KEYGEN_ERROR", pvar,                          UTIL_get_lang_msg("MSG_CREATEWINDOW_KEYGEN_ERROR", pvar,
# Line 3741  static void replace_blank_to_mark(char * Line 3762  static void replace_blank_to_mark(char *
3762                  if (str[i] == '@')                  if (str[i] == '@')
3763                          n++;                          n++;
3764          }          }
3765          if (dst_len < (len + 2*n))          if (dst_len < (len + 2*n))
3766                  return;                  return;
3767    
3768          for (i = 0 ; i < len ; i++) {          for (i = 0 ; i < len ; i++) {

Legend:
Removed from v.3194  
changed lines
  Added in v.3195

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