# 2024.11.13 - [up_pixeldrain] Add pixeldrain as an upload host

# 2024.11.13 - [mad] Add pixeldrain apikey section to allow pd uploads
# 2024.11.13 - [up_filesquid] Add "No password nor allowed IP" response handling
This commit is contained in:
kittykat 2024-11-13 08:34:53 +00:00
parent 3049b3e305
commit 1e93af9b45
Signed by: kittykat
GPG key ID: E3F1556620F70C3C
5 changed files with 217 additions and 42 deletions

View file

@ -7,6 +7,7 @@ Max Size . HostCode . Nickname . Notes
300GB 1f 1fichier.com 15d expiry free accounts
300GB fh filehaus.top (.su) ?? expiry
20GB rz ranoz.gg ?? expiry
20GB pd pixeldrain 120d expiry
10GB gofile gofile.io ?? expiry
10GB tmpme tempfile.me 3mo expiry (tend to ban 7z faster)
5GB uhive uploadhive

42
hosts/up_filesquid.sh Executable file → Normal file
View file

@ -1,6 +1,6 @@
#! Name: up_filesquid.sh
#! Author: kittykat
#! Version: 2024.10.23
#! Version: 2024.11.13
#! Desc: Add support for uploading files to filesquid.net
#! Info: Files are accessible at https://address/f.php?h=<file_code>&p=1
#! MaxSize: 5GB
@ -95,18 +95,34 @@ squid_PostFile() {
local pline=${7}
UploadTicket="${WorkDir}/.flocks/upload_${_hostCode}_${filepath//[^a-zA-Z0-9]/}"
echo -e "[${YELLOW}${_hostCode}${NC}] Uploading ${GREEN}${filename}${NC}"
tor_identity="${RANDOM}"
PostUrlHost='https://filesquid.net/script.php'
arrFiles=("$filepath")
trap "rm -f ${UploadTicket}; echo ""; tput cnorm; exit" 0 1 2 3 6 15
response=$(tor_curl_upload --insecure -i \
-H "Content-Type: multipart/form-data" \
-F "time=month" \
-F "file=@${filepath}" \
"${PostUrlHost}")
if [ "${DebugAllEnabled}" == "true" ] ; then
debugHtml "${filepath##*/}" "${_hostCode}_upload" "post_url: ${PostUrlHost}"$'\n'"${response}"
fi
maxretries=4
for ((i=1; i<=$maxretries; i++)); do
tor_identity="${RANDOM}"
PostUrlHost='https://filesquid.net/script.php'
arrFiles=("$filepath")
trap "rm -f ${UploadTicket}; echo ""; tput cnorm; exit" 0 1 2 3 6 15
response=$(tor_curl_upload --insecure -i \
-H "Content-Type: multipart/form-data" \
-F "time=month" \
-F "file=@${filepath}" \
"${PostUrlHost}")
if [ "${DebugAllEnabled}" == "true" ] ; then
debugHtml "${filepath##*/}" "${_hostCode}_upload" "post_url: ${PostUrlHost}"$'\n'"${response}"
fi
if grep -Eqi 'No password nor allowed IP' <<< "$response"; then
if ((i >= maxretries)) ; then
echo -e "${RED}| Upload failed. No password nor allowed IP.${NC}"
failedRetryUpload "$pline" "${filepath}" "${_hostCode}" "Failed to upload file" "No password nor allowed IP."
exitUploadError=true
return 1
else
echo -n "${YELLOW}No password nor allowed IP${NC} (retry)..."
continue
fi
else
break
fi
done
if grep -Eqi ' 200 ' <<< "${response}" ; then
hash=$(echo "$response" | tail -2 | head -1)
hash=${hash//[$'\t\r\n']}

165
hosts/up_pixeldrain.sh Normal file
View file

@ -0,0 +1,165 @@
#! Name: up_pixeldrain.sh
#! Author: kittykat
#! Version: 2024.11.13
#! Desc: Add support for uploading files to pixeldrain.com
#! Info: Files are accessible at https://pixeldrain.com/u/<file_code>
#! MaxSize: 20GB
#! Expire: 120d expiry
#! Usage: Copy this file into the ./${ScriptDir}/hosts/ folder
#!
#!
#! ------------ REQUIRED SECTION ---------------
#! @[UPDATE] ListUploadHosts: This string is loaded into mad.sh and allows dynamic handling of new url data
#! Format: '/HostCode/HostNick/HostFuncPrefix@'
#! HostCode: <aUniqueCodeForHost> (ie. 'fh' for filehaus -- cannot be used by other hosts)
#! HostNick: What is displayed throughout MAD output
#! HostFuncPrefix: <aUniqueStringThatMustPrefixHostFunctions> ie. 'fh' -- fh_UploadFile()
#! * Note: Must begin with a letter a-z (functions beginning with numbers are no bueno)
HostCode='pd'
HostNick='pixeldrain'
HostFuncPrefix='pd'
#!
#! !! DO NOT UPDATE OR REMOVE !!
#! This merges the Required HostAndDomainRegexes into mad.sh
ListUploadHosts=${ListUploadHosts}'/'${HostCode}'/'${HostNick}'/'${HostFuncPrefix}'@'
#!
#!
#! Configurables
#! -------------
#!
#! ------------ (1) Host Main Upload Function --------------- #
#!
#! @REQUIRED: Host Main Upload function
#! Must be named specifically as such:
#! <HostFuncPrefix>_UploadFile()
pd_UploadFile() {
local _hostCode=${1}
local filepath=${2}
local filecnt=${3}
local pline=${4}
local filename="${filepath##*/}"
warnAndRetryUnknownError=false
exitUploadError=false
exitUploadNotAvailable=false
fileAlreadyDone=false
tor_identity="${RANDOM}"
UploadTicket="${WorkDir}/.flocks/upload_${_hostCode}_${filepath//[^a-zA-Z0-9]/}"
MaxUploadSizeInBytes=21474836480
fsize=$(GetFileSize "$filepath" "false")
if ((fsize > MaxUploadSizeInBytes)); then
m -f "${UploadTicket}"
echo -e "${YELLOW}| SKIP${NC}: The size of $filename is to large for $_hostCode. ($fsize > $MaxUploadSizeInBytes)"
failedUpload "$pline" "${filepath}" "${_hostCode}" "Skipping upload. The size of $filename is to large for $_hostCode. ($fsize > $MaxUploadSizeInBytes)"
return 1
fi
if [ -z "$RandomPdKey" ]; then
printf "\\n"
echo -e "${RED}| No Api Key provided in config.${NC}"
failedRetryUpload "$pline" "${filepath}" "${_hostCode}" "Upload failed." "No Api key."
exitUploadError=true
return 1
fi
finalAttempt="false"
for ((z=0; z<=$MaxUploadRetries; z++)); do
if [ $z -eq $MaxUploadRetries ] ; then
finalAttempt="true"
fi
trap "rm -f "${UploadTicket}"; echo ""; tput cnorm; exit" 0 1 2 3 6 15
if pd_PostFile "${filepath}" "${_hostCode}" "${filename}" "${filecnt}" $((z+1)) $finalAttempt $pline ; then
return 0
elif [ $z -lt $MaxUploadRetries ]; then
if [ "${fileAlreadyDone}" == "true" ] ; then
break
fi
if [[ "${warnAndRetryUnknownError}" == "true" ]] ; then
if [ "${DebugAllEnabled}" == "true" ] ; then
debugHtml "${filepath##*/}" "error" "Retry due to an unknown issue: attempt #$((z+1)) of ${MaxUploadRetries}"
fi
fi
if [[ "${exitUploadError}" == "true" || "${exitUploadNotAvailable}" == "true" ]] ; then
if [ "${DebugAllEnabled}" == "true" ] ; then
debugHtml "${filepath##*/}" "error" "Exit due to unrecoverable issue"
fi
rm -f "${UploadTicket}"
break
fi
echo -e "\n${YELLOW}A recoverable error occurred, retry attempt $((z+1))/${MaxUploadRetries}${NC}"
sleep 3
fi
done
rm -f "${UploadTicket}"
}
#!
#! ----------- (2) Post File / Upload File Function --------------- #
#!
pd_PostFile() {
local filepath=$1
local _hostCode=$2
local filename=$3
local fileCnt=$4
local retryCnt=$5
local finalAttempt=$6
local pline=${7}
UploadTicket="${WorkDir}/.flocks/upload_${_hostCode}_${filepath//[^a-zA-Z0-9]/}"
echo -e "[${YELLOW}${_hostCode}${NC}] Uploading ${GREEN}${filename}${NC}"
for ((i=1; i<=10; i++)); do
tor_identity="${RANDOM}"
PostUrlHost='https://pixeldrain.com/api/file'
arrFiles=("$filepath")
trap "rm -f ${UploadTicket}; echo ""; tput cnorm; exit" 0 1 2 3 6 15
GetRandomPdKey
apikey="$RandomPdKey"
apikey_enc=$(echo -n ":$apikey" | base64)
response=$(tor_curl_upload --insecure -i \
-H "Authorization: Basic $apikey_enc" \
"${PostUrlHost}" \
-F "file=@$filepath")
if [ "${DebugAllEnabled}" == "true" ] ; then
debugHtml "${filepath##*/}" "${_hostCode}_upload" "post_url: ${PostUrlHost}"$'\n'"apikey: ${apikey}"$'\n'"${response}"
fi
if grep -Eqi '"success":false,"value":"ip_banned"' <<< "$response"; then
echo -n "${YELLOW}Banned IP${NC} (retry)..."
continue
else
break
fi
if grep -Eqi '"success":false,"value":"authentication_failed"' <<< "$response"; then
printf "\\n"
echo -e "${RED}| Upload failed. Invalid Api key ($apikey)${NC}"
failedRetryUpload "$pline" "${filepath}" "${_hostCode}" "Upload failed." "Invalid Api key ($apikey)"
exitUploadError=true
return 1
fi
done
if grep -Eqi '"success":true,"id":"' <<< "${response}" ; then
hash=$(grep -oPi '(?<="success":true,"id":").*?(?=".*$)' <<< "$response")
filesize=$(GetFileSize "$filepath" "false")
downloadLink="https://pixeldrain.com/u/${hash}"
echo -e "${GREEN}| Upload Success${NC}"
echo -e "| Size: ${BLUE}${filesize}${NC} bytes${NC}"
echo -e "| Link: ${YELLOW}${downloadLink}${NC}"
successUpload "$pline" "${filepath}" "${_hostCode}" "${filesize}" "${downloadLink}" "{$response}"
return 0
else
err=$(grep -oPi '(?<="success":false,"value":").*?(?=".*$)' <<< "$response")
if [ "${finalAttempt}" == "true" ] ; then
printf "\\n"
echo -e "${RED}| Upload failed. Error: ${err}${NC}"
failedRetryUpload "$pline" "${filepath}" "${_hostCode}" "Failed to upload file" "Error: $err"
exitUploadError=true
return 1
else
return 1
fi
fi
}
#!
#! --------------- Host Extra Functions ------------------- #
#!
GetRandomPdKey() {
arrSize=${#ar_pdKey[@]}
index=$(($RANDOM % $arrSize))
RandomPdKey=${ar_pdKey[$index]}
}
#! Initialize ar_pdKey and get a random key
GetRandomPdKey

50
mad.sh
View file

@ -31,9 +31,12 @@
# * klonkerz - feedback and suggestions, url only processing
# * Everyone who provided feedback and helped test.. and those who wish to remain anonymous
ScriptVersion=2024.11.12
ScriptVersion=2024.11.13
#=================================================
# Recent Additions
# 2024.11.13 - [up_pixeldrain] Add pixeldrain as an upload host
# 2024.11.13 - [mad] Add pixeldrain apikey section to allow pd uploads
# 2024.11.13 - [up_filesquid] Add "No password nor allowed IP" response handling
# 2024.11.12 - [mad] Fix uploads.txt status marking (urls / messages) containg '&' chars
# 2024.11.12 - [up_torup] Max upload filesize changed to 150MB
# 2024.11.12 - [up_uploadee] Add upload.ee as an upload host
@ -75,29 +78,6 @@ ScriptVersion=2024.11.12
# 2024.10.17 - [dailyuploads] Add recaptcha detection and abort (js required)
# * Working on possible PJSCloud solution
# 2024.10.16 - [mad] Remove tor_curl_upload duplicate connect-timeout (thanks PeachX)
# 2024.10.14 - [pjscloud] Create pjscloud.sh plugin -- use PhantomJSCloud to get a response from a url
# * Change pixeldrain ViewPump to use pjscloud.sh plugin. (default enabled)
# * Testing usage on other javascript required response hosts (ie. daily, hexload)
# 2024.10.13 - [hexload] Add detection of new download2 type: Wait x seconds to create download link
# * Add detection of download2b type loop (still working on solution, exit loop for now)
# 2024.10.13 - [ocr_captcha] Add tessdata_type: NUMBERONLY, ALPHAONLY, ALPHANUMERIC, and not specified
# 2024.10.12 - [mad] Alternate with nohead function on direct download for hosts that do not allow head
# 2024.10.12 - [turboonion/up_turboonion] Add turbo.onion as an upload and download host
# 2024.10.12 - [tempfileme/up_tempfileme] Add tempfile.me as upload and download host
# 2024.10.11 - [tempsh/up_tempsh] Add temp.sh as upload and download host
# 2024.10.10 - [mad] Add cleanup of input file on processing (remove trailing whitespace)
# 2024.10.08 - [_audit] Add _audit.sh in release bundle which creates mad-audit-*.log for http/curl calls
# * ./_audit.sh
# 2024.10.07 - [mad] Add mad audit. Prints all lines that use http, curl, tor_curl in script files
# * Displays color hightlighted, file, line #, and matches in scripts.
# * ./mad.sh audit
# 2024.10.06 - [1fichier] Add new removal response "..file has been deleted following a notification .."
# 2024.10.06 - [mad] Update direct download no response processing to fail / retry
# 2024.10.05 - [dailyuploads] Fix head request, filename fallback, and add head retries
# 2024.10.05 - [dailyuploads] Add wrong captcha response
# 2024.10.04 - Add README-uploads.txt in ./documentation (cheat sheet of hosts, retention, max size)
# 2024.10.02 - [up_kouploader] Add kouploader.jp as upload host (240MB node)
# 2024.10.01 - [up_axfc] Add axfc.net as upload host
# -- See ./documentation/!Changelog (Historical).txt for further changes -- #
@ -305,11 +285,23 @@ ar_fdUP[0]="user1|pass1"
# - Setup free accounts: https://files.offshore.cat/register (use any username/pass - not verified)
# - Get apikey: https://files.offshore.cat/dashboard/account (use login created above)
# - The accounts are randomly selected for every download.
ar_oscKey[0]="CJZaU3yCQXZrozRmgXOLHjKqP1bbqbvEbJgOZig53WRgEHFHRTh5kIbEWbhEdyLq" # Shared general
#ar_oscKey[1]="apikey" # Uncomment line to use a 2nd
#ar_oscKey[2]="apikey" # Uncomment line to use a 3rd
#ar_oscKey[3]="apikey" # Uncomment line to use a 4th
#ar_oscKey[4]="apikey" # Uncomment line to use a 5th
ar_oscKey[0]='CJZaU3yCQXZrozRmgXOLHjKqP1bbqbvEbJgOZig53WRgEHFHRTh5kIbEWbhEdyLq' # Shared general
#ar_oscKey[1]='apikey' # Uncomment line to use a 2nd
#ar_oscKey[2]='apikey' # Uncomment line to use a 3rd
#ar_oscKey[3]='apikey' # Uncomment line to use a 4th
#ar_oscKey[4]='apikey' # Uncomment line to use a 5th
# [pixeldrain.com Upload ApiKeys]
# ! If you wish to use pixeldrain uploading, you must create an account and get an apikey (or use the general public
# one shared here.
# - Setup free accounts:https://pixeldrain.com/register (use any username/pass - not verified)
# - Get apikey: https://pixeldrain.com/user/api_keys (use login created above)
# - The accounts are randomly selected for every download.
ar_pdKey[0]='6a7c5c4e-aeb4-45ab-a11b-96799da02922' # Shared general
#ar_pdKey[1]='apikey' # Uncomment line to use a 2nd
#ar_pdKey[2]='apikey' # Uncomment line to use a 3rd
#ar_pdKey[3]='apikey' # Uncomment line to use a 4th
#ar_pdKey[4]='apikey' # Uncomment line to use a 5th
# [PhantomJS Keys]: pjscloud.sh plugin
# ! Required for pixeldrain ViewPump and pjscloud functionality (enable / disable each in the pjscloud.sh file)

View file

@ -12,6 +12,7 @@
# 10GB raja uploadraja.com 240MB ko kouploader.jp 4GB tmpsh temp.sh
# 10GB tmpme tempfile.me 300MB trbo turbo.onion 100MB inno innocent.onion
# 1GB ansh anonsharing.com 1GB torp TorUp.onion 4GB offcat offshore.cat
# 20GB pd pixeldrain
# ?? fr4e sendfree4e.fr ?? harr harrault.fr ?? acid dl.acid.fr
# (Require js -- do not use)
# 4GB daily dailyuploads 1GB kraken krakenfiles 2GB hex hexload