Avatar billede lennilg Nybegynder
29. juli 2002 - 17:57 Der er 1 kommentar og
1 løsning

Mangler en perl ekspert!

Ved ikke lige om der skal en ekspert til, men en erfarende perl programmer, til at hjælpe mig med en script. Problemet er at jeg ved min domæne udbyder "måske" har en begrændsning ved downloading fra mit domæne, det der skal laves er at der, hvis scriptet indehaver en form for begrændsning, skal redigeres så det ikke på nogle måder begrændser download antallet/farten fra domænet. Scriptet er således ud:

#!/usr/bin/perl

use DBI;
use CGI;
$q = new CGI;

$database = "pureftpd";
$hostname = "download.freepaq.dk";
$user = "pureftpd";
$password = "lQsIyhn3";
$dsn = "DBI:mysql:database=$database;host=$hostname";
$dbh = DBI->connect($dsn, $user, $password);

$Dir = $q->path_translated();
$Dir =~ /(.+)\//;
$Dir = $1;

$wwwDir = $Dir;
$Dir =~ s/\/www\//\/ftp\//g;

$File = $q->path_info();
$File =~ /.*\/(.+)/;
$Filename = "/$1";

$Username = '';
$Password = '';

while (! $Username) {
  $sth = $dbh->prepare("SELECT Users_UID, Username, Password FROM Users WHERE Dir = '$Dir'");
  $sth->execute;
  if ($sth->rows) {
    $row = $sth->fetchrow_hashref();
    $Users_UID = $row->{'Users_UID'};
    $Username = $row->{'Username'};
    $Password = $row->{'Password'};
    $sth->finish;
    $set = "Accesses = Accesses + 1, LastAccess = NOW()";
    if ($Username eq 'new') {
      $Username = sprintf("dl%08d", $Users_UID);
      $Password = GetPassword();
      $set .= sprintf(", Username = '%s', Password = '%s'", $Username, $Password);
    }
    $sth = $dbh->prepare("UPDATE Users SET " . $set . " WHERE Users_UID = " . $Users_UID);
    $sth->execute;
  } else {
    $sth->finish;
    $sth = $dbh->prepare("INSERT INTO Users (Username, Password, Dir) VALUES ('new', '', '$Dir')");
    $sth->execute;
  }
}

if (! -e "$Dir$File") {
  system("mkdir -p $Dir");
  system("ln -s $wwwDir$Filename $Dir$Filename");
}
$sth->finish;
$dbh->disconnect;
$q->redirect("ftp://$Username:$Password\@download.freepaq.dk$Filename");

sub GetPassword {
  my ($length) = @_;
  $length = 8 if (!$length);
  my $pass = '';
  srand(time() ^ ($$ + ($$ >> 15)));
  while ($length--) {
    do {
      $_ = chr(rand(abs(ord('0') - ord('z')) + 1) + ord('0'));
    } while (/[\W_]/);
    if (int(rand(100)) % 2) {
      $pass .= $_;
    } else {
      $pass = $_ . $pass;
    };
  };
  return $pass;
}
Avatar billede lennilg Nybegynder
29. juli 2002 - 17:58 #1
Undskyld de mnge stavefejl!
Avatar billede lennilg Nybegynder
07. august 2002 - 10:05 #2
Ingen hjælp at finde her? Surt Show! :-(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging