feat(gcs): add Google Cloud Storage support (#443)

* feat(gcs): add Google Cloud Storage support

Closes #436

* fix: honor configured protocol and finalization errors

* ci: remove TruffleHog checks
This commit is contained in:
Christian Visintin
2026-08-30 18:58:17 +02:00
committed by GitHub
parent 98a1ce42dc
commit 974b6d6917
51 changed files with 2101 additions and 96 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
[book]
title = "termscp"
description = "A feature rich terminal UI file transfer and explorer with support for SCP/SFTP/FTP/Kube/S3/SMB/WebDAV"
description = "A feature rich terminal UI file transfer and explorer with support for SCP/SFTP/FTP/Kube/S3/GCS/SMB/WebDAV"
authors = ["Christian Visintin"]
language = "en"
src = "."
+3 -3
View File
@@ -6,7 +6,7 @@ documentation for termscp modules, which can instead be found on Rust Docs at
guidelines to implement features such as file transfers and additions to the
user interface.
termscp is written in Rust (edition 2024, MSRV 1.89.0). The user interface is
termscp is written in Rust (edition 2024, MSRV 1.98.0). The user interface is
built with [tuirealm](https://github.com/veeso/tui-realm) v3, which runs on top
of [crossterm](https://github.com/crossterm-rs/crossterm).
@@ -37,8 +37,8 @@ In addition to the 3 core modules, others have been added over time:
storage and the bookmarks.
- **utils**: contains the utilities used by pretty much all of the project.
termscp supports the following protocols: SFTP, SCP, FTP/FTPS, Kube, S3, SMB and
WebDAV.
termscp supports the following protocols: SFTP, SCP, FTP/FTPS, Kube, S3, GCS,
SMB and WebDAV.
## Activities
+1 -1
View File
@@ -56,7 +56,7 @@ directory `/tmp`:
termscp scp://omar@192.168.1.31:4022:/tmp
```
For protocol-specific address syntax (S3, Kube, WebDAV, and SMB), see
For protocol-specific address syntax (S3, GCS, Kube, WebDAV, and SMB), see
[Connection parameters](connection-parameters.md).
## How the password is provided
@@ -128,6 +128,37 @@ ways to do this.
Your credentials are safe: termscp does not manipulate these values directly.
They are consumed directly by the `s3` crate.
## Google Cloud Storage
termscp supports Google Cloud Storage (GCS) buckets through the Google Cloud
Storage JSON API.
Authentication-form fields:
- Bucket name (required)
- Endpoint (defaults to `https://storage.googleapis.com`)
- Optional service-account JSON path
Leave the service-account JSON path empty to use Application Default
Credentials (ADC). ADC can obtain credentials from
`GOOGLE_APPLICATION_CREDENTIALS`, local gcloud ADC credentials, or the Google
Cloud metadata service when termscp runs on Google Cloud infrastructure.
When a service-account JSON path is supplied, termscp reads that file when it
connects. Bookmarks store only the path and never copy the service-account JSON
or its private key.
The dedicated CLI syntax is:
```txt
gcs://<bucket>[:/working/directory]
```
CLI connections use ADC and the default endpoint. Use the authentication form
or a bookmark when you need a custom endpoint or a service-account JSON path.
The selected ADC identity or service account must have IAM permissions for the
storage operations you want to perform.
## SMB
Authentication-form fields:
+1 -1
View File
@@ -9,7 +9,7 @@ same time. termscp runs on Linux, macOS, FreeBSD, NetBSD, and Windows.
## Features
- Multiple transfer protocols: SFTP, SCP, FTP and FTPS, Kube, S3, SMB,
- Multiple transfer protocols: SFTP, SCP, FTP and FTPS, Kube, S3, GCS, SMB,
and WebDAV.
- Dual-pane explorer to browse and operate on both the remote and the local
file system: create, remove, rename, search, view, and edit files.
+2 -2
View File
@@ -2,12 +2,12 @@
<link rel="icon" type="image/svg+xml" href="/shared/termscp.svg">
<meta property="og:title" content="{{#if chapter_title}}{{ chapter_title }} · {{/if}}{{ book_title }}">
<meta property="og:description" content="A feature rich terminal UI file transfer and explorer with support for SCP/SFTP/FTP/Kube/S3/SMB/WebDAV">
<meta property="og:description" content="A feature rich terminal UI file transfer and explorer with support for SCP/SFTP/FTP/Kube/S3/GCS/SMB/WebDAV">
<meta property="og:image" content="https://docs.termscp.rs/og_preview.jpg">
<meta property="og:url" content="https://docs.termscp.rs/">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="{{#if chapter_title}}{{ chapter_title }} · {{/if}}{{ book_title }}">
<meta name="twitter:description" content="A feature rich terminal UI file transfer and explorer with support for SCP/SFTP/FTP/Kube/S3/SMB/WebDAV">
<meta name="twitter:description" content="A feature rich terminal UI file transfer and explorer with support for SCP/SFTP/FTP/Kube/S3/GCS/SMB/WebDAV">
<meta name="twitter:image" content="https://docs.termscp.rs/og_preview.jpg">