Nome | Tamanho | Rev. | Hora | Autor | Mensagem de Log |
---|---|---|---|---|---|
cygterm.bmp | 29.91 k | r128 | 2008-04-14 23:28:50 | (del#1144) | This commit was generated by cvs2svn ... |
COPYING | 17.67 k | r6629 | 2017-03-15 17:32:24 | doda | 利用ライブラリのライセンス本文を追加 ... |
cygterm.cfg | 349 | r6303 | 2016-02-17 21:10:48 | doda | ・エラー時の通知を強化 ・デバッグモー... |
Makefile | 2.1 k | r6629 | 2017-03-15 17:32:24 | doda | 利用ライブラリのライセンス本文を追加 ... |
README | 15.66 k | r6629 | 2017-03-15 17:32:24 | doda | 利用ライブラリのライセンス本文を追加 ... |
cyglaunch.c | 3.27 k | r6068 | 2015-10-31 09:22:12 | (del#1144) | プロジェクトWebページのURLをHTTPSに変更 |
cygterm.cc | 37.07 k | r6303 | 2016-02-17 21:10:48 | doda | ・エラー時の通知を強化 ・デバッグモー... |
cygterm+-x86_64 | r6541 | 2016-11-26 01:38:21 | (del#1144) | アイコンを差し替え keycode.ico 48... | |
cygterm.ico | 18.28 k | r6541 | 2016-11-26 01:38:21 | (del#1144) | アイコンを差し替え keycode.ico 48... |
README-j | 18.38 k | r6629 | 2017-03-15 17:32:24 | doda | 利用ライブラリのライセンス本文を追加 ... |
CygTerm+ - yet another Cygwin console ターミナル・エミュレータで Cygwin を使う。 (C) 2006-2016 TeraTerm Project https://ttssh2.osdn.jp/ Based on CygTerm by Original developer: Copyright (C) 2000-2006 NSym nsym@dd.iij4u.or.jp (English) https://googledrive.com/host/0B1s-dM6d6yC4fmhEZ3c0VTNFWEFtV3daUlRGQmFHVnBmVHRybUNnUVliNWktNDRlZ2NnZTQ/index-e.html (Japanese) https://googledrive.com/host/0B1s-dM6d6yC4fmhEZ3c0VTNFWEFtV3daUlRGQmFHVnBmVHRybUNnUVliNWktNDRlZ2NnZTQ/index.html // は じ め に // CygwinコンソールであるDOS窓をターミナル・エミュレータで置き替えてみよう、 という試みです。 ただし『リモートログインのしくみを利用せずに』という 前提です。 したがって inetd とか in.telnetd とか login 等は使用しません。 // 考 え 方 // ターミナル・エミュレータとCygwin上のシェルを起動し、両者を中継する。 これを行うプログラムを作ればよい。 // 仕 様 // 1. このプログラムを実行すると、ターミナル・エミュレータが立ち上がり、 そこにシェルのプロンプトが現れ、Cygwinコンソールとして使えること。 2. 起動するターミナル・エミュレータとシェルは選択可能であること。 3. シェル側の画面制御が正常に動作し、ターミナル・エミュレータ側の 画面サイズ変更にも追随すること。 // 設 計 // cygterm.exe 処理詳細 [1] TELNET接続を待ち受けるリスナーソケットを用意する。 ソケットに割り当てる未使用ポート番号は指定範囲内から探し出す。 [2] 別スレッドでターミナル・エミュレータを起動する。 このとき起動引数に IPアドレス 127.0.0.1 と [1]のポート番号を指定する。 [3] ターミナル・エミュレータからの接続を受け入れる。 セキュリティー上 127.0.0.1 以外からの接続は却下する。 [4] fork()した子プロセス上、PTY(擬似端末)スレーブ側でシェルを起動する。 [5] [3]の TELNET接続ソケットと [4]の PTYマスター側の入出力を橋渡しする。 TELNETプロトコルへの対応 (option negotiation) ターミナル・エミュレータからターミナルタイプの通知を受け、 シェル上 TERM 環境変数にセットする。 ターミナル・エミュレータからターミナルサイズの通知を受け、 PTYのウィンドウサイズを同サイズに変更する。 自分が Go Ahead を使わない事の許可をターミナルエミュレータに要求する。 ターミナルエミュレータが Go Ahead を使用しないように要求する。 ターミナルエミュレータの送信内容をエコーバックする許可を要求する。 [参照: RFC854 TELNET PROTOCOL SPECIFICATION] cygterm.exe はウィンドウを持たない Win32アプリとして実装する。 // ソ ー ス // README-j - このファイル README - README-j英訳 COPYING - GNU General Public License (GPL) Version 2 Makefile - メイクファイル cygterm.cc - ソースコード cygterm.cfg - 設定ファイル ※ Free Software Foundation 発行 GNU General Public License (GPL) に準拠するフリーソフトウェアとして配布します。 COPYING 参照。(https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) 補足: 他プログラムが CygTerm実行形式(cygterm.exe)を起動し通信して 使用することは、それが非GPLプログラムの場合でも許可されます。 // イ ン ス ト ー ル // Cygwin環境下で make install を実行します。 ※ インストール先ディレクトリは Makefile 中 BINDIR で設定しておきます。 BINDIR に cygterm.exe と cygterm.cfg がインストールされます。 cygterm.cfg は上書きされません。 // 設 定 フ ァ イ ル // cygterm.cfg は設定ファイルです。 使用する端末エミュレータのコマンドライン や起動するシェルのコマンドライン等を設定します。 cygterm.cfg は cygterm.exe と同じディレクトリにないといけません。 cygterm.cfg の例 +----------------------------------------------------------------------- | TERM = C:\program files\ttermpro\ttermpro.exe %s %d /KR=SJIS /KT=SJIS | TERM_TYPE = vt100 | PORT_START = 20000 | PORT_RANGE = 40 | SHELL = /bin/bash | ENV_1 = MAKE_MODE=unix | ENV_2 = HOME=/home | : : TERM ---- ターミナル・エミュレータの起動コマンドラインです。 コマンド名は Windows環境でパスが通ってなければフルパスで書きます。 ホスト指定のところは %s とし、ポート指定のところは %d とします。 TERM_TYPE --------- ターミナル・エミュレータがターミナルタイプを与えてくれなかった 場合に採用するターミナルタイプです。 (デフォルト:vt100) シェル上、環境変数 TERM にセットされます。 PORT_START ---------- 使い始める (使ってよい最小の) ポート番号です。 (デフォルト:20000) PORT_RANGE ---------- 使ってよいポート番号の個数です。 (デフォルト:40) PORT_START 〜 PORT_START+PORT_RANGE の範囲で空きポートを探します。 この数だけ同時実行できることになります。 SHELL ----- Cygwin側シェル (通常 /bin/bash) の起動コマンドラインです。 (デフォルト: /etc/passwdの情報を使用) コマンド名のフルパスか、"AUTO"を指定します。 LOGIN_SHELL ----------- シェルをログインシェルとして起動するかどうかを指定します。 デフォルトは無効です。 一般的なシェルではログインシェルとして起動されると、.profileや .loginなどのログイン時のみ読み込むスタートアップファイルを実行 します。 これらのファイルでは、通常、以下のような事が行われます。 ・PATHやUSER等の各種環境変数の設定を行う ・端末の設定を適切に行う ・カレントディレクトリをユーザのホームディレクトリに変更する。 一部のシェル(tclshなど)やシェル以外のプログラムを起動する場合は 効果がありません。 HOME_CHDIR ---------- patch level 01 に含まれる"ホームディレクトリへの移動"を機能させるか どうかを指定します。デフォルトは無効です。 SOCKET_TIMEOUT -------------- ターミナル・エミュレータからのtelnet接続を待ち受けるソケットが タイムアウトするまでの時間を指定します。 (デフォルト: 5秒) SSH_AGENT_PROXY --------------- ssh認証エージェント転送機能を提供するかを指定します。 有効にすると、OpenSSHのssh認証エージェントに対応したプログラムが、 CygTerm+を通してPageantにアクセスできるようになります。 デフォルトは無効です。 ENV_X ----- シェル起動時に設定しておきたい環境変数です。「変数名=値」の形式 (putenv形式) で記述します。 ENV_ で始めればいくつでも記述できます。 // 起 動 方 法 // コマンドライン・オプション cygterm.exe [-t 'terminal-emulator'] [-p port-number] [-dumb] [-s 'shell'] [-ls | -nols] [-cd | -nocd] [-a | -A] [-v 'env-var' ...] [-d 'directory'] [-o 'parameter'] -t 'terminal-emulator' ターミナル・エミュレータを指定します。 指定形式は設定ファイルの TERM と同じです。 空白文字を含む場合は必ずクォートで囲みます。 -p port-number ターミナル・エミュレータを起動するのではなく、 ローカルホストのこのポート番号への接続を試みます。 他のアプリケーション・プログラムが -p オプションを使って、 cygterm.exe 経由で Cygwinを利用する、等が考えられます。 -dumb TELNETオプション・ネゴシエーションを行いません。 さらに TELNETコマンドが送信されてきても無視します。 シェル側の環境変数 TERM は 'dumb' となります。 -s 'shell' Cygwin上のシェルを指定します。 指定形式は設定ファイルの SHELL と同じです。 空白文字を含む場合は必ずクォートで囲みます。 必ずしもシェルコマンドである必要はありません。 -ls シェルをログインシェルとして起動します。 -nols シェルを(ログインシェルではなく)通常のシェルとして起動します。 -cd カレントディレクトリをホームディレクトリに移動してから シェルを起動します。 -nocd カレントディレクトリを移動せずにシェルを起動します。 -A ssh認証エージェント転送機能を有効にします。 -a ssh認証エージェント転送機能を無効にします。 -v 'env-var' シェル起動時に設定しておきたい環境変数を指定します。 指定形式は設定ファイルの ENV_X と同じです。 空白文字を含む場合は必ずクォートで囲みます。 -v オプションはいくつでも指定できます。 -d 'directory' カレントディレクトリを指定されたディレクトリに移動してから シェルを起動します。 -o 'parameter' ターミナル・エミュレータへの追加のパラメータを指定します。 TERMを変えずに追加のパラメータを指定したい時に使います。 ターミナル・エミュレータもしくは接続先ポート番号、と Cygwin側シェルの 指定が最低必要となります。 これらがコマンドライン・オプションによって 与えられるならば、設定ファイル cygterm.cfg が無くても実行できます。 cygterm.exe は cygwin1.dll を利用する Win32アプリケーションです。 Cygwin上から実行することも、Windows上のショートカットから実行することも できます。 ※ Windows上から実行するには cygwin1.dll のディレクトリパスが Windows環境変数 PATH に追加されている必要があります。 (通常 Cygwinルートディレクトリ\bin) // 注 意 事 項 // * Tera Term使用時の注意 ターミナル・エミュレータが Tera Term の場合、cygterm.exe から起動された 状態で設定保存 [Setup][Save setup] を行わないよう注意してください。 TCP/IP設定の Telnetポート番号が 23 以外で保存され、通常の Telnet目的の 実行時に接続できず、慌てることになってしまいます。 TCP/IP Port# に 23 を指定して設定保存し直せば元に戻ります。 // 動 作 確 認 // 2010年 10月現在、以下の環境で動作が確認できています。 WindowsXP SP3 + Cygwin 1.5.25-15 WindowsXP SP3 + Cygwin 1.7.7 ターミナルエミュレータ Tera Term Pro 2.3 Tera Term 4.67 PuTTY 0.60 シェル bash 3.2.51 zsh 4.3.10 // 変 更 履 歴 // v1.07_29 2016/11/26 (by maya) * アイコンを変更した。 v1.07_28 2016/02/17 (by doda) * デバッグモードを追加した。 v1.07_27 2016/02/09 (by doda) * -cd オプション(HOME_CHDIR=y) より -d オプションでのディレク トリ指定を優先するようにした。 * -ls オプション(LOGIN_SHELL=y) の指定時に -d オプションを指定 した場合、CHERE_INVOKING=y をセットするようにした。 v1.07_26 2015/12/14 (by doda) * ssh 認証エージェント転送で複数コネクションに対応した。 v1.07_25 2015/02/21 (by doda) * TERM 環境変数が正しく設定されるようにした。 v1.07_24 2013/08/15 (by maya) * 64bit Cygwin でも動作するようにした。 (cyglaunch) v1.07_23 2011/04/18 (by doda) * -d オプションで指定されたディレクトリへの移動が失敗した時、 エラーメッセージを表示するようにした。 v1.07_22 2011/03/03 (by maya) * インストーラから起動チェックをするための mutex を削除した。 v1.07_21 2011/02/28 (by maya) * インストーラから起動チェックをするための mutex を追加した。 v1.07_20 2010/10/20 (by doda) * '-d' オプションでのディレクトリ変更のタイミングを遅らせた。 (security fix) v1.07_19 2010/01/28 (by doda) * '-s' オプションの引数に 'AUTO' を受け付けるようにした。 v1.07_18 2010/01/19 (by doda) * '-d' オプションの引数から二重引用符を削除するようにした。 v1.07_17 2009/06/16 (by doda) * TELNET SGA/ECHOオプションのネゴシエーションを行うようにした。 v1.07_16 2008/11/21 (by doda) * ssh 認証エージェント転送機能を有効にするオプションを '-a' から '-A' に変更した。 * ssh 認証エージェント転送機能を無効にするオプション '-a' を追加した。 v1.07_15 2008/11/01 (by doda) * ssh 認証エージェント転送機能をサポートした。 v1.07_14 2007/12/17 (by doda) * ターミナル・エミュレータの追加のパラメータを指定するオプション '-o' を追加した。 v1.07_13 2007/08/03 (by maya) * 開始ディレクトリを指定する '-d' オプションを追加した。 v1.07_12 2007/06/10 (by doda) * telnet の待ち受けソケットのタイムアウトを設定するオプション SOCKET_TIMEOUT を追加した。 SOCKET_TIMEOUT = 秒数 v1.07_11 2007/01/31 (import from cygterm v1.07) * gcc 3.4 での WinMainCRTStartup() 再定義エラー回避 * 連続出力時でもキーボード割り込みが入るように。 v1.06_11 2006/09/29 (by maya) * 環境変数と /etc/passwd の HOME を使わないようにした。 Cygwin によってセットされた HOME が利用される。関連項目 /etc/profile * 設定ファイルの優先順位を変更した。 コマンドライン引数 > ~/.cygtermrc > /etc/cygterm.conf > cygterm.cfg > /etc/passwd v1.06_10 2006/09/28 (by doda) * ユーザ名を得るのに、環境変数 USERNAME の代わりに getlogin() を使う ようにした。 v1.06_09 2006/09/25 (by doda) * SHELLが設定されていない場合は、/etc/passwd からシェルの情報を得る ようにした。 v1.06_08 2006/08/30 (by maya) * cygterm.cfg を設定ファイルの中で最優先されるようにした。 v1.06_07 2006/08/19 (by maya) * Windows の 環境変数 HOME が設定されていれば使うようにした。 v1.06_06 2006/08/18 (by doda) * -sと-tオプションのパラメータの長さを制限した。 v1.06_05 2006/08/18 (by maya) * インストーラから起動チェックをするため、mutex を作成した。 v1.06_04 2006/08/15 (by doda) * シェルをログインシェルとして呼び出すオプション LOGIN_SHELL を 追加した。 LOGIN_SHELL: yes | no v1.06_03 2006/08/15 (by doda) * ホームディレクトリで起動するのを選択するオプション HOME_CHDIR を 追加した。 HOME_CHDIR: yes | no v1.06_02 2006/02/09 (by babydamons@yahoo.co.jp) * CygTermのアイコンが作成されました。("DotWork 2.50"にて作成) "DotWork 2.50" は右記のURLより入手可能です。 http://www5a.biglobe.ne.jp/~suuta/ すばらしいソフトウェアを公開していただき、 "suuta at hamal dot freemal dot ne dot jp"に感謝致します。 * Makefile が修正されました。"clean" ターゲットで cygterm.ico を削除 しないように。 v1.06_01 2006/02/08 (by babydamons@yahoo.co.jp) * 以下の設定ファイルの読み込みをサポート: + /etc/cygterm.conf + ~/.cygtermrc * シェルがユーザのホームディレクトリで起動されるように。 * アカウントの設定情報を /etc/passwd から getpwnam(3) で読み込むように。 アカウント名は環境変数 USERNAME からgetenv(3) で取得してます。 * Makefile 修正:ディフォルトでアイコンつきの .exe をビルドします。 v1.06 2004/01/24 * コマンドライン・オプションを追加。 -t 'terminal-emulator' (ターミナル・エミュレータ指定) -p port-number (接続先ポート番号指定) -dumb (ダムターミナル指定) -s 'shell' (シェル指定) -v 'env-var' (環境変数指定) * Makefile修正 make install で BINDIR が存在しなければエラーになるように。 * ソースファイル英文化 (cygterm.cc, README.txt) v1.05 2003/01/14 * Ctrl+SPACE(NUL)が送信できるように修正。 改行コード CR+NUL を処理する方法として単純に NUL文字を無視していた ため、Ctrl+SPACE 押下時でも NUL が送信されなかった。 v1.04 2002/12/08 * ターミナル・エミュレータおよびシェルの起動に失敗したときに エラーメッセージを表示するようにした。 * Makefile修正 make install で cygterm.cfg を上書きしないように。 gccオプションに -fno-exceptions を追加、GCC-3のリンクエラー回避。 v1.03 2002/07/24 * ターミナル・エミュレータが通知してくるターミナルタイプに、大文字が 含まれていれば、それを小文字に変換するように修正。 ターミナル・エミュレータによっては環境変数 TERM の値が 'ANSI' 'VT100' のように大文字にり terminfo にマッチしないため。 (Windows 2000 telnet.exe 等) v1.02 2002/07/22 * ターミナル・エミュレータがコンソール・アプリケーションのときに起動 できなかったのを修正。(Windows 2000 telnet.exe 等) CreateProcess()呼出しミス。 * ターミナル・エミュレータから CR+LF が送られてきたら LF は転送しない ようにし、改行が2回発生するのを修正。(Windows 98 telnet.exe 等) * バージョン番号を cygterm.exe に埋め込むようにした。 確認方法は $ strings cygterm.exe | grep version v1.01 2002/07/19 * zsh, tcsh で動作しなかったのを修正。擬似端末のオープン方法が悪く、 zsh, tcsh では起動とともに入力がブロックされた。 v1.00 2000/12/17 * 初期バージョン完成