commit d3e1a077ec030f5e8090098895f5c3717c379809 from: monaco via: GitHub date: Tue Jan 31 18:53:39 2023 UTC Paste SSL this is the perl script if you want to run it without any other third party service and have a SSL Cert included ! commit - b9600e79e0e1557f58432c2b837a684f0ebb1994 commit + d3e1a077ec030f5e8090098895f5c3717c379809 blob - /dev/null blob + e7568900e28125895c88158c9c8bf020722fc370 (mode 644) --- /dev/null +++ pastessl.pl @@ -0,0 +1,85 @@ +#!/usr/bin/env perl + +use Mojolicious::Lite; +use DBI; +use File::Slurp; +use Mojolicious::Plugin::CertificateAuthority; + +# set up the sqlite database +my $dbh = DBI->connect("dbi:SQLite:dbname=pastes.db","","", { RaiseError => 1, AutoCommit => 1 }); +$dbh->do("CREATE TABLE IF NOT EXISTS pastes (id INTEGER PRIMARY KEY, content TEXT, expires TIMESTAMP)"); + +# set up the routes +get '/' => sub { + my $c = shift; + $c->render(template => 'index'); +}; + +post '/' => sub { + my $c = shift; + my $content = $c->param('content'); + my $expires = time() + (60 * 60 * 24 * 60); # 60 days from now + my $id = int(rand(1000000)); + my $sth = $dbh->prepare("INSERT INTO pastes (id, content, expires) VALUES (?, ?, ?)"); + $sth->execute($id, $content, $expires); + write_file("pastes/$id.txt", $content); + $c->redirect_to("/$id"); +}; + +get '/:id' => sub { + my $c = shift; + my $id = $c->param('id'); + my $sth = $dbh->prepare("SELECT * FROM pastes WHERE id = ?"); + $sth->execute($id); + my $paste = $sth->fetchrow_hashref; + if ($paste) { + $c->render(template => 'paste', paste => $paste); + } else { + $c->render(text => "Paste not found"); + } +}; + +# start the app +app->start('daemon', + listen => ['https://*:443?cert=/path/to/cert.pem&key=/path/to/key.pem'], + certificate_authority => 'LetsEncrypt', +); + +__DATA__ +@@ index.html.ep + + + + KISSmo Perl Version 0.7 stable + + + + + + +

+ the logo +

KISSmo Perl Version 0.7 stable

+
+ +
+
+ + + +@@ paste.html.ep + + + + Paste + + + + + + +

Paste

+

<%= $paste->{content} %>

+

Expires: <%= $paste->{expires} %>

+ +