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.