diff --git a/cli b/cli index 07d8c43..180b133 100755 --- a/cli +++ b/cli @@ -1,6 +1,8 @@ #!/usr/bin/env python import os, sys, argparse + import pbincli.actions +from pbincli.api import PrivateBin from pbincli.utils import PBinCLIException @@ -19,9 +21,6 @@ def main(): choices=["5min", "10min", "1hour", "1day", "1week", "1month", "1year", "never"], help="expiration of paste (default: 1day)") send_parser.add_argument("-F", "--format", default="plaintext", action="store", choices=["plaintext", "syntaxhighlighting", "markdown"], help="format of text (default: plaintext)") - send_parser.add_argument("--server", help="Set server to work with") - send_parser.add_argument("--use-proxy", default=False, action="store_true", help="Enable using of proxy") - send_parser.add_argument("--proxy", help="Proxy address (example: socks5://127.0.0.1:9050)") send_parser.add_argument("-t", "--text", help="comment in quotes. Ignored if used stdin") send_parser.add_argument("-p", "--password", help="password for encrypting paste") send_parser.add_argument("-d", "--debug", default=False, action="store_true", help="enable debug") @@ -49,9 +48,15 @@ def main(): # parse arguments args = parser.parse_args() + + server = os.getenv("PRIVATEBIN_SERVER", "https://paste.i2pd.xyz/") + proxy = os.getenv("PRIVATEBIN_PROXY") + + api_client = PrivateBin(server, proxy=proxy) + if hasattr(args, "func"): try: - args.func(args) + args.func(args, api_client) except PBinCLIException as pe: print("PBinCLI error: {}".format(pe)) sys.exit(1) diff --git a/pbincli/actions.py b/pbincli/actions.py index 0f772d7..43c721f 100644 --- a/pbincli/actions.py +++ b/pbincli/actions.py @@ -1,16 +1,12 @@ import json, hashlib, ntpath, os, sys, zlib -import pbincli.actions, pbincli.settings +import pbincli.actions from sjcl import SJCL from base64 import b64encode, b64decode from mimetypes import guess_type -from pbincli.api import PrivateBin from pbincli.utils import PBinCLIException, check_readable, check_writable, json_load_byteified -# Initialise settings -pbincli.settings.init() - def path_leaf(path): head, tail = ntpath.split(path) return tail or ntpath.basename(head) @@ -25,9 +21,7 @@ def compress(s): return b64encode(''.join(map(chr, b)).encode('utf-8')) -def send(args): - api = PrivateBin(args.server, args.proxy, args.use-proxy) - +def send(args, api_client): if args.stdin: text = args.stdin.read() elif args.text: @@ -87,8 +81,7 @@ def send(args): # If we use dry option, exit now if args.dry: sys.exit(0) - server = pbincli.settings.server - result = api.post(request) + result = api_client.post(request) if args.debug: print("Response:\t{}\n".format(result)) @@ -99,7 +92,7 @@ def send(args): sys.exit(1) if 'status' in result and not result['status']: - print("Paste uploaded!\nPasteID:\t{}\nPassword:\t{}\nDelete token:\t{}\n\nLink:\t\t{}?{}#{}".format(result['id'], passphrase.decode(), result['deletetoken'], server, result['id'], passphrase.decode())) + print("Paste uploaded!\nPasteID:\t{}\nPassword:\t{}\nDelete token:\t{}\n\nLink:\t\t{}?{}#{}".format(result['id'], passphrase.decode(), result['deletetoken'], api_client.server, result['id'], passphrase.decode())) elif 'status' in result and result['status']: print("Something went wrong...\nError:\t\t{}".format(result['message'])) sys.exit(1) @@ -108,9 +101,7 @@ def send(args): sys.exit(1) -def get(args): - api = PrivateBin(args.server, args.proxy, args.use-proxy) - +def get(args, api_client): pasteid, passphrase = args.pasteinfo.split("#") if pasteid and passphrase: @@ -124,7 +115,7 @@ def get(args): if args.debug: print("Password:\t{}".format(password)) - result = api.get(pasteid) + result = api_client.get(pasteid) else: print("PBinCLI error: Incorrect request") sys.exit(1) @@ -175,7 +166,7 @@ def get(args): if 'burnafterreading' in result['meta'] and result['meta']['burnafterreading']: print("Burn afrer reading flag found. Deleting paste...") - result = api.delete(pasteid, 'burnafterreading') + result = api_client.delete(pasteid, 'burnafterreading') if args.debug: print("Delete response:\t{}\n".format(result)) @@ -202,15 +193,13 @@ def get(args): sys.exit(1) -def delete(args): - api = PrivateBin(args.server, args.proxy, args.use-proxy) - +def delete(args, api_client): pasteid = args.paste token = args.token if args.debug: print("PasteID:\t{}\nToken:\t\t{}".format(pasteid, token)) - result = api.delete(pasteid, token) + result = api_client.delete(pasteid, token) if args.debug: print("Response:\t{}\n".format(result)) diff --git a/pbincli/api.py b/pbincli/api.py index d6b9af9..476ace3 100644 --- a/pbincli/api.py +++ b/pbincli/api.py @@ -1,11 +1,10 @@ import requests -import pbincli.settings class PrivateBin: - def __init__(self, server = pbincli.settings.server, proxy = pbincli.settings.proxy, useproxy = pbincli.settings.useproxy): + def __init__(self, server, proxy=None): self.server = server self.headers = {'X-Requested-With': 'JSONHttpRequest'} - if useproxy: + if proxy: self.proxy = {proxy.split('://')[0]: proxy} else: self.proxy = {} diff --git a/pbincli/settings.py b/pbincli/settings.py deleted file mode 100644 index eaaa330..0000000 --- a/pbincli/settings.py +++ /dev/null @@ -1,11 +0,0 @@ -def init(): - global server, proxies, useproxy - - # Edit that variables - server = "https://paste.i2pd.xyz/" - proxy = "socks5://127.0.0.1:9050" - - # True/False - useproxy = False - - # There is nothing more to do :D