- ID scansione:
- 7098ca83-b581-44ef-aae1-8e1e41c8ef06Fatto
- URL inviato:
- https://trashbytes.co/
- Report terminato:
Link · 0 trovati
I link in uscita identificati dalla pagina
Variabili JavaScript · 15 trovate
Le variabili JavaScript globali caricate sull'oggetto finestra di una pagina sono variabili dichiarate all'esterno delle funzioni e accessibili da qualsiasi punto del codice nell'ambito corrente
Nome | Tipo |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
UploadManager | function |
htmx | object |
parseXHRError | function |
humanReadableSize | function |
copyTextToClipboard | function |
copyTextToClipboardFallback | function |
addFileToHistory | function |
Messaggi di log della console · 0 trovati
Messaggi registrati nella console Web
HTML
Il corpo HTML non elaborato della pagina
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<title>trashbytes.co</title>
<meta name="title" content="trashbytes.co">
<meta name="description" content="Simple fast anonymous file sharing for everyone.">
<meta name="application-name" content="trashbytes.co">
<script src="/xz.js?v=90b03060fddb0a8e141e84c34118d290d684badd-dirty" defer=""></script>
<link rel="stylesheet" href="/whysostylish.css?v=90b03060fddb0a8e141e84c34118d290d684badd-dirty">
<link rel="stylesheet" href="/icons.css?v=90b03060fddb0a8e141e84c34118d290d684badd-dirty">
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" defer=""></script>
<meta name="htmx-config" content="{"methodsThatUseUrlParams":["get"]}">
<style> .htmx-indicator{opacity:0} .htmx-request .htmx-indicator{opacity:1; transition: opacity 200ms ease-in;} .htmx-request.htmx-indicator{opacity:1; transition: opacity 200ms ease-in;} </style></head>
<body class="min-h-screen p-1.5" hx-ext="response-targets">
<div>
<p class="text-center text-3xl font-bold mt-1 mb-0">TRASHBYTES</p>
<p class="text-center mt-0">Motherfucking file hosting service</p>
</div>
<ul class="navbar text-center p-0 mb-7" hx-ext="preload">
<li>Index</li>
<li><a href="/speedtest" preload="mouseover">Speedtest</a></li>
<li><a href="/help" preload="mouseover">Help</a></li>
<li><a href="/developers" preload="mouseover">Developers</a></li>
<li><a href="/privacy" preload="mouseover">Privacy</a></li>
<li><a href="/terms" preload="mouseover">Terms</a></li>
<li><a href="/contact" preload="mouseover">Contact</a></li>
<li><a href="/account" preload="mouseover">Account</a></li>
</ul>
<div class="mx-auto max-w-[60rem]">
<p>trashbytes.co is a simple, fast and privacy-oriented file hosting provider.</p>
<div x-data="UploadManager()">
<div class="flex flex-col gap-2">
<div>
<label for="file-input"><input type="file" id="file-input" multiple=""></label>
<label>
Location
<select x-model="selectedLocation">
<option value="3eb9t1559lkv">Central Europe</option>
<option value="12brteedoy0f">Eastern US</option>
<option value="95542dt0et21">Western US</option>
</select>
</label>
<button id="upload-button" @click="upload($event)">Upload</button>
<button @click="showNote=true;" x-show="!showNote">Add Note</button>
<button @click="abort()" :disabled="queued.filter(t => t.status === 'inprogress').length === 0" disabled="disabled">Cancel</button>
<button @click="copyLinks()" :disabled="completed.length === 0" x-text="copyLinksButtonText" disabled="disabled">Copy links</button>
</div>
<label x-show="showNote" style="display: none;">
<textarea class="pt-1 border rounded-sm w-full sm:w-3/4" rows="1" maxlength="500" placeholder="Notes to display under the download link (e.g., file password, social handles)." x-model="note"> </textarea>
</label>
</div>
<ul x-show="queued.length || completed.length" class="ps-4" style="display: none;">
<template x-for="task in queued">
<li x-show="task.status !== 'completed'">
<div class="flex-col flex gap-1">
<span x-text="task.file.name" class="mt-2"></span>
<div class="progress">
<div class="progress-bar" :style="'width: ' + task.stats.progress + '%;'" :class="{'progress-bar-danger': task.error}"></div>
</div>
<div class="flex justify-between">
<span x-text="task.statsText" :class="{'text-danger': task.error}"></span>
<button x-show="task.status === 'inprogress'" @click="task.abort()">Cancel</button>
</div>
</div>
</li>
</template>
<template x-for="task in completed">
<li>
<a :href="task.link" x-text="`${task.file.name} - ${humanReadableSize(task.file.size)}`" target="_blank"></a>
</li>
</template>
</ul>
</div>
<script>
function UploadManager() {
return {
queued: [],
completed: [],
running: 0,
concurrency: 5,
copyLinksButtonText: 'Copy links',
selectedLocation: "3eb9t1559lkv",
note: '',
showNote: false,
get settings() {
return {
note: this.note,
baseUrl: "https:\/\/w.trashbytes.co",
directoryId: "",
locationId: this.selectedLocation,
}
},
upload() {
const fi = document.getElementById('file-input')
const files = Array.from(fi.files)
if (!files || files.length === 0) return
const findOne = files.filter(f => f.name.length > 500)
if (findOne.length) this.error = 'file name must not exceed more than 500 characters'
else {
for (const file of files) {
const mp = new Uploader(file, this.settings)
this.queued.push(Alpine.reactive(mp))
this.process()
}
}
fi.value = null
},
process() {
this.queued.forEach((task) => {
if (task.status === 'queued' && this.running < this.concurrency) {
this.running += 1
task.upload().finally(() => {
if (task.status === 'completed') {
this.completed.push(task)
}
this.running -= 1
this.process()
})
}
})
this.queued = this.queued.filter(task => task !== undefined)
},
abort() {
this.queued.forEach((task) => {
if (task.status !== 'aborted' || task.status !== 'completed') {
task.abort()
}
})
},
copyLinks() {
const links = []
this.completed.forEach(task => {
links.push(task.link)
})
copyTextToClipboard(links.join('\n'))
this.copyLinksButtonText = 'Links copied'
setTimeout(() => {
this.copyLinksButtonText = 'Copy links'
}, 500)
},
init() {
window.addEventListener('beforeunload', (e) => {
const foundOne = this.queued.findIndex(task => task.status !== 'completed')
if (foundOne !== -1) {
e.preventDefault()
e.returnValue = 'You have an ongoing upload. Are you sure you want to leave?'
return 'You have an ongoing upload. Are you sure you want to leave?'
}
})
},
}
}
</script>
<p>Files uploaded from here won't be saved to your account.</p>
<p>Our main features include</p>
<ul>
<li>It's fast.</li>
<li>No bloatware.</li>
<li>Size doesn't matter (file's).</li>
<li>No download speed caps.</li>
<li>Files will be kept forever as long as it was downloaded within the last 30 days.</li>
<li>Online previews for media files.</li>
<li>Doesn't track you - no logs who download who upload.</li>
</ul>
<p>We emphasize Privacy, Net Neutrality and Free Software.</p>
<p class="text-right">
<i>Malo periculosam libertatem quam quietum servitium.</i>
</p>
</div>
<div class="text-center text-danger mt-9">
<div id="flash"></div>
</div>
</body></html>