A command line pastebin, written in python
SocksBin
Command line pastebin for sharing files and command outputs.
How to use Requirements
To use this, you'll need a tool called netcat. Try typing 'nc' or 'netcat' into the terminal, you probably have it already !
Client Side
echo "Hello World !" | nc magnum.wtf 6969
cat "script.sh" | nc magnum.wtf 6969
df | nc localhost 9999
You will receive a url to the text-only paste as a response to the above commands. e.g.
https://socksbin.magnum.wtf/33fdd867
This has a built-in Pygment-based beautifier. add "_color" to the end of the received url, to get a beautified paste.
https://socksbin.magnum.wtf/33fdd867_color
In case your text isn't beautified, include the shebang #!
which is the first two bytes of an executable
e.g. the first line should be #! /usr/bin/env python
for proper python formatting
Cool stuff
Make this much easier to use by adding an alias to your rc file. For example:
skb
alias
Linux (Bash):
echo 'alias skb="nc magnum.wtf 6969"' >> .bashrc
macOS:
echo 'alias skb="nc magnum.wtf 9999"' >> .bash_profile
Copy output to clipboard
Linux (Bash):
echo 'alias skb="netcat magnum.wtf 6969 | xclip -selection c"' >> .bashrc
echo less typing now! | skb
macOS:
echo 'alias skb="nc magnum.wtf 6969 | pbcopy"' >> .bash_profile
echo less typing now! | skb
Remember to reload the shell with source ~/.bashrc
or source ~/.bash_profile
after adding any of provided above!
Server Side Configration
git clone https://github.com/MagnumDingusEdu/SocksBin.git
python3 -m venv venv
or
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
chmod +x paster.py
Usage
usage: ./paster.py [-o output directory]
[-n listen_address] [-p port] [-s slug size]
[-l logfile] [-b buffer size][-h help]
These are command line arguments. None of these are required to run the server. Defaults are specified in the section below.
Settings
Output directory -o
--output_directory
Absolute, or relative path to the directory where the pastes will be stored, as plaintext files.
./paster.py -o ./pastes
./paster.py -o /home/www/pastes/
Default value: $HOME/socksbin
URL -u
--url
This will be used as a prefix for an url received by the client.
Value will be prepended with $url
.
./paster.py -u https://domain.com/
./paster.py -u https://subdomain.domain.com/
./paster.py -u https://subdomain.domain.com/pastes/
Default value: http://localhost/
Slug size -s
--slug_size
This will force slugs to be of required length:
./paster.py -s 6
Output url with default value: http://localhost/********
,
where * is a randomized character
Output url with example value 6: http://localhost/******
,
where * is a randomized character
Default value: 8
Buffer size -b
--buffer_size
This parameter defines size of the buffer in bytes, when making a connection. TCP has a max buffer size of 60K.
./paster.py -b 4096
Default value: 32768
Log file -l
--log_file
./paster.py -l /home/user/socksbin.log.txt
The log file will only be made if you specify this argument. Make sure that this file is user writable.
Default value: not set
Queue Depth -q
--queue_depth
./paster.py -q 10
The helps to properly manage simultaneous connections. The maximum value is system dependent. For example, on Linux, see /proc/sys/net/core/somaxconn
Default value: 10
Running as a service
If you're using systemd, follow these steps:
sudo touch /lib/systemd/system/socksbin.service
[Unit]
Description=Socksbin Server
After=multi-user.target
[Service]
Type=idle
ExecStart=/home/user/socksbin/venv/bin/python /home/user/socksbin/paster.py -o /var/www/socksbin -s 8 -p 6969 -l /home/user/socklog.txt -u https://subdomain.yourdomain.com/
[Install]
WantedBy=multi-user.target
Replace /home/user/socksbin with the path to your socksbin installation. Save and exit.
sudo chmod 644 /lib/systemd/system/socksbin.service
sudo systemctl daemon-reload
sudo systemctl start socksbin
sudo systemctl enable socksbin
This will make sure it remains up even accross reboots.
To check the current status of your service:
sudo systemctl status socksbin
Example Server Configs
This does not have a web server built in, so you can use this with your existing web server, to make files available to the internet.
<VirtualHost *:80>
ServerName subdomain.mysite.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/socksbin
DirectoryIndex index.html
ErrorLog ${APACHE_LOG_DIR}/socksbin_error.log
CustomLog ${APACHE_LOG_DIR}/socksbin_access.log combined
</VirtualHost>
server {
listen 80;
server_name subdomain.mysite.com;
charset utf-8;
location / {
root /var/www/socksbin/;
index index.txt index.html;
}
}
Please make sure that you put default file, e.g. index.html, so that people can't access all your files freely.
Twice a month we will interview people behind open source businesses. We will talk about how they are building a business on top of open source projects.
We'll never share your email with anyone else.