Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Udostępnianie dem HLTV na stronie www


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
96 odpowiedzi w tym temacie

#1 DB

    Wszechwidzący

  • Użytkownik

Reputacja: 19
Początkujący

  • Postów:230
Offline

Napisano 23.05.2009 10:01

Poniższy artykuł zawiera instrukcję jak udostępnić spakowane dema na stronie www w przypadku gdy mamy stronę na zwenętrznym hostingu w stosunku do serwera cs na naszym dedyku.
Sprawa nie jest skomplikowana, wymaga jedynie czytania ze zrozumieniem i trochę rozumu - już bardziej łopatologicznie nie umiałem tego napisać.

Całość składa się z 2 części tj.
1. Zainstalowania (za dużo powiedziane, bardziej pasuje skopiowania) u siebie na dedyku skryptu który zajmie się spakowaniem i przesłaniem plików na ftp.
2. Wrzucenia do odpowiedniego katalogu skryptu prezentującego pliki (w tym wypadku dema).



Instalacja:
Najpierw zajmiemy się skryptem który wysyła dema. Ściągamy załącznik (wysylanie.zip), rozpakowujemy - otwieramy w jakims edytorze tekstu i ustawiamy swoje dane (co i jak jest poniżej).

> Ustawienie skryptu (to co należy zmienić jest na kolorowo):

Należy ustawić adres serwera ftp, użytkownika ftp i hasło na ftp
oraz docelowy folder na ftp do którego będą wrzucane dema, oraz ścieżkę do katalogu cstrike w którym znajdują się nagrywane dema


_host="host"
_user="uzytkownik"
_pass="haslo"

_pliki="*.zip"
katalog_zdalny="dema"
katalog_lokalny="outbox"
katalog_cstrike="$HOME/hlds_l/cstrike/*.dem"

//tego już nie ruszacie
mkdir $katalog_lokalny
find $katalog_cstrike -mmin +2 -exec mv {} $katalog_lokalny ;
gzip -1f -S .zip $katalog_lokalny/*.dem

cd $katalog_lokalny
ftp -in $_host << KONIEC
user $_user $_pass
binary
mkdir $katalog_zdalny
cd $katalog_zdalny
send $_pliki
close
KONIEC

rm -f $katalog_lokalny


Wrzucamy na serwer (najlepiej do katalogu domowego - w innym wypadku należy poprawić ścieżki odpowiednio). Kolejną rzeczą jest ustawienie prawa do wykonywania
aby to zrobić, wpisujemy
chmod +x ./wysylanie.sh

Wiadomo że nie będziemy co chwilę się łączyć do serwera i uruchamiać skrypt aby dema pojawiły się na stronie. W tym celu dodamy wpis do CRONTAB'a uruchamiający powiedzmy co 10 minut (dema będą dodawane min. 2 a max 10 minut po zakończeniu mapy).

wpisujemy
crontab -e
wciskamy insert i wpisujemy to:

*/10 * * * * ./wysylanie.sh


następnie wciskamy esc i shift+zz




Działanie skryptu:
1.Szukamy dem w katalogu cstrike do którego należy podać scieżkę
2. Pliki które zostały zmodyfikowane ostatnio później niż 2 minuty zostają przenoszone do katalogu "outbox" (katalog sam się utworzy, nie trzeba nic robić a po wysłaniu demek zostanie usunięty wraz z zawartością). Warunek modyfikacji > 2 min chroni przed kopiowaniem dem które się aktualnie nagrywają.
3. Po przeniesieniu plików .dem do tymczasowego katalogu zostają one spakowane gzipem.
4. Następnie następuje połączenie z serwerem ftp i upload spakowanych plików.
5. Po wysłaniu dema z tymczasowego folderu wraz z nim są usuwane.

Do działania oczywiście wymagany jest zainstalowany klient ftp, oraz gzip (ja zrobilem na podstawowym ftp bo najczęściej jest on wbudowany w podstawową instalację linuksa ale mozna po małych modyfikacjach skorzystać z innych). Katalog w którym znajduje się wysylanie.sh musi miec prawa zapisu - proponuje w $home go zostawić



Gdy już mamy dema na naszym ftp w katalogu który ustawiliśmy (w naszym wypadku katalog będzie się nazywał dema). Wrzucacmy załącznik dema.php do katalogu głównego ftp - chodzi o to aby plik dema.php był w tym samym katalogu co katalog "dema". Uwaga jeśli zmienialiśmy nazwę katalogu w skrypcie do którego są wysyłane dema, należy również w dema.php to zmienić (na samym początku).


Skrypt działa, testowałem - co prawda na jednym pliku .dem więc jeśli byłyby problemy z niepakowaniem wiekszej ilości plików przed wysłaniem to proszę o PW. Jeśli ktoś nie ma pojęcia jak to zrobić po przeczytaniu tego to niech da sobie spokój, ponieważ wszystko ogranicza się do wpisania odpowiednich danych. Skrypt pisałem kilka minut, może ktoś znajdzie lepsze rozwiązanie.


Przykład zastosowania: http://piaskownica.do.pl/dema
Autorem skryptu prezentującego dema na www jest Wizu, wrzucającego, pakującego dema DB.

Załączone pliki

  • Załączony plik  wysylanie.zip   371 bajtów  1198 Ilość pobrań
  • Załączony plik  dema.rar   738 bajtów  1370 Ilość pobrań

  • +
  • -
  • 4

#2 MafiaDL

    Naj-Najstarszy Moderator

  • Przyjaciel

Reputacja: 561
Wszechwiedzący

  • Postów:3 492
  • GG:
  • Imię:Łukasz
  • Lokalizacja:Warsaw
Offline

Napisano 23.05.2009 12:22

Elegancja :D:D
  • +
  • -
  • 0

#3 tHo

    Pomocny

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:47
Offline

Napisano 17.07.2009 21:26

Mam pytanie :)

Czy da sie do tego jakos dodac, kasowanie demek, starszych niz 14 dni? z serwera ftp ?
  • +
  • -
  • 0

#4 Portek

    Kończymy zabawę, permanentna emerytura!

  • Przyjaciel

Reputacja: 976
Master

  • Postów:3 007
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Częstochowa
Offline

Napisano 18.07.2009 12:44

Oczywiście, troszke znajomości PHP i jedziesz.

<?php
// --- Ustawienia serwera FTP ---
$ftp_server = "host";
$ftp_login = "użytkownik";
$ftp_haslo = "hasło";
// --- Ustawienia serwera FTP ---

$conn_id = ftp_connect ($ftp_server)
 or die("Brak odpowiedzi z serwera $ftp_server");
 
$login_result = ftp_login($conn_id, $ftp_login, $ftp_haslo);
if ((!$conn_id) || (!$login_result))
 die("Blad polaczenia!");

ftp_sync ("public_html/dema/cstrike"); // Lokalizacja folderu z plikami *.dem

ftp_close($conn_id); 

function ftp_sync ($dir) {

 global $conn_id;

 if ($dir != ".") {
 if (ftp_chdir($conn_id, $dir) == false) {
 echo ("Nieznana lokalizacja: $dir
rn");
 return;
 }

 $contents = ftp_nlist($conn_id, "*.dem");
 foreach ($contents as $file) {
 
 if ($file == '.' || $file == '..')
 continue;
 
 if (@ftp_chdir($conn_id, $file)) {
 ftp_chdir ($conn_id, "..");
 ftp_sync ($file);
 }
 else
 ftp_delete($conn_id, $file);
 }
 
 ftp_chdir ($conn_id, "..");
 chdir ("..");
	echo "Pliki zostały skasowane";

}
}
?>

Wrzucasz skrypt do głównego folderu (public_html) i w panelu zarządzania hostingiem - cPanel lub DirectAdmin ustawiasz go w CronTab'ie wykorzystując polecenie:
/usr/local/bin/php /home/nazwa_konta/nazwa_skryptu.php

@Edit
Lub jeśli masz serwer dedykowany/VPS
find /katalog/w/krotey/sa/pliki/**dem mtime +14 -exec rm {} ;

  • +
  • -
  • 1

serwer-1.png
IP: ts3.cserwerek.pl


#5 tHo

    Pomocny

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:47
Offline

Napisano 18.07.2009 16:46

Super, tylko mam maly problem :(


Mam host na proserwer.pl, a tam w cpanel nie mam Cron Taba :( Jest jakas inna mozliwosc kasowania tego ?
  • +
  • -
  • 0

#6 bartu233

    Zaawansowany

  • Użytkownik

Reputacja: -3
Nowy

  • Postów:87
  • Lokalizacja:Słupsk
Offline

Napisano 19.07.2009 17:03

Może mi ktoś powiedzieć jak postawić do tego server HLTV na linuxie ? Krok po kroku wraz z .cfg :>
  • +
  • -
  • 0

#7 tHo

    Pomocny

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:47
Offline

Napisano 20.07.2009 17:59

Dobra, skrypt bardzo dobrze dziala, zmienilem sobie tylko na kompreseje bz2, lepsza ;)

Efekt calej pracy:

http://www.dzikaknajpa.pl/dema.php

P.S. To nie reklama, przyklad jak dobrze mozna wykorzystac ten artykul :)
  • +
  • -
  • 0

#8 flybird

    Nowy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:1
  • Lokalizacja:Olsztyn
Offline

Napisano 24.07.2009 12:05

Wszystko oki , tylko , że skrypt z crona mi sie nie uruchamia. Wykonuje tak jak opisałeś wszystko i ... nie ma takiego pliku :( mimo ze crontab -e odpalam w miejscu gdzie jest plik. Dodatkowo gdy wciskam inster i kopiuje to co napisales , to pisze mi ze nie ma takiego pliku ;o


Jestem userem na debian linux .
crontab -e odpala mi sie w nano

jakies sugestie ?


Po problem powstaje gdy mina 2-3 mapki , a nie wpisze recznie ./wysylanie.sh , to potem wysle mi jedno demko i zawiesza sie i musze usuanc recznie , a skrypt ma wyslac i usunac
  • +
  • -
  • 0

#9 DB

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 19
Początkujący

  • Postów:230
Offline

Napisano 26.07.2009 11:03

jeśli chodzi o crona : http://www.digipedia.../crontab.5.html

Co do większej ilości demek to jak mówiłem nie sprawdzałem tego, ale jak wysyła jedno to i następne powinno. Wystarczy że ustawisz crona aby uruchamiał skrypt w takim odstępie czasu aby do wysłania było jedno demo - tak będzie najprościej.
  • +
  • -
  • 0

#10 haerde

    Zaawansowany

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:98
  • GG:
  • Lokalizacja:Nysa
Offline

Napisano 06.08.2009 00:04

Mam takie pytanie, posiadam 2 hostingi, jeden na prywatnym serwerze dedykowanym i drugi na którym stoi forum. Istnieje może opcja, aby to wszystko połączyć w całość ? Tzn. dema z serwera będą wysyłane na dedyka, natomiast z hostingu forum można było je pobierać właśnie z tego dedyka.

Trochę pokręciłem, ale mam nadzieje że rozumiecie :)
  • +
  • -
  • 0

#11 DB

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 19
Początkujący

  • Postów:230
Offline

Napisano 06.08.2009 22:27

właśnie pod taką sytuację zostały napisane te skrypty i poradnik

p.s my rozumiemy, pytanie czy ty rozumiesz - bo zdaje się że nie przeczytałeś nawet pierwszych kilku linijek opisu ?
  • +
  • -
  • 0

#12 haerde

    Zaawansowany

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:98
  • GG:
  • Lokalizacja:Nysa
Offline

Napisano 07.08.2009 10:27

Pytanie jest takie, czy ten skrypt można użyć tylko w przypadku gdy mamy serwer na własnym dedyku, czy też możliwe jest wykonanie go gdy nasz serwer jest dzierżawiony np. w pukawka.pl ?
  • +
  • -
  • 0

#13 DB

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 19
Początkujący

  • Postów:230
Offline

Napisano 07.08.2009 11:50

Jeśli miałbyś dostęp przez ftp do tych dem to możnaby trochę odwrócić sytuację i zamiast wysyłania przez serwer dem na www możnaby napisać skrypcik ściągający te dema z ftp pukawki itp. na dedyka na którym masz hosting.
  • +
  • -
  • 0

#14 haerde

    Zaawansowany

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:98
  • GG:
  • Lokalizacja:Nysa
Offline

Napisano 07.08.2009 12:04

oooo, właśnie o to by mi chodziło ! DB kolego, ozłocę Cię jeśli to zrobisz !
  • +
  • -
  • 0

#15 Portek

    Kończymy zabawę, permanentna emerytura!

  • Przyjaciel

Reputacja: 976
Master

  • Postów:3 007
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Częstochowa
Offline

Napisano 07.08.2009 14:14

Pytanie jest takie, czy ten skrypt można użyć tylko w przypadku gdy mamy serwer na własnym dedyku, czy też możliwe jest wykonanie go gdy nasz serwer jest dzierżawiony np. w pukawka.pl ?

Troszke znajomości PHP i gotowe.

<?php
// --- Ustawienia serwera FTP ---
$ftp_server = "host";
$ftp_login = "uzytkownik ftp";
$ftp_haslo = "hasło";
$dir = "cstrike"; // dokładny adres folderu w którym znajdują się demka
// --- Ustawienia serwera FTP ---

$conn_id = ftp_connect ($ftp_server)
or die("Brak odpowiedzi z serwera $ftp_server");

$login_result = ftp_login($conn_id, $ftp_login, $ftp_haslo);
if ((!$conn_id) || (!$login_result))
die("FTP Connection Failed");

ftp_sync ($dir);

ftp_close($conn_id);

function ftp_sync ($dir) {

global $conn_id;

if ($dir != ".") {
if (ftp_chdir($conn_id, $dir) == false) {
echo ("Change Dir Failed: $dir
rn");
return;
}
if (!(is_dir($dir)))

$contents = ftp_nlist($conn_id, "*.dem");
foreach ($contents as $file) {

if ($file == '.' || $file == '..')
continue;

if (@ftp_chdir($conn_id, $file)) {
ftp_chdir ($conn_id, "..");
ftp_sync ($file);
}
else
ftp_get($conn_id, $file, $file, FTP_BINARY);
}

ftp_chdir ($conn_id, "..");
chdir ("..");

}
}
?>


@Edit
Skrypt zawierał drobny błąd i przy próbie pobrania dem wysypywał błąd jakoby folder z demami nie istniał, powyżej poprawiona i działająca wersja.
  • +
  • -
  • 0

serwer-1.png
IP: ts3.cserwerek.pl


#16 haerde

    Zaawansowany

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:98
  • GG:
  • Lokalizacja:Nysa
Offline

Napisano 27.09.2009 00:38

Hmm, uruchamiam już skrypt na dedyku z Debianem 5.0 i jest taki oto problem:

hardy@vz1381:/bf2# sh wysylanie.sh
: command not found8:
: command not found9:
mkdir: cannot create directory `outboxrr': File exists
find: missing argument to `-exec'
: No such file or directory
: command not found13:
wysylanie.sh: line 15: ftp: command not found
: command not found23:


Proszę o pomoc ; <
  • +
  • -
  • 0

#17 danielpl

    Początkujący

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:16
Offline

Napisano 01.10.2009 18:01

Dobrze, a ja mam takie pytanie jak mam serwer na WhiteRabbit to jak mam tego CRONTAB'a zrobić ?
  • +
  • -
  • 0

#18 haerde

    Zaawansowany

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:98
  • GG:
  • Lokalizacja:Nysa
Offline

Napisano 02.10.2009 07:17

Problem rozwiązany, skrypt napisany przez DB miał kilka błędów i wymagał drobnych poprawek.
  • +
  • -
  • 0

#19 danielpl

    Początkujący

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:16
Offline

Napisano 02.10.2009 15:30

a mógłbyś mi pomóc bo mam serwer na WR jak pisałem i chciałbym to zrobić
  • +
  • -
  • 0

#20 haerde

    Zaawansowany

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:98
  • GG:
  • Lokalizacja:Nysa
Offline

Napisano 02.10.2009 23:45

Napisz do mnie na GG, mogę Ci polecić firmę w której dostaniesz HLTV wraz ze skryptem na wysyłanie dem.
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych