Skip to content

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 27 Aug 06:03
· 1044 commits to main since this release
e4d99c4

v1.2.0 で変わったこと

ターミナルの描画を作り直しました。これまでは受信した文字を書き足していく
だけで、行と桁からなる「画面」という概念を持っていませんでした。そのため
nano や vi が「23 行目の 1 桁目へ」と指示しても行き先が無く、画面ぶんの
描画がすべて同じ場所に重なっていました。

設定や接続先の作り直しは不要です。 これまでの config.json をそのまま
使えます。

追加

  • nano や vi の画面が崩れなくなった。 これまでは「対応していません」と
    案内を出すのが精一杯でした。タイトルバー・編集領域・下部のショートカット
    2 段が、実際の画面として組み上がります。less や top のような画面を
    作るコマンドも同じ仕組みで扱いますが、すべてのコマンドを試したわけでは
    ないため、崩れるものが残っている可能性はあります。
  • 全画面のコマンドの画面は、記録にも残ります。 nano や vi を閉じても
    開く前の画面は戻らず、編集中の画面がそのままスクロールバックと
    セッションログに残ります。NetBelt は端末種別を vt100 として接続するため、
    これらのコマンドが画面を退避する仕組み(代替画面)を使わないためです。
    編集内容を記録に残したくない場合は、ログ記録を止めてください
    (スクロールバックには残りますが、画面上だけでファイルには残りません)。
  • 色と装飾を表示するようになった。 文字色・背景色・太字・下線・反転に
    対応しました。基本 16 色に加えて 256 色パレットと RGB 直接指定も扱えます。
    反転表示は、設定した文字色と背景色を入れ替えて表示します。
  • ウィンドウの大きさを機器へ伝えるようになった。 これまでは 80×24 固定で、
    ウィンドウを広げても show の出力が 80 桁で折り返していました。接続時と
    リサイズ時に実際の行数・桁数を伝えます(RFC 4254 §6.2 / §6.7)。
    この通知は SSH のみです。Telnet とシリアルでは通知しませんが、
    画面の描画・色・折り返しはこれまでどおり同じように働きます。
  • アプリケーションが指定する入力方式に従うようになった。 nano が
    要求するカーソルキーの形式(DECCKM)と、bash のブラケットペーストに
    対応しました。貼り付けが 1 行ずつ実行されず、まとめて編集できます。
  • ステータスバーに端末の大きさを表示するようにした。 いま表示中の
    ターミナルの桁数と行数が右端に出ます(SSH ではこの値を機器へ伝えて
    います。Telnet とシリアルでは表示だけです)。
  • ターミナルのタブをドラッグで並べ替えられるようにした。
  • 接続先リストを隠せるようにした。 ツールエリアと同じく、仕切りを
    ドラッグする・右クリックする・表示メニューから切り替える、の 3 通りです。
  • 更新の通知に、何が変わったかを出すようにした。 これまでは使い方の
    案内しか出ておらず、更新して何が変わるのか分かりませんでした。
    何世代か飛ばしている場合は、その間のぶんもまとめて表示します
    (多すぎると読まれないため、5 世代までとし、残りは件数だけ添えます)。

修正

  • nano や vi を開くと画面が 1 行に潰れていた。 上の「追加」の
    とおり、画面として組み上がるようになりました。
  • ウィンドウを広げても、出力が 80 桁で折り返したままだった。
    端末の大きさを 80×24 に固定して機器へ伝えていたためです。

変更

  • 受信の解釈を、正規表現による逐次処理から仕様どおりの状態機械へ置き換え
    ました。受信がどこで途切れても解釈が変わりません。実機から採取した
    データを分割して検証しています(Linux 側の 3 種は全ての切れ目、
    機器から採った 7058 バイトは 7 バイトおき)。
  • 画面の大きさが変わったとき、すでに書かれた行は組み直しません(実端末と
    同じ挙動です)。狭い状態で出力された行は、その折り返しのまま残ります。
    ただし表示領域から流れて記録に入った行は 1 本の行として保存されるため、
    ウィンドウの幅に合わせて折り返し直されます。
  • 全画面アプリを検知して案内を出す仕組みを廃止しました。実際に表示できる
    ようになったため不要になりました。
  • 機器から端末への問い合わせ(カーソル位置・装置種別)に、自動で答える
    ようになりました。答えないと待ち続けるアプリケーションがあるためです。
    送るのは問い合わせへの応答だけで、こちらから何かを送ることはありません。
  • 端末の高さを機器へ伝えるようになったため、機器側のページャ(--More--)
    の区切りがウィンドウの高さで変わります。ウィンドウが高いほど一度に
    多く表示されます。
  • 全角文字は 1 桁として数えます。日本語を含む行の折り返し位置が、
    実際の見た目とずれることがあります。機器の出力は英数字が中心のため、
    影響は Linux 側での日本語編集に限られます。

開発メモ

作り直しは仕様から行っています。既存のターミナル実装のソースコードは
読んでいません(読んで書き直すと、構造や命名が似たときに派生物とみなされる
余地が残るため)。参照したのは Paul Williams の DEC 互換パーサ状態遷移図、
ECMA-48(= ISO/IEC 6429)、ISO/IEC 2022、RFC 4254、および標準に無い部分に
ついては XTerm Control Sequences です。


NetBelt ポータブル版

📄 ライセンスと対応するソースコード

NetBelt は GNU General Public License v3.0 で配布しています。

この実行ファイルには PyQt6 (GPL-3.0)、Qt (LGPL-3.0)、paramiko (LGPL-2.1-or-later)
などが組み込まれています。この実行ファイルに対応するソースコードは、
本リリースに自動添付される Source code アーカイブ、および
https://github.com/gomanizm/NetBelt のタグ v1.2.0 で入手できます。
ビルドは同梱の requirements.txt(バージョン固定済み)と NetBelt.spec、
Python 3.11 で再現できます。

組み込まれた第三者パッケージの一覧・ライセンス本文・配布元は、
ZIP 内の THIRD-PARTY-NOTICES.txt を参照してください。

📦 パッケージ内容

  • NetBelt.exe - アプリケーション本体
  • README.txt - 使い方ガイド
  • LICENSE.txt - NetBelt のライセンス(GPL-3.0)
  • THIRD-PARTY-NOTICES.txt - 同梱した第三者パッケージのライセンス表示
  • CHANGELOG.txt - この版で変わったこと
  • .sha256 - ZIP のチェックサム。自動更新がダウンロード後に照合し、
    一致しなければ更新を中止します(破損の検知が目的で、GitHub 自体が
    侵害された場合の改ざんは検知できません)
  • mibs/ - MIB ファイルの配置先(既定では空。README を参照)

🚀 インストール方法

  1. ZIPファイルをダウンロード
  2. 任意のフォルダに展開
  3. NetBelt.exe をダブルクリックして起動

💻 動作環境

  • Windows 10 / Windows 11 (64bit)
  • Pythonのインストールは不要
  • すべての依存ファイルが含まれています

✨ 主な機能

  • SSH、Telnet、シリアル接続に対応
  • デバイス管理とグループ化
  • マクロ機能
  • SNMP Trap / Syslog 受信(カスタムMIB対応)
  • SFTP ファイル転送

📝 初回起動

  • 初回起動時に config.json が自動生成されます
  • MIB ファイルは同梱していません。mibs/README.md の手順で配置してください

詳しい使い方は README.md をご覧ください。