Opublikowano:

poczta perl

Witam czy moze ktos mi napisac co mi brakuje w systemie debian 5 ze skrypt perl nie dodaje wpisow do mysql czy moze skrypt jest wadliwy oto skrypt

Kod PHP:


#!/usr/bin/perl

use strict;

use 
DBI;

#-----------Start Configuration variables-----------------

my $POSTFIX_CF "/etc/postfix/main.cf";

my $DB_NAME '<Your ispCP name database>';

my $DB_USER ='<Your ispCP username database>'

my $DB_PASS '<Your ispCP password database>';

my $LANG 'english.pl';

#-----------End Configuration variables--------------------

my ($MAIL_RESELLER, @users, @domains$user$percent$mboxBase$lang1$lang2$lang3$lang4$lang5$lang6$lang7$lang8);

my $dbhDBI->connect("DBI:mysql:".$DB_NAME,$DB_USER,$DB_PASS,{RaiseError => 1});

#get virtual mailbox base from postfix config

open(PCF"< $POSTFIX_CF") or die $!;

while (<
PCF>) {

   
next unless /virtual_mailbox_bases*=s*(.*)s*/;

   
$mboxBase = $1;

}

close(PCF);

#assume one level of subdirectories for domain names

opendir(DIR$mboxBase) or die $!;

while (
defined(my $name readdir(DIR))) {

   
next if $name =~ /^..?$/;        #skip '.' and '..'

   
next unless (-"$mboxBase/$name");

   
push(@domains$name);

}

closedir(DIR);

#iterate through domains for username/maildirsize files

chdir($mboxBase);

foreach 
my $domain (@domains) {

    
opendir(DIR$domain) or die $!;

       while (
defined(my $name readdir(DIR))) {

        
next if $name =~ /^..?$/;        #skip '.' and '..'

               
next unless (-"$domain/$name");

          
push(@users, {"$name\@$domain" => "$mboxBase/$domain/$name"});

       }

}

closedir(DIR);

#get per user quotas and percent used

foreach my $href (@users) {

    foreach 
$user (keys %$href) {

          my $file "$href->{$user}/maildirsize";

        
next unless (-f $file);                            

        
open(FILE"< $file") or die $!;            

        
my @lines = <FILE>;

        
close(FILE);

        
my ($quota$msgquota) = split(" "$lines[0]);

        
$quota=int($quota); $msgquota=int($msgquota);

        
my $line=0my $used=0my $msgs=0;

        do {

             
$line++;

             
my ($msgsize$msgcount) = split(" "$lines[$line]);

             
$used+=$msgsize$msgs+=$msgcount;

        } while (
$line<=$#lines);

              

#get number of mails read per user

        my $cur_dir "$href->{$user}/cur";

        
my @cur_files = <$cur_dir/*>;

        my $cur_count = @cur_files;

#get number of mails unread per user

        my $new_dir = "$href->{$user}/new";

        my @new_files = <$new_dir/*>;

        my $new_count = @new_files;

#get percent used per user

        $percent = int($used / $quota * 100);

#update used and msgs per user in database

            

        my $sql="update mail_users set used='$used', msread='$cur_count', msunread='$new_count' where mail_addr='$user'";

        my $dbquery = $dbh->prepare ($sql);

        if (defined($dbquery)) {

               $dbquery->execute();

        }

#convert to Kb.

        $used=int($used/1024);

        $quota=int($quota/1024);

#get language variables

        open (LF, "</var/www/ispcp/engine/quota/lang/$LANG") or die $!;

        my @code = <LF>; 

        eval join("\n", @code);

        die $@ if $@;

        close(LF);

#fill the log file

        print "$lang1: $user   $lang2: $quota Kb.    $lang3: $used Kb.   $lang4: $new_count / $cur_count   $lang5: $percent %\n";

        print "---------------------------------------------------------------------------------------------------------------------------\n";

    }

}

$dbh->disconnect(); 




nadmieniam ze skrypt nie daje zadnego eroru i poprzez print doszlem ze do 58 linijki daje zmienne poprzez print
tak po mojemu jest chyba jakis blad w

Kod PHP:


#get per user quotas and percent used 




lub tam staje skrypt chyba ze sie myle 🙁
w efekcie nie dziala quota na poczte bo brak wpisow w mysql ;/
log jest czysty brak jakichkolwiek wpisow w nim 🙁