Revision 296 (by ahitrov, 2013/03/26 17:59:01) |
Promosite (anthill) project source
|
#!/usr/bin/perl -w
use strict;
umask(002);
my $debugs=time();
my $ROOT=$ENV{HOME}."/Contenido/var/projects/promosuite/loader";
my $wdir="$ROOT/incom/";
my $tmpdir="$ROOT/tmp/";
my $plist="$ROOT/etc/author.priority";
my $maxL=2048*1024;
my %P;
if (open(L,$plist)){
while (defined(my $str=<L>)){
next if ($str=~/^\#/);
my ($addr,$p)=split(/\s+/,$str,2);
$p=~s/\D//g if ($p);
$p=0 unless ($p);
$P{$addr}=$p;
}
close L;
}
my $tm=time();
my $salt=$$+$tm;
my $rndPart=int(rand(1000));
my $cont='';
read (STDIN,$cont,$maxL);
my $from='_unknown';
if ($cont=~/^From:\s+(\S+)\s*$/m){
$from=$1;
}
if ($cont=~/^AUTH_ID:\s+(\d+)/m){
$from=$1;
}
my $prior=0;
$prior=$P{$from} if (exists($P{$from}));
my $sfn="$tm.$$.$rndPart.$prior";
my $fn="";
my $tmpfn="$tmpdir$sfn";
if (open (F,">$tmpfn")){
select F;
$|=1;
select STDOUT;
print F $cont;
close F;
my $debuge=time();
my $debugd=$debuge-$debugs;
$fn="$wdir$tm.$$.${rndPart}_$debugd.$prior";
unless (rename($tmpfn,$fn)){
warn "Can\'t rename temporary $tmpfn to $fn";
}
}
else{
warn "Can\'t save mail message to $tmpfn: $!\nMessage:\n$cont";
}
Небольшая справка по веткам
cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.
koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.
utf8 – актуальная ветка, заточенная под UTF-8.
Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.