mirror of
https://github.com/r4sas/PBinCLI
synced 2025-01-24 13:34:14 +00:00
Support full URL in get command
Signed-off-by: R4SAS <r4sas@i2pmail.org>
This commit is contained in:
parent
7bd3ef22b9
commit
369738ea50
@ -1,5 +1,5 @@
|
||||
from pbincli.format import Paste
|
||||
from pbincli.utils import PBinCLIError, validate_url
|
||||
from pbincli.utils import PBinCLIError, validate_url_ending
|
||||
import signal
|
||||
|
||||
def signal_handler(sig, frame):
|
||||
@ -99,7 +99,7 @@ def send(args, api_client, settings=None):
|
||||
urls = settings['mirrors'].split(',')
|
||||
for x in urls:
|
||||
print("\t\t{}?{}#{}".format(
|
||||
validate_url(x),
|
||||
validate_url_ending(x),
|
||||
result['id'],
|
||||
passphrase))
|
||||
|
||||
@ -117,10 +117,14 @@ def send(args, api_client, settings=None):
|
||||
|
||||
|
||||
def get(args, api_client, settings=None):
|
||||
from pbincli.utils import check_writable, json_encode
|
||||
from pbincli.utils import check_writable, json_encode, uri_validator
|
||||
|
||||
try:
|
||||
pasteid, passphrase = args.pasteinfo.split("#")
|
||||
if uri_validator(args.pasteinfo):
|
||||
api_client.server, pasteinfo = args.pasteinfo.split("?")
|
||||
pasteid, passphrase = pasteinfo.split("#")
|
||||
else:
|
||||
pasteid, passphrase = args.pasteinfo.split("#")
|
||||
except ValueError:
|
||||
PBinCLIError("Provided info hasn't contain valid PasteID#Passphrase string")
|
||||
|
||||
|
@ -3,7 +3,7 @@ import os, sys, argparse
|
||||
|
||||
import pbincli.actions
|
||||
from pbincli.api import PrivateBin
|
||||
from pbincli.utils import PBinCLIException, PBinCLIError, validate_url
|
||||
from pbincli.utils import PBinCLIException, PBinCLIError, validate_url_ending
|
||||
|
||||
CONFIG_PATHS = [
|
||||
os.path.join(".", "pbincli.conf", ),
|
||||
@ -57,7 +57,7 @@ def main():
|
||||
send_parser.add_argument("--short-pass", default=argparse.SUPPRESS, help="Shortener password")
|
||||
send_parser.add_argument("--short-token", default=argparse.SUPPRESS, help="Shortener token")
|
||||
## Connection options
|
||||
send_parser.add_argument("-s", "--server", default=argparse.SUPPRESS, help="PrivateBin service URL (default: https://paste.i2pd.xyz/)")
|
||||
send_parser.add_argument("-s", "--server", default=argparse.SUPPRESS, help="Instance URL (default: https://paste.i2pd.xyz/)")
|
||||
send_parser.add_argument("-x", "--proxy", default=argparse.SUPPRESS, help="Proxy server address (default: None)")
|
||||
send_parser.add_argument("--no-check-certificate", default=False, action="store_true", help="disable certificate validation")
|
||||
send_parser.add_argument("--no-insecure-warning", default=False, action="store_true",
|
||||
@ -72,10 +72,10 @@ def main():
|
||||
|
||||
# a get command
|
||||
get_parser = subparsers.add_parser("get", description="Get data from PrivateBin instance")
|
||||
get_parser.add_argument("pasteinfo", help="example: aabb#cccddd")
|
||||
get_parser.add_argument("pasteinfo", help="\"PasteID#Passphrase\" or full URL")
|
||||
get_parser.add_argument("-p", "--password", help="password for decrypting paste")
|
||||
## Connection options
|
||||
get_parser.add_argument("-s", "--server", default=argparse.SUPPRESS, help="PrivateBin service URL (default: https://paste.i2pd.xyz/)")
|
||||
get_parser.add_argument("-s", "--server", default=argparse.SUPPRESS, help="Instance URL (default: https://paste.i2pd.xyz/, ignored if URL used in pasteinfo)")
|
||||
get_parser.add_argument("-x", "--proxy", default=argparse.SUPPRESS, help="Proxy server address (default: None)")
|
||||
get_parser.add_argument("--no-check-certificate", default=False, action="store_true", help="disable certificate validation")
|
||||
get_parser.add_argument("--no-insecure-warning", default=False, action="store_true",
|
||||
@ -90,7 +90,7 @@ def main():
|
||||
delete_parser.add_argument("-p", "--paste", required=True, help="paste id")
|
||||
delete_parser.add_argument("-t", "--token", required=True, help="paste deletion token")
|
||||
## Connection options
|
||||
delete_parser.add_argument("-s", "--server", default=argparse.SUPPRESS, help="PrivateBin service URL (default: https://paste.i2pd.xyz/)")
|
||||
delete_parser.add_argument("-s", "--server", default=argparse.SUPPRESS, help="Instance URL (default: https://paste.i2pd.xyz/)")
|
||||
delete_parser.add_argument("-x", "--proxy", default=argparse.SUPPRESS, help="Proxy server address (default: None)")
|
||||
delete_parser.add_argument("--no-check-certificate", default=False, action="store_true", help="disable certificate validation")
|
||||
delete_parser.add_argument("--no-insecure-warning", default=False, action="store_true",
|
||||
@ -136,7 +136,7 @@ def main():
|
||||
CONFIG[key] = args_var[key]
|
||||
|
||||
# Re-validate PrivateBin instance URL
|
||||
CONFIG['server'] = validate_url(CONFIG['server'])
|
||||
CONFIG['server'] = validate_url_ending(CONFIG['server'])
|
||||
|
||||
api_client = PrivateBin(CONFIG)
|
||||
|
||||
|
@ -30,7 +30,15 @@ def json_encode(s):
|
||||
return json.dumps(s, separators=(',',':')).encode()
|
||||
|
||||
|
||||
def validate_url(s):
|
||||
def validate_url_ending(s):
|
||||
if not s.endswith('/'):
|
||||
s = s + "/"
|
||||
return s
|
||||
|
||||
def uri_validator(x):
|
||||
from urllib.parse import urlparse
|
||||
try:
|
||||
result = urlparse(x)
|
||||
return all([result.scheme, result.netloc])
|
||||
except:
|
||||
return False
|
Loading…
x
Reference in New Issue
Block a user