more cleanup, minor frontend fixes

This commit is contained in:
delorean 2024-01-16 03:37:08 -06:00
parent 09fab10c7a
commit 1b1553c416
No known key found for this signature in database
GPG Key ID: 15A8C37298079067
2 changed files with 218 additions and 123 deletions

13
main.go
View File

@ -215,18 +215,18 @@ func main() {
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}) log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
LoadConf() LoadConf()
var err error
if !Exists(conf.FileFolder) { if !Exists(conf.FileFolder) {
if err := os.Mkdir(conf.FileFolder, 0755); err != nil { if err = os.Mkdir(conf.FileFolder, 0755); err != nil {
log.Fatal().Err(err).Msg("unable to create folder") log.Fatal().Err(err).Msg("unable to create folder")
} }
} }
if !Exists(conf.DBFile) { if !Exists(conf.DBFile) {
if _, err := os.Create(conf.DBFile); err != nil { if _, err = os.Create(conf.DBFile); err != nil {
log.Fatal().Err(err).Msg("unable to create database file") log.Fatal().Err(err).Msg("unable to create database file")
} }
} }
if err = landlock.V2.BestEffort().RestrictPaths(
if err := landlock.V2.BestEffort().RestrictPaths(
landlock.RWDirs(conf.FileFolder), landlock.RWDirs(conf.FileFolder),
landlock.RWDirs(conf.Webroot), landlock.RWDirs(conf.Webroot),
landlock.RWFiles(conf.DBFile), landlock.RWFiles(conf.DBFile),
@ -234,14 +234,13 @@ func main() {
log.Warn().Err(err).Msg("could not landlock") log.Warn().Err(err).Msg("could not landlock")
} }
if _, err := os.Open("/etc/passwd"); err != nil { if _, err = os.Open("/etc/passwd"); err == nil {
log.Warn().Msg("landlock failed, could open /etc/passwd, are you on a 5.13+ kernel?") log.Warn().Msg("landlock failed, could open /etc/passwd, are you on a 5.13+ kernel?")
} else { } else {
log.Info().Err(err).Msg("landlocked") log.Info().Err(err).Msg("landlocked")
} }
db, err := bolt.Open(conf.DBFile, 0600, nil) if db, err = bolt.Open(conf.DBFile, 0600, nil); err != nil {
if err != nil {
log.Fatal().Err(err).Msg("unable to open database file") log.Fatal().Err(err).Msg("unable to open database file")
} }
db.Update(func(tx *bolt.Tx) error { db.Update(func(tx *bolt.Tx) error {

View File

@ -1,126 +1,225 @@
<!DOCTYPE html> <!DOCTYPE html>
<html style="overflow: hidden;"> <html style="overflow: hidden;">
<head> <head>
<script type="text/javascript" src="//code.jquery.com/jquery-1.10.2.min.js"></script> <script type="text/javascript" src="//code.jquery.com/jquery-1.10.2.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="fist.ico"> <link rel="icon" href="fist.ico">
<title>HARDFILES</title> <title>HARDFILES</title>
<style> <style>
body { body {
font-family: sans-serif; font-family: sans-serif;
background-image: url('https://media.tenor.com/fYnd0R6F-0UAAAAC/gun-revolver.gif'); background-image: url('https://media.tenor.com/fYnd0R6F-0UAAAAC/gun-revolver.gif');
background-size: cover; background-size: cover;
background-position: center;
} }
@media (prefers-color-scheme: dark) { @media (prefers-color-scheme: dark) {
body { body {
overflow: hidden; overflow: hidden;
background: black; background: black;
background-image: url('https://media.tenor.com/fYnd0R6F-0UAAAAC/gun-revolver.gif'); background-image: url('https://media.tenor.com/fYnd0R6F-0UAAAAC/gun-revolver.gif');
background-size: cover; background-size: cover;
background-position: center; background-position: center;
color: white; color: white;
}
} }
.container {
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
} }
.container { @media (min-width: 768px) {
padding-right: 15px; .container {
padding-left: 15px; width: 750px;
margin-right: auto; }
margin-left: auto; .hf {
display: flex; font-size: 3rem;
flex-direction: column; }
align-items: center;
justify-content: center;
height: 100vh;
}
@media (min-width: 768px) {
.container {
width: 750px;
}
.hf {
font-size: 3rem;
}
}
@media (min-width: 992px) {
.container {
width: 970px;
}
.hflogo {
width: 50% !important;
}
} }
@media (min-width: 1200px) { @media (min-width: 992px) {
.container { .container {
width: 1170px; width: 970px;
}
} }
.hf { @media (min-width: 1200px) {
font-size: 5rem; .container {
width: 1170px;
}
.hf {
font-size: 5rem;
}
} }
input,select {
margin-bottom: 1em;
} }
input,select { .file-upload{
margin-bottom: 1em; display:block;
text-align:center;
font-family: Helvetica, Arial, sans-serif;
font-size: 12px;
width: 300px;
} }
.file-upload{display:block;text-align:center;font-family: Helvetica, Arial, sans-serif;font-size: 12px; width: 300px;} .file-upload .file-select{
.file-upload .file-select{display:block;border: 2px solid #dce4ec;color: black;cursor:pointer;height:40px;line-height:40px;text-align:left;background:#FFFFFF;overflow:hidden;position:relative;} display:block;
.file-upload .file-select .file-select-button{background:#dce4ec;padding:0 10px;display:inline-block;height:40px;line-height:40px;} border: 2px solid #dce4ec;
.file-upload .file-select .file-select-name{line-height:40px;display:inline-block;padding:0 10px;} color: black;
.file-upload .file-select:hover{border-color:red;transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;} cursor:pointer;
.file-upload .file-select:hover .file-select-button{background:red;color:#FFFFFF;transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;} height:40px;
.file-upload.active .file-select{border-color:red;transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;} line-height:40px;
.file-upload.active .file-select .file-select-button{background:red;color:#FFFFFF;transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;} text-align:left;
.file-upload .file-select input[type=file]{z-index:100;cursor:pointer;position:absolute;height:100%;width:100%;top:0;left:0;opacity:0;filter:alpha(opacity=0);} background:#FFFFFF;
.file-upload .file-select.file-select-disabled{opacity:0.65;} overflow:hidden;
.file-upload .file-select.file-select-disabled:hover{cursor:default;display:block;border: 2px solid #dce4ec;color: red;cursor:pointer;height:40px;line-height:40px;margin-top:5px;text-align:left;background:#FFFFFF;overflow:hidden;position:relative;} position:relative;
.file-upload .file-select.file-select-disabled:hover .file-select-button{background:#dce4ec;color:#666666;padding:0 10px;display:inline-block;height:40px;line-height:40px;}
.file-upload .file-select.file-select-disabled:hover .file-select-name{line-height:40px;display:inline-block;padding:0 10px;}
.subform {
display: flex;
flex-direction: column;
align-items: center;
} }
button { .file-upload .file-select .file-select-button{
display: inline-block; background:#dce4ec;
border: 0; padding:0 10px;
outline: 0; display:inline-block;
margin: 0; height:40px;
padding: 15px; line-height:40px;
height: 44px;
color: #fff;
font: 19px/15px 'Oswald', 'HelveticaNeue', 'Helvetica Neue', Helvetica, Arial, "Lucida Grande", sans-serif;
font-weight: bold;
text-transform: uppercase;
cursor: pointer;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box; /* Firefox, other Gecko */
box-sizing: border-box; /* Opera/IE 8+ */
-webkit-font-smoothing:antialiased;
-webkit-text-size-adjust:none;
box-shadow: 0 1px 2px rgba(0,0,0,.15);
} }
button:hover { .file-upload .file-select .file-select-name{
background: #c93c1d; line-height:40px;
-webkit-transition:all .25s ease-in-out; display:inline-block;
-moz-transition:all .25s ease-in-out; padding:0 10px;
-o-transition:all .25s ease-in-out;
transition:all .25s ease-in-out;
} }
button:active { .file-upload .file-select:hover{
background: #ae3318; border-color:red;
transition:all .2s ease-in-out;
-moz-transition:all .2s ease-in-out;
-webkit-transition:all .2s ease-in-out;
-o-transition:all .2s ease-in-out;
} }
button.light { .file-upload .file-select:hover .file-select-button{
background: #fff; background:red;
color: #555759; color:#FFFFFF;
transition:all .2s ease-in-out;
-moz-transition:all .2s ease-in-out;
-webkit-transition:all .2s ease-in-out;
-o-transition:all .2s ease-in-out;
} }
button.light:hover { .file-upload.active .file-select{
background: red; border-color:red;
color: #fff; transition:all .2s ease-in-out;
-moz-transition:all .2s ease-in-out;
-webkit-transition:all .2s ease-in-out;
-o-transition:all .2s ease-in-out;
}
.file-upload.active .file-select .file-select-button{
background:red;
color:#FFFFFF;
transition:all .2s ease-in-out;
-moz-transition:all .2s ease-in-out;
-webkit-transition:all .2s ease-in-out;
-o-transition:all .2s ease-in-out;
}
.file-upload .file-select input[type=file]{
z-index:100;
cursor:pointer;
position:absolute;
height:100%;
width:100%;
top:0;
left:0;
opacity:0;
filter:alpha(opacity=0);
}
.file-upload .file-select.file-select-disabled{
opacity:0.65;
}
.file-upload .file-select.file-select-disabled:hover{
cursor:default;
display:block;
border: 2px solid #dce4ec;
color: red;
cursor:pointer;
height:40px;
line-height:40px;
margin-top:5px;
text-align:left;
background:#FFFFFF;
overflow:hidden;
position:relative;
}
.file-upload .file-select.file-select-disabled:hover .file-select-button{
background:#dce4ec;
color:#666666;
padding:0 10px;
display:inline-block;
height:40px;
line-height:40px;
}
.file-upload .file-select.file-select-disabled:hover .file-select-name{
line-height:40px;
display:inline-block;
padding:0 10px;
}
.subform {
display: flex;
flex-direction: column;
align-items: center;
}
button {
display: inline-block;
border: 0;
outline: 0;
margin: 0;
padding: 15px;
height: 44px;
color: #fff;
font: 19px/15px 'Oswald', 'HelveticaNeue', 'Helvetica Neue', Helvetica, Arial, "Lucida Grande", sans-serif;
font-weight: bold;
text-transform: uppercase;
cursor: pointer;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-box-sizing: border-box;
/* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box;
/* Firefox, other Gecko */
box-sizing: border-box;
/* Opera/IE 8+ */
-webkit-font-smoothing:antialiased;
-webkit-text-size-adjust:none;
box-shadow: 0 1px 2px rgba(0,0,0,.15);
}
button:hover {
background: #c93c1d;
-webkit-transition:all .25s ease-in-out;
-moz-transition:all .25s ease-in-out;
-o-transition:all .25s ease-in-out;
transition:all .25s ease-in-out;
}
button:active {
background: #ae3318;
}
button.light {
background: #fff;
color: #555759;
}
button.light:hover {
background: red;
color: #fff;
}
.hflogo {
width: 90%;
} }
</style> </style>
</head> </head>
<body> <body>
<div class="container"> <div class="container">
<img src="header.png" width="50%" alt="supernets" style="margin-top: 10rem;"> <img src="header.png" class="hflogo" alt="supernets" style="margin-top: 10rem;">
<h2 style="font-size: 1em; color: #ffffff; font-weight: 200;">curl -F file=@example.png https://hardfiles.org/</h1> <h2 style="font-size: 1rem; color: #ffffff; font-weight: 200;">curl -F file=@example.png https://hardfiles.org/</h1>
<form method="POST" class="subform" enctype="multipart/form-data"> <form method="POST" class="subform" enctype="multipart/form-data">
<div class="file-upload" style="display: flex; justify-content: center; width: 25rem;"> <div class="file-upload" style="display: flex; justify-content: center; width: 25rem;">
<div class="file-select" style="width: 100%;"> <div class="file-select" style="width: 100%;">
@ -132,29 +231,26 @@
</div> </div>
</form> </form>
<p style="color: white; font-weight: 300;">⚠️ Uploads are erased after 24 hours</p> <p style="color: white; font-weight: 300;">⚠️ Uploads are erased after 24 hours</p>
</div> </div>
<div style="position: relative;"> <div style="position: relative;">
<a href="https://supernets.org/" target="_blank" style="position: absolute; bottom: 10px; right:10px; display: flex; align-items: center; text-decoration: none;"> <a href="https://supernets.org/" target="_blank" style="position: absolute; bottom: 10px; right:10px; display: flex; align-items: center; text-decoration: none;">
<p style="font-weight:200; color:#ffffff">A SUPERNETS</p> <p style="font-weight:200; color:#ffffff">A SUPERNETS</p>
<img src="https://git.supernets.org/assets/img/logo.png" width="30px" style="margin: 0 5px;"> <img src="https://git.supernets.org/assets/img/logo.png" width="30px" style="margin: 0 5px;">
<p style="font-weight:200; color: #ffffff">SERVICE</p> <p style="font-weight:200; color: #ffffff">SERVICE</p>
</a> </a>
</div> </div>
</body> </body>
</html> </html>
<script> <script>
$('#chooseFile').bind('change', function () { $('#chooseFile').bind('change', function () {
var filename = $("#chooseFile").val(); var filename = $("#chooseFile").val();
if (/^\s*$/.test(filename)) { if (/^\s*$/.test(filename)) {
$(".file-upload").removeClass('active'); $(".file-upload").removeClass('active');
$("#noFile").text("No file chosen..."); $("#noFile").text("No file chosen...");
} }
else { else {
$(".file-upload").addClass('active'); $(".file-upload").addClass('active');
$("#noFile").text(filename.replace("C:\\fakepath\\", "")); $("#noFile").text(filename.replace("C:\\fakepath\\", ""));
} }
}); });
</script> </script>