[HLTV] Skrypty do kompresji i wyświetlania...
mgr inż. Pavulon
18.04.2010
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.
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
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
- lub w przypadku programu typu Total Commander wybieramy zezwolenia pliku i ustawiamy coś podobnego do: (screen z WinSCP)
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/nullSpowoduje 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
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=1my $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 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
Dane serwera mysql.$dbhost = 'localhost'; //adres bazy danych
$dbuser = 'user'; //uzytkownik
$dbpasswd = 'password'; //haslo
$dbname = 'dbname'; //nazwa bazy
$dbtable = 'hlds_dema'; //tabela
$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:
I dema będą pobierane z adresu$folders = array('', 'serwerek');
$folder = "http: //amxx.pl/dema/"
http: //amxx.pl/dema/serwerek/nazwadema.zipchociaż wyświetlane mogą być gdzie indziej.
Dzięki temu można ominąć np. limity transferu zmieniając serwer gdy zajdzie taka potrzeba.
haerde
19.05.2010
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
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: lib.rar 117,76 KB 305 Ilość pobrań
haerde
19.05.2010
:/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.
mgr inż. Pavulon
19.05.2010
cpan install Compress::Raw::Zlibjak nie to Compress.rar 8,56 KB 297 Ilość pobrań do folderu lib.
mgr inż. Pavulon
19.05.2010
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
haerde
25.05.2010
/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ś.
mgr inż. Pavulon
25.05.2010
Skrypty do kompresji i wyświetlania dem - Nieoficjalny polski support AMX Mod X
czyli instalujeszCan't locate Compress/Zlib.pm in @INC
Compress::Zlib
haerde
25.05.2010
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.
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.8Zrobimy to "łopatologicznie":
wget http://cserwerek.pl/Compress.tar.gz tar -xvf Compress.tar.gz mv `pwd`/Compress /usr/lib/perl5
haerde
25.05.2010
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
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
Portek
25.05.2010
haerde
25.05.2010
haerde
25.05.2010
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.
Portek
26.05.2010
wget http://cserwerek.pl/auto.tar.gz tar -xvf auto.tar.gz mv `pwd`/auto /usr/lib/perl5
vasco
12.07.2010
error #03 :: Zle ID => 0
Co zrobiłem nie tak??