forked from spitkov/sxbin
fixed that insatnt upload doesnt go on top of fiel upload model and other minor bugfixes
This commit is contained in:
parent
740300edaf
commit
a2544633e6
26
app.py
26
app.py
@ -238,6 +238,9 @@ def redirect_vanity(vanity, password=None):
|
|||||||
db = get_db()
|
db = get_db()
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
|
|
||||||
|
# Check if it's a download request
|
||||||
|
is_download = 'download' in request.path
|
||||||
|
|
||||||
# First, try to find the content with the full vanity (including extension)
|
# First, try to find the content with the full vanity (including extension)
|
||||||
cursor.execute("SELECT content.*, users.username FROM content LEFT JOIN users ON content.user_id = users.id WHERE content.vanity = ?", (vanity,))
|
cursor.execute("SELECT content.*, users.username FROM content LEFT JOIN users ON content.user_id = users.id WHERE content.vanity = ?", (vanity,))
|
||||||
content = cursor.fetchone()
|
content = cursor.fetchone()
|
||||||
@ -252,6 +255,13 @@ def redirect_vanity(vanity, password=None):
|
|||||||
content_type, content_data, created_at, user_id, is_private, stored_password, username = content[1], content[2], content[3], content[4], content[5], content[6], content[7]
|
content_type, content_data, created_at, user_id, is_private, stored_password, username = content[1], content[2], content[3], content[4], content[5], content[6], content[7]
|
||||||
app.logger.info(f"Content found: type={content_type}, data={content_data}, is_private={is_private}")
|
app.logger.info(f"Content found: type={content_type}, data={content_data}, is_private={is_private}")
|
||||||
|
|
||||||
|
# Convert created_at to datetime object, including microseconds
|
||||||
|
try:
|
||||||
|
created_at = datetime.strptime(created_at, '%Y-%m-%d %H:%M:%S.%f')
|
||||||
|
except ValueError:
|
||||||
|
# If the above fails, try without microseconds
|
||||||
|
created_at = datetime.strptime(created_at, '%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
if is_private and stored_password:
|
if is_private and stored_password:
|
||||||
if password:
|
if password:
|
||||||
if password != stored_password:
|
if password != stored_password:
|
||||||
@ -268,16 +278,12 @@ def redirect_vanity(vanity, password=None):
|
|||||||
elif content_type == 'file':
|
elif content_type == 'file':
|
||||||
file_path = os.path.join(app.config['UPLOAD_FOLDER'], content_data)
|
file_path = os.path.join(app.config['UPLOAD_FOLDER'], content_data)
|
||||||
if os.path.exists(file_path):
|
if os.path.exists(file_path):
|
||||||
file_size = os.path.getsize(file_path)
|
if is_download:
|
||||||
file_extension = os.path.splitext(content_data)[1].lower()
|
# Force download
|
||||||
is_image = file_extension in ['.jpg', '.jpeg', '.png', '.gif']
|
return send_file(file_path, as_attachment=True, download_name=content_data)
|
||||||
return render_template('og_file.html',
|
else:
|
||||||
filename=content_data,
|
# Serve the file for viewing/embedding
|
||||||
file_size=file_size,
|
return send_file(file_path)
|
||||||
username=username,
|
|
||||||
created_at=created_at,
|
|
||||||
is_image=is_image,
|
|
||||||
file_url=url_for('redirect_vanity', vanity=vanity, _external=True))
|
|
||||||
elif content_type == 'pastebin':
|
elif content_type == 'pastebin':
|
||||||
first_lines = '\n'.join(content_data.split('\n')[:5]) # Get first 5 lines
|
first_lines = '\n'.join(content_data.split('\n')[:5]) # Get first 5 lines
|
||||||
return render_template('og_pastebin.html',
|
return render_template('og_pastebin.html',
|
||||||
|
@ -296,6 +296,26 @@
|
|||||||
z-index: 10000;
|
z-index: 10000;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.instant-upload-overlay {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
|
z-index: 9999;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.instant-upload-result .close-btn {
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
right: 10px;
|
||||||
|
color: white;
|
||||||
|
font-size: 24px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@ -385,11 +405,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="instant-upload-overlay"></div>
|
||||||
<div class="instant-upload-result">
|
<div class="instant-upload-result">
|
||||||
|
<span class="close-btn" onclick="closeInstantUploadResult()">×</span>
|
||||||
<h3>File Uploaded</h3>
|
<h3>File Uploaded</h3>
|
||||||
<p>Direct download URL: <a id="directDownloadUrl" href="#" target="_blank"></a></p>
|
<p>Direct download URL: <a id="directDownloadUrl" href="#" target="_blank"></a></p>
|
||||||
<p>Normal URL: <a id="normalUrl" href="#" target="_blank"></a></p>
|
<p>Normal URL: <a id="normalUrl" href="#" target="_blank"></a></p>
|
||||||
<button onclick="closeInstantUploadResult()">Close</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<footer class="footer">
|
<footer class="footer">
|
||||||
@ -434,6 +455,8 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let isFileModalOpen = false;
|
||||||
|
|
||||||
function openModal(modalId) {
|
function openModal(modalId) {
|
||||||
const modal = document.getElementById(modalId);
|
const modal = document.getElementById(modalId);
|
||||||
const button = document.querySelector(`button[onclick="openModal('${modalId}')"]`);
|
const button = document.querySelector(`button[onclick="openModal('${modalId}')"]`);
|
||||||
@ -458,6 +481,10 @@
|
|||||||
clearInterval(fadeIn);
|
clearInterval(fadeIn);
|
||||||
}
|
}
|
||||||
}, 30);
|
}, 30);
|
||||||
|
|
||||||
|
if (modalId === 'fileModal') {
|
||||||
|
isFileModalOpen = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function closeModal(modalId) {
|
function closeModal(modalId) {
|
||||||
@ -477,11 +504,18 @@
|
|||||||
modal.style.display = "none";
|
modal.style.display = "none";
|
||||||
}
|
}
|
||||||
}, 30);
|
}, 30);
|
||||||
|
|
||||||
|
if (modalId === 'fileModal') {
|
||||||
|
isFileModalOpen = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
window.onclick = function(event) {
|
window.onclick = function(event) {
|
||||||
if (event.target.className === "modal") {
|
if (event.target.className === "modal") {
|
||||||
event.target.style.display = "none";
|
event.target.style.display = "none";
|
||||||
|
if (event.target.id === 'fileModal') {
|
||||||
|
isFileModalOpen = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -714,7 +748,9 @@
|
|||||||
// Global drag and drop
|
// Global drag and drop
|
||||||
document.addEventListener('dragover', function(e) {
|
document.addEventListener('dragover', function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
if (!isFileModalOpen) {
|
||||||
document.querySelector('.global-drop-area').style.display = 'flex';
|
document.querySelector('.global-drop-area').style.display = 'flex';
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
document.addEventListener('dragleave', function(e) {
|
document.addEventListener('dragleave', function(e) {
|
||||||
@ -726,7 +762,7 @@
|
|||||||
document.addEventListener('drop', function(e) {
|
document.addEventListener('drop', function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
document.querySelector('.global-drop-area').style.display = 'none';
|
document.querySelector('.global-drop-area').style.display = 'none';
|
||||||
if (e.dataTransfer.files.length > 0) {
|
if (!isFileModalOpen && e.dataTransfer.files.length > 0) {
|
||||||
instantUploadFile(e.dataTransfer.files[0]);
|
instantUploadFile(e.dataTransfer.files[0]);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -746,6 +782,7 @@
|
|||||||
document.getElementById('directDownloadUrl').textContent = data.download_url;
|
document.getElementById('directDownloadUrl').textContent = data.download_url;
|
||||||
document.getElementById('normalUrl').href = data.url;
|
document.getElementById('normalUrl').href = data.url;
|
||||||
document.getElementById('normalUrl').textContent = data.url;
|
document.getElementById('normalUrl').textContent = data.url;
|
||||||
|
document.querySelector('.instant-upload-overlay').style.display = 'block';
|
||||||
document.querySelector('.instant-upload-result').style.display = 'block';
|
document.querySelector('.instant-upload-result').style.display = 'block';
|
||||||
} else {
|
} else {
|
||||||
alert('Error uploading file: ' + data.error);
|
alert('Error uploading file: ' + data.error);
|
||||||
@ -758,6 +795,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function closeInstantUploadResult() {
|
function closeInstantUploadResult() {
|
||||||
|
document.querySelector('.instant-upload-overlay').style.display = 'none';
|
||||||
document.querySelector('.instant-upload-result').style.display = 'none';
|
document.querySelector('.instant-upload-result').style.display = 'none';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user