←  Artykuły i Instrukcje

AMXX.pl: Support AMX Mod X i SourceMod

»

[HLTV] Skrypty do kompresji i wyświetlania...

  • +
  • -
mgr inż. Pavulon - zdjęcie mgr inż. Pavulon 18.04.2010

Tym razem mam do zaoferowania zestaw skryptów umożliwiający pobranie, kompresję, dalsze przesłanie, wyświetlenie i usuwanie demek po określonym czasie.
Pliki mogą być pobierane z FTP lub katalogu na dysku gdzie jest uruchamiany skryp jak również mogą być wysyłane na kolejne FTP lub do innego folderu.
Wszystkie dane demek zapisywane są na serwerze mysql dzięki czemu możemy je dodatkowo wykorzystać w innych skryptach(np. automatycznie dodawanie dema do bana w AMXBans).
Nawet jeżeli hosting blokuje usuwanie dem to dzięki temu że są zapisane w bazie danych nie zostaną one pobrane ponownie.
Każde demo(niezależnie od tego czy jest wcześniej kompresowane) może zostać skompresowane ZIP'em o różnych poziomach kompresji (od 0 do 9).
Całkowita dowolność jeżeli chodzi o czas przetrzymywania dema. Podajemy go w sekundach więc równie dobrze może to być 30min jak i 120dni.
Wyświetlane może być również dopasowane do gustów. Wystarczy znajomość HTML + CSS (i PHP jeżeli chcemy coś więcej). Dostępne jest sortowanie i wyświetlanie dem z danego dnia i serwera.
podglad.jpg

Wymagania:
  • obsługa skryptów PERL (moduły DBI, Date::Parse, Archive::Zip, Net::FTP, File::Copy; [pogrubione są załączone, reszta powinna być w standardzie])
  • dostęp do Crontab'a
  • serwer mysql
  • serwer z obsługą php
Instalacja. (pobieramy i rozpakowujemy Załączony plik  dema.zip   89,9 KB   720 Ilość pobrań )

1. Skrypty Perl.
Zawartość katalogu perl (lub cały katalog) kopiujemy w dowolne miejsce na serwerze z obsługą perl'a
Edytujemy pliki install.pl i dema.pl zgodnie z danymi serwera mysql i ftp (instrukcje w plikach)
Nadajemy plikom install.pl i dema.pl prawa do uruchamiania.
  • w konsoli wpisujemy: chmod +x install.pl i chmod +x dema.pl chmod_cmd.jpg
  • lub w przypadku programu typu Total Commander wybieramy zezwolenia pliku i ustawiamy coś podobnego do: chmod.jpg (screen z WinSCP)
Następnie możemy uruchomić skrypt który stworzy nam odpowiednie wpisy w bazie danych.
W tym celu przechodzimy do katalogu w którym zostały rozpakowane pliki i wpisujemy komendę:
perl install.pl
(lub ewentualnie ./install.pl)
Jeżeli wprowadzone dane serwera mysql były prawidłowe to otrzymamy informację o poprawnej instalacji.

Następnie dodajemy do crontab'a wpis odpowiedzialny za obsługę demek, np:
*/10 * * * * cd /home/uzytkownik/perl && perl dema.pl -1 > /dev/null
Spowoduje on uruchamianie kodu co 10min. "> /dev/null" oznacza że nie będą wysyłane żadne informacje w mail'u. Korzystamy z tego gdy już mamy pewność że wszystko działa.

2. WWW
Zawartość katalogu www kopiujemy na serwer z obsługą PHP (np do głównego katalogu) i edytujemy plik dema.php wprowadzając w nim poprawne dane serwera mysql i folderów (informacje w pliku).



Konfiguracja.
Perl.

my $COMP_LEVEL = 6; #poziom kompresji; 0-brak, 9-max
my $max_demo = 60*60*24*30; #ile sekund trzymac dema, standardowo 30dni (2592000)


#USTAWIENIA FOLDEROW

my $from = 1; #pliki pobierane z: 0 - FTP, 1 - lokalny
my $to = 0; #pliki wysyłane na: 0 - FTP, 1 - lokalny
my $compress = 1; #kompresja pobieranych plików: 0 - pliki juz sa skompresowane, 1 - kompresuj pliki
my $cext = ".dem"; #rozszerzenie plików;

Jeżeli chcemy żeby pliki pobierane były z serwera FTP ustawiamy $from=0, jeżeli z katalogu na tym samym serwerze to ustawiamy $from=1
Jeżeli chcemy żeby pliki były wysyłane na serwer FTP ustawiamy $to=0, jeżeli mają być kopiowane do katalogu na tym samym serwerze to ustawiamy $to=1
Jeżeli dema mają być kompresowane to ustawiamy $compress=1, jeżeli już są skompresowane lub nie chcemy ich kompresować to ustawiamy $compress=0
Jeżeli dema nie są skompresowane to rozszerzenie ustawiamy na $cext=".dem" , w przeciwnym wypadku ustawiamy rozszerzenie w jakim są dostępne dema np $cext=".dem.gz", $cext=".dem.tgz", $cext=".dem.zip"

#USTAWIENIA BAZY DANYCH

my $DB_host = "localhost"; #adres
my $DB_port = "3306"; #port
my $DB_user = "user"; #uzytkownik
my $DB_pass = "password"; #haslo uzytkownika
my $DB_name = "dbname"; #nazwa bazy
my $DB_table = "hlds_dema"; #nazwa tabeli
my $DB_type = "mysql";


#FTP ZRODLOWY (zdalny HLDS) [[jesli $from==0]

my $ftp_host_from = "first.ftp.com"; #adres serwera
my $ftp_user_from = "login"; #login
my $ftp_pass_from = "password"; #haslo


#FTP DOCELOWY (zdalny WWW) [jesli $to==0]

my $ftp_host_to = "second.ftp.com"; #nazwa serwera
my $ftp_user_to = "login"; #login
my $ftp_pass_to = "password"; #haslo



#FOLDER ZRODLOWY (zdalny HLDS) [jesli $from==0]
my @FTPdir_from = ("", "/cstrike/");

#FTP DOCELOWY (zdalny WWW) [jesli $to==0]
my @FTPdir_to = ("", "/cstrike/dema/");

#FOLDER ZRODLOWY (lokalny HLDS) [jesli $from==1]
my @loc_dir_from = ("", "/home/user/cstrike/dema/");

#FOLDER DOCELOWY (lokalny WWW) [jesli $to==1]
my @loc_dir_to = ("", "/home/user/www/dema/");


Jeżeli na jednej maszynie znajduje się więcej niż jeden serwer z którego chcemy pobierać dema to możemy podać kolejne dema oddzielając je przecinkami, np dla kopiowania z FTP do Katalogu ($from=0, $to=1):

my @FTPdir_from = ("", "/serwer1/dema", "/serwer2/dema);
my @loc_dir_to = ("", "/home/user/www/dema", "/home/user/www/dema2");



WWW

$dbhost = 'localhost'; //adres bazy danych
$dbuser = 'user'; //uzytkownik
$dbpasswd = 'password'; //haslo
$dbname = 'dbname'; //nazwa bazy
$dbtable = 'hlds_dema'; //tabela

Dane serwera mysql.

$servers = array('', 'Serwer 1'); //wyswietlane nazwy serwerow
$folders = array('', 'dema/'); //katalogi w ktorych znajduja sie demka
$folder = "http://moj.serwer.pl/"; //adres z którego beda pobierane dema
$secret = 0; //serwer nr $secret widoczny tylko jesli $isgroup==TRUE


Przykładowo:

$folders = array('', 'serwerek');
$folder = "http: //amxx.pl/dema/"

I dema będą pobierane z adresu
http: //amxx.pl/dema/serwerek/nazwadema.zip
chociaż wyświetlane mogą być gdzie indziej.
Dzięki temu można ominąć np. limity transferu zmieniając serwer gdy zajdzie taka potrzeba.
Odpowiedz

  • +
  • -
haerde - zdjęcie haerde 19.05.2010

Mam taki problem, otóż:

XXX@vs1151112:/var/www/vhosts/Grajkownia.com/subdomains/dema/perl# ./dema.pl
Can't locate Compress/Zlib.pm in @INC (@INC contains: ./lib /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at lib/Archive/Zip.pm line 11.
BEGIN failed--compilation aborted at lib/Archive/Zip.pm line 11.
Compilation failed in require at ./dema.pl line 7.
BEGIN failed--compilation aborted at ./dema.pl line 7.

Skonfigurowałem wszystkie pliki, chmody są nadane. OS to Debian 5, perl 5.8.

Dzięki za pomoc,
haerde
Odpowiedz

  • +
  • -
mgr inż. Pavulon - zdjęcie mgr inż. Pavulon 19.05.2010

Mam taki problem, otóż:

XXX@vs1151112:/var/www/vhosts/Grajkownia.com/subdomains/dema/perl# ./dema.pl
Can't locate Compress/Zlib.pm in @INC (@INC contains: ./lib /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at lib/Archive/Zip.pm line 11.
BEGIN failed--compilation aborted at lib/Archive/Zip.pm line 11.
Compilation failed in require at ./dema.pl line 7.
BEGIN failed--compilation aborted at ./dema.pl line 7.

Skonfigurowałem wszystkie pliki, chmody są nadane. OS to Debian 5, perl 5.8.

Dzięki za pomoc,
haerde


Spróbuj dorzucić zawartość tego archiwum: Załączony plik  lib.rar   117,76 KB   305 Ilość pobrań
Odpowiedz

  • +
  • -
haerde - zdjęcie haerde 19.05.2010

Niestety nadal jest to samo :(
:/var/www/vhosts/Grajkownia.com/subdomains/dema/perl# ./dema.pl
Can't locate Compress/Raw/Zlib.pm in @INC (@INC contains: ./lib /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at lib/Compress/Zlib.pm line 11.
BEGIN failed--compilation aborted at lib/Compress/Zlib.pm line 11.
Compilation failed in require at lib/Archive/Zip.pm line 11.
BEGIN failed--compilation aborted at lib/Archive/Zip.pm line 11.
Compilation failed in require at ./dema.pl line 7.
BEGIN failed--compilation aborted at ./dema.pl line 7.
Odpowiedz

  • +
  • -
mgr inż. Pavulon - zdjęcie mgr inż. Pavulon 19.05.2010

Jeżeli masz możliwość instalowania poprzez CPAN'a to to zalecam.
cpan
install Compress::Raw::Zlib
jak nie to Załączony plik  Compress.rar   8,56 KB   297 Ilość pobrań do folderu lib.
Odpowiedz

  • +
  • -
haerde - zdjęcie haerde 19.05.2010

Zainstalowałem przez cpan'a, lecz błąd nadal występuje :(.
Odpowiedz

  • +
  • -
mgr inż. Pavulon - zdjęcie mgr inż. Pavulon 19.05.2010

Ale zapewne inny ;>
Bo już wcześniej pisałeś że jest "to samo" a były 2 inne błędy.

Jak masz dostęp do cpan'a to zainstaluj:
DBI
Date::Parse
Archive::Zip
Net::FTP
File::Copy
Odpowiedz

  • +
  • -
haerde - zdjęcie haerde 25.05.2010

Mam teraz następujący błąd:
/var/www/vhosts/Grajkownia.com/subdomains/dema/perl# ./dema.pl
Can't locate Compress/Zlib.pm in @INC (@INC contains: ./lib /etc/perl /usr/local            /lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr            /lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at lib/Archive/Zip            .pm line 11.
BEGIN failed--compilation aborted at lib/Archive/Zip.pm line 11.
Compilation failed in require at ./dema.pl line 7.
BEGIN failed--compilation aborted at ./dema.pl line 7.
root@vs1191142:/var/www/vhosts/Grajkownia.com/subdomains/dema/perl#

Oczywiście wszystko zainstalowałem przez Cpan'a tak jak radziłeś.
Odpowiedz

  • +
  • -
mgr inż. Pavulon - zdjęcie mgr inż. Pavulon 25.05.2010

Teraz masz jakoś taki błąd jak na początku... :mur:
Skrypty do kompresji i wyświetlania dem - Nieoficjalny polski support AMX Mod X

Can't locate Compress/Zlib.pm in @INC

czyli instalujesz
Compress::Zlib
Odpowiedz

  • +
  • -
haerde - zdjęcie haerde 25.05.2010

Zrobiłem tak jak radziłeś i otrzymuję taki błąd:
root@vs1191142:/var/www/vhosts/Grajkownia.com/subdomains/dema/perl# ./dema.pl
Can't locate Compress/Zlib.pm in @INC (@INC contains: ./lib /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at lib/Archive/Zip.pm line 11.
BEGIN failed--compilation aborted at lib/Archive/Zip.pm line 11.
Compilation failed in require at ./dema.pl line 7.
BEGIN failed--compilation aborted at ./dema.pl line 7.
Odpowiedz

  • +
  • -
Portek - zdjęcie Portek 25.05.2010

Can't locate Compress/Zlib.pm in @INC (@INC contains: ./lib /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8
Zrobimy to "łopatologicznie":
wget http://cserwerek.pl/Compress.tar.gz
tar -xvf Compress.tar.gz
mv `pwd`/Compress /usr/lib/perl5
Odpowiedz

  • +
  • -
haerde - zdjęcie haerde 25.05.2010

Niestety błąd wciąż występuje

root@vs1191142:/var/www/vhosts/Grajkownia.com/subdomains/dema/perl# ./dema.pl
Can't locate Compress/Zlib.pm in @INC (@INC contains: ./lib /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at lib/Archive/Zip.pm line 11.
BEGIN failed--compilation aborted at lib/Archive/Zip.pm line 11
Compilation failed in require at ./dema.pl line 7.
BEGIN failed--compilation aborted at ./dema.pl line 7.

Jeśli to coś pomoże, to dodam iż posiadam PLESK'a 9.3. Już miałem kilka problemów z tym związanych i wiem, że czasami wymagane były różne 'dziwne' rozwiązania.
Użytkownik haerde edytował ten post 25.05.2010 20:21
Odpowiedz

  • +
  • -
Portek - zdjęcie Portek 25.05.2010

ls /usr/lib/perl5
Odpowiedz

  • +
  • -
haerde - zdjęcie haerde 25.05.2010

Apache   Archive  DBI        Locale        Mysql.pm     Win32

Apache2  auto     DBI.pm     ModPerl       Roadmap.pod  Zip

APR      Bundle   dialog.pl  mod_perl2.pm  TASKS.pod    Zip.pm

APR.pm   DBD      HTML       Mysql         Text

Odpowiedz

  • +
  • -
Portek - zdjęcie Portek 25.05.2010

Wykonaj operacje jeszcze raz, pomyliłem biblioteki wcześniej, linijki zaktualizowałem.
Odpowiedz

  • +
  • -
haerde - zdjęcie haerde 25.05.2010

Sprawdź proszę poprawność ścieżki, ponieważ na http://cserwerek.pl/Compress.tar.gz otwiera mi się Twoje forum, a archiwum brak.
Odpowiedz

  • +
  • -
Portek - zdjęcie Portek 25.05.2010

Mój błąd, znów pomyliłem archiwa, tym razem usunąłem nie to co trzeba ;>
Odpowiedz

  • +
  • -
haerde - zdjęcie haerde 25.05.2010

A teraz błąd jest jeszcze 'milszy':


root@vs1191142:/var/www/vhosts/Grajkownia.com/subdomains/dema/perl# ./dema.pl
Can't locate auto/Compress/Zlib/autosplit.ix in @INC (@INC contains: ./lib /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /usr/share/perl/5.8/AutoLoader.pm line 160.
 at /usr/lib/perl5/Compress/Zlib.pm line 6
Can't locate IO/Compress/Base/Common.pm in @INC (@INC contains: ./lib /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /usr/lib/perl5/Compress/Zlib.pm line 11.
BEGIN failed--compilation aborted at /usr/lib/perl5/Compress/Zlib.pm line 11.
Compilation failed in require at lib/Archive/Zip.pm line 11.
BEGIN failed--compilation aborted at lib/Archive/Zip.pm line 11.
Compilation failed in require at ./dema.pl line 7.
BEGIN failed--compilation aborted at ./dema.pl line 7.
Odpowiedz

  • +
  • -
Portek - zdjęcie Portek 26.05.2010

Po głębszych poszukiwaniach znalazłem ten że pakiet u siebie :) Swoją drogą zastanawia mnie preinstalowany perl bez modułów ;P

wget http://cserwerek.pl/auto.tar.gz
tar -xvf auto.tar.gz
mv `pwd`/auto /usr/lib/perl5
Odpowiedz

  • +
  • -
vasco - zdjęcie vasco 12.07.2010

Witam a mnie wyskakuje następujący błąd:

error #03 :: Zle ID => 0

Co zrobiłem nie tak??
Odpowiedz