[Paste сервис] [Форум] - [Paste Скрипт]
Perl - Сервис для хранения исходных кодов и простых текстов - paste for us

Добавил paste (Sat 28th Jan 2017 19:13)
Просмотров: 1117 | Размер: 4.96 Кб
скачать | RAW | Интеграция с Вашим сайтом | новая запись |

это спам!
  1. #!/usr/bin/perl
  2. #===============================================================================
  3. #  DESCRIPTION:  Простая отправлялка вывода команды или тела файла на p.for-us.nl.
  4. #                             Определяет подсветку для некоторых видов указанных через -i файлов.
  5. #
  6. #        USAGE:  cat file.txt | paste
  7. #                       или
  8. #                paste.pl -i file.txt
  9. #
  10. #      OPTIONS:  -i <input_file>; -s <syntax>; -e <expire=[f,m,d,h]>; -r <remember=[0,1]>; -n <name>
  11. #===============================================================================
  12. require 5.8.8;
  13. use warnings;
  14. use strict;
  15. use encoding 'UTF-8', STDOUT => 'UTF-8';
  16. use LWP::UserAgent;
  17. use HTTP::Cookies;
  18. use Getopt::Std;
  19. our $VERSION = '0.9';
  20.  
  21. my %options = (                                             # Настройки по умолчанию:
  22.     'u'     => 'http://p.for-us.nl',                        # адрес сервера
  23.     'e'     => 'm',                                         # срок хранения: h - час, d - день, m - месяц, f - постоянно
  24.     'r'     => '0',                                         # помнить ли отправителя
  25. );
  26. getopts('s:u:e:i:n:rh', \%options);
  27.  
  28. if ($options{h}) {
  29.     usage($VERSION);
  30.     exit;
  31. }
  32.  
  33. if ( $options{i} && !$options{s} ) {
  34.     simple_sintax_detect(\%options);
  35. }
  36. my $msg_body = read_input_file(\%options);
  37.  
  38.  
  39. my $ua = ua_init();
  40. my $msg_url = send_to_pastebin($ua, \%options, $msg_body);
  41. print $msg_url,"\n";
  42.  
  43.  
  44. exit 0;
  45.  
  46.  
  47. sub simple_sintax_detect {
  48.     my $options = shift;
  49.  
  50.     my $f_ext = $1 if $options->{i} =~ /^[\wа-я-]+\.([a-z]{1,4})$/i;
  51.  
  52.     if ($f_ext =~ /^(?:txt|text|)$/i) {
  53.         $options->{s} = 'text';
  54.     }
  55.     elsif ($f_ext =~ /^(?:pl|cgi)$/i) {
  56.         $options->{s} = 'perl';
  57.     }
  58.     elsif ($f_ext =~ /^sh$/i) {
  59.         $options->{s} = 'bash';
  60.     }
  61.     elsif ($f_ext =~ /^php$/i) {
  62.         $options->{s} = 'php';
  63.     }
  64. }
  65.  
  66. sub read_input_file {
  67.     my $options = shift;
  68.  
  69.     if ( !$options->{i} ) {
  70.         while (<>) {
  71.             $msg_body .= $_;
  72.         }
  73.     }
  74.  
  75.     elsif ( $options->{i} ) {
  76.         open(INFILE, '<', $options->{i}) or die "Can't open $options->{i}: $!\n";
  77.         while (<INFILE>) {
  78.             $msg_body .= $_;
  79.         }
  80.         close(INFILE);
  81.     }
  82.  
  83.     return $msg_body;
  84. }
  85.  
  86. sub send_to_pastebin {
  87.     my $ua = shift;
  88.     my ($options, $msg_body)  = @_;
  89.  
  90.     my $response = $ua->post( $options->{u},
  91.         [
  92.             format      => $options->{s},
  93.             code2       => $msg_body,
  94.             poster      => $options->{n},
  95.             paste       => 'Send',
  96.             remember    => $options->{r},
  97.             expiry      => $options->{e},
  98.         ],
  99.     );
  100.     return $response->status_line unless $response->is_success;
  101.  
  102.     return $response->request->uri;
  103. }
  104.  
  105. sub ua_init {
  106.  
  107.     my $cookies=HTTP::Cookies->new('file'=>'./cookies.lwp','autosave'=>0);
  108.  
  109.     my $ua = LWP::UserAgent->new(
  110.         'agent'                 => 'paste - pastebin service agent',
  111.         'cookie_jar'            => $cookies,
  112.         'requests_redirectable' => ['GET', 'POST'],
  113.     );
  114.  
  115.     $ua->default_header(
  116.         'Accept'            => 'text/html, application/xml;q=0.9, application/xhtml+xml, */*;q=0.1',
  117.         'Accept-Charset'    => 'utf-8; *;q=0.1',
  118.         'Accept-Language'   => 'ru,en-us;q=0.7,en;q=0.3',
  119.         'Accept-Encoding'   => 'deflate, gzip, x-gzip, *;q=0',
  120.     );
  121.  
  122.     return $ua;
  123. }
  124.  
  125. sub usage {
  126.     my $ver = shift;
  127.  
  128. print <<EOF;
  129.  
  130.     Использование: paste [КЛЮЧ]... <-i input_file> (1-я форма)
  131.               или: COMMAND | paste                 (2-я форма)
  132.  
  133.     В первой форме на сервер будет отправлен указанный файл input_file.
  134.     Во второй форме на сервер будет отправлен результат вывода COMMAND.
  135.  
  136.     Ключи:
  137.             -s  [text, perl, ...]      Синтаксис файла для подсветки на pastebin;
  138.             -e  [h, d, m, f]              Срок хранения данных на сервере:
  139.                                        h - один час, d - один день, m - месяц, f - постоянно;
  140.             -i  [input_file]           Имя входящего файла, текст которого будет
  141.                                        отправлен на pastebin сервер;
  142.             -n  [username]             Имя отправителя (иначе - anonimous);
  143.             -r                         Помнить отправителя (если установлена);
  144.             -h                         Вывод данной справки и завершение программы;
  145.  
  146.     Пример использования: paste -r -s perl -e m -n User -i ./test.pl
  147. EOF
  148. }

Отправьте изменение или исправление текста ниже (Или добавьте новую запись)
После добавления поправки, вы сможете увидеть разницу между старой и новой версиями.

Подсветка синтаксиса:

Для выделения нужных строк следует подставить в начале каждой такой строки префикс @@@


Запомнить меня
Пароль?

записей: 42
0.0339 сек. | 1.86 МБ | SQL: 7