]> bicyclesonthemoon.info Git - ott/bsta/blobdiff - viewer.1.pl
Adapted for new config tool.
[ott/bsta] / viewer.1.pl
index 7afe8a15e66d1ded7b0b2480e940bbadc850b9c4..8932569c24f7504a69fa38fc473ff32e32b91f89 100644 (file)
@@ -1,54 +1,56 @@
-###PERL;
-#
+###RUN_PERL: #!/usr/bin/perl
+
 # /bsta/v
 # viewer is generated from viewer.1.pl.
-# 09.01.2023
 #
 # The viewer interface
 #
-#    Copyright (C) 2016-2017, 2019-2020, 2023  Balthasar Szczepański
+# Copyright (C) 2016-2017, 2019-2020, 2023  Balthasar Szczepański
 #
-#    This program is free software: you can redistribute it and/or modify
-#    it under the terms of the GNU Affero General Public License as
-#    published by the Free Software Foundation, either version 3 of the
-#    License, or (at your option) any later version.
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
 #
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU Affero General Public License for more details.
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
 #
-#    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 use strict;
 #use warnings;
-###LIB;
+###PERL_LIB: use lib /botm/lib/bsta
 use bsta_lib qw(failpage gethttpheader getcgi entityencode readdatafile writedatafile printdatafileht urlencode bb2ht bb2bb linehtml);
 use File::Copy;
 
-###DATA_PATH;
-###DEFAULT_PATH;
-###SETTINGS_PATH;
-###STATE_PATH;
-###LOGO_PATH;
-###FAVICON_PATH;
-###WEBSITE;
-###WEBSITE_NAME;
-###CSS_PATH;
-###CGI_PATH;
-###FRAME_PATH;
-###VIEWER_PATH;
-###NOACCESS_PATH;
-###STORY_PATH;
-###WWW_PATH;
-###INDEX_PATH;
-###ATTACH_PATH;
-###INFO_PATH;
-###BBCODE_PATH;
-###GOTO_PATH;
-###LIST_PATH;
-###TIMER_PATH;
+###PERL_CGI_PATH:           CGI_PATH           = /bsta/
+###PERL_CGI_ATTACH_PATH:    CGI_ATTACH_PATH    = /bsta/a
+###PERL_CGI_BBCODE_PATH:    CGI_BBCODE_PATH    = /bsta/b
+###PERL_CGI_CSS_PATH:       CGI_CSS_PATH       = /bsta/bsta.css
+###PERL_CGI_FRAME_PATH:     CGI_FRAME_PATH     = /bsta/f
+###PERL_CGI_GOTO_PATH:      CGI_GOTO_PATH      = /bsta/g
+###PERL_CGI_INFO_PATH:      CGI_INFO_PATH      = /bsta/i
+###PERL_CGI_LOGO_PATH:      CGI_LOGO_PATH      = /bsta/botmlogo.png
+###PERL_CGI_TIMER_PATH:     CGI_TIMER_PATH     = /bsta/timer.js
+###PERL_CGI_VIEWER_PATH:    CGI_VIEWER_PATH    = /bsta/v
+
+###PERL_DATA_PATH:          DATA_PATH          = /botm/data/bsta/
+###PERL_DATA_DEFAULT_PATH:  DATA_DEFAULT_PATH  = /botm/data/bsta/default
+###PERL_DATA_LIST_PATH:     DATA_LIST_PATH     = /botm/data/bsta/list
+###PERL_DATA_NOACCESS_PATH: DATA_NOACCESS_PATH = /botm/data/bsta/noaccess
+###PERL_DATA_SETTINGS_PATH: DATA_SETTINGS_PATH = /botm/data/bsta/settings
+###PERL_DATA_STATE_PATH:    DATA_STATE_PATH    = /botm/data/bsta/state
+###PERL_DATA_STORY_PATH:    DATA_STORY_PATH    = /botm/data/bsta/story
+
+###PERL_WWW_PATH:           WWW_PATH           = /botm/www/1190/bsta/
+###PERL_WWW_INDEX_PATH:     WWW_INDEX_PATH     = /botm/www/1190/bsta/index.htm
+
+###PERL_WEBSITE:            WEBSITE            = 1190.bicyclesonthemoon.info
+###PERL_WEBSITE_NAME:       WEBSITE_NAME       = Bicycles on the Moon
+###PERL_FAVICON_PATH:       FAVICON_PATH       = /img/favicon.png
 
 my %http;
 my %cgi;
@@ -78,7 +80,7 @@ my $ongtime;
 my $textmode;
 
 delete @ENV{qw(IFS CDPATH ENV BASH_ENV)};
-###PATH;
+###PERL_SET_PATH: $ENV{'PATH'} = /usr/local/bin:/usr/bin:/bin;
 
 if ($ENV{'REQUEST_METHOD'} =~ /^(HEAD|GET|POST)$/) {
        $method=$1;
@@ -131,8 +133,8 @@ else {
 }
 # print "Content-type: text/plain\n\n";
 
-%settings=readdatafile(SETTINGS_PATH);
-%default=readdatafile(DEFAULT_PATH);
+%settings=readdatafile(DATA_SETTINGS_PATH);
+%default=readdatafile(DATA_DEFAULT_PATH);
 %framedata=readdatafile(DATA_PATH.$frame);
 if($password eq $settings{'password'}){
        $passwordOK = 1;
@@ -141,7 +143,7 @@ else{
        $passwordOK = 0;
 }
 
-if (open ($statefile,"+<",STATE_PATH)){
+if (open ($statefile,"+<",DATA_STATE_PATH)){
        if (flock($statefile,2)) {
                
                %state=readdatafile($statefile);
@@ -176,8 +178,8 @@ if (open ($statefile,"+<",STATE_PATH)){
                        my $inpath;
                        my $outpath;
                        
-                       %story = readdatafile(STORY_PATH);
-                       %gotolist=readdatafile(LIST_PATH);
+                       %story = readdatafile(DATA_STORY_PATH);
+                       %gotolist=readdatafile(DATA_LIST_PATH);
                        if(int($story{'state'}) == 17 && int($story{'pass'}) == 1) {
                                #ACTIVATE!
                                
@@ -202,9 +204,9 @@ if (open ($statefile,"+<",STATE_PATH)){
                                $gotolist{'ongtime-1'}=$framedata{'ongtime'};
                                
                                if(copy ($inpath, $outpath)) {
-                                       writeindex(INDEX_PATH);
+                                       writeindex(WWW_INDEX_PATH);
                                        writedatafile($statefile,%state);
-                                       writedatafile(LIST_PATH,%gotolist);
+                                       writedatafile(DATA_LIST_PATH,%gotolist);
                                }
                                else {
                                        $state{'state'} = 0;
@@ -261,7 +263,7 @@ if ($passwordOK || (int($state{'state'}) >= 1 && $frame <= int($state{'last'}) &
 }
 else {
        $access=0;
-       %framedata = readdatafile(NOACCESS_PATH);
+       %framedata = readdatafile(DATA_NOACCESS_PATH);
        foreach my $ind (keys %default) {
                unless(defined($framedata{$ind})){
                        $framedata{$ind}=$default{$ind};
@@ -326,21 +328,21 @@ unless($framedata{'title'} eq '' || $framedata{'title'} eq $settings{'story'}) {
 }
 print entityencode($settings{'story'}).' &bull; '.WEBSITE_NAME.'</title>'."\n";
 print '<link rel="icon" type="image/png" href="'.FAVICON_PATH.'">'."\n";
-print '<link rel="stylesheet" href="'.CSS_PATH.'">'."\n";
-print '<link rel="index" href="'.GOTO_PATH.($passwordOK?('?p='.urlencode($password)):'').'">'."\n";
-print '<link rel="start" href="'.VIEWER_PATH.'/0'.($passwordOK?('?p='.urlencode($password)):'').'">'."\n";
+print '<link rel="stylesheet" href="'.CGI_CSS_PATH.'">'."\n";
+print '<link rel="index" href="'.CGI_GOTO_PATH.($passwordOK?('?p='.urlencode($password)):'').'">'."\n";
+print '<link rel="start" href="'.CGI_VIEWER_PATH.'/0'.($passwordOK?('?p='.urlencode($password)):'').'">'."\n";
 if($frame>0 && $access) {
-       print '<link rel="prev" href="'.VIEWER_PATH.'/'.($frame - 1).($passwordOK?('?p='.urlencode($password)):'').'">'."\n";
+       print '<link rel="prev" href="'.CGI_VIEWER_PATH.'/'.($frame - 1).($passwordOK?('?p='.urlencode($password)):'').'">'."\n";
 }
 if ($passwordOK || $frame<int($state{'last'})) {
-       print '<link rel="next" href="'.VIEWER_PATH.'/'.($frame + 1).($passwordOK?('?p='.urlencode($password)):'').'">'."\n";
-       print '<link rel="prefetch" href="'.VIEWER_PATH.'/'.($frame + 1).($passwordOK?('?p='.urlencode($password)):'').'">'."\n";
+       print '<link rel="next" href="'.CGI_VIEWER_PATH.'/'.($frame + 1).($passwordOK?('?p='.urlencode($password)):'').'">'."\n";
+       print '<link rel="prefetch" href="'.CGI_VIEWER_PATH.'/'.($frame + 1).($passwordOK?('?p='.urlencode($password)):'').'">'."\n";
 }
 if($frame==int($state{'last'}) && int($state{'state'}) >= 1 && int($state{'state'}) < 3) {
-       print '<!-- <script src="'.TIMER_PATH.'"></script> -->'."\n";
+       print '<!-- <script src="'.CGI_TIMER_PATH.'"></script> -->'."\n";
 }
 print '</head><body>'."\n";
-print '<a href="/"><img id="botmlogo" src="'.LOGO_PATH.'" alt="'.WEBSITE.'"></a>'."\n";
+print '<a href="/"><img id="botmlogo" src="'.CGI_LOGO_PATH.'" alt="'.WEBSITE.'"></a>'."\n";
 print '<div id="all">'."\n";
 
 print '<div id="inst" class="ins">'."\n";
@@ -359,7 +361,7 @@ else {
                print CGI_PATH.sprintf($settings{'frame'},$frame,$framedata{'ext'});
        }
        else {
-               print FRAME_PATH.'/'.$frame.($passwordOK?('?p='.urlencode($password)):'');
+               print CGI_FRAME_PATH.'/'.$frame.($passwordOK?('?p='.urlencode($password)):'');
        }
        print '" id="frame" alt="'.$frame.'" title="'.entityencode($framedata{'title'}).'">'."\n";
 }
@@ -381,7 +383,7 @@ if($textmode==2){
 elsif($textmode==1){
        print '<div id="chat">'."\n";
        print '[quote][center][size=200]'.entityencode($framedata{'title'}).'[/size]<br>'."\n";
-       print '[url=http://'.WEBSITE.VIEWER_PATH.'/'.$frame.'][img]http://'.WEBSITE.CGI_PATH.($access?sprintf($settings{'frame'},$frame,$framedata{'ext'}):$framedata{'frame'}).'[/img][/url][/center]<br>'."\n";
+       print '[url=http://'.WEBSITE.CGI_VIEWER_PATH.'/'.$frame.'][img]http://'.WEBSITE.CGI_PATH.($access?sprintf($settings{'frame'},$frame,$framedata{'ext'}):$framedata{'frame'}).'[/img][/url][/center]<br>'."\n";
        print bb2bbf($framedata{'content'}).'[/quote]</div>'."\n";
 }
 elsif($framedata{'content'} ne ''){
@@ -417,12 +419,12 @@ if($frame==int($state{'last'}) && int($state{'state'}) >= 1 && int($state{'state
 }
 print '&gt;';
 if (!$access){
-       print '<a href="'.VIEWER_PATH.'/-1">'.entityencode($framedata{'command'}).'</a><br>'."\n";
+       print '<a href="'.CGI_VIEWER_PATH.'/-1">'.entityencode($framedata{'command'}).'</a><br>'."\n";
 }
 else {
        if ($passwordOK || $frame<int($state{'last'}) || (int($state{'state'}) >= 2 && $showcommand)) {
                if ($passwordOK || $frame<int($state{'last'})) {
-                       print '<a href="'.VIEWER_PATH.'/'.($frame + 1).($passwordOK?('?p='.urlencode($password)):'').'">';
+                       print '<a href="'.CGI_VIEWER_PATH.'/'.($frame + 1).($passwordOK?('?p='.urlencode($password)):'').'">';
                }
                if($nextframedata{'title'} ne '') {
                        print entityencode($nextframedata{'title'});
@@ -447,20 +449,20 @@ print '</div>'."\n";
 print '<div id="underlinks">'."\n";
 print '<a href="'.CGI_PATH.'">Once again</a>';
 if($frame>0 && $access) {
-       print ' | <a href="'.VIEWER_PATH.'/'.($frame-1).($passwordOK?('?p='.urlencode($password)):'').'">Before</a>';
+       print ' | <a href="'.CGI_VIEWER_PATH.'/'.($frame-1).($passwordOK?('?p='.urlencode($password)):'').'">Before</a>';
 }
 if($frame != int($state{'last'})) {
-       print ' | <a href="'.VIEWER_PATH.'/'.int($state{'last'}).($passwordOK?('?p='.urlencode($password)):'').'">Now</a>';
+       print ' | <a href="'.CGI_VIEWER_PATH.'/'.int($state{'last'}).($passwordOK?('?p='.urlencode($password)):'').'">Now</a>';
 }
-print ' | <a href="'.GOTO_PATH.($passwordOK?('?p='.urlencode($password)):'').'">GOTO</a>'."\n";
+print ' | <a href="'.CGI_GOTO_PATH.($passwordOK?('?p='.urlencode($password)):'').'">GOTO</a>'."\n";
 print '<span style="float: right;">'."\n";
 
 if ($textmode!=0) {
-       print '<a href="'.VIEWER_PATH.'/'.$frame.($passwordOK?('?p='.urlencode($password)):'').'">Without</a> | ';
+       print '<a href="'.CGI_VIEWER_PATH.'/'.$frame.($passwordOK?('?p='.urlencode($password)):'').'">Without</a> | ';
 }
 
-print '<a href="'.(($textmode==2)?(INFO_PATH.'/'.$frame.($passwordOK?('?p='.urlencode($password)):'')):(VIEWER_PATH.'/'.$frame.'?b=2'.($passwordOK?('&amp;p='.urlencode($password)):''))).'">Info</a>';
-print ' | <a href="'.(($textmode==1)?(BBCODE_PATH.'/'.$frame.($passwordOK?('?p='.urlencode($password)):'')):(VIEWER_PATH.'/'.$frame.'?b=1'.($passwordOK?('&amp;p='.urlencode($password)):''))).'">BB</a>';
+print '<a href="'.(($textmode==2)?(CGI_INFO_PATH.'/'.$frame.($passwordOK?('?p='.urlencode($password)):'')):(CGI_VIEWER_PATH.'/'.$frame.'?b=2'.($passwordOK?('&amp;p='.urlencode($password)):''))).'">Info</a>';
+print ' | <a href="'.(($textmode==1)?(CGI_BBCODE_PATH.'/'.$frame.($passwordOK?('?p='.urlencode($password)):'')):(CGI_VIEWER_PATH.'/'.$frame.'?b=1'.($passwordOK?('&amp;p='.urlencode($password)):''))).'">BB</a>';
 print "\n</span>\n";
 
 print '</div>'."\n";
@@ -493,7 +495,7 @@ sub writeindex {
        
        %framedata = readdatafile(DATA_PATH.0);
        %nextframedata = readdatafile(DATA_PATH.1);
-       %default=readdatafile(DEFAULT_PATH);
+       %default=readdatafile(DATA_DEFAULT_PATH);
        
        foreach my $ind (keys %default) {
                unless(defined($framedata{$ind})){
@@ -509,13 +511,13 @@ sub writeindex {
        print $indexfile '<meta http-equiv="Content-type" content="text/html; charset=UTF-8">'."\n";
        print $indexfile '<title>'.entityencode($settings{'story'}).' &bull; '.WEBSITE_NAME.'</title>'."\n";
        print $indexfile '<link rel="icon" type="image/png" href="'.FAVICON_PATH.'">'."\n";
-       print $indexfile '<link rel="stylesheet" href="'.CSS_PATH.'">'."\n";
-       print $indexfile '<link rel="index" href="'.GOTO_PATH.'">'."\n";
-       print $indexfile '<link rel="start" href="'.VIEWER_PATH.'/0">'."\n";
-       print $indexfile '<link rel="next" href="'.VIEWER_PATH.'/1">'."\n";
-       print $indexfile '<link rel="prefetch" href="'.VIEWER_PATH.'/1">'."\n";
+       print $indexfile '<link rel="stylesheet" href="'.CGI_CSS_PATH.'">'."\n";
+       print $indexfile '<link rel="index" href="'.CGI_GOTO_PATH.'">'."\n";
+       print $indexfile '<link rel="start" href="'.CGI_VIEWER_PATH.'/0">'."\n";
+       print $indexfile '<link rel="next" href="'.CGI_VIEWER_PATH.'/1">'."\n";
+       print $indexfile '<link rel="prefetch" href="'.CGI_VIEWER_PATH.'/1">'."\n";
        print $indexfile '</head><body>'."\n";
-       print $indexfile '<a href="/"><img id="botmlogo" src="'.LOGO_PATH.'" alt="'.WEBSITE.'"></a>'."\n";
+       print $indexfile '<a href="/"><img id="botmlogo" src="'.CGI_LOGO_PATH.'" alt="'.WEBSITE.'"></a>'."\n";
        print $indexfile '<div id="all">'."\n";
        
        print $indexfile '<div id="inst" class="ins">'."\n";
@@ -533,7 +535,7 @@ sub writeindex {
        print $indexfile '</div>'."\n";
        
        print $indexfile '<div id="command">'."\n";
-       print $indexfile '&gt;<a href="'.VIEWER_PATH.'/1">'.entityencode($nextframedata{'title'}).'</a>'."\n";
+       print $indexfile '&gt;<a href="'.CGI_VIEWER_PATH.'/1">'.entityencode($nextframedata{'title'}).'</a>'."\n";
        print $indexfile '</div>'."\n";
        
        print $indexfile '<div id="underlinks">'."\n";
@@ -541,8 +543,8 @@ sub writeindex {
        
        # <span style="float: right;"><a href="/bsta/v/0?b=2">Info</a> | <a href="/bsta/v/0?b=1">BB</a></span>
        
-       print $indexfile '<a href="'.VIEWER_PATH.'/-1">Now</a> | <a href="'.GOTO_PATH.'">GOTO</a>';
-       print $indexfile '<span style="float: right;"><a href="'.INFO_PATH.'/0?b=2">Info</a> | <a href="'.VIEWER_PATH.'/0?b=1">BB</a></span>'."\n";
+       print $indexfile '<a href="'.CGI_VIEWER_PATH.'/-1">Now</a> | <a href="'.CGI_GOTO_PATH.'">GOTO</a>';
+       print $indexfile '<span style="float: right;"><a href="'.CGI_INFO_PATH.'/0?b=2">Info</a> | <a href="'.CGI_VIEWER_PATH.'/0?b=1">BB</a></span>'."\n";
        print $indexfile '</div>'."\n";
        
        print $indexfile '</div>'."\n";
@@ -576,13 +578,13 @@ sub bb2htf {
                $posttext = substr ($bb,pos ($bb));
                
                if ($tagvalue =~ /^att&([0-9]+)$/) {
-                       $tagvalue = ATTACH_PATH.'/'.int($1).($passwordOK?('?p='.urlencode($password)):'');
+                       $tagvalue = CGI_ATTACH_PATH.'/'.int($1).($passwordOK?('?p='.urlencode($password)):'');
                }
                elsif ($tagvalue =~ /^vw&([0-9]+)$/) {
-                       $tagvalue = VIEWER_PATH.'/'.int($1).($passwordOK?('?p='.urlencode($password)):'');
+                       $tagvalue = CGI_VIEWER_PATH.'/'.int($1).($passwordOK?('?p='.urlencode($password)):'');
                }
                elsif ($tagvalue =~ /^fr&([0-9]+)$/) {
-                       $tagvalue = FRAME_PATH.'/'.int($1).($passwordOK?('?p='.urlencode($password)):'');
+                       $tagvalue = CGI_FRAME_PATH.'/'.int($1).($passwordOK?('?p='.urlencode($password)):'');
                }
                else {
                        $tagvalue = '';
@@ -608,13 +610,13 @@ sub bb2bbf {
                $posttext = substr ($bb,pos ($bb));
                
                if ($tagvalue =~ /^att&([0-9]+)$/) {
-                       $tagvalue = 'http://'.WEBSITE.ATTACH_PATH.'/'.int($1);
+                       $tagvalue = 'http://'.WEBSITE.CGI_ATTACH_PATH.'/'.int($1);
                }
                elsif ($tagvalue =~ /^vw&([0-9]+)$/) {
-                       $tagvalue = 'http://'.WEBSITE.VIEWER_PATH.'/'.int($1);
+                       $tagvalue = 'http://'.WEBSITE.CGI_VIEWER_PATH.'/'.int($1);
                }
                elsif ($tagvalue =~ /^fr&([0-9]+)$/) {
-                       $tagvalue = 'http://'.WEBSITE.FRAME_PATH.'/'.int($1);
+                       $tagvalue = 'http://'.WEBSITE.CGI_FRAME_PATH.'/'.int($1);
                }
                else {
                        $tagvalue = '';