implement read text from stdin (closes #3)

fix debug output
This commit is contained in:
R4SAS 2018-02-16 11:56:13 +03:00
parent b887f0cc5a
commit 4af4797812
4 changed files with 24 additions and 13 deletions

View File

@ -1,7 +1,7 @@
DWTFYWWI LICENSE
Version 1, January 2006
Copyright (C) 2006 Ævar Arnfjörð Bjarmason
Copyright (C) 2017-2018 R4SAS <r4sas@i2pmail.org>
Preamble

View File

@ -17,25 +17,33 @@ Edit variables `server`, `proxies` and `useproxy` in `pbincli/settings.py` to yo
Run inside `venv` command:
$ ./cli send -c "Hello!"
$ ./cli send -c "Hello!"
Or use stdin input to read text for paste:
$ ./cli send - <<EOF
Hello!
This is test paste!
EOF
It will send string `Hello!` to PrivateBin.
To send file use `--file` or `-f` with filename. Example:
$ ./cli send -c "My document" -f info.pdf
$ ./cli send -c "My document" -f info.pdf
To retrieve paste from server, use `get` command with paste info.
It must be formated like `pasteID#passphrase`. Example:
$ ./cli get 49eeb1326cfa9491#vfeortoVWaYeJlviDdhxQBtj5e0I2kArpynrtu/tnGs=
$ ./cli get 49eeb1326cfa9491#vfeortoVWaYeJlviDdhxQBtj5e0I2kArpynrtu/tnGs=
More info you can find by typing
$ ./cli [-h] {send, get, delete}
$ ./cli [-h] {send, get, delete}
License
-------
This project is licensed under the DWTFYWWI license, which can be found in the file
LICENSE in the root of the project source code.
[LICENSE](LICENSE) in the root of the project source code.

3
cli
View File

@ -19,11 +19,12 @@ 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 comment (default: plaintext)")
send_parser.add_argument("-c", "--comment", help="comment in quotes")
send_parser.add_argument("-c", "--comment", 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")
send_parser.add_argument("--dry", default=False, action="store_true", help="invoke dry run")
send_parser.add_argument("-f", "--file", help="example: image.jpg or full path to file")
send_parser.add_argument("stdin", help="input paste text from stdin", nargs="?", type=argparse.FileType("r"), default=sys.stdin)
send_parser.set_defaults(func=pbincli.actions.send)
get_parser = subparsers.add_parser("get", description="Get data from PrivateBin instance", usage="""

View File

@ -18,7 +18,9 @@ def path_leaf(path):
def send(args):
if args.comment:
if args.stdin:
text = args.stdin.read()
elif args.comment:
text = args.comment
elif args.file:
text = "Sending a file to you!"
@ -42,7 +44,7 @@ def send(args):
if args.debug: print("Password:\t{}".format(password))
# Encrypting text (comment)
cipher = SJCL().encrypt(text.encode("utf-8"), password, mode='gcm')
cipher = SJCL().encrypt(text.encode("UTF-8"), password, mode='gcm')
# TODO: should be implemented in upstream
for k in ['salt', 'iv', 'ct']: cipher[k] = cipher[k].decode()
@ -78,7 +80,7 @@ def send(args):
server = pbincli.settings.server
result = privatebin().post(request)
if args.debug: print("Response:\t{}\n".format(result.decode("UTF-8")))
if args.debug: print("Response:\t{}\n".format(result))
try:
result = json.loads(result)
@ -115,7 +117,7 @@ def get(args):
print("PBinCLI error: Incorrect request")
sys.exit(1)
if args.debug: print("Response:\t{}\n".format(result.decode("UTF-8")))
if args.debug: print("Response:\t{}\n".format(result))
try:
result = json.loads(result)
@ -163,7 +165,7 @@ def get(args):
print("Burn afrer reading flag found. Deleting paste...")
result = privatebin().delete(pasteid, 'burnafterreading')
if args.debug: print("Delete response:\t{}\n".format(result.decode("UTF-8")))
if args.debug: print("Delete response:\t{}\n".format(result))
try:
result = json.loads(result)
@ -196,7 +198,7 @@ def delete(args):
result = privatebin().delete(pasteid, token)
if args.debug: print("Response:\t{}\n".format(result.decode("UTF-8")))
if args.debug: print("Response:\t{}\n".format(result))
try:
result = json.loads(result)