commit - 421b4b6a3f248d5c963ae2317cefe4d62f6ff3ea
commit + bea0490e721964170d7cd143f98ab72bd8b6513e
blob - 668d13e4f859fc9a1a0e039ca53c507141d6f747
blob + 801a8c611328e45de419371a08cea2e1e27802c3
--- paste.pl
+++ paste.pl
write_file("pastes/$id.txt", $content);
$c->redirect_to("/$id");
} else {
- $c->render(text => "Invalid paste content");
+ $c->render(template => 'invalid_content');
}
};
$paste->{expires_human} = format_expires($paste->{expires});
$c->render(template => 'paste', paste => $paste);
} else {
- $c->render(text => "Paste not found");
+ $c->res->code(404);
+ $c->render(template => 'invalid_link');
}
};
$c->res->headers->content_type('text/plain');
$c->render(text => $content);
} else {
- $c->render(text => "Paste not found");
+ $c->res->code(404);
+ $c->render(template => 'invalid_link');
}
};
+get '/download/:id' => sub {
+ my $c = shift;
+ my $id = $c->param('id');
+ my $sth = $dbh->prepare("SELECT content FROM pastes WHERE id = ?");
+ $sth->execute($id);
+ my ($content) = $sth->fetchrow_array;
+ if ($content) {
+ $c->res->headers->content_type('text/plain');
+ $c->res->headers->content_disposition("attachment; filename=$id.txt");
+ $c->render(text => $content);
+ } else {
+ $c->res->code(404);
+ $c->render(template => 'invalid_link');
+ }
+};
+
# start the app
app->start;
@@ index.html.ep
<!DOCTYPE html>
-<?php
- if (substr_count($_SERVER[HTTP_ACCEPT_ENCODING], gzip))
- ob_start(ob_gzhandler);
- else ob_start();
-?>
<html>
<head>
-<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
-<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-<meta name="HandheldFriendly" content="true">
<title>KISSmo Perl Version 1.1 stable</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
<style>
</style>
</head>
<body>
+ <nav class="navbar navbar-expand-lg navbar-light bg-light">
+ <a class="navbar-brand" href="/">KISSMO</a>
+ <ul class="navbar-nav mr-auto">
+ <li class="nav-item">
+ <a class="nav-link" href="/">Home</a>
+ </li>
+ </ul>
+ </nav>
<div class="container">
<h1>KISSmo Perl Version 1.1 stable</h1>
<form method="post">
@@ paste.html.ep
<!DOCTYPE html>
-<?php
- if (substr_count($_SERVER[HTTP_ACCEPT_ENCODING], gzip))
- ob_start(ob_gzhandler);
- else ob_start();
-?>
<html>
<head>
-<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
-<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-<meta name="HandheldFriendly" content="true">
<title>Paste</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
<style>
</style>
</head>
<body>
+ <nav class="navbar navbar-expand-lg navbar-light bg-light">
+ <a class="navbar-brand" href="/">KISSMO</a>
+ <ul class="navbar-nav mr-auto">
+ <li class="nav-item">
+ <a class="nav-link" href="/">Home</a>
+ </li>
+ </ul>
+ </nav>
<div class="container">
<h1>Paste</h1>
<pre><%= $paste->{content} %></pre>
<a href="/raw/<%= $paste->{id} %>" class="btn btn-primary">RAW</a>
+ <a href="/download/<%= $paste->{id} %>" class="btn btn-primary">Download</a>
<p>Expires: <%= $paste->{expires_human} %></p>
</div>
<footer class="footer">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
</body>
</html>
+
+@@ invalid_content.html.ep
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Invalid Content</title>
+ <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
+ <style>
+ body {
+ background-color: #f8f9fa;
+ }
+ .container {
+ max-width: 800px;
+ margin-top: 50px;
+ }
+ h1 {
+ text-align: center;
+ margin-bottom: 30px;
+ }
+ .alert {
+ margin-top: 30px;
+ }
+ .footer {
+ text-align: center;
+ margin-top: 50px;
+ }
+ </style>
+</head>
+<body>
+ <nav class="navbar navbar-expand-lg navbar-light bg-light">
+ <a class="navbar-brand" href="/">KISSMO</a>
+ <ul class="navbar-nav mr-auto">
+ <li class="nav-item">
+ <a class="nav-link" href="/">Home</a>
+ </li>
+ </ul>
+ </nav>
+ <div class="container">
+ <h1>Invalid Content</h1>
+ <div class="alert alert-danger" role="alert">
+ Please enter valid content.
+ </div>
+ </div>
+ <footer class="footer">
+ <p>This pastebin script has been developed by Arianit. The source code can be found at <a href="https://github.com/hedho/KISSmoPerl">GitHub</a>.</p>
+ </footer>
+ <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
+ <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
+</body>
+</html>
+
+@@ invalid_link.html.ep
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Invalid Link</title>
+ <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
+ <style>
+ body {
+ background-color: #f8f9fa;
+ }
+ .container {
+ max-width: 800px;
+ margin-top: 50px;
+ }
+ h1 {
+ text-align: center;
+ margin-bottom: 30px;
+ }
+ .alert {
+ margin-top: 30px;
+ }
+ .footer {
+ text-align: center;
+ margin-top: 50px;
+ }
+ </style>
+</head>
+<body>
+ <nav class="navbar navbar-expand-lg navbar-light bg-light">
+ <a class="navbar-brand" href="/">KISSMO</a>
+ <ul class="navbar-nav mr-auto">
+ <li class="nav-item">
+ <a class="nav-link" href="/">Home</a>
+ </li>
+ </ul>
+ </nav>
+ <div class="container">
+ <h1>Invalid Link</h1>
+ <div class="alert alert-danger" role="alert">
+ The link you requested is invalid or has expired.
+ </div>
+ </div>
+ <footer class="footer">
+ <p>This pastebin script has been developed by Arianit. The source code can be found at <a href="https://github.com/hedho/KISSmoPerl">GitHub</a>.</p>
+ </footer>
+ <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
+ <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
+</body>
+</html>
+
+@@ not_found.html.ep
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Invalid Link</title>
+ <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
+ <style>
+ body {
+ background-color: #f8f9fa;
+ }
+ .container {
+ max-width: 800px;
+ margin-top: 50px;
+ }
+ h1 {
+ text-align: center;
+ margin-bottom: 30px;
+ }
+ .alert {
+ margin-top: 30px;
+ }
+ .footer {
+ text-align: center;
+ margin-top: 50px;
+ }
+ </style>
+</head>
+<body>
+ <nav class="navbar navbar-expand-lg navbar-light bg-light">
+ <a class="navbar-brand" href="/">KISSMO</a>
+ <ul class="navbar-nav mr-auto">
+ <li class="nav-item">
+ <a class="nav-link" href="/">Home</a>
+ </li>
+ </ul>
+ </nav>
+ <div class="container">
+ <h1>Invalid Link</h1>
+ <div class="alert alert-danger" role="alert">
+ The link you requested is invalid or has expired.
+ </div>
+ </div>
+ <footer class="footer">
+ <p>This pastebin script has been developed by Arianit. The source code can be found at <a href="https://github.com/hedho/KISSmoPerl">GitHub</a>.</p>
+ </footer>
+ <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
+ <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
+</body>
+</html>