sw-term-server
sw-term-server は Stormworks 上で動作するターミナルエミュレータ sw-term のサーバーアプリケーションです。
本アプリケーションは Stormworks 上で動作するマイコンと組み合わせて使用します。マイコンの詳細につきましては sw-term のリポジトリを参照ください。
⚠️セキュリティ警告
本アプリケーションは localhost 上に端末を公開します。認証機構は無いため、localhost にアクセスできる第三者が、本アプリケーションの権限で任意のコマンドを実行できてしまいます。特に、次の点にご注意ください。
- 本アプリケーションを実行中に、Stormworks のマルチプレイに参加しないでください。
- 本アプリケーションを実行中に、Stormworks 上で信頼できないアドオンやビークルを使わないでください。
- 同一コンピュータの別ユーザーから本アプリケーションにアクセスされることがないように注意してください。
- 何が危険か分からない場合、本アプリケーションの使用は避けてください。
ビルド方法
本アプリケーションは Windows もしくは Linux 向けにビルドすることができます。macOS は非対応ですのでご了承ください。
本アプリケーションをビルドするには下記のツール/ライブラリが必要です。
Windows
以下は x86-64 アーキテクチャでの手順です。x86 の場合は適宜読み替えてください。
- 下記ツールをインストールしてください。
- The Go Programming Language:
winget install GoLang.Go
- MSYS2:
winget install MSYS2.MSYS2
- MSYS2 MINGW64 環境のシェルを起動して、以下のコマンドを順に実施してください。
pacman -Syuu
- 全 MSYS2 プロセスの終了を求められた場合は、提案通り終了して、再度
pacman -Syuu
を実施してください。
pacman -S mingw-w64-x86_64-toolchain mingw-w64-x86_64-libvterm
- MINGW64 の bin フォルダに PATH を通してください。
set PATH=%PATH%;C:\msys64\mingw64\bin
- 本リポジトリのルートをカレントディレクトリにして、下記コマンドを実行してください。
go build -o sw-term-server.exe
Linux
ディストリビューションにより、パッケージマネージャ等が異なります。詳細な方法は各自で調べてください。
- パッケージマネージャを使って、下記ツール/ライブラリをインストールしてください。
- The Go Programming Language
- C コンパイラ(gcc もしくは clang など)
- pkg-config
- libvterm
- ヘッダーファイル等を含む開発パッケージが必要です。
- バージョンが古すぎると動作しない可能性があります。
- 本リポジトリのルートをカレントディレクトリにして、下記コマンドを実行してください。
go build -o sw-term-server
使い方
sw-term-server
コマンドを実行すると、HTTP サーバーが立ち上がり、Stormworks から接続できる状態になります。CTRL-C を入力すると終了します。
HTTP サーバーのリッスンアドレスは 127.0.0.1 となるため、リモートから本アプリケーションにアクセスすることはできません。ただし、SSH のポートフォワード機能などを使用して、リモートアクセスすることは可能です。
TCP ポートは、デフォルトでは自動選択され、標準出力に選択されたポート番号が表示されます。特定のポートを使いたい場合は、コマンドライン引数で -port PORT
を指定してください。
端末のサイズは、デフォルトでは 58x27 となっています。これは Stormworks の MONITOR 9X5 部品に合わせたサイズになっています。サイズを変更したい場合は、コマンドライン引数で -row ROW
と -col COL
を指定してください。
シェルアプリケーションは、デフォルトでは自動的に検出されます。手動で指定する場合は、コマンドライン引数で -shell /bin/bash
のように指定してください。なお、シェルアプリケーションへのコマンドライン引数を設定することは現状できませんのでご了承ください。
本アプリケーションを起動した時点では、まだ端末は起動していません。Stormworks から画面取得もしくはキーボード入力が行われたタイミングで、自動的に端末が起動します。
本アプリケーションでは、1プロセスにつき1つの端末を使用できます。もし複数の端末を使用したい場合は、その分だけ本アプリケーションを同時起動する必要があります。