Pneumatic Packet Tube Transport
Peer-to-peer (p2p), command-line application for secure messaging and file-sharing.
ptt
allows you to securely text and share files directly with people on other home/office networks.
First, specify a peer by public IP address and external port and assign them a memorable, (locally) unique name. Once both peers have added each other's contact information, they can establish a direct, secure communication via TCP hole-punching and TLS. Then they can send and receive message and files over the connection. All data is encrypted and communicated directly between peers, i.e. there are no intermediary servers.
PTT is an acronym for pneumatic tube transport. This project adopts the acronym and resembles its physical counterpart to a certain degree. Think of ptt
as a tool for assembling, disassembling, and sending/receiving content over digital communication "tubes".
pip install TBD
CLI for controlling the daemon, which listens on an IPC socket for ptt
commands.
Note: the daemon must be running for ptt
commands to work!
Start the daemon in a separate process.
The -c
or --connect
flag instructs the daemon to attempt connecting to each known peer on start-up.
Reports whether daemon is running or not.
Stop the daemon gracefully.
Restart the daemon. The -c
or --connect
flag is the same as in the start
command.
Sometimes in development, the daemon gets in a weird state where it doesn't respond to other commands. This command terminates the daemon process and removes any lingering files. A subsequent pttd start
should successfully start the daemon.
CLI for performing peer-specific actions.
Each command takes a single argument: the peer's <alias>
. Other information is prompted when required.
This command adds a new peer to the database, uniquely identified by its <alias>
.
First, it reserves a local port for peer communication and displays this along with your public IP address. You should share this information with your peer out-of-band. Similarly, your peer should share their information with you. You'll be prompted to enter your peer's public IP address and port details.
If you want to use IPv6 addresses, you and your peer should use add6
.
Note: you must use the same IP version as your peer!
Displays the peer's address and port information with connection status.
This command changes the peer's alias, local port, remote IP, and/or remote port.
Use edit6
if you want to assign a public IPv6 address to the peer.
Remove a peer from the database.
Establish a direct, secure connection to a peer via TCP hole-punching and TLS. You and your peer should receive desktop notifications upon connecting.
Disconnect from a peer. Both parties should receive dekstop notifications.
Type and send a text message to a peer. Your peer should receive a desktop notification upon receiving the text.
Show texts sent to/received from a peer, including timstampes when texts were sent/received.
Send a file to a peer. You'll be prompted for the filepath. Your peer should receive a desktop notification upon receiving the file.
List names of files that have been sent to/received from the peer, including timestamps when files were shared.
* Must be connected to peer