www.ProFTPD.de

ProFTPD => ProFTPD - SFV Checker => Thema gestartet von: Guest am 16. April 2004, 08:18:28



Titel: Fix for SFV checker
Beitrag von: Guest am 16. April 2004, 08:18:28
Code:

#!/usr/bin/perl -w

use strict;
use File::Basename;

# ----------------------------- Config -----------------------------
my $ftpsfv = "/usr/bin/ftpsfv";
# path to ftpsfv

my $sitename = "SFV";
# site-name

my $tmpfile = ".tmp";
# tmp-filename ftpsfv uses, ftpsfv will append the name of the checked
# sfv file without .sfv

my $user = "";
my $group = "";
# user and group to which belong the created files & dirs, default
# the user/group which runs ftpsfv e.g. the user/root defined in
# the ftpexecd config file
# Setting the user will only work, if ftpsfv is called from ftpexecd
# running as root:root
# It's better not to use this option and set the ownership of the
# files/dirs via the user/group context of ftpexecd for security
# reasons.


my $file_permissions = "0777";
# the permissions for the files created

my $dir_permissions = "0777";
# the permissions for the directories created

my $check_only_first_sfv_found = 1;
# if set to 1 ftpsfv will only check the first .sfv file found
# if set to 0 all .sfv files in the current dir will be checked
# on normal case every sfv release is it's own dir, so a value
# of 1 is ok...

my @exclude_dirs = ("");
# this sets the dirs in which no sfv checking is performed
# example:
# my @exclude_dirs = ("/ftp/dir1",
#      "/ftp/dir2",
#      etc..);

my $path = "";

my @filenames;

# ----------------------------- Program -----------------------------

if (!@ARGV || $#ARGV != 0)
{
    print("Usage: ftpsfvcheck.pl filename\n");
    exit(-1);
}

$path = dirname($ARGV[0]);
if ($#exclude_dirs >= 0)
{
    my $found = 0;
    foreach my $dir (@exclude_dirs)
    {
if ($dir eq $path)
{
   $found = 1;
   last;
}
    }
    if ($found)
    {
print($path . " is in excluded directories.\n");
exit(-2);
    }
}

chdir($path) or die "Can't open directory ".$path."\n";
opendir(DIR, $path) or die "Can't read content from directory ".$path."\n";
@filenames = sort(grep(/\.sfv$/mi, readdir(DIR)));
closedir(DIR) or die "Can't close directory ".$path."\n";

if (@filenames)
{
    foreach my $filename (@filenames)
    {
if ($filename =~ /^[^\r\n]*\.sfv$/si)
{
   system($ftpsfv,
  "-s", $sitename,
  "-t", $tmpfile,
  "-u", $user,
  "-g", $group,
  "-f", $file_permissions,
  "-d", $dir_permissions,
  "${path}/${filename}"
 );
   if ($check_only_first_sfv_found)
   {
last;
   }
}
    }
}

exit(0);


Titel: Fix for SFV checker
Beitrag von: TL am 16. April 2004, 22:08:18
Thx Guest!
I will include this in the next release.

Regards
TL