https://buzzheavier.com/

Submitted URL:
https://buzzheavier.com/
Report Finished:

The outgoing links identified from the page

LinkText
https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExOGdqdWEwaDR5enB5bXYzdGt2YXRkb2ppMWN2M3o2OHpwdDJoY250MyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/7zSO56YSB0DhNvBUWt/giphy.gifuntil

JavaScript Variables · 13 found

Global JavaScript variables loaded on the window object of a page, are variables declared outside of functions and accessible from anywhere in the code within the current scope

NameType
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
uploadManagerfunction
Appfunction
htmxobject
humanReadableSizefunction
copyTextToClipboardfunction
copyTextToClipboardFallbackfunction
addFileToHistoryfunction

Console log messages · 1 found

Messages logged to the web console

TypeCategoryLog
errornetwork
URL
https://buzzheavier.com/favicon.ico
Text
Failed to load resource: the server responded with a status of 404 ()

HTML

The raw HTML body of the page

<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <meta content="width=device-width, initial-scale=1.0" name="viewport">
    <title>buzzheavier.com</title>
    <meta name="title" content="buzzheavier.com">
    <meta name="description" content="Simple fast anonymous file sharing for everyone.">
    <meta name="application-name" content="buzzheavier.com">
    <script src="/static/main.js?v=e3715aaba893b1fb6b95d87a8390cef71c9bb74a-dirty" defer=""></script>
    <script src="/static/exts.js?v=e3715aaba893b1fb6b95d87a8390cef71c9bb74a-dirty" defer=""></script>
    <link rel="stylesheet" href="/static/whysostylish.css?v=e3715aaba893b1fb6b95d87a8390cef71c9bb74a-dirty">
    <script src="https://challenges.cloudflare.com/turnstile/v0/api.js" defer=""></script>
    
<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" x-data="App()">

<div>
    <div>
        <p class="text-center text-4xl font-bold mt-1 mb-0">BUZZHEAVIER</p>
        <p class="text-center mt-0">Simple fast anonymous file sharing for everyone.</p>
    </div>
    <ul id="menu" class="text-center p-0 mb-7">
        <li>Index</li>
        
        <li><a href="/history">History</a></li>
        <li><a href="/help">Help</a></li>
        <li><a href="/developers">Developers</a></li>
        <li><a href="/mirrors">Mirrors</a></li>
        <li><a href="/privacy">Privacy</a></li>
        <li><a href="/terms">Terms</a></li>
        <li><a href="/contact">Contact</a></li>
        
            <li><a href="/login">Login</a></li>
        
    </ul>
    <div class="mx-auto max-w-[60rem]" hx-ext="response-targets">
        <div>
    <p>buzzheavier.com is a simple, fast and privacy-oriented file hosting provider.</p>

    <div x-data="uploadManager()">
        <label for="file-input"><input type="file" id="file-input" multiple=""></label>
        <label>
            Expiry
            <select x-model="selectedExpiry">
                <option value="">Never</option>
                <option value="3600">1 hour</option>
                <option value="43200">12 hours</option>
                <option value="86400">1 day</option>
                <option value="259200">3 days</option>
                <option value="604800">7 days</option>
                <option value="2592000">30 days</option>
            </select>
        </label>
        <button id="upload-button" @click="upload($event)">Upload</button>
        <button @click="abort()" :disabled="queued.filter(t => t.status === 'inprogress').length === 0" disabled="disabled">Cancel</button>
        <button class="copy" @click="copyLinks()" :disabled="completed.length === 0" disabled="disabled">Copy links</button>

        <ul>
            <template x-for="task in queued">
                <li x-show="task.status !== 'completed'">
                    <div class="flex-col flex">
                        <span x-text="task.file.name" class="mt-2"></span>
                        <div class="progress">
                            <div class="progress-bar gay-background" :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>
        <p>Files uploaded from here won't be saved to your account.</p>
    </div>

    <p>Our main features include</p>
    <ul>
        <li>It's fast. (not really)</li>
        <li>No bloatware.</li>
        <li>No file size limits.</li>
        <li>Keep your file forever. (or
            <a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExOGdqdWEwaDR5enB5bXYzdGt2YXRkb2ppMWN2M3o2OHpwdDJoY250MyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/7zSO56YSB0DhNvBUWt/giphy.gif">until</a>)
        </li>
        <li>No download speed caps.</li>
        <li>Doesn't track you - no logs who download who upload.</li>
    </ul>
    <div>
        
            <p>
                <span>Account - </span> <a href="/login">Login</a> / <a href="/login">Signup</a>
            </p>
        
    </div>

    <p>We emphasize Privacy, Net Neutrality and Free Software.</p>
    <p class="text-right">
        <i>Malo periculosam libertatem quam quietum servitium.</i>
    </p>
</div>

<script>
    function uploadManager() {
        return {
            queued: [],
            completed: [],
            running: 0,
            concurrency: 5,
            uploadUrl: 'https:\/\/w.buzzheavier.com',
            selectedExpiry: null,
            get expiry() {
                const expiry = parseInt(this.selectedExpiry, 10)
                if (isNaN(expiry) || !isFinite(expiry)) return false
                return expiry
            },
            get settings() {
                return {
                    expiry: this.expiry,
                    directoryId: null,
                    baseUrl: this.uploadUrl,
                }
            },
            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 > 200)
                if (findOne.length) this.error = "file name must not exceed more than 200 characters"
                else {
                    for (const file of files) {
                        const mp = new Uploader(file, this.settings, false)
                        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)
                                if (!this.expiry) {
                                    addFileToHistory({id: task.id, name: task.file.name, size: humanReadableSize(task.file.size)})
                                }
                            }
                            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'))
            },
            init() {
                window.addEventListener('beforeunload', (e) => {
                    const foundOne = this.queued.findIndex(task => task.status === "inprogress")
                    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?';
                    }
                });
            }
        }
    }

    function App() {
        return {
            
        };
    }
</script>

    </div>
</div>
<div class="text-center text-danger mt-9">
    <div id="flash"></div>
</div>

<script>if (!this.App) this.App = () => ({});</script>
<script defer="" src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{&quot;rayId&quot;:&quot;8d801dd52a11384a&quot;,&quot;version&quot;:&quot;2024.10.3&quot;,&quot;serverTiming&quot;:{&quot;name&quot;:{&quot;cfExtPri&quot;:true,&quot;cfL4&quot;:true,&quot;cfSpeedBrain&quot;:true,&quot;cfCacheStatus&quot;:true}},&quot;token&quot;:&quot;c1361d0ed928439489c7829da1f19fac&quot;,&quot;b&quot;:1}" crossorigin="anonymous"></script>


</body></html>