https://buzzheavier.com/

已提交的 URL:
https://buzzheavier.com/
報告完成時間:

連結 · 找到 1 個

JavaScript 變數 · 找到 13 個

主控台記錄訊息 · 找到 1 條

HTML

<!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>