###PERL_LIB: use lib /botm/lib/bsta
use botm_common (
+ 'HTTP_STATUS',
'read_data_file', 'write_data_file',
'read_header_env',
'url_query_decode', 'url_query_encode',
'merge_url',
'html_entity_encode_dec',
- 'open_encoded'
+ 'open_encoded',
+ 'http_header_status'
);
use bsta_lib (
'STATE', 'CHAT_STATE', 'CHAT_ACTION',
my $password_ok;
my @chat_lines;
my $chat_state;
+my $status;
my $message;
my $chat_id;
my $last_id;
$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);
$chat_id = int($chat{'id'});
$last_id = $chat_id;
- if (($action == CHAT_ACTION->{'none'}) && ($words ne '')) {
+ if ($method ne 'POST') {
+ #
+ }
+
+ elsif (
+ ($action == CHAT_ACTION->{'none'}) &&
+ ($words ne '')
+ ) {
if (($chat_state < CHAT_STATE->{'ready'}) && !$password_ok) {
+ $status = HTTP_STATUS->{'forbidden'};
$message = 'Not connected.';
}
else {
write_data_file($fh, \%chat);
}
else {
+ $status = HTTP_STATUS->{'bad_request'};
$message = 'Invalid username.';
}
}
else {
+ $status = HTTP_STATUS->{'bad_request'};
$message = 'Invalid text.';
}
}
write_data_file($fh, \%chat);
}
elsif ($words eq '') {
+ $status = HTTP_STATUS->{'bad_request'};
$message = 'Server ID missing.';
}
elsif ($words !~ /^[0-9]+$/) {
+ $status = HTTP_STATUS->{'bad_request'};
$message = 'Invalid server ID.';
}
else {
+ $status = HTTP_STATUS->{'not_found'};
$message = 'No active Coincidence server with this ID.';
}
}
else {
+ $status = HTTP_STATUS->{'bad_request'};
$message = 'Invalid username.';
}
}
}
}
else {
+ $status = HTTP_STATUS->{'bad_request'};
$message = 'Invalid username.';
}
}
write_data_file($fh, \%chat);
}
else {
+ $status = HTTP_STATUS->{'bad_request'};
$message = 'Invalid username.';
}
}
else {
+ $status = HTTP_STATUS->{'bad_request'};
$message = 'Invalid text.';
}
}
+
@chat_lines = split(/\r?\n/, $chat{'content'});
}
- else{
+ else {
$chat_state = CHAT_STATE->{'disconnected'};
+ $status = HTTP_STATUS->{'internal_server_error'};
$message = 'Can\'t lock data file!';
}
}
else {
$chat_state = CHAT_STATE->{'disconnected'};
+ $status = HTTP_STATUS->{'internal_server_error'};
$message='Can\'t open data file!';
}
}
}
}
+if ($status ne '') {
+ print http_header_status($status);
+}
print "Content-type: text/html; charset=UTF-8\n\n";
if($method eq 'HEAD') {
exit;
print ' Connected to server <span class="br">'.$_server.'</span> as user <span class="ni">'.$_username.'</span> (<span class="ni">'.$_abbr.'</span>), public key <span class="br">'.$_key.'</span>.'."\n";
}
else{
- print ' Not connected.';
+ print ' Not connected.'."\n";
}
print ' </div>'."\n";