# #
# File: user/fo_posting.pl #
# #
-# Authors: André Malo <nd@o3media.de>, 2001-04-08 #
+# Authors: André Malo <nd@o3media.de> #
# #
# Description: Accept new postings, display "Neue Nachricht" page #
# #
$Shared
$Script
$Config
- $VERSION
);
# locate the script
#
BEGIN {
- my $null = $0; $null =~ s/\\/\//g; # for win :-(
- $Bin = ($null =~ /^(.*)\/.*$/)? $1 : '.';
- $Shared = "$Bin/../shared";
- $Config = "$Bin/config";
- $Script = ($null =~ /^.*\/(.*)$/)? $1 : $null;
-
-# my $null = $0;
+# my $null = $0; $null =~ s/\\/\//g; # for win :-(
# $Bin = ($null =~ /^(.*)\/.*$/)? $1 : '.';
-# $Config = "$Bin/../../daten/forum/config";
-# $Shared = "$Bin/../../cgi-shared";
+# $Shared = "$Bin/../shared";
+# $Config = "$Bin/config";
# $Script = ($null =~ /^.*\/(.*)$/)? $1 : $null;
+
+ my $null = $0;
+ $Bin = ($null =~ /^(.*)\/.*$/)? $1 : '.';
+ $Config = "$Bin/../../cgi-config/forum";
+ $Shared = "$Bin/../../cgi-shared";
+ $Script = ($null =~ /^.*\/(.*)$/)? $1 : $null;
}
# setting umask, remove or comment it, if you don't need
#
-umask 006;
+umask 000;
use lib "$Shared";
use CGI::Carp qw(fatalsToBrowser);
use Conf::Admin;
use Posting::Cache;
+################################################################################
+#
# Version check
#
-$VERSION = do { my @r =(q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+# last modified:
+# $Date$ (GMT)
+# by $Author$
+#
+sub VERSION {(q$Revision$ =~ /([\d.]+)\s*$/)[0] or '0.0'}
# load script configuration and admin default conf.
#
### Posting::Request ###########################################################
package Posting::Request;
-use Arc::Archive;
+use Arc::Starter;
use CheckRFC;
-use Encode::Plain; $Encode::Plain::utf8 = 1; # generally convert from UTF-8
+use Encode::Plain; $Encode::Plain::utf8 = 1;
use Encode::Posting;
-use Lock qw(:ALL);
+use Lock;
use Posting::_lib qw(
hr_time
parse_xml_file
sub severance {
my $self = shift;
- my $stat = cut_tail ({
- forumFile => $self -> {conf} -> {forum_file_name},
- messagePath => $self -> {conf} -> {message_path},
- archivePath => $self -> {conf} -> {original} -> {files} -> {archivePath},
- lockFile => $self -> {conf} -> {original} -> {files} -> {sev_lock},
- adminDefault => $self -> {conf} -> {admin},
- cachePath => $self -> {conf} -> {original} -> {files} -> {cachePath}
- });
-# die $stat->{(keys %$stat)[0]} if (%$stat);
-
+ start_severance ($self -> {conf} -> {original} -> {files} -> {sev_app});
}
### sub response ###############################################################
# unlock forum main file
#
if ($self -> {forum} -> {flocked}) {
- violent_unlock_file($self -> {conf} -> {forum_file_name}) unless write_unlock_file ($self -> {conf} -> {forum_file_name});
+ $self -> {forum} -> {flocked} -> unlock;
$self -> {forum} -> {flocked} = 0;
}
#
sub load_main_file {
my $self = shift;
- my $lock_stat;
+ my $forum = new Lock ($self -> {conf} -> {forum_file_name});
- unless ($lock_stat = write_lock_file ($self -> {conf} -> {forum_file_name})) {
- if (defined $lock_stat) {
+ unless ($forum -> lock(LH_EXCL)) {
+ unless ($forum -> masterlocked) {
# occupied or no w-bit set for the directory..., hmmm
#
- violent_unlock_file ($self -> {conf} -> {forum_file_name});
$self -> {error} = {
spec => 'occupied',
type => 'repeat'
}
}
else {
- $self -> {forum} -> {flocked} = 1;
+ $self -> {forum} -> {flocked} = $forum;
( $self -> {forum} -> {threads},
$self -> {forum} -> {last_thread},
$self -> {forum} -> {last_message},
if (exists ($formdata -> {$name {$_}} -> {type}) and $formdata -> {$name {$_}} -> {type} eq 'name') {
$val_ww =~ y/a-zA-Z//cd;
- my @badlist = map {qr/\Q$_/i} qw (
- # insert badmatchlist here
- );
+ my @badlist;
+# my @badlist = map {qr/\Q$_/i} qw (
+# # insert badmatchlist here
+# );
- push @badlist => map {qr/\b\Q$_\E\b/i} qw(
- # insert badwordlist here
- );
+# push @badlist => map {qr/\b\Q$_\E\b/i} qw(
+# # insert badwordlist here
+# );
for (@badlist) {
if ($val_ww =~ /$_/) {
my $formdata = $self -> {conf} -> {form_data};
if (@{$self -> {fetch}}) {
- my $filename = $self -> {conf} -> {message_path}.'t'.$self -> {fup_tid}.'.xml';
+ my $thread = new Lock ($self -> {conf} -> {message_path}.'t'.$self -> {fup_tid}.'.xml');
- if (lock_file ($filename)) {
- my $xml = parse_xml_file ($filename);
- violent_unlock_file($filename) unless unlock_file ($filename);
+ if ($thread -> lock (LH_SHARED)) {
+ my $xml = parse_xml_file ($thread -> filename);
+ $thread -> unlock;
if ($xml) {
my $mnode = get_message_node ($xml, 't'.$self -> {fup_tid}, 'm'.$self -> {fup_mid});
}
sub jerk {
- my $text = $_[1] || 'An error has occurred.';
+ my $text = shift;
+ $text = 'An error has occurred.' unless defined $text;
+
print <<EOF;
Content-type: text/plain