#!/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 . use Getopt::Long; use LWP::UserAgent; use strict; use warnings; # variables my $help; my $DEFAULT_SERVER; my $file; my $DISPLAY_ASCII; my $STORE_LINKS; # Default options, if no specified. $DEFAULT_SERVER = "https://lainsafe.delegao.moe"; $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 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"; print "if --server not given, $DEFAULT_SERVER is used.\n"; exit; } ## PROGRAM my $ua = LWP::UserAgent->new; GetOptions ("server=s" => \$DEFAULT_SERVER, "help|" => \$help); &help if $help || not defined $ARGV[0]; # check if file is given $file = $ARGV[@ARGV-1]; die "File does not exist\n" unless -e $file; 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"); # 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; } 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; }