###PERL_LIB: use lib /botm/lib/bsta
use botm_common (
+ 'HTTP_STATUS',
'read_header_env',
'url_query_decode',
- 'read_data_file',
'join_path',
'merge_url',
- 'open_encoded', 'stat_encoded'
+ 'open_encoded', 'stat_encoded',
+ 'http_header_line', 'http_header_content_length', 'http_header_content_disposition'
);
use bsta_lib (
'STATE',
'merge_settings',
'get_id', 'get_password',
- 'fail_attachment', 'fail_500', 'redirect'
+ 'fail_method', 'fail_content_type', 'fail_attachment', 'fail_500',
+ 'redirect',
+ 'read_settings', 'read_state', 'read_attachment'
);
###PERL_PATH_SEPARATOR: PATH_SEPARATOR = /
###PERL_CGI_PATH: CGI_PATH = /bsta/
-
###PERL_DATA_PATH: DATA_PATH = /botm/data/bsta
-###PERL_DATA_ATTACH_PATH: DATA_ATTACH_PATH = /botm/data/bsta/a
-###PERL_DATA_SETTINGS_PATH: DATA_SETTINGS_PATH = /botm/data/bsta/settings
-###PERL_DATA_STATE_PATH: DATA_STATE_PATH = /botm/data/bsta/state
-
###PERL_WWW_PATH: WWW_PATH = /botm/www/1190/bsta/
binmode STDIN, ':encoding(UTF-8)';
$method = $1;
}
else{
- exit fail_method($ENV{'REQUEST_METHOD'}, 'GET, POST, HEAD');
+ exit fail_method($ENV{'REQUEST_METHOD'}, ['GET', 'POST', 'HEAD']);
}
%http = read_header_env(\%ENV);
}
}
-# print "content-type: text/plain\n\n";
-
$ID = get_id( \%cgi);
$password = get_password(\%cgi);
-%settings = read_data_file(DATA_SETTINGS_PATH());
-%state = read_data_file(DATA_STATE_PATH());
-%file_data = read_data_file(DATA_ATTACH_PATH().$ID);
+%settings = read_settings();
+%state = read_state();
+%file_data = read_attachment($ID);
$frame = ($file_data{'frame'} ne '') ? int($file_data{'frame'}) : -1;
$last_frame = int($state{'last'});
$ong_state = int($state{'state'});
{'path' => CGI_PATH()},
{'path' => $file_name}
);
- exit redirect ($method, $file_path, 303);
+ exit redirect ($method, $file_path, HTTP_STATUS->{'see_other'});
}
}
unless ($r) {
exit fail_500("Can't switch file to binary mode.");
}
if (my @file_info = stat_encoded($file_path)) {
- print 'Content-length: '.$file_info[7]."\n";
+ print http_header_content_length($file_info[7]);
}
}
-print 'Content-type: '.$file_data{'content-type'}."\n";
-print 'Content-disposition: attachment; filename="'.$file_name.'"'."\n";
+if ($file_data{'content-type'} ne '') {
+ print http_header_line('content-type', $file_data{'content-type'});
+}
+if ($file_name ne '') {
+ print http_header_content_disposition('inline', $file_name);
+}
unless ($direct) {
unless (binmode STDOUT) {
close($fh);