Server IP : 127.0.0.2 / Your IP : 3.140.250.157 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/popularity-contest/examples/cgi-bin/ |
Upload File : |
#!/usr/bin/perl -wT # # Receive HTTP post request with a file upload, uncompress it if # needed, and submit it as an email to the popcon collector. # Require the Debian package libcgi-pm-perl # Handle three different submission methods # - simple post message, where the complete body is the popcon report # (used by popcon version 1.30). # - mime-encoded upload with report in compressed form (used by # popcon version 1.31 and newer). # - mime-encoded upload with report in uncompressed form (used by # ubuntu popcon). use strict; use CGI; use Compress::Zlib; my $email='survey@popcon.debian.org'; my $directsave = 0; # Enable to store on disk instead of sending an email my $basedir = "/var/lib/popcon"; my $bindir = "$basedir/bin"; $ENV{PATH}=""; print "Content-Type: text/plain\n\n"; if (exists $ENV{REQUEST_METHOD} && $ENV{REQUEST_METHOD} ne "POST") { print "Debian Popularity-Contest HTTP-POST submission URL\n"; print "Visit http://popcon.debian.org/ for more info.\n"; exit 0; } # Extract post data, handle both simple and multipart way my @entry; if (exists $ENV{CONTENT_TYPE} && $ENV{CONTENT_TYPE} =~ m%multipart/form-data%){ # New method, used in popularity-contest after 1.30 my $query = new CGI; my $fh = $query->upload("popcondata"); if ($fh) { my $filename = $query->param("popcondata"); my $type = $query->uploadInfo($filename)->{'Content-Type'}; if ("text/plain; charset=utf-8" ne $type && "application/octet-stream" ne $type) { # Used by ubuntu script print "Only 'text/plain; charset=utf-8' and 'application/octet-stream' is supported (not $type)!"; die; } else { my $encoding = $query->uploadInfo($filename)->{'Content-Encoding'}; if ("x-gzip" eq $encoding || "gzip" eq $encoding) { # Uncompress print "Compressed ($encoding) encoding detected.\n"; my $data; # $data = join("", <$fh>); my $len = (stat($fh))[7]; read $fh, $data, $len; $data = Compress::Zlib::memGunzip($data); @entry = ($data); } else { # Pass through print "Identity encoding detected.\n"; @entry = <$fh>; } } } else { print $query->cgi_error; die; } } else { # Old submit method, used in popularity-contest version 1.30 print "Old method detected.\n"; open GZIP, '/bin/gzip -dc|' or die "gzip"; close STDIN; open STDIN, "<&GZIP"; @entry = <GZIP>; } if ($entry[0] =~ m/POPULARITY-CONTEST-0/ || $entry[0] =~ m/-----BEGIN PGP MESSAGE-----/) { if ($directsave) { open(POPCON, "|$bindir/prepop.pl") or die "Unable to pipe to prepop.pl"; print POPCON @entry; close POPCON; } else { open POPCON, "|/usr/lib/sendmail -oi $email" or die "sendmail"; print POPCON <<"EOF"; To: $email Subject: popularity-contest submission EOF print POPCON @entry; close POPCON; } print "Thanks for your submission to Debian Popularity-Contest!\n"; print "DEBIAN POPCON HTTP-POST OK\n"; } else { print "The submission to Debian Popularity-Contest failed!\n"; } exit 0;