add cloudsend
This commit is contained in:
98
cloudsend.py
Executable file
98
cloudsend.py
Executable file
@@ -0,0 +1,98 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import argparse
|
||||||
|
import logging
|
||||||
|
import owncloud
|
||||||
|
import gnupg
|
||||||
|
import os
|
||||||
|
import requests
|
||||||
|
import re
|
||||||
|
from icecream import ic
|
||||||
|
|
||||||
|
|
||||||
|
def isurl(text):
|
||||||
|
pattern = 'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
|
||||||
|
matcher = re.compile(pattern)
|
||||||
|
return matcher.match(text)
|
||||||
|
|
||||||
|
def upload(file,url):
|
||||||
|
try:
|
||||||
|
oc = owncloud.Client.from_public_link(args.url)
|
||||||
|
ic(oc)
|
||||||
|
response = oc.drop_file(fn)
|
||||||
|
ic(response)
|
||||||
|
return response
|
||||||
|
except owncloud.owncloud.HTTPResponseError as e:
|
||||||
|
logging.error(f'Error while uploading file {fn} <{e}>')
|
||||||
|
|
||||||
|
def upload_rq(file,url):
|
||||||
|
CLOUDURL=""
|
||||||
|
FOLDERTOKEN=""
|
||||||
|
|
||||||
|
# FILENAME="$1"
|
||||||
|
|
||||||
|
# CLOUDURL=''
|
||||||
|
# # if we have index.php in the URL, process accordingly
|
||||||
|
# if [[ $2 == *"index.php"* ]]; then
|
||||||
|
# CLOUDURL="${2%/index.php/s/*}"
|
||||||
|
# else
|
||||||
|
# CLOUDURL="${2%/s/*}"
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# FOLDERTOKEN="${2##*/s/}"
|
||||||
|
# -T "$FILENAME" -u "$FOLDERTOKEN":"$PASSWORD" -H "$HEADER" "$CLOUDURL/$PUBSUFFIX/$BFILENAME"
|
||||||
|
# if [ ! -f "$FILENAME" ]; then
|
||||||
|
# initError "Invalid input file: $FILENAME"
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# if [ -z "$CLOUDURL" ]; then
|
||||||
|
# initError "Empty URL! Nowhere to send..."
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# if [ -z "$FOLDERTOKEN" ]; then
|
||||||
|
# initError "Empty Folder Token! Nowhere to send..."
|
||||||
|
# fi
|
||||||
|
|
||||||
|
|
||||||
|
PUBSUFFIX="public.php/webdav"
|
||||||
|
HEADER='X-Requested-With: XMLHttpRequest'
|
||||||
|
INSECURE=''
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
'X-Requested-With': 'XMLHttpRequest',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
response = requests.put('https://nextcloud.exampyocclientple.com/public.php/webdav/testfile.txt', headers=headers, verify=args.insecure, auth=('AtAxVrKorgC5YJf', ''))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("-k","--insecure",action="store_false")
|
||||||
|
parser.add_argument("-x","--encryption",action="store",default=None,const='*',nargs="?",type=str)
|
||||||
|
parser.add_argument("url")
|
||||||
|
parser.add_argument("file",nargs="+")
|
||||||
|
args=parser.parse_args()
|
||||||
|
|
||||||
|
if args.encryption is not None:
|
||||||
|
ic(args.encryption)
|
||||||
|
|
||||||
|
if not isurl(args.url):
|
||||||
|
logging.warning(f"URL '{args.url}' is not valid")
|
||||||
|
|
||||||
|
ic(args)
|
||||||
|
for fn in args.file:
|
||||||
|
ic(os.path.isdir(fn))
|
||||||
|
ic(os.path.isfile(fn))
|
||||||
|
if os.path.isdir(fn):
|
||||||
|
logging.warning("Foldersupport not implemented yet")
|
||||||
|
continue
|
||||||
|
if upload(fn,args.url):
|
||||||
|
logging.info(f"{fn} successfully uploaded")
|
||||||
|
else:
|
||||||
|
logging.warning(f"Error uploading {fn}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
151
cloudsend.sh
Executable file
151
cloudsend.sh
Executable file
@@ -0,0 +1,151 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
############################################################
|
||||||
|
# MIGRATED TO REPOSITORY
|
||||||
|
# https://github.com/tavinus/cloudsend.sh
|
||||||
|
#
|
||||||
|
# This gist will NOT be updated anymore
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
#
|
||||||
|
# cloudsend.sh
|
||||||
|
#
|
||||||
|
# Uses curl to send files to a shared
|
||||||
|
# Nextcloud/Owncloud folder
|
||||||
|
#
|
||||||
|
# Usage: ./cloudsend.sh <file> <folderLink>
|
||||||
|
# Help: ./cloudsend.sh -h
|
||||||
|
#
|
||||||
|
# Gustavo Arnosti Neves
|
||||||
|
# https://github.com/tavinus
|
||||||
|
#
|
||||||
|
# Contributors:
|
||||||
|
# @MG2R @gessel
|
||||||
|
#
|
||||||
|
# Get this script to current folder with:
|
||||||
|
# curl -O 'https://raw.githubusercontent.com/tavinus/cloudsend.sh/master/cloudsend.sh' && chmod +x cloudsend.sh
|
||||||
|
#
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
|
||||||
|
CS_VERSION="0.1.6"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# https://cloud.mydomain.net/s/fLDzToZF4MLvG28
|
||||||
|
# curl -k -T myFile.ext -u "fLDzToZF4MLvG28:" -H 'X-Requested-With: XMLHttpRequest' https://cloud.mydomain.net/public.php/webdav/myFile.ext
|
||||||
|
|
||||||
|
log() {
|
||||||
|
[ "$VERBOSE" == " -s" ] || printf "%s\n" "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
printVersion() {
|
||||||
|
printf "%s\n" "CloudSender v$CS_VERSION"
|
||||||
|
}
|
||||||
|
|
||||||
|
initError() {
|
||||||
|
printVersion >&2
|
||||||
|
printf "%s\n" "Init Error! $1" >&2
|
||||||
|
printf "%s\n" "Try: $0 --help" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
printVersion
|
||||||
|
printf "\n%s%s\n" "Parameters:" "
|
||||||
|
-h | --help Print this help and exits
|
||||||
|
-q | --quiet Be quiet
|
||||||
|
-x | --encrypt Encrypt Upload with Password
|
||||||
|
-V | --version Prints version and exits
|
||||||
|
-k | --insecure Uses curl with -k option (https insecure)
|
||||||
|
-p | --password Uses env var \$CLOUDSEND_PASSWORD as share password
|
||||||
|
You can 'export CLOUDSEND_PASSWORD' at your system, or set it at the call.
|
||||||
|
Please remeber to also call -p to use the password set."
|
||||||
|
printf "\n%s\n%s\n%s\n" "Use:" " $0 <filepath> <folderLink>" " CLOUDSEND_PASSWORD='MySecretPass' $0 -p <filepath> <folderLink>"
|
||||||
|
printf "\n%s\n%s\n%s\n" "Example:" " $0 './myfile.txt' 'https://cloud.mydomain.net/s/fLDzToZF4MLvG28'" " CLOUDSEND_PASSWORD='MySecretPass' $0 -p './myfile.txt' 'https://cloud.mydomain.net/s/fLDzToZF4MLvG28'"
|
||||||
|
}
|
||||||
|
|
||||||
|
##########################
|
||||||
|
# Process parameters
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "-V" ] || [ "$1" = "--version" ]; then
|
||||||
|
printVersion
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "-q" ] || [ "$1" = "--quiet" ]; then
|
||||||
|
VERBOSE=" -s"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "-k" ] || [ "$1" = "--insecure" ]; then
|
||||||
|
INSECURE=' -k'
|
||||||
|
log " > Insecure mode ON"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "-p" ] || [ "$1" = "--password" ]; then
|
||||||
|
PASSWORD=${CLOUDSEND_PASSWORD}
|
||||||
|
log " > Using password from env"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
# Validate input
|
||||||
|
|
||||||
|
FILENAME="$1"
|
||||||
|
|
||||||
|
CLOUDURL=''
|
||||||
|
# if we have index.php in the URL, process accordingly
|
||||||
|
if [[ $2 == *"index.php"* ]]; then
|
||||||
|
CLOUDURL="${2%/index.php/s/*}"
|
||||||
|
else
|
||||||
|
CLOUDURL="${2%/s/*}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
FOLDERTOKEN="${2##*/s/}"
|
||||||
|
|
||||||
|
if [ ! -f "$FILENAME" ]; then
|
||||||
|
initError "Invalid input file: $FILENAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$CLOUDURL" ]; then
|
||||||
|
initError "Empty URL! Nowhere to send..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$FOLDERTOKEN" ]; then
|
||||||
|
initError "Empty Folder Token! Nowhere to send..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
# Check for curl
|
||||||
|
|
||||||
|
CURLBIN='/usr/bin/curl'
|
||||||
|
if [ ! -x "$CURLBIN" ]; then
|
||||||
|
CURLBIN="$(which curl 2>/dev/null)"
|
||||||
|
if [ ! -x "$CURLBIN" ]; then
|
||||||
|
initError "No curl found on system!"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
# Extract base filename
|
||||||
|
|
||||||
|
BFILENAME=$(/usr/bin/basename $FILENAME)
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
# Send file
|
||||||
|
|
||||||
|
#echo "$CURLBIN"$INSECURE$VERBOSE -T "$FILENAME" -u "$FOLDERTOKEN":"$PASSWORD" -H "$HEADER" "$CLOUDURL/$PUBSUFFIX/$BFILENAME"
|
||||||
|
"$CURLBIN"$INSECURE$VERBOSE -T "$FILENAME" -u "$FOLDERTOKEN":"$PASSWORD" -H "$HEADER" "$CLOUDURL/$PUBSUFFIX/$BFILENAME"
|
||||||
Reference in New Issue
Block a user