Skip to content

Commit 82daa59

Browse files
committed
update.
1 parent b46ee2e commit 82daa59

275 files changed

Lines changed: 34440 additions & 314 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

cmd/lscp/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ lscp ./build/app remote:/opt/app/
8888
8989
You can select the destination host from the TUI list, or specify it directly with `-H`.
9090
When both source and destination are remote paths, `lscp` first asks for the source host and then for the destination host.
91+
Connector-backed targets that do not advertise `sftp_transport` are excluded from the selection list and rejected when passed with `-H`.
9192
9293
```bash
9394
# specify destination hosts directly

cmd/lsftp/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ USAGE:
4747
Start `lsftp`, select one or more hosts from the TUI list, and the `lsftp>>` prompt will open.
4848
When multiple hosts are selected, many operations run in parallel against the selected hosts.
4949
Use `--auto-reconnect` when you want disconnected hosts to be reconnected before running shell commands.
50+
Connector-backed targets that do not advertise `sftp_transport` are hidden from the selection list.
5051
5152
```bash
5253
# start lsftp shell

cmd/lsmon/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ USAGE:
5353
5454
`lsmon` can monitor multiple hosts selected from the TUI list, or you can specify them directly with `-H`.
5555
It is designed for comparing host state across a server list.
56+
Connector-backed targets that do not advertise `sftp_transport` are excluded from the monitor target list.
5657
5758
```bash
5859
# start monitoring after selecting hosts from the TUI

cmd/lsmux/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ broadcast = "b"
135135
transfer = "f"
136136
detach_client = "d"
137137
transfer_enabled = true
138+
scrollbar = false
138139
socket_path = "~/.cache/lssh/lsmux-<Name>.sock"
139140
focus_border_color = "green"
140141
focus_title_color = "green"
@@ -161,6 +162,7 @@ mux:
161162
transfer: "f"
162163
detach_client: "d"
163164
transfer_enabled: true
165+
scrollbar: false
164166
socket_path: "~/.cache/lssh/lsmux-<Name>.sock"
165167
focus_border_color: "green"
166168
focus_title_color: "green"
@@ -187,6 +189,7 @@ Available `mux` settings:
187189
- `transfer`: open file transfer for the active pane. Default: `f`
188190
- `detach_client`: key used after the prefix to detach an attached persistent client. Default: `d`
189191
- `transfer_enabled`: allow the transfer UI in `lsmux`. Default: `true`
192+
- `scrollbar`: show the built-in `tvxterm` scrollbar in each pane. Default: `false`
190193
- `socket_path`: unix socket path template for persistent sessions. `<Name>` is replaced with the session name.
191194
- `focus_border_color`, `focus_title_color`: colors for the focused pane. Default: `green`
192195
- `broadcast_border_color`, `broadcast_title_color`: colors for panes in broadcast mode. Default: `yellow`

cmd/lssync/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ lssync -D -B --daemon-interval 30s ./notes remote:/srv/notes
9696
## Notes
9797
9898
- Like `lscp`, transfers are implemented with SFTP over SSH.
99+
- Connector-backed targets that do not advertise `sftp_transport` are excluded from the selection list and rejected when specified explicitly.
99100
- `--delete` only removes entries inside the destination scope derived from the source roots.
100101
- For multiple sources, the destination is treated as a directory and the union of source entries becomes the desired state.
101102
- Bidirectional sync currently requires exactly one source path and one destination path.

docs/configuration.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ prefix = "Ctrl+A"
192192
transfer = "f"
193193
detach_client = "d"
194194
transfer_enabled = false
195+
scrollbar = false
195196
socket_path = "~/.cache/lssh/lsmux-<Name>.sock"
196197
```
197198

@@ -1034,6 +1035,7 @@ broadcast = "b"
10341035
transfer = "f"
10351036
detach_client = "d"
10361037
transfer_enabled = true
1038+
scrollbar = false
10371039
socket_path = "~/.cache/lssh/lsmux-<Name>.sock"
10381040
focus_border_color = "green"
10391041
focus_title_color = "green"
@@ -1060,6 +1062,7 @@ Available `mux` settings:
10601062
- `transfer`: open file transfer for the active pane. Default: `f`
10611063
- `detach_client`: key used after the prefix to detach an attached persistent client. Default: `d`
10621064
- `transfer_enabled`: allow the transfer UI in `lsmux`. Default: `true`
1065+
- `scrollbar`: show the built-in `tvxterm` scrollbar in each pane. Default: `false`
10631066
- `socket_path`: unix socket path template for persistent sessions. `<Name>` is replaced with the session name.
10641067
- `focus_border_color`, `focus_title_color`: colors for the focused pane. Default: `green`
10651068
- `broadcast_border_color`, `broadcast_title_color`: colors for panes in broadcast mode. Default: `yellow`

example/provider-aws-eice.toml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Example: AWS EC2 Instance Connect Endpoint
2+
3+
[providers]
4+
paths = ["~/.config/lssh/providers/provider-mixed-aws-ec2"]
5+
6+
[provider.aws]
7+
plugin = "provider-mixed-aws-ec2"
8+
enabled = true
9+
capabilities = ["inventory", "connector"]
10+
regions = ["ap-northeast-1"]
11+
profile = "default"
12+
shared_config_files = ["~/.aws/config"]
13+
shared_credentials_files = ["~/.aws/credentials"]
14+
server_name_template = "aws:${tags.Name}"
15+
note_template = "aws ${instance_id} ${private_ip}"
16+
17+
# Per-server settings are recommended so aws-ssm / aws-eice can coexist.
18+
[provider.aws.match.eice_sdk]
19+
meta_in = ["tag.Connection=eice-sdk"]
20+
connector_name = "aws-eice"
21+
eice_runtime = "sdk"
22+
instance_connect_endpoint_id = "eice-0123456789abcdef0"
23+
private_ip_address = "10.0.1.10"
24+
user = "ec2-user"
25+
key = "~/.ssh/aws-eice.pem"
26+
27+
[provider.aws.match.eice_command]
28+
meta_in = ["tag.Connection=eice-command"]
29+
connector_name = "aws-eice"
30+
eice_runtime = "command"
31+
instance_connect_endpoint_dns_name = "eice-demo.ap-northeast-1.aws"
32+
private_ip_address = "10.0.2.10"
33+
user = "ec2-user"
34+
key = "~/.ssh/aws-eice.pem"
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Example: Azure Bastion
2+
3+
[providers]
4+
paths = ["~/.config/lssh/providers/provider-inventory-azure-compute"]
5+
6+
[provider.azure]
7+
plugin = "provider-inventory-azure-compute"
8+
enabled = true
9+
capabilities = ["inventory", "connector"]
10+
subscription_id = "00000000-0000-0000-0000-000000000000"
11+
resource_group = "rg-demo"
12+
server_name_template = "azure:${name}"
13+
note_template = "azure ${location} ${resource_group} ${power_state}"
14+
15+
# Keep Bastion settings on each server(match) to avoid trouble when mixed.
16+
[provider.azure.match.bastion_sdk]
17+
meta_in = ["tag.Connection=bastion-sdk"]
18+
connector_name = "azure-bastion"
19+
bastion_runtime = "sdk"
20+
bastion_name = "shared-bastion"
21+
bastion_resource_group = "rg-network"
22+
user = "azureuser"
23+
key = "~/.ssh/azure-web.pem"
24+
25+
[provider.azure.match.bastion_command]
26+
meta_in = ["tag.Connection=bastion-command"]
27+
connector_name = "azure-bastion"
28+
bastion_runtime = "command"
29+
bastion_name = "shared-bastion"
30+
bastion_resource_group = "rg-network"
31+
bastion_auth_type = "AAD"
32+
user = "azureuser"

example/provider-gcp-iap.toml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Example: GCP IAP TCP forwarding
2+
3+
[providers]
4+
paths = ["~/.config/lssh/providers/provider-inventory-gcp-compute"]
5+
6+
[provider.gcp]
7+
plugin = "provider-inventory-gcp-compute"
8+
enabled = true
9+
capabilities = ["inventory", "connector"]
10+
project = "example-project"
11+
credentials_file = "~/.config/gcloud/application_default_credentials.json"
12+
server_name_template = "gcp:${name}"
13+
note_template = "gcp ${zone} ${private_ip}"
14+
15+
# Keep runtime on each server(match) so sdk/command hosts can coexist safely.
16+
[provider.gcp.match.web_sdk]
17+
meta_in = ["label.connection=iap-sdk"]
18+
connector_name = "gcp-iap"
19+
iap_runtime = "sdk"
20+
zone = "asia-northeast1-a"
21+
user = "ubuntu"
22+
key = "~/.ssh/gcp-web.pem"
23+
24+
[provider.gcp.match.web_command]
25+
meta_in = ["label.connection=iap-command"]
26+
connector_name = "gcp-iap"
27+
iap_runtime = "command"
28+
zone = "asia-northeast1-b"
29+
user = "ubuntu"
30+
key = "~/.ssh/gcp-web.pem"

go.mod

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ require (
1313
github.com/blacknon/crypto11 v1.6.2-0.20260315101107-fd111b1d25ce // indirect
1414
github.com/blacknon/go-sshlib v0.1.33
1515
github.com/blacknon/go-x11auth v0.1.0 // indirect
16-
github.com/blacknon/tvxterm v0.1.1
16+
github.com/blacknon/tvxterm v0.1.3
1717
github.com/c-bata/go-prompt v0.2.6
1818
github.com/davecgh/go-spew v1.1.1 // indirect
1919
github.com/dchest/bcrypt_pbkdf v0.0.0-20150205184540-83f37f9c154a // indirect
@@ -47,6 +47,8 @@ require (
4747

4848
require (
4949
github.com/1password/onepassword-sdk-go v0.4.0
50+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.1
51+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1
5052
github.com/aws/aws-sdk-go-v2 v1.41.5
5153
github.com/aws/aws-sdk-go-v2/config v1.32.14
5254
github.com/aws/aws-sdk-go-v2/service/ec2 v1.297.0
@@ -62,11 +64,14 @@ require (
6264
)
6365

6466
require (
67+
github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0 // indirect
6568
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 // indirect
69+
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 // indirect
6670
github.com/ChrisTrenkamp/goxpath v0.0.0-20210404020558-97928f7e12b6 // indirect
6771
github.com/bodgit/ntlmssp v0.0.0-20240506230425-31973bb52d9b // indirect
6872
github.com/bodgit/windows v1.0.1 // indirect
6973
github.com/gofrs/uuid v4.4.0+incompatible // indirect
74+
github.com/golang-jwt/jwt/v5 v5.3.0 // indirect
7075
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
7176
github.com/hashicorp/go-uuid v1.0.3 // indirect
7277
github.com/jcmturner/aescts/v2 v2.0.0 // indirect
@@ -75,7 +80,9 @@ require (
7580
github.com/jcmturner/goidentity/v6 v6.0.1 // indirect
7681
github.com/jcmturner/gokrb5/v8 v8.4.4 // indirect
7782
github.com/jcmturner/rpc/v2 v2.0.3 // indirect
83+
github.com/kylelemons/godebug v1.1.0 // indirect
7884
github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 // indirect
85+
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
7986
github.com/tidwall/transform v0.0.0-20201103190739-32f242e2dbde // indirect
8087
)
8188

@@ -136,7 +143,7 @@ require (
136143
go.opentelemetry.io/otel/metric v1.43.0 // indirect
137144
go.opentelemetry.io/otel/trace v1.43.0 // indirect
138145
go.opentelemetry.io/proto/otlp v1.9.0 // indirect
139-
golang.org/x/oauth2 v0.36.0 // indirect
146+
golang.org/x/oauth2 v0.36.0
140147
golang.org/x/text v0.36.0 // indirect
141148
google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect
142149
google.golang.org/grpc v1.80.0 // indirect

0 commit comments

Comments
 (0)