| getpacklist.pl
|
This is an example of conditional packing list generation, as described in HTTPsync Conditional and "Access Protected" Packing Lists
#!/usr/bin/perl -- -*-perl-*- # ------------------------------------------------------------ # getpacklist.pl, cgi interface to get a packing list useful # for use with httpsync. See http://www.mibsoftware.com/httpsync/ # # This software is placed in the public domain. # # Expects URL encoded FORM values (i.e. method=GET) # u = user name. Checked against a list. # d = document name. Checked against a list. # ------------------------------------------------------------ $| = 1; # Split the name-value pairs @pairs = split(/&/, $ENV{'QUERY_STRING'}); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); # Un-Webify plus signs and %-encoding $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/([|~"'`%\\])/ /; $FORM{$name} = $value; } if ($FORM{u} eq "test") { print "Content-type: text/plain\n\n"; # note: the lists available must already have a "R" line. system("cat ../userkt/inn/dev/inn2.0-beta/$FORM{d}"); } else { print "Status: 403 Forbidden\n"; # Print out a content-type for HTTP/1.0 compatibility print "Content-type: text/plain\n\n"; print "Access denied\n"; } |