Empressia Terminal with multiple SSH

SSH Terminal for multiple connections.

License

License

zlib License
MIT License
Categories

Categories

MINA Net Networking
GroupId

GroupId

jp.empressia
ArtifactId

ArtifactId

jp.empressia.app.multiple_ssh_terminal
Last Version

Last Version

1.2.2
Release Date

Release Date

Type

Type

pom.sha512
Description

Description

Empressia Terminal with multiple SSH
SSH Terminal for multiple connections.
Project URL

Project URL

https://github.com/Empressia/MultipleSSHTerminal
Source Code Management

Source Code Management

https://github.com/Empressia/MultipleSSHTerminal.git

Download jp.empressia.app.multiple_ssh_terminal

Dependencies

runtime (10)

Group / Artifact Type Version
org.openjfx : javafx-controls jar 11.0.2
org.openjfx : javafx-fxml jar 11.0.2
com.fasterxml.jackson.core : jackson-databind jar 2.10.0
com.jcraft : jsch jar 0.1.54
org.openjfx : javafx-graphics jar 12.0.1
org.openjfx : javafx-web jar 12.0.1
org.openjfx : javafx-controls jar 12.0.1
org.openjfx : javafx-media jar 12.0.1
org.openjfx : javafx-fxml jar 12.0.1
org.openjfx : javafx-base jar 12.0.1

Project Modules

There are no modules declared in this project.

Empressia Terminal with multiple SSH

プロジェクトについて

これは、複数のサーバーに対してSSHを使って接続して、
同時に操作したいなーと言う思いから作ったアプリです。

というのは建前で、Visual Studio CodeでJavaFXを使ったアプリって、
どうやって設定すると良いのかなぁと思って、試すついでに作ったプロジェクトです。

以下、自分用のメモをいろいろ書いておきます。

アプリの起動方法

Visual Studio Codeとgradleを使って、ビルド&実行できます。
Java11以上が必要です。動作はJava11でしか確認していません。

アプリの基本的な使い方

接続の情報をプロファイルとして管理します。
以下のようなJSON形式の設定ファイル(.profile)を用意して、メニューから読み込みます。

{
	"Terminals": [
		{ "Name": "わかりやすい名前", "Host": "接続先のIPアドレス", "Port": 22, "UserID":"user", "Password":"password" }
	],
	"LimitOfLines": 30
}

ポート番号が22の場合、Portは省略できます。
表示されるログの行数をLimitOfLinesで制限できます。

プラグインの作り方と読み込み方

IPluginインターフェースを実装します。
また、ServiceLoaderの設定が必要です。

jarでパッケージするときに、以下のファイルを作成します。
/META-INF/jp.empressia.app.multiple_ssh_terminal.plugin.IPlugin
通常、プロジェクト内のsrc/main/resourcesに配置します。

ファイルの中に、実装したクラス名を記載します。

アプリ起動時に、--module-pathに作成したjarのディレクトリを指定して、
--add-modulesにモジュール名(自動モジュールの場合はjarの名前)を追加します。

アプリの注意事項

現在は、VT100のエスケープシーケンスをスルーします。
コマンドを流し込むのは問題ないと思いますが、
高度な表示、操作には対応していません。

ライセンスについて

Visual Studio CodeでGradleのビルドを使いつつJavaFXを使うには

Visual Studio CodeのLanguage support for Java拡張を入れると、
build.gradleを解釈してくれるみたいですが、
JavaFXのモジュールをうまく取り込んでIDEのデバッグ機能を使うことまではできません。

IDEでデバッグするために、以下の3点を対応します。

  1. JavaFXの依存ライブラリをgradleでまとめて出力するタスクを用意する。
    たとえば以下のような感じ(/build.gradle)。

    task outputJavaFXDependencies(type: Copy) {
    	from configurations.compileClasspath.filter {
    		it.name.startsWith("javafx-");
    	}
    	into "build/javafx"
    }
    
  2. IDEのtasks.jsonで起動前にJavaFXのライブラリをgradleでビルドするタスクを追加する。
    たとえば以下のような感じ(/.vscode/tasks.json)。

    {
    	"version": "2.0.0",
    	"tasks": [
    		{
    			"label": "ready launch",
    			"type": "shell",
    			"command": "./gradlew outputJavaFXDependencies"
    		}
    	]
    }
  3. IDEのlaunch.jsonでタスクとモジュールの起動オプションを追加する。
    たとえば以下のような感じ(/.vscode/launch.json)。

    {
    	"version": "0.2.0",
    	"configurations": [
    		{
    			"type": "java",
    			"name": "Debug (Launch)-Application<MultipleSSHTerminal>",
    			"request": "launch",
    			"mainClass": "jp.empressia.app.multiple_ssh_terminal.Application",
    			"vmArgs": "--module-path \"${workspaceRoot}\\build\\javafx\" --add-modules javafx.controls,javafx.fxml",
    			"projectName": "MultipleSSHTerminal",
    			"preLaunchTask": "ready launch"
    		}
    	]
    }

Versions

Version
1.2.2