fix(extractor): don't fail for HubDrive if HubCloud link is missing
This commit is contained in:
parent
373c6c1d4c
commit
557efd2079
4 changed files with 522 additions and 2 deletions
|
|
@ -22,4 +22,8 @@ describe('HubDrive', () => {
|
|||
test('handle avatar', async () => {
|
||||
expect(await extractorRegistry.handle(ctx, new URL('https://hubdrive.space/file/7283903021'))).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('handle missing hubcloud', async () => {
|
||||
expect(await extractorRegistry.handle(ctx, new URL('https://hubdrive.space/file/2243124026'))).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -31,8 +31,10 @@ export class HubDrive extends Extractor {
|
|||
const html = await this.fetcher.text(ctx, url, { headers });
|
||||
const $ = cheerio.load(html);
|
||||
|
||||
const hubCloudUrl = new URL($('a:contains("HubCloud")').attr('href') as string);
|
||||
const hubCloudUrl = $('a:contains("HubCloud")')
|
||||
.map((_i, el) => new URL($(el).attr('href') as string))
|
||||
.get(0);
|
||||
|
||||
return this.hubCloud.extract(ctx, hubCloudUrl, meta);
|
||||
return hubCloudUrl ? this.hubCloud.extract(ctx, hubCloudUrl, meta) : [];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
512
src/extractor/__fixtures__/HubDrive/https:hubdrive.spacefile2243124026
generated
Normal file
512
src/extractor/__fixtures__/HubDrive/https:hubdrive.spacefile2243124026
generated
Normal file
|
|
@ -0,0 +1,512 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta name='admaven-placement' content=BrHCGpjC9>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="googlebot" content="noindex,nofollow">
|
||||
<meta name="referrer" content="no-referrer"/>
|
||||
<meta name="referrer" content="none"/>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta property="og:image" content="/assets/img/favicon.png">
|
||||
<meta property="og:type" content="website"/>
|
||||
<meta name="author" content="HubDrive">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="googlebot" content="noindex,nofollow">
|
||||
<title>HubDrive | Back.to.the.Future.Part.III.1990.1080p.BluRay.Hindi.English.DD.5.1.x264.ESubs.Untouched.mkv</title>
|
||||
<!-- Custom fonts for this template-->
|
||||
<script src="https://cdn.jsdelivr.net/clipboard.js/1.5.12/clipboard.min.js"></script>
|
||||
<script src="https://unpkg.com/sweetalert@2.1.2/dist/sweetalert.min.js"></script>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
||||
<script async="async" type="text/javascript" src="/assets/js/neodrivev2.5.min.js?v=3"></script>
|
||||
<script src="https://use.fontawesome.com/746f656c7a.js"></script>
|
||||
<link href="/assets/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||||
<link href="/assets/css/sb-admin-2.css" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
|
||||
<link rel="icon" href="/assets/img/favicon.png">
|
||||
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100829" src="https://sads.adsboosters.xyz/801bbfc2f5f34af99c45dabeb76aa5ef.js"></script>
|
||||
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader101495" src="https://sads.adsboosters.xyz/df182342f761a3795c0c8cfad378c7a4.js"></script>
|
||||
<div class="clever-core-ads-100829></div>
|
||||
<div class="clever-core-ads-101495></div>
|
||||
|
||||
<style>
|
||||
h4, .h4 {
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
.table {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
#sticky-footer2 {
|
||||
display: none !important;
|
||||
}
|
||||
.Blink {
|
||||
animation: blinker 0.3s cubic-bezier(.5, 0, 1, 1) infinite alternate;
|
||||
}
|
||||
@keyframes blinker {
|
||||
from { opacity: 1; }
|
||||
to { opacity: 0; }
|
||||
}
|
||||
.sidebar .sidebar-brand {
|
||||
font-size: .65rem;
|
||||
}
|
||||
.sidebar .nav-item .nav-link span {
|
||||
color: #fff !important;
|
||||
}
|
||||
.sidebar .sidebar-brand i {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.bg-white {
|
||||
background-color: #171717!important;
|
||||
}
|
||||
.container, .container-fluid {
|
||||
background-color: transparent !IMPORTANT;
|
||||
}
|
||||
.card-header {
|
||||
background-color: transparent;
|
||||
}
|
||||
#wrapper #content-wrapper #content {
|
||||
background-color: transparent !IMPORTANT;
|
||||
}
|
||||
#wrapper #content-wrapper {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.text-primary {
|
||||
color: rgb(130, 182, 255) !important;
|
||||
}
|
||||
.card-body {
|
||||
background-color: transparent !IMPORTANT;
|
||||
}
|
||||
.card {
|
||||
background-color: transparent;
|
||||
border: 2px solid rgb(49, 49, 49);
|
||||
}
|
||||
.table {
|
||||
color: rgb(217, 217, 217);
|
||||
}
|
||||
.bg-gradient-primary {
|
||||
background-image: linear-gradient(180deg,rgb(0, 28, 67)10%,rgb(0, 28, 67) 100%);
|
||||
}
|
||||
.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link {
|
||||
color: rgb(130, 182, 255);
|
||||
background-color: rgb(0, 28, 67);
|
||||
}
|
||||
footer.sticky-footer {
|
||||
border: 2px solid rgb(49, 49, 49);
|
||||
}
|
||||
.navbar {
|
||||
border-bottom: 2px solid hsl(213deg 69.03% 35.03% / 68%);
|
||||
border-radius: 5px;
|
||||
}
|
||||
.btn-primary {
|
||||
background-color: rgb(0 63 151);
|
||||
font-weight: 600;
|
||||
}
|
||||
.text-gray-800 {
|
||||
color: rgb(130, 182, 255);
|
||||
}
|
||||
.card-file{
|
||||
color: rgb(217, 217, 217);
|
||||
}
|
||||
.h5 {
|
||||
color:rgb(130, 182, 255) !Important;
|
||||
}
|
||||
hr {
|
||||
border: 1px solid rgb(255 255 255 / 23%);
|
||||
}
|
||||
.text-gray-400 {
|
||||
color: rgb(130, 182, 255) !important;
|
||||
}
|
||||
|
||||
.text-gray-500 {
|
||||
color: rgb(130, 182, 255) !important;
|
||||
}
|
||||
|
||||
.text-gray-600 {
|
||||
color: rgb(130, 182, 255) !important;
|
||||
}
|
||||
|
||||
.text-gray-700 {
|
||||
color: rgb(130, 182, 255) !important;
|
||||
}
|
||||
|
||||
.text-gray-800 {
|
||||
color: rgb(130, 182, 255) !important;
|
||||
}
|
||||
|
||||
.text-gray-900 {
|
||||
color: rgb(130, 182, 255) !important;
|
||||
}
|
||||
.dropdown-menu {
|
||||
background-color: #171717;
|
||||
border: 2px solid rgb(49, 49, 49);
|
||||
}
|
||||
.form-control {
|
||||
background-color: rgb(239 239 239);
|
||||
}
|
||||
body {
|
||||
background-color: #171717;
|
||||
}
|
||||
.btn-info {
|
||||
border-radius: 0.25rem !important;
|
||||
background-color: #1a73e8 !important;
|
||||
border-color: #1a73e8 !important;
|
||||
}
|
||||
.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle {
|
||||
background-color: #093d94 !important;
|
||||
|
||||
}
|
||||
.btn-info:hover {
|
||||
background-color: #093d94 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-8QTNRD0R4M"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-8QTNRD0R4M');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body id="page-top">
|
||||
|
||||
<!-- Page Wrapper -->
|
||||
<div id="wrapper">
|
||||
<!-- Sidebar -->
|
||||
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion toggled" id="accordionSidebar">
|
||||
<!-- Sidebar - Brand -->
|
||||
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="https://hubdrive.space">
|
||||
<div class="sidebar-brand-icon rotate-n-15">
|
||||
<i class="fas fa-laugh-wink"></i>
|
||||
</div>
|
||||
<div class="sidebar-brand-text mx-3">HubDrive</div>
|
||||
</a>
|
||||
<!-- Divider -->
|
||||
|
||||
<hr class="sidebar-divider my-0">
|
||||
<!-- Nav Item - Dashboard -->
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="/sign">
|
||||
<i class="fas fa-fw fa-sign-in-alt"></i>
|
||||
<span>Login</span></a>
|
||||
</li>
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="/page/privacy-policy">
|
||||
<i class="fas fa-fw fa-user-secret"></i>
|
||||
<span>Privacy Policy</span></a>
|
||||
</li>
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="/page/terms-conditions">
|
||||
<i class="fas fa-fw fa-align-justify"></i>
|
||||
<span>Terms & Conditions</span></a>
|
||||
</li>
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="/page/copyright-policy">
|
||||
<i class="fas fa-fw fa-copyright"></i>
|
||||
<span>Copyright Policy</span></a>
|
||||
</li>
|
||||
<!-- Divider -->
|
||||
<hr class="sidebar-divider d-none d-md-block">
|
||||
<!-- Sidebar Toggler (Sidebar) -->
|
||||
<div class="text-center d-none d-md-inline">
|
||||
<button class="rounded-circle border-0" id="sidebarToggle"></button>
|
||||
</div>
|
||||
</ul>
|
||||
<!-- End of Sidebar -->
|
||||
<!-- Content Wrapper -->
|
||||
<div id="content-wrapper" class="d-flex flex-column">
|
||||
<!-- Main Content -->
|
||||
<div id="content">
|
||||
<!-- Topbar -->
|
||||
<nav class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow">
|
||||
<button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3">
|
||||
<i class="fa fa-bars"></i>
|
||||
</button>
|
||||
<ul class="navbar-nav ml-auto">
|
||||
<div style="display: flex; justify-content: center; align-items: center;margin-right: -27rem;">
|
||||
<a href="/" style="display: flex; align-items: center;text-decoration: none;">
|
||||
<i class="fab fa-artstation" style="font-size: 50px; color: #5090F0;"></i>
|
||||
<img class="img-profile" src="https://catimages.org/images/2024/04/23/1b1be1f6932ecf270.png" style="width: 25%; filter: invert(1); margin-left: 5px;">
|
||||
</a>
|
||||
</div>
|
||||
<div class="topbar-divider d-none d-sm-block" style="margin-left: -2px;"></div>
|
||||
</ul>
|
||||
</nav> <style>
|
||||
.btn.btn-primary.btn-user1 {
|
||||
background-color: #a10dff;
|
||||
border-color: #ba50fd;
|
||||
}
|
||||
.btn-primary.btn-user1:hover {
|
||||
color: #fff;
|
||||
background-color: #b542ff;
|
||||
}
|
||||
.btn-primary.btn-user1:not(:disabled):not(.disabled):active, .btn-primary.btn-user1:not(:disabled):not(.disabled).active, .show > .btn-primary.btn-user1.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: #8102d1;
|
||||
border-color:#ba50fd;
|
||||
}
|
||||
.btn-primary.btn-user1:focus, .btn-primary.btn-user1.focus {
|
||||
box-shadow: 0 0 0 .25rem rgba(151, 51, 215, .5);
|
||||
}
|
||||
.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link {
|
||||
color: rgb(255 255 255);
|
||||
background-color: rgb(13 60 125);
|
||||
border-color: rgb(13 60 125);
|
||||
}
|
||||
.nav-tabs {
|
||||
border-bottom: rgb(49, 49, 49);
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- http://caniuse.com/#feat=referrer-policy -->
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="googlebot" content="noindex,nofollow">
|
||||
<meta name="referrer" content="no-referrer" />
|
||||
<!-- For Edge and Safari -->
|
||||
<meta name="referrer" content="none" />
|
||||
<script>(function(s){s.dataset.zone='9824726',s.src='https://llvpn.com/tag.min.js'})([document.documentElement, document.body].filter(Boolean).pop().appendChild(document.createElement('script')))</script>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div id="down-id" hidden="true">2243124026</div>
|
||||
<!-- Content Row -->
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-9 col-md-9 mb-4">
|
||||
<div class="card shadow mb-4">
|
||||
|
||||
<div class="card-header py-3" style="line-break: auto; word-break: break-all; white-space: normal;">
|
||||
<h6 class="m-0 font-weight-bold text-primary" align="center" style="font-size: 1.2rem;">Back.to.the.Future.Part.III.1990.1080p.BluRay.Hindi.English.DD.5.1.x264.ESubs.Untouched.mkv</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-borderless" id="dataTable" width="100%" cellspacing="0" style="line-break: auto; word-break: initial; white-space: initial;">
|
||||
<tbody>
|
||||
<tr style="border-bottom: 2px solid rgb(63 63 63); line-height: 1.8em;">
|
||||
<td>File Size</td>
|
||||
<td align="right">3.77 GB</td>
|
||||
</tr>
|
||||
<tr style="border-bottom: 2px solid rgb(63 63 63); line-height: 1.8em;">
|
||||
<td>File Type</td>
|
||||
<td align="right">video/x-matroska</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>File Owner</td>
|
||||
<td align="right">dhub 2</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<br>
|
||||
<div class="text" align="center">
|
||||
<form action="/gsign.php" method="GET">
|
||||
<input name="r" value="https://hubdrive.space/file/2243124026" type="hidden">
|
||||
<button class="btn btn-primary btn-user" type="submit"><i class="fa fa-sign-in fa-lg"></i> GDrive [Login]</button>
|
||||
<!--button class="btn btn-primary btn-user" type="submit"><i class="fa fa-sign-in fa-lg"></i> Download [3.77 GB] [Login]</button-->
|
||||
</form>
|
||||
<div>
|
||||
<button onclick="myDirectDownload()" id="dl-down" type="button" class="btn btn-primary btn-user1" style="margin:10px;"><i class="fas fa-file-download fa-lg"></i> Direct/Instant Download</button>
|
||||
<div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<br><br>
|
||||
</div>
|
||||
|
||||
<div class="text" align="left">
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="#" onclick="copyLink()" role="tab" data-toggle="tab"><i class="fa fa-copy"></i> Copy Link</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Tab panes -->
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane fade show active" id="link">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<p id="copyText" style="text-align:left; color:rgb(116 174 255);">https://hubdrive.space/file/2243124026</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
||||
|
||||
<script>
|
||||
function copyLink() {
|
||||
var copyText = document.getElementById("copyText");
|
||||
var textArea = document.createElement("textarea");
|
||||
textArea.value = copyText.textContent;
|
||||
document.body.appendChild(textArea);
|
||||
textArea.select();
|
||||
document.execCommand("copy");
|
||||
document.body.removeChild(textArea);
|
||||
|
||||
Swal.fire({
|
||||
title: "Link Copied",
|
||||
icon: "success",
|
||||
showConfirmButton: false,
|
||||
timer: 1500
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.container-fluid -->
|
||||
</div>
|
||||
|
||||
<noscript>
|
||||
alert("please enable JavaScript in your browser");
|
||||
</noscript>
|
||||
<script>
|
||||
function myDownloadV2() {
|
||||
var e = document.getElementById("down-id").innerHTML;
|
||||
document.getElementById("down").innerHTML = '<i class="fa fa-spinner fa-spin"></i> Downloading.. !',
|
||||
document.getElementById("down").disabled = !0;
|
||||
var b = window.setTimeout(function() {
|
||||
document.getElementById("down").innerHTML = '<i class="fa fa-cog fa-spin fa-lg"></i> Generating Link.. !'
|
||||
}, 6e3);
|
||||
|
||||
window.setTimeout(function() {
|
||||
$.ajax({
|
||||
url: "/ajax.php?ajax=download",
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
data: "id=" + e,
|
||||
success: function(a) {
|
||||
if ("200" == a.code) {
|
||||
window.clearTimeout(b);
|
||||
localStorage.setItem("dls", JSON.stringify(a?.data));
|
||||
// window.location.href = a.file;
|
||||
window.location.href = "/newdl";
|
||||
|
||||
} else swal.fire("Code : " + a.code, "Message : " + a.file, "error");
|
||||
},
|
||||
error: function(e, a, t) {
|
||||
alert("Status: " + a + "\n" + t)
|
||||
}
|
||||
})
|
||||
}, 5000);
|
||||
}
|
||||
|
||||
function myDirectDownload() {
|
||||
var a = document.getElementById("down-id").innerHTML;
|
||||
document.getElementById("dl-down").innerHTML = '<i class="fa fa-spinner fa-spin"></i> Generating Link ...';
|
||||
document.getElementById("dl-down").disabled = !0;
|
||||
|
||||
var b = window.setTimeout(function() {
|
||||
document.getElementById("dl-down").innerHTML = '<i class="fa fa-cog fa-spin fa-lg"></i>Downloading .. !';
|
||||
}, 6e3);
|
||||
|
||||
window.setTimeout(function() {
|
||||
$.ajax({
|
||||
url: "/ajax.php?ajax=direct-download",
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
data: "id=" + a,
|
||||
success: function(a) {
|
||||
if ("200" == a.code) {
|
||||
window.clearTimeout(b);
|
||||
localStorage.setItem("dls", JSON.stringify(a?.data));
|
||||
// window.location.href = a.file;
|
||||
window.location.href = "/newdl";
|
||||
|
||||
} else swal.fire("Code : " + a.code, "Message : " + a.file, "error");
|
||||
},
|
||||
error: function(a, b, c) {
|
||||
alert("Status: " + b + "\n" + c);
|
||||
}
|
||||
});
|
||||
}, 5000)
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<main class="min-h-screen flex flex-col" >
|
||||
<header class="container mx-auto px-4 py-4 lg:text-center lg:flex lg:items-center lg:justify-between">
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
<script src='https://kit.fontawesome.com/a076d05399.js' crossorigin='anonymous'></script>
|
||||
<!--
|
||||
<footer class="sticky-footer bg-white">
|
||||
<div class="container my-auto">
|
||||
<div class="copyright text-center my-auto">
|
||||
<span>Copyright © HubDrive 2026</span>
|
||||
</div>
|
||||
<br>
|
||||
<div class="copyright text-center my-auto" style="font-size: 15px; font-weight: 600;">
|
||||
<span><a href="/page/privacy-policy"><i class="fa fa-bullhorn text-danger"></i> Privacy Policy</a> | <a href="/page/terms-conditions"><i class="fa fa-book text-info"></i> Terms & Conditions</a> | <a href="/page/copyright-policy"><i class="fa fa-copyright text-warning"></i> Copyright Policy</a> | <a href="/page/contact-us"><i class="fa fa-envelope text-success"></i> Contact Us</a></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
-->
|
||||
|
||||
</div>
|
||||
<!-- End of Content Wrapper -->
|
||||
|
||||
</div>
|
||||
<!-- End of Page Wrapper -->
|
||||
|
||||
<!-- Scroll to Top Button-->
|
||||
<a class="scroll-to-top rounded" href="#page-top">
|
||||
<i class="fas fa-angle-up"></i>
|
||||
</a>
|
||||
|
||||
<!-- Logout Modal-->
|
||||
<div class="modal fade" id="logoutModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
|
||||
<h5 class="modal-title" id="exampleModalLabel">Are you sure?</h5>
|
||||
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-secondary" type="button" data-dismiss="modal">Cancel</button>
|
||||
<a class="btn btn-primary" href="/login.php?action=logout">Logout</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Bootstrap core JavaScript-->
|
||||
<script src="/assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
<!-- Core plugin JavaScript-->
|
||||
<script src="/assets/vendor/jquery-easing/jquery.easing.min.js"></script>
|
||||
|
||||
<!-- Custom scripts for all pages-->
|
||||
<script src="/assets/js/sb-admin-2.min.js"></script>
|
||||
|
||||
<!-- Page level plugins -->
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
@ -15,3 +15,5 @@ exports[`HubDrive handle avatar 1`] = `
|
|||
},
|
||||
]
|
||||
`;
|
||||
|
||||
exports[`HubDrive handle missing hubcloud 1`] = `[]`;
|
||||
|
|
|
|||
Loading…
Reference in a new issue