lainsafe/lainsafecli

125 lines
3.0 KiB
Plaintext
Raw Normal View History

2020-04-19 14:39:34 +00:00
#!/usr/bin/perl
# Lainsafe cli
# This file is part of lainsafe.
# lainsafe is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# lainsafe is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with lainsafe. If not, see <https://www.gnu.org/licenses/>.
use Getopt::Long;
use LWP::UserAgent;
2020-04-19 14:39:34 +00:00
use strict;
use warnings;
# variables
my $help;
my $DEFAULT_SERVER;
my $file;
my $DISPLAY_ASCII;
my $STORE_LINKS;
2020-04-19 14:39:34 +00:00
# Default options, if no specified.
2020-04-21 17:38:56 +00:00
$DEFAULT_SERVER = "https://lainsafe.delegao.moe";
2020-04-19 14:39:34 +00:00
$DISPLAY_ASCII = 1; # 0 if you don't want the ascii
$STORE_LINKS = 1; # 0 if you don't want to keep track of your upload
2020-04-19 14:39:34 +00:00
my $ASCII_ART = <<'EOF';
_..-- ----- --.._
,-'' `-.
, \
/ \
/ ` . \
' / || ;
; ^/| |/ | |
| /v /\`-'v√\'-|\ ,
| /v` ,--- ---- .^.| ;
: | /´@@`, ,@@`\ | ;
' | '. @@ / \@@ / |\ |;
| ^| ----- --- | \/||
` |` | /\ /
\ \ |/ |,
' ; \ /| |
` \ -- / | |
` `. .-' | /
v,- `;._ _.; | |
`'`\ |-_ -^'^'| |
------ |/
EOF
# Subs
sub help
{
print "lainsafecli, a command line interface for lainsafe.\n";
print "USAGE: lainsafecli [--server] FILE\n\n";
2020-04-19 14:39:34 +00:00
print "if --server not given, $DEFAULT_SERVER is used.\n";
exit;
}
## PROGRAM
my $ua = LWP::UserAgent->new;
GetOptions ("server=s" => \$DEFAULT_SERVER,
"help|" => \$help);
2020-04-19 14:39:34 +00:00
if($help || not defined $ARGV[0])
{
&help;
}
2020-04-19 14:39:34 +00:00
# check if file is given
$file = $ARGV[@ARGV-1];
die "File does not exist\n" if !-e $file;
2020-04-19 14:39:34 +00:00
my $url_to_upload = $DEFAULT_SERVER . "/upload.cgi";
my $req;
# Fake user agent
$ua->agent("Mozilla/5.0 (X11; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0");
2020-04-19 14:39:34 +00:00
# check if server is running lainsafe
if(!$ua->get($url_to_upload)->is_success)
{
print "$url_to_upload is not running lainsafe.\n";
exit;
}
$req = $ua->post($url_to_upload,
Content_Type => 'form-data',
Content => [
"file" => [ $file ],
],
);
print $ASCII_ART if $DISPLAY_ASCII;
if($req->{_content} =~ /instance/) # If someone knows how to do it another way, I'm all ears
{
print $req->{_content} . "\n";
exit;
}
2020-04-19 14:39:34 +00:00
print $DEFAULT_SERVER . "/" . $req->{_content} . "\n";
if($STORE_LINKS)
{
open FILE,'>>',"$ENV{HOME}/.cache/lainsafelinks" or die $!;
print FILE $DEFAULT_SERVER . "/" . $req->{_content} . " $file" ."\n";
close FILE;
}