mirror of
https://github.com/schollz/croc.git
synced 2025-10-11 13:21:00 +02:00
Merge branch 'master' of github.com:schollz/croc
This commit is contained in:
commit
59b287df7f
3 changed files with 56 additions and 39 deletions
38
.github/ISSUE_TEMPLATE/bug_report.md
vendored
38
.github/ISSUE_TEMPLATE/bug_report.md
vendored
|
@ -2,28 +2,40 @@
|
||||||
name: Bug report
|
name: Bug report
|
||||||
about: Create a report to help us improve
|
about: Create a report to help us improve
|
||||||
title: ''
|
title: ''
|
||||||
labels: ''
|
labels: bug
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
<!-- The comments between these brackets won't show up in the submitted issue (as you can see in the Preview). -->
|
||||||
|
|
||||||
**Please try to [download the latest version](https://github.com/schollz/croc/releases/latest) of croc before reporting a bug!**
|
|
||||||
|
|
||||||
**Describe the bug**
|
<!-- Please try to download latest, https://github.com/schollz/croc/releases/latest of croc before reporting a bug! -->
|
||||||
A clear and concise description of what the bug is.
|
|
||||||
|
|
||||||
**To Reproduce**
|
## Describe the bug
|
||||||
|
<-- A clear and concise description of what the bug is. -->
|
||||||
|
|
||||||
|
|
||||||
|
## To Reproduce
|
||||||
Steps to reproduce the behavior:
|
Steps to reproduce the behavior:
|
||||||
1. Go to '...'
|
<-- 1. Go to '...'
|
||||||
2. Click on '....'
|
2. Click on '....'
|
||||||
3. Scroll down to '....'
|
3. Scroll down to '....'
|
||||||
4. See error
|
4. See error -->
|
||||||
|
|
||||||
**Expected behavior**
|
1.
|
||||||
A clear and concise description of what you expected to happen.
|
2.
|
||||||
|
3.
|
||||||
|
4.
|
||||||
|
|
||||||
|
## Expected behaviour
|
||||||
|
<-- A clear and concise description of what you expected to happen. -->
|
||||||
|
|
||||||
|
|
||||||
|
## Version
|
||||||
|
<-- Check "croc -v" and report it -->
|
||||||
|
|
||||||
|
|
||||||
|
## Additional context
|
||||||
|
<-- Add any other context about the problem here. -->
|
||||||
|
|
||||||
**Version**
|
|
||||||
Check `croc -version` and report it.
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Add any other context about the problem here.
|
|
||||||
|
|
48
README.md
48
README.md
|
@ -37,74 +37,74 @@ For more information about `croc`, see [my blog post](https://schollz.com/softwa
|
||||||
Download [the latest release for your system](https://github.com/schollz/croc/releases/latest), or install a release from the command-line:
|
Download [the latest release for your system](https://github.com/schollz/croc/releases/latest), or install a release from the command-line:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ curl https://getcroc.schollz.com | bash
|
curl https://getcroc.schollz.com | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
On macOS you can install the latest release with [Homebrew](https://brew.sh/):
|
On macOS you can install the latest release with [Homebrew](https://brew.sh/):
|
||||||
|
|
||||||
```
|
```
|
||||||
$ brew install croc
|
brew install croc
|
||||||
```
|
```
|
||||||
|
|
||||||
On macOS you can also install the latest release with [MacPorts](https://macports.org/):
|
On macOS you can also install the latest release with [MacPorts](https://macports.org/):
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo port selfupdate
|
sudo port selfupdate
|
||||||
$ sudo port install croc
|
sudo port install croc
|
||||||
```
|
```
|
||||||
|
|
||||||
On Windows you can install the latest release with [Scoop](https://scoop.sh/) or [Chocolatey](https://chocolatey.org):
|
On Windows you can install the latest release with [Scoop](https://scoop.sh/) or [Chocolatey](https://chocolatey.org):
|
||||||
|
|
||||||
```
|
```
|
||||||
$ scoop install croc
|
scoop install croc
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
$ choco install croc
|
choco install croc
|
||||||
```
|
```
|
||||||
|
|
||||||
On Unix you can install the latest release with [Nix](https://nixos.org/nix):
|
On Unix you can install the latest release with [Nix](https://nixos.org/nix):
|
||||||
|
|
||||||
```
|
```
|
||||||
$ nix-env -i croc
|
nix-env -i croc
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
On Alpine Linux you have to install dependencies first:
|
On Alpine Linux you have to install dependencies first:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ apk add bash coreutils
|
apk add bash coreutils
|
||||||
$ wget -qO- https://getcroc.schollz.com | bash
|
wget -qO- https://getcroc.schollz.com | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
On Arch Linux you can install the latest release with `pacman`:
|
On Arch Linux you can install the latest release with `pacman`:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ pacman -S croc
|
pacman -S croc
|
||||||
```
|
```
|
||||||
|
|
||||||
On Gentoo you can install with `portage`:
|
On Gentoo you can install with `portage`:
|
||||||
```
|
```
|
||||||
$ emerge net-misc/croc
|
emerge net-misc/croc
|
||||||
```
|
```
|
||||||
|
|
||||||
On Termux you can install with `pkg`:
|
On Termux you can install with `pkg`:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ pkg install croc
|
pkg install croc
|
||||||
```
|
```
|
||||||
|
|
||||||
On FreeBSD you can install with `pkg`:
|
On FreeBSD you can install with `pkg`:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ pkg install croc
|
pkg install croc
|
||||||
```
|
```
|
||||||
|
|
||||||
Or, you can [install Go](https://golang.org/dl/) and build from source (requires Go 1.12+):
|
Or, you can [install Go](https://golang.org/dl/) and build from source (requires Go 1.12+):
|
||||||
|
|
||||||
```
|
```
|
||||||
$ GO111MODULE=on go get -v github.com/schollz/croc/v8
|
GO111MODULE=on go get -v github.com/schollz/croc/v8
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ Code is: code-phrase
|
||||||
Then to receive the file (or folder) on another computer, you can just do
|
Then to receive the file (or folder) on another computer, you can just do
|
||||||
|
|
||||||
```
|
```
|
||||||
$ croc code-phrase
|
croc code-phrase
|
||||||
```
|
```
|
||||||
|
|
||||||
The code phrase is used to establish password-authenticated key agreement ([PAKE](https://en.wikipedia.org/wiki/Password-authenticated_key_agreement)) which generates a secret key for the sender and recipient to use for end-to-end encryption.
|
The code phrase is used to establish password-authenticated key agreement ([PAKE](https://en.wikipedia.org/wiki/Password-authenticated_key_agreement)) which generates a secret key for the sender and recipient to use for end-to-end encryption.
|
||||||
|
@ -134,7 +134,7 @@ There are a number of configurable options (see `--help`). A set of options (lik
|
||||||
You can send with your own code phrase (must be more than 4 characters).
|
You can send with your own code phrase (must be more than 4 characters).
|
||||||
|
|
||||||
```
|
```
|
||||||
$ croc send --code [code-phrase] [file(s)-or-folder]
|
croc send --code [code-phrase] [file(s)-or-folder]
|
||||||
```
|
```
|
||||||
|
|
||||||
### Use pipes - stdin and stdout
|
### Use pipes - stdin and stdout
|
||||||
|
@ -142,13 +142,13 @@ $ croc send --code [code-phrase] [file(s)-or-folder]
|
||||||
You can pipe to `croc`:
|
You can pipe to `croc`:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cat [filename] | croc send
|
cat [filename] | croc send
|
||||||
```
|
```
|
||||||
|
|
||||||
In this case `croc` will automatically use the stdin data and send and assign a filename like "croc-stdin-123456789". To receive to `stdout` at you can always just use the `--yes` will automatically approve the transfer and pipe it out to `stdout`.
|
In this case `croc` will automatically use the stdin data and send and assign a filename like "croc-stdin-123456789". To receive to `stdout` at you can always just use the `--yes` will automatically approve the transfer and pipe it out to `stdout`.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ croc --yes [code-phrase] > out
|
croc --yes [code-phrase] > out
|
||||||
```
|
```
|
||||||
|
|
||||||
All of the other text printed to the console is going to `stderr` so it will not interfere with the message going to `stdout`.
|
All of the other text printed to the console is going to `stderr` so it will not interfere with the message going to `stdout`.
|
||||||
|
@ -159,7 +159,7 @@ All of the other text printed to the console is going to `stderr` so it will not
|
||||||
Sometimes you want to send URLs or short text. In addition to piping, you can easily send text with `croc`:
|
Sometimes you want to send URLs or short text. In addition to piping, you can easily send text with `croc`:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ croc send --text "hello world"
|
croc send --text "hello world"
|
||||||
```
|
```
|
||||||
|
|
||||||
This will automatically tell the receiver to use `stdout` when they receive the text so it will be displayed.
|
This will automatically tell the receiver to use `stdout` when they receive the text so it will be displayed.
|
||||||
|
@ -170,7 +170,7 @@ This will automatically tell the receiver to use `stdout` when they receive the
|
||||||
You can use a proxy as your connection to the relay by adding a proxy address with `--socks5`. For example, you can send via a tor relay:
|
You can use a proxy as your connection to the relay by adding a proxy address with `--socks5`. For example, you can send via a tor relay:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ croc --socks5 "127.0.0.1:9050" send SOMEFILE
|
croc --socks5 "127.0.0.1:9050" send SOMEFILE
|
||||||
```
|
```
|
||||||
|
|
||||||
### Self-host relay
|
### Self-host relay
|
||||||
|
@ -178,7 +178,7 @@ $ croc --socks5 "127.0.0.1:9050" send SOMEFILE
|
||||||
The relay is needed to staple the parallel incoming and outgoing connections. By default, `croc` uses a public relay but you can also run your own relay:
|
The relay is needed to staple the parallel incoming and outgoing connections. By default, `croc` uses a public relay but you can also run your own relay:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ croc relay
|
croc relay
|
||||||
```
|
```
|
||||||
|
|
||||||
By default it uses TCP ports 9009-9013. Make sure to open those up. You can customized the ports (e.g. `croc relay --ports 1111,1112`), but you must have a minimum of **2** ports for the relay. The first port is for communication and the subsequent ports are used for the multiplexed data transfer.
|
By default it uses TCP ports 9009-9013. Make sure to open those up. You can customized the ports (e.g. `croc relay --ports 1111,1112`), but you must have a minimum of **2** ports for the relay. The first port is for communication and the subsequent ports are used for the multiplexed data transfer.
|
||||||
|
@ -186,7 +186,7 @@ By default it uses TCP ports 9009-9013. Make sure to open those up. You can cust
|
||||||
You can send files using your relay by entering `--relay` to change the relay that you are using if you want to custom host your own.
|
You can send files using your relay by entering `--relay` to change the relay that you are using if you want to custom host your own.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ croc --relay "myrelay.example.com:9009" send [filename]
|
croc --relay "myrelay.example.com:9009" send [filename]
|
||||||
```
|
```
|
||||||
|
|
||||||
Note, when sending, you only need to include the first port (the communication port). The subsequent ports for data transfer will be transmitted back to the user from the relay.
|
Note, when sending, you only need to include the first port (the communication port). The subsequent ports for data transfer will be transmitted back to the user from the relay.
|
||||||
|
@ -197,13 +197,13 @@ If it's easier you can also run a relay with Docker:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
$ docker run -d -p 9009-9013:9009-9013 -e CROC_PASS='YOURPASSWORD' schollz/croc
|
docker run -d -p 9009-9013:9009-9013 -e CROC_PASS='YOURPASSWORD' schollz/croc
|
||||||
```
|
```
|
||||||
|
|
||||||
Be sure to include the password for the relay otherwise any requests will be rejected.
|
Be sure to include the password for the relay otherwise any requests will be rejected.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ croc --pass YOURPASSWORD --relay "myreal.example.com:9009" send [filename]
|
croc --pass YOURPASSWORD --relay "myreal.example.com:9009" send [filename]
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: when including `--pass YOURPASSWORD` you can instead pass a file with the password, e.g. `--pass FILEWITHPASSWORD`.
|
Note: when including `--pass YOURPASSWORD` you can instead pass a file with the password, e.g. `--pass FILEWITHPASSWORD`.
|
||||||
|
|
|
@ -130,10 +130,15 @@ func getConfigDir() (homedir string, err error) {
|
||||||
log.Error(err)
|
log.Error(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
homedir = path.Join(homedir, ".config", "croc")
|
|
||||||
if xdgConfigHome, isSet := os.LookupEnv("XDG_CONFIG_HOME"); isSet {
|
if envHomedir, isSet := os.LookupEnv("CROC_CONFIG_DIR"); isSet {
|
||||||
|
homedir = envHomedir
|
||||||
|
} else if xdgConfigHome, isSet := os.LookupEnv("XDG_CONFIG_HOME"); isSet {
|
||||||
homedir = path.Join(xdgConfigHome, "croc")
|
homedir = path.Join(xdgConfigHome, "croc")
|
||||||
|
} else {
|
||||||
|
homedir = path.Join(homedir, ".config", "croc")
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = os.Stat(homedir); os.IsNotExist(err) {
|
if _, err = os.Stat(homedir); os.IsNotExist(err) {
|
||||||
log.Debugf("creating home directory %s", homedir)
|
log.Debugf("creating home directory %s", homedir)
|
||||||
err = os.MkdirAll(homedir, 0700)
|
err = os.MkdirAll(homedir, 0700)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue