Blame


1 eff881ea 2022-01-06 op #!/usr/bin/env perl
2 eff881ea 2022-01-06 op
3 eff881ea 2022-01-06 op use strict;
4 eff881ea 2022-01-06 op use warnings;
5 eff881ea 2022-01-06 op use v5.10;
6 eff881ea 2022-01-06 op
7 eff881ea 2022-01-06 op my $path = $ENV{'PATH_INFO'};
8 eff881ea 2022-01-06 op my $script_path = $ENV{'SCRIPT_NAME'};
9 eff881ea 2022-01-06 op my $server_name = $ENV{'SERVER_NAME'};
10 eff881ea 2022-01-06 op
11 eff881ea 2022-01-06 op sub reply {
12 eff881ea 2022-01-06 op my ($code, $meta) = @_;
13 eff881ea 2022-01-06 op print "$code $meta\r\n";
14 eff881ea 2022-01-06 op if ($code != 20) {
15 eff881ea 2022-01-06 op exit(0);
16 eff881ea 2022-01-06 op }
17 eff881ea 2022-01-06 op }
18 eff881ea 2022-01-06 op
19 eff881ea 2022-01-06 op if (! defined($path) || $path eq '') {
20 eff881ea 2022-01-06 op reply 20, 'text/gemini';
21 eff881ea 2022-01-06 op print <<EOF;
22 eff881ea 2022-01-06 op # gemini bin
23 eff881ea 2022-01-06 op
24 eff881ea 2022-01-06 op Append a clbin.com URL to see it via your preferred gemini browser!
25 eff881ea 2022-01-06 op
26 eff881ea 2022-01-06 op For example: gemini://${server_name}${script_path}/clbin.com/XYZ
27 eff881ea 2022-01-06 op
28 eff881ea 2022-01-06 op --eof
29 eff881ea 2022-01-06 op EOF
30 eff881ea 2022-01-06 op exit(0);
31 eff881ea 2022-01-06 op }
32 eff881ea 2022-01-06 op
33 eff881ea 2022-01-06 op # trim initial slash so we have only the hostname
34 eff881ea 2022-01-06 op $path =~ s,^/,,;
35 eff881ea 2022-01-06 op
36 eff881ea 2022-01-06 op # implement multiple bins eventually...
37 eff881ea 2022-01-06 op if ($path =~ m,^clbin.com/.*,) {
38 598f3ad9 2022-01-06 op reply 20, 'text/plain';
39 eff881ea 2022-01-06 op exec 'curl', 'https://'.$path;
40 eff881ea 2022-01-06 op } else {
41 eff881ea 2022-01-06 op reply 59, 'bin not supported';
42 eff881ea 2022-01-06 op }