Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/manuels/nicepipe
Nicepipe is netcat's p2p buddy
https://github.com/manuels/nicepipe
Last synced: 3 months ago
JSON representation
Nicepipe is netcat's p2p buddy
- Host: GitHub
- URL: https://github.com/manuels/nicepipe
- Owner: manuels
- Created: 2013-06-11T20:40:13.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2013-06-19T10:10:27.000Z (over 11 years ago)
- Last Synced: 2024-04-24T04:50:01.261Z (9 months ago)
- Language: C
- Homepage:
- Size: 172 KB
- Stars: 14
- Watchers: 4
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
nicepipe
========Nicepipe is netcat for p2p connections.
It allows you to setup a network connection between two peers even if they are behind a NAT and uses your SSH keypairs to secure the connection.
`nicepipe` solves two problems two problems that usually occur when you want to connect two computers somewhere on the planet:
1) No DNS required
`nicepipe` uses exchange_provider scripts to exchange IPs of the hosts
2) No NAT configuration required:
`nicepipe` uses STUN/ICE to circumvent your NAT and so you don't have to modify your firewall configuration.
Installation
------------nicepipe requires `glib`, `libnice`, `socat` and your SSH RSA key pairs (`$HOME/.ssh/id_rsa`).
To compile just run `make`.Usage
-----`nicepipe` uses your SSH key pairs (`$HOME/.ssh/id_rsa`) to setup a secure connection between the two peers.
Currently a file hosting service like Dropbox or Ubuntu One setup (**MUST be the same account OR MUST be a shared folder of two accounts (both need write permission)**) on each peers.#### 1. Make sure you have generated an SSH key pairs (otherwise use `ssh-keygen`).
#### 2. Change into your file hosting service's directory on both machines (called `alice` and `bob`), e.g.
# This is Alice's machine | # This is Bob's machine
alice$ cd ~/Dropbox | bob$ cd ~/Dropbox#### 3a. Run nicepipe in pipe-mode on both machines:
alice ~/Dropbox$ echo Hello Bob! | ./nicepipe pipe -c 1 -H bob | bob ~/Dropbox$ echo Hello Alice! | ./nicepipe pipe -c 0 -H alice
Hello Alice! | Hello Bob!#### 3b. Run nicepipe in vpn-mode on both machines:
alice ~/Dropbox$ sudo ./nicepipe vpn -c 1 -H bob | bob ~/Dropbox$ sudo ./nicepipe vpn -c 0 -H alice
Creating new network interface with IP# 10.0.1.2/24 | Creating new network interface with IP# 10.0.1.1/24Then you can connect from one machine to the other:
alice $ echo Hello Bob! | nc -l 10.0.1.2 10000 | bob $ echo Hello Alice! | nc 10.0.1.2 10000
Hello Alice! | Hello Bob!Troubleshooting
---------------### Address already in use
Either the address is really still in use (look at `netstat -nl`) or your previous session did not end gracefully. In the latter case, wait some seconds and try again
### Connection is not established
Remove `$HOME/Dropbox/.nice*` and try again or add the argument `-s stunserver.org`.You have a better idea for exchanging IP addresses?
---------------------------------------------------Just implement another exchange provider. They take two arguments:
### First Argument
`0` if it's the caller (client) and `1` if it's the callee (server).### Second Argument
If the second argument is `publish` then the `stdin` MUST be written where the other peer finds it.
If the second argument is `lookup` then the data published by the other peer MUST be written to `stdout`.
If the second argument is `unpublish` then the data previously published SHOULD be unpublished (optional).e.g.
alice$ ./exchange_providers/dummy 1 publish # writes stdin to a file where bob can find it
License
-------
GPLTerms MAY, MUST, SHOULD etc. according to [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt).