Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 1 addition & 13 deletions backend/internxt/auth.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Authentication handling for Internxt
// Package internxt provides authentication handling
package internxt

import (
Expand All @@ -17,7 +17,6 @@ import (
internxtconfig "github.com/internxt/rclone-adapter/config"
"github.com/rclone/rclone/fs"
"github.com/rclone/rclone/fs/config/configmap"
"github.com/rclone/rclone/fs/config/obscure"
"github.com/rclone/rclone/lib/oauthutil"
"github.com/tyler-smith/go-bip39"
"golang.org/x/oauth2"
Expand Down Expand Up @@ -278,17 +277,6 @@ func refreshJWTToken(ctx context.Context, name string, m configmap.Mapper) error
return fmt.Errorf("failed to get current token: %w", err)
}

mnemonic, ok := m.Get("mnemonic")
if !ok || mnemonic == "" {
return errors.New("mnemonic is missing from configuration")
}

// Reveal the obscured mnemonic
mnemonic, err = obscure.Reveal(mnemonic)
if err != nil {
return fmt.Errorf("failed to reveal mnemonic: %w", err)
}

cfg := internxtconfig.NewDefaultToken(currentToken.AccessToken)
resp, err := internxtauth.RefreshToken(ctx, cfg)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion backend/internxt/internxt.go
Original file line number Diff line number Diff line change
Expand Up @@ -932,7 +932,7 @@ func (o *Object) restoreBackupFile(ctx context.Context, backupUUID, origName, or
return
}

o.f.pacer.Call(func() (bool, error) {
_ = o.f.pacer.Call(func() (bool, error) {
err := files.RenameFile(ctx, o.f.cfg, backupUUID,
o.f.opt.Encoding.FromStandardName(origName), origType)
return shouldRetry(ctx, err)
Expand Down
4 changes: 2 additions & 2 deletions docs/content/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ mv, mount, ls, ncdu, tree, rm, and cat. Rclone's familiar syntax
includes shell pipeline support, and `--dry-run` protection. It is
used at the command line, in scripts or via its [API](/rc).

Users call rclone _"The Swiss army knife of cloud storage"_, and
_"Technology indistinguishable from magic"_.
Users call rclone *"The Swiss army knife of cloud storage"*, and
*Technology indistinguishable from magic"*.

Rclone really looks after your data. It preserves timestamps and
verifies checksums at all times. Transfers over limited bandwidth;
Expand Down
118 changes: 72 additions & 46 deletions docs/content/internxt.md
Original file line number Diff line number Diff line change
@@ -1,95 +1,121 @@
---
title: "Internxt.com"
description: "Rclone docs for Internxt.com"
versionIntroduced: "TODO"
title: "Internxt Drive"
description: "Rclone docs for Internxt Drive"
versionIntroduced: "v1.69"
---

# {{< icon "fas fa-angle-double-down" >}} Internxt.com
# {{< icon "fas fa-cloud" >}} Internxt Drive

[Internxt Drive](https://internxt.com) is a zero-knowledge encrypted cloud storage service.

Paths are specified as `remote:path`

Paths may be as deep as required, e.g. `remote:directory/subdirectory`.

The initial setup for Internxt.com involves filling in the user credentials.
`rclone config` walks you through it.

## Configuration

You can configure it as a remote like this with `rclone config` too if
you want to:
Internxt uses browser-based authentication. Run `rclone config` and follow the prompts:

```
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> remote
name> internxt
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
[snip]
XX / Internxt
XX / Internxt Drive
\ "internxt"
[snip]
Storage> internxt
** See help for internxt backend at: https://rclone.org/internxt/ **

Remote config

Option email.
The email of the user to operate as.
Enter a value. Press Enter to leave empty.
email> abc@gmail.com

Option password.
The password for the user.
Choose an alternative below. Press Enter for the default (n).
y) Yes, type in my own password
g) Generate random password
n) No, leave this optional password blank (default)
y/g/n> y
If your browser doesn't open automatically, visit this URL:
https://drive.internxt.com/login?universalLink=true&redirectUri=...

Enter the password:
password:
Confirm the password:
password:
Log in and authorize rclone for access
Waiting for authentication...

Edit advanced config?
y) Yes
n) No (default)
y/n> n
Authentication successful!

Configuration complete.
Options:
- type: internxt
- email: abc@gmail.com
- password: *** ENCRYPTED ***
Keep this "remote" remote?
Keep this "internxt" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
```

Because the internxt backend isn't persistent it is most useful for
testing or with an rclone server or rclone mount, e.g.
Your default web browser will open automatically. Log in to your Internxt account to authorize rclone.

### Headless/Remote Machine Setup

If you're configuring rclone on a remote or headless machine (such as a server or NAS), the Internxt backend requires browser-based authentication.

See the [rclone remote setup documentation](/remote_setup/) for detailed instructions on how to configure remotes on machines without a browser. The documentation covers:

- Using `rclone authorize` to run authorization on a local machine and transfer the token
- SSH tunneling to forward the authentication port
- Copying the config file from a configured machine

### Security Considerations

The authentication process stores your mnemonic and JWT token in the rclone configuration file. It is **strongly recommended** to encrypt your rclone config to protect these sensitive credentials:

```
rclone config password
```

This will prompt you to set a password that encrypts your entire configuration file.

rclone mount :internxt: /mnt/tmp
rclone serve webdav :internxt:
rclone serve sftp :internxt:
## Usage Examples

```
# List files
rclone ls internxt:

# Copy files to Internxt
rclone copy /local/path internxt:remote/path

# Sync local directory to Internxt
rclone sync /local/path internxt:remote/path

# Mount Internxt Drive as a local filesystem
rclone mount internxt: /path/to/mountpoint

# Check storage usage
rclone about internxt:
```

### Modification times and hashes

The internxt backend supports no hashes and modification times accurate to 1 second.
The Internxt backend does not support hashes.

Modification times are read from the server but cannot be set. The backend reports `ModTimeNotSupported` precision, so modification times will not be used for sync comparisons.

### Restricted filename characters

The internxt backend replaces the [default restricted characters
The Internxt backend replaces the [default restricted characters
set](/overview/#restricted-characters).

{{< rem autogenerated options start" - DO NOT EDIT - instead edit fs.RegInfo in backend/internxt/internxt.go then run make backenddocs" >}}

### Advanced options

There are no Advanced options specific to internxt (In internxt object storage system).
Here are the Advanced options specific to internxt (Internxt Drive).

#### --internxt-skip-hash-validation

Skip hash validation when downloading files.

By default, hash validation is disabled. Set this to false to enable validation.

Properties:

- Config: skip_hash_validation
- Env Var: RCLONE_INTERNXT_SKIP_HASH_VALIDATION
- Type: bool
- Default: true