initial commit

This commit is contained in:
q 2025-05-21 00:39:26 -04:00
commit 15913db41a
14 changed files with 335 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
keys/

16
docker-compose.yml Normal file
View file

@ -0,0 +1,16 @@
services:
transfer:
image: dutchcoders/transfer.sh:latest
container_name: transfer
ports:
- "3880:8080"
- "3881:8081"
command: ["--provider", "local", "--basedir", "/uploads/", "--web-path", "/web/", "--max-upload-size", "10485760", "--tls-listener", ":8081", "--tls-cert-file", "/fullchain.pem", "--tls-private-key", "/privkey.pem", "--tls-listener-only"]
environment:
- MAX_UPLOAD_SIZE=10485760
volumes:
- ./uploads:/uploads
- ./tshweb:/web
- ./keys/fullchain.pem:/fullchain.pem
- ./keys/privkey.pem:/privkey.pem
restart: always

14
tshweb/404.html Normal file
View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Third Culture Upload</title>
<link rel="stylesheet" href="styles/main.css">
</head>
<body>
<br/>
<p style="color: red; text-align: center;">Content not found!</p>
<p style="color: red; text-align: center;">404</p>
</body>
</html>

View file

@ -0,0 +1,31 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Third Culture Upload</title>
<link rel="stylesheet" href="../styles/main.css">
</head>
<body>
<div class="wrapper">
<br />
<h2 class="page-title">{{.Filename}}</h2>
<code>
type: <b>{{.ContentType}}</b>
size: <b>{{.ContentLength | format "#,###."}}</b> bytes
</code>
<br />
<audio id="audio-player" class="preview-audio" controls preload="auto" data-setup='{}'>
<source src="{{.URL}}" type="{{.ContentType}}">
</source>
</audio>
<p class="dwn"><a href="{{.URLGet}}"> download</a></p>
<div class="qrcode">
<img src="data:image/png;base64,{{.QRCode}}" />
</div>
</div>
</body>
</html>

27
tshweb/download.html Normal file
View file

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Third Culture Upload</title>
<link rel="stylesheet" href="../styles/main.css">
</head>
<body>
<div class="wrapper">
<br />
<h2 class="page-title">{{.Filename}}</h2>
<code>
type: <b>{{.ContentType}}</b>
size: <b>{{.ContentLength | format "#,###."}}</b> bytes
</code>
<br />
<p class="dwn"><a href="{{.URLGet}}"> download</a></p>
<div class="qrcode">
<img src="data:image/png;base64,{{.QRCode}}" />
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Third Culture Upload</title>
<link rel="stylesheet" href="../styles/main.css">
</head>
<body>
<div class="wrapper">
<br />
<h2 class="page-title">{{.Filename}}</h2>
<code>
type: <b>{{.ContentType}}</b>
size: <b>{{.ContentLength | format "#,###."}}</b> bytes
</code>
<br />
<div class="preview-image"><img src="{{.URL}}" alt=""></div>
<p class="dwn"><a href="{{.URLGet}}"> download</a></p>
<div class="qrcode">
<img src="data:image/png;base64,{{.QRCode}}" />
</div>
</body>
</html>

View file

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Third Culture Upload</title>
<link rel="stylesheet" href="../styles/main.css">
</head>
<body>
<div class="wrapper">
<br />
<h2 class="page-title">{{.Filename}}</h2>
<code>
type: <b>{{.ContentType}}</b>
size: <b>{{.ContentLength | format "#,###."}}</b> bytes
</code>
<br />
<div class="md-preview">{{.Content}}</div>
<p class="dwn"><a href="{{.URLGet}}"> download</a></p>
<div class="qrcode">
<img src="data:image/png;base64,{{.QRCode}}" />
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,31 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Third Culture Upload</title>
<link rel="stylesheet" href="../styles/main.css">
</head>
<body>
<div class="wrapper">
<br />
<h2 class="page-title">{{.Filename}}</h2>
<code>
type: <b>{{.ContentType}}</b>
size: <b>{{.ContentLength | format "#,###."}}</b> bytes
</code>
<br />
<video id="video-player" class="prev-video" controls preload="auto" data-setup='{}'>
<source src="{{.URL}}" type="{{.ContentType}}">
</source>
</video>
<p class="dwn"><a href="{{.URLGet}}"> download</a></p>
<div class="qrcode">
<img src="data:image/png;base64,{{.QRCode}}" />
</div>
</div>
</body>
</html>

BIN
tshweb/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,4 @@
<a href="{{.URLGet}}" class="btn-cta btn"> download</i> </a> <br/><br/>
<div class="qrcode">
<img src="data:image/png;base64,{{.QRCode}}"/>
</div>

View file

@ -0,0 +1,4 @@
<br/>
<h2 class="page-title">{{.Filename}}</h2>
<h4>type: <b>{{.ContentType}}</b></h4>
<h4>size: <b>{{.ContentLength | format "#,###."}}</b> bytes</h4>

37
tshweb/index.html Normal file
View file

@ -0,0 +1,37 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Third Culture Upload</title>
<link rel="stylesheet" href="styles/main.css">
</head>
<body>
<h1><span class="accent">Third Culture</span> Upload</h1>
<form action="https://up.thirdculture.top" method="POST" enctype="multipart/form-data">
<label for="fileInput">Choose file:</label>
<input type="file" name="file" id="fileInput" required />
<br><br>
<button type="submit">Upload</button>
</form>
<p><br></p>
<p>Make sure to copy the link in the next page!</p>
<p>More info on third culture upload <a href="scripts/info.html">here</a>.</p>
<p><br></p>
<svg version="1.1" style="fill:none;width:75px;height:75px;" width="50" height="50" viewBox="0 0 50 50" id="svg3" sodipodi:docname="logo.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs id="defs3" />
<path style="fill:#000000;stroke:#000000;stroke-width:1.51515px;stroke-linecap:round;stroke-linejoin:round"
d="m 0.75757498,49.242423 v 0 V 0.75757498 H 49.242425 V 49.242423 Z" id="path1" />
<path style="fill:none;stroke:#a4d1ad;stroke-width:1.51515px;stroke-linecap:round;stroke-linejoin:round"
d="m 20.454546,38.636362 v 0 l 9.090908,-9.090909 m -9.090908,0 v 0 l 9.090908,9.090909" id="path2" />
<path style="fill:none;stroke:#aea3f0;stroke-width:4.24243px;stroke-linecap:round;stroke-linejoin:round"
d="m 6.8181812,40.151514 v 0 L 25,9.8484837 43.181819,40.151514" id="path3" />
</svg>
</body>
</html>

16
tshweb/scripts/info.html Normal file
View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Third Culture Upload</title>
<link rel="stylesheet" href="../styles/main.css">
</head>
<body>
<h1>up.thirdculture.top info</h1>
<p>Third culture upload supports uploading through the browser but also using the terminal as well you can find more details on the <a href="https://github.com/dutchcoders/transfer.sh">transfer.sh github</a>. I will include some simple examples here for quick reference.</p>
</body>
</html>

99
tshweb/styles/main.css Normal file
View file

@ -0,0 +1,99 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: Arial, sans-serif;
background-color: #121212;
color: #e0e0e0;
padding: 20px;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
h1 {
color: #9b4d96;
margin-bottom: 20px;
}
.preview-image {
text-align: center;
}
.preview-image img {
max-width: 600px;
margin-left: auto;
margin-right: auto;
}
.page-title {
text-align: center;
color: #9b4d96;
}
.accent {
color: #7bbc7f;
}
form {
background-color: #1e1e1e;
padding: 20px;
border-radius: 8px;
width: 300px;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.5);
}
label {
font-size: 16px;
color: #ddd;
margin-bottom: 10px;
display: block;
}
input[type="file"] {
width: 100%;
padding: 10px;
margin: 10px 0;
border: 2px solid #9b4d96;
background-color: #333;
color: #fff;
border-radius: 4px;
}
input[type="file"]:hover {
border-color: #be2b90;
}
button {
background-color: #9b4d96;
color: #fff;
padding: 12px;
border: none;
border-radius: 4px;
width: 100%;
font-size: 16px;
cursor: pointer;
transition: background-color 0.3s ease;
}
.dwn {
text-align: center;
margin-top: 5px;
margin-bottom: 15px;
}
button:hover {
background-color: #be2b90;
}
button:active {
background-color: #9b4d96;
}
.qrcode {
text-align: center;
}