Artifact
85a4ff4a366faf93df17aa3602cfe200a463a266:
Attachment ".virt" to
wiki page [PrefixFree]
added by
mario
2014-02-16 22:07:20.
0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 70 65 72 6c 0a #!/usr/bin/perl.
0010: 23 0a 23 20 4d 61 6b 65 73 20 72 65 70 6f 2e 63 #.# Makes repo.c
0020: 67 69 2f 20 70 72 65 66 69 78 20 72 65 64 75 6e gi/ prefix redun
0030: 64 61 6e 74 20 66 6f 72 20 66 6f 73 73 69 6c 20 dant for fossil
0040: 63 67 69 20 73 65 72 76 65 72 2e 0a 23 20 4a 75 cgi server..# Ju
0050: 73 74 20 75 73 65 20 61 20 52 65 77 72 69 74 65 st use a Rewrite
0060: 52 75 6c 65 20 6f 6e 74 6f 20 74 68 69 73 20 77 Rule onto this w
0070: 72 61 70 70 65 72 20 69 6e 73 74 65 61 64 2e 0a rapper instead..
0080: 23 0a 0a 23 2d 2d 20 43 6f 6e 66 69 67 0a 24 52 #..#-- Config.$R
0090: 4f 4f 54 20 3d 20 22 2f 76 61 72 2f 77 77 77 2f OOT = "/var/www/
00a0: 75 73 72 31 32 33 2f 22 3b 0a 24 43 47 49 5f 44 usr123/";.$CGI_D
00b0: 49 52 20 3d 20 22 24 52 4f 4f 54 2f 68 74 6d 6c IR = "$ROOT/html
00c0: 2f 66 6f 73 73 69 6c 22 3b 0a 24 52 45 50 4f 53 /fossil";.$REPOS
00d0: 20 3d 20 22 24 52 4f 4f 54 2f 66 69 6c 65 73 2f = "$ROOT/files/
00e0: 66 6f 73 73 69 6c 2e 64 22 3b 0a 0a 0a 23 2d 2d fossil.d";...#--
00f0: 20 43 68 65 63 6b 20 65 6e 76 0a 24 45 4e 56 7b Check env.$ENV{
0100: 27 52 45 51 55 45 53 54 5f 55 52 49 27 7d 20 3d 'REQUEST_URI'} =
0110: 7e 20 2f 5e 5c 2f 28 5b 5c 77 2d 5d 2b 29 28 5c ~ /^\/([\w-]+)(\
0120: 2f 5b 5e 3f 5d 2a 29 3f 28 24 7c 5c 3f 2e 2a 24 /[^?]*)?($|\?.*$
0130: 29 2f 3b 0a 24 46 4e 20 3d 20 22 24 31 22 3b 20 )/;.$FN = "$1";
0140: 20 23 20 66 6f 73 73 69 6c 20 6e 61 6d 65 0a 24 # fossil name.$
0150: 50 49 20 3d 20 22 24 32 22 3b 20 20 23 20 70 61 PI = "$2"; # pa
0160: 74 68 5f 69 6e 66 6f 0a 24 51 53 20 3d 20 22 24 th_info.$QS = "$
0170: 33 22 3b 20 20 23 20 71 75 65 72 79 20 73 74 72 3"; # query str
0180: 69 6e 67 0a 0a 0a 23 2d 2d 20 52 65 70 6f 73 69 ing...#-- Reposi
0190: 74 6f 72 79 20 6e 61 6d 65 20 66 72 6f 6d 20 52 tory name from R
01a0: 65 77 72 69 74 65 52 75 6c 65 0a 69 66 20 28 20 ewriteRule.if (
01b0: 2d 65 20 22 24 52 45 50 4f 53 2f 24 46 4e 2e 66 -e "$REPOS/$FN.f
01c0: 6f 73 73 69 6c 22 20 29 0a 7b 0a 0a 20 20 20 23 ossil" ).{.. #
01d0: 2d 2d 20 4f 76 65 72 72 69 64 65 20 43 47 49 20 -- Override CGI
01e0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 0a 20 20 20 environment .
01f0: 24 45 4e 56 7b 27 53 43 52 49 50 54 5f 4e 41 4d $ENV{'SCRIPT_NAM
0200: 45 27 7d 20 3d 20 22 22 3b 0a 20 20 20 23 24 45 E'} = "";. #$E
0210: 4e 56 7b 27 52 45 51 55 45 53 54 5f 55 52 49 27 NV{'REQUEST_URI'
0220: 7d 20 3d 20 22 2f 24 46 4e 24 50 49 24 51 53 22 } = "/$FN$PI$QS"
0230: 3b 20 20 20 23 20 75 73 75 61 6c 6c 79 20 72 65 ; # usually re
0240: 74 61 69 6e 65 64 0a 20 20 20 24 45 4e 56 7b 27 tained. $ENV{'
0250: 50 41 54 48 5f 49 4e 46 4f 27 7d 20 3d 20 22 2f PATH_INFO'} = "/
0260: 24 46 4e 24 50 49 22 3b 0a 0a 20 20 20 23 2d 2d $FN$PI";.. #--
0270: 20 52 75 6e 20 66 6f 73 73 69 6c 20 72 65 70 6f Run fossil repo
0280: 2e 63 67 69 20 73 63 72 69 70 74 0a 20 20 20 65 .cgi script. e
0290: 78 65 63 20 22 24 43 47 49 5f 44 49 52 2f 72 65 xec "$CGI_DIR/re
02a0: 70 6f 2e 63 67 69 22 3b 20 20 23 20 63 6f 6e 74 po.cgi"; # cont
02b0: 61 69 6e 73 20 64 69 72 65 63 74 6f 72 79 3a 20 ains directory:
02c0: 64 65 63 6c 61 72 61 74 69 6f 6e 0a 20 20 20 65 declaration. e
02d0: 78 69 74 3b 0a 0a 7d 0a 65 6c 73 65 20 7b 0a 20 xit;..}.else {.
02e0: 20 20 70 72 69 6e 74 20 22 53 74 61 74 75 73 3a print "Status:
02f0: 20 32 30 30 5c 6e 22 3b 0a 20 20 20 70 72 69 6e 200\n";. prin
0300: 74 20 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a t "Content-Type:
0310: 20 74 65 78 74 2f 70 6c 61 69 6e 5c 6e 22 3b 0a text/plain\n";.
0320: 20 20 20 70 72 69 6e 74 20 22 5c 6e 22 3b 0a 20 print "\n";.
0330: 20 20 70 72 69 6e 74 20 22 46 6f 73 73 69 6c 20 print "Fossil
0340: 72 65 70 6f 73 69 74 6f 72 79 20 27 24 46 4e 27 repository '$FN'
0350: 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e does not exist.
0360: 22 3b 0a 7d 0a ";.}.