Add macOS rule to makefile and add information to readme
This commit is contained in:
parent
77b9cb8e76
commit
c9a01f0376
5
Makefile
5
Makefile
@ -4,4 +4,7 @@ all: main.go logging.go keyExchange.go keyCrypto.go files.go fileCrypto.go devic
|
|||||||
$(GOBUILD)
|
$(GOBUILD)
|
||||||
|
|
||||||
install: opensend
|
install: opensend
|
||||||
install -Dm755 opensend $(DESTDIR)/usr/bin/opensend
|
install -Dm755 opensend $(DESTDIR)/usr/bin/opensend
|
||||||
|
|
||||||
|
install-macos: opensend
|
||||||
|
install -m755 opensend $(DESTDIR)/usr/local/bin/opensend
|
33
README.md
33
README.md
@ -5,25 +5,42 @@
|
|||||||
OpenSend uses a combination of 2048-bit RSA and AES GCM encryption. This is accomplished using golang's crypto/rsa and crypto/aes libraries. First, a shared AES key is generated. Then, an RSA keypair is generated. The AES key is encrypted using the RSA public key
|
OpenSend uses a combination of 2048-bit RSA and AES GCM encryption. This is accomplished using golang's crypto/rsa and crypto/aes libraries. First, a shared AES key is generated. Then, an RSA keypair is generated. The AES key is encrypted using the RSA public key
|
||||||
of the receiver. This key is then saved to a file. Next, the shared AES key is used to encrypt all the files in `~/.opensend`. To send the key, the sender first needs to discover the receiver. This is accomplished using mDNS. The key is then exchanged using a TCP socket and golang's encoding/gob library. After that, the sender starts an HTTP server with some custom functions to send the file index and key. The receiver gets the index, files, and encrypted key from this server. Once it gets all the files, it sends a stop signal to the server and decrypts the shared key using its RSA private key. The resulting key is then used to decrypt all files in `~/.opensend`.
|
of the receiver. This key is then saved to a file. Next, the shared AES key is used to encrypt all the files in `~/.opensend`. To send the key, the sender first needs to discover the receiver. This is accomplished using mDNS. The key is then exchanged using a TCP socket and golang's encoding/gob library. After that, the sender starts an HTTP server with some custom functions to send the file index and key. The receiver gets the index, files, and encrypted key from this server. Once it gets all the files, it sends a stop signal to the server and decrypts the shared key using its RSA private key. The resulting key is then used to decrypt all files in `~/.opensend`.
|
||||||
|
|
||||||
|
### Ports to whitelist
|
||||||
|
- TCP 9797 for key exchange
|
||||||
|
- TCP 9898 for file transfer
|
||||||
|
|
||||||
### Usage
|
### Usage
|
||||||
|
|
||||||
#### Receiver
|
#### Receiver
|
||||||
- Use `opensend -r` to start the receiver
|
- Use `opensend -r` to start the receiver
|
||||||
|
|
||||||
### Sender
|
#### Sender
|
||||||
- Use `opensend -s -t <type> -d <data>`
|
- Use `opensend -s -t <type> -d <data>`
|
||||||
- Type can either be `url` or `file`
|
- `type` can either be `url` or `file`
|
||||||
- If the type is `url`, the data should be a URL
|
- If the type is `url`, `data` should be a URL
|
||||||
- If the type is `file`, the data should be a file path
|
- If the type is `file`, `data` should be a file path
|
||||||
|
- Example: `opensend -s -t url -d "https://google.com"`
|
||||||
|
|
||||||
### Building
|
### Building
|
||||||
- This project uses go modules, so building is easy
|
- This project uses go modules, so building is easy
|
||||||
- First, go 1.15+ must be installed
|
- First, go 1.14+ must be installed (use buster-backports on debian)
|
||||||
- Then, run `go build` inside the project's directory.
|
- Then, run `make` inside the project's directory.
|
||||||
- This will get the dependencies and compile all the files.
|
- This will get the dependencies and compile all the files.
|
||||||
|
|
||||||
### Installing
|
### Installing
|
||||||
To install, simply follow the building instructions and then run
|
To install, simply follow the building instructions and then run
|
||||||
- Linux: `sudo install -Dm755 opensend /usr/local/bin`
|
- Linux: `sudo make install`
|
||||||
- macOS: `sudo install -m755 opensend /usr/local/bin`
|
- macOS: `sudo make install-macos`
|
||||||
|
|
||||||
|
### Using on iOS
|
||||||
|
Opensend can run on iOS using the [iSH app](https://apps.apple.com/us/app/ish-shell/id1436902243).
|
||||||
|
- Install go using `apk add go`
|
||||||
|
- Clone this repository
|
||||||
|
- Run `make`
|
||||||
|
- Use opensend as normal, but skip device discovery
|
||||||
|
- Device discovery does not work properly in iSH due to Alpine Linux
|
||||||
|
- When running receiver, add `--skip-mdns`
|
||||||
|
- When running sender, add `--send-to <IP>`
|
||||||
|
- This applies bidirectionally
|
||||||
|
- Known issues
|
||||||
|
- Opensend takes a while to become ready on iOS
|
Reference in New Issue
Block a user