←  Pluginy AMXX

AMXX.pl: Support AMX Mod X i SourceMod

»

Updater

  • +
  • -
mgr inż. Pavulon's Photo mgr inż. Pavulon 17.04.2009

Updater
Autor: Pavulon
Wersja: 0.1.1


Opis:
Zdarzyło się wam kiedyś że chcieliście dać komuś możliwość uaktualniania plików(pluginów/dźwięków itd) na waszym serwerze, ale bez dawania mu kompletnego dostępu do ftp ?
A może masz sieć serwerów i chcesz by pewne pliki były na wszystkich takie same ale nie zawsze pamiętasz wszędzie je wrzucić ?
A może po prostu chcesz żeby pliki były pobierane z jakiegoś zewnętrznego hostingu ?
To może być wszystko: lista adminów, mapcykl, strefy rash'u, dźwięki, grafiki. Wystarczy odpowiednio skonfigurowany plugin ;)

Instalacja:
Standardowo wrzucić plik .amxx do amxmodx/plugin oraz dopisać go do configs/plugins.ini a .sma do amxmodx/scripting
Wszystkie pliki konfiguracyjne oraz logi będą znajdowały się w katalogu amxmodx/configs/updater więc jeżeli po pierwszym uruchomienie plugin nie stworzy tego folderu oraz plików (files_to_update.ini; files_to_update_NET.ini) należy je stworzyć ręcznie i nadać odpowiednie uprawnienia folderom/plikom umożliwiając ich zapis.
Ważne jest też żeby wszystkie pliki które chcemy aktualizować nie były chronione przed zapisem.

files_to_update.ini - w tym pliku znajduje się aktualna konfiguracja.

;[Updater] LOCAL
;Srednik na poczatku oznacza ze dana linijka nie jest brana pod uwage
;Zawartosc pliku zostanie zastapiona podczas aktualizacji
;Linijki "host" i "config" powinny byc przed plikami
;"host" "jakis.host.pl"
;"config" "/kilka/folderow/plik.rozszerzenie"
;"plik" "wersja"
;"addons/amxmodx/plugins/plugin.amxx" "1.0"
;"!amxx/scripting/plugin.sma" "1.0"

Umieszczamy w nim adres hosta na którym znajduje się z dostępnymi wersjami (config), oraz listę plików które chcemy uaktualniać wraz z ich aktualnymi wersjami.

files_to_update_NET.ini - nazwa i położenie dowolne(należy umieścić na zewnętrznym serwerze), określone w files_to_update.ini. Zawiera dostępne aktualizacje.

;[Updater] NET
;Srednik na poczatku oznacza ze dana linijka nie jest brana pod uwage
;Linijki "host" i "config" powinny byc przed plikami
;"host" "host.na.ktorym.znajduje.sie.config"
;"config" "/polozenie/tego/pliku/na.serwerze"
;"plik" "plik.aktualizacyjny" "wersja"
;"!amxx/plugins/plugin.amxx" "!host/pobierz/stad/plugins/plugin.amxx" "1.1"
;"addons/amxmodx/scripting/plugin.sma" "host.na.ktorym.znajduje.sie.config/pobierz/stad/plugins/plugin.amxx" "1.1"

Umieszczamy w nim host i config do przyszłego sprawdzenia(co za tym idzie możemy sprawdzać kilka plików na różnych serwerach, byle były odpowiednie odwołania), oraz listę dostępnych plików wraz z miejscem skąd można je pobrać oraz wersją.

Oczywiście możemy też przekopiować odpowiedni folder(plik) z załącznika. Znajdują się w nim również pliki umożliwiające przykładową aktualizację tego pluginu.

Wymagane moduły:
  • sockets

Konfiguracja:

Cvary:
  • update_hour "5" - w której godzinie(0-23) aktualizować pliki
    -1 = tylko ręczne uruchomienie aktualizacji

Komendy:
  • amx_update - przy update_hour == -1 uruchamia aktualizacje (#ADMIN_RCON wymagany#)

Zamienniki:
W plikach przy podawaniu adresu pliku(na serwerze CS) możemy użyć:
  • !amxx == katalog amxmodx'a: przeważnie addons/amxmodx/
W plikach przy podawaniu adresu pliku aktualizacyjnego(do pobrania z zewnętrznego serwera) możemy użyć:
  • !host == wartość podana w host pliku z konfiguracją aktualizacji
Zamieniane są tylko jeśli podane na początku ścieżki.

Katalogiem głównym pobieranych plików jest cstrike/ Dlatego też przykładowo adres pliku server.cfg jest jego nazwą - "server.cfg" "wersja" a adres pliku amxx.cfg to albo "!amxx/configs/amxx.cfg" "wersja" albo "addons/amxmodx/configs/amxx.cfg" "wersja"

Jeżeli za wersję pliku podamy minus "-" to plik ten będzie aktualizowany za każdym razem niezależnie od wersji zdalnej. Jeżeli wersja zdalna tego pliku będzie inna niż lokalna to oczywiście zostanie ona zastąpiona, dlatego dla utrzymania ciągłości należy ustawić w obu config'ach wersję "-"

p.s.
Więcej o użyciu mogą jeszcze powiedzieć przykładowe pliki konfiguracyjne...

Attached Files

Quote

  • +
  • -
Zelimus's Photo Zelimus 18.04.2009

nie bardzo rozumiem hihi xD
Quote

  • +
  • -
Proximus's Photo Proximus 18.04.2009

W skrócie - jeżeli masz serwer na jakimś hostingu i nie chcesz dawać komuś danych do ftp, ale chcesz żeby mógł wrzucać pliki to właśnie robi ten plugin z tego co zrozumiałem.
Quote

  • +
  • -
mgr inż. Pavulon's Photo mgr inż. Pavulon 18.04.2009

Proximus, nom coś takiego.
W skrócie możesz tym pluginem pobierać pliki z serwerów www.
A do czego konkretnie się go użyje to zależy od fantazji ;)
Quote

  • +
  • -
Abes Mapper's Photo Abes Mapper 18.04.2009

Ale jak wrzucamy coś na hosting serwa? W czasie gry? Czy jak?
Quote

  • +
  • -
mgr inż. Pavulon's Photo mgr inż. Pavulon 18.04.2009

Najlepiej będzie jak wytłumaczę wszystko od początku na przykładzie.
Mamy ustawiony update_hour 4 i config lokalny:

;[Updater] LOCAL
;Srednik na poczatku oznacza ze dana linijka nie jest brana pod uwage
;Zawartosc pliku zostanie zastapiona podczas aktualizacji
;Linijki "host" i "config" powinny byc przed plikami
"host" "pavulon.net"
"config" "/amxmodx/files_to_update_NET.ini"
"addons/amxmodx/plugins/updater.amxx" "0.1"
"!amxx/scripting/updater.sma" "0.1"

Przy takim cvarze plugin uruchomi się tylko o godzinie 4 (w innych będzie PAUSED).
Najpierw pobierze z pliku files_to_update.ini adres host'a i ścieżkę pliku configuracyjnego a następnie wczyta listę plików wraz z ich aktualnymi wersjami, czyli plugin updater.amxx w wersji 0.1 (znajdujący się w addons/amxmodx/plugins/) oraz źródło tego pluginu updater.sma także w wersji 0.1 (znajdującego się w addons/amxmodx/scripting/).
Następnie połączy się z hostem pavulon.net i pobierze z niego config znajdujący się w /amxmodx/files_to_update_NET.ini {czyli tak jak byśmy ręcznie pobrali plik http://pavulon.net/a..._update_NET.ini }

;[Updater] NET
;Srednik na poczatku oznacza ze dana linijka nie jest brana pod uwage
;Linijki "host" i "config" powinny byc przed plikami
"host" "pavulon.net"
"config" "/amxmodx/files_to_update_NET.ini"
"addons/amxmodx/plugins/updater.amxx" "pavulon.net/amxmodx/plugins/updater.amxx" "0.1"
"!amxx/scripting/updater.sma" "!host/amxmodx/scripting/updater.sma" "0.1"

I tak jak w przypadku configu lokalnego pobierze z niego host i config które w przypadku aktualizacji zastąpią poprzednie wartości.
Następnie wczyta plik do aktualizacji addons/amxmodx/plugins/updater.amxx, miejsce skąd można go pobrać pavulon.net/amxmodx/plugins/updater.amxx oraz dostępną wersję 0.1 i tak z następnym plikiem (oraz wszystkimi kolejnymi o ile występują).
Po wczytaniu wszystkich danych z obu plików następuje porównanie wersji.
Z configu lokalnego 1. jest updater.amxx w wersji 0.1. Plik ten znajduje się też w configu zdalnym, więc jest sprawdzana jest jego wersja 0.1==0.1. Pliki są w tej samej wersji więc o ile występuje plik lokalny nie pobiera się nic i sprawdzany jest kolejny plik. W przypadku gdy plik lokalny nie występuje lub dostępna jest inna wersja pobierany jest nowy plik na miejsce starego, a stary wciąż istnieje z dodaną końcówką .bak. I tak każdy plik lokalny jest porównywany ze zdalnym config'iem.
Po zakończeniu pobierania plików w przypadku zamiany choć jednego nowego zostaje zapisany nowy config lokalny z uwzględnieniem nowych wersji.
Pliki do pobrania nie muszą być na tym samym serwerze co config zdalny byle by zostało to wszystko uwzględnione, np:

"banned.cfg" "0.9"

"banned.cfg" "blacklisted.pl/get_config.php" "1.0"

możemy zapisać to np. zamiast do banned.cfg do blacklisted.cfg a w config.cfg dać exec blacklisted.cfg i cieszymy się aktualną listą banów blacklisted bez edycji naszych banów.
Pliki normalnie pobierają się trakcie gry i stają się aktualne na następnej mapie - tak samo jak przy ręcznej aktualizacji/edycji.

Dodam jeszcze odpowiedni cvar żeby pliki mogły być pobierane bez sprawdzania wersji ;)
Quote

  • +
  • -
mgr inż. Pavulon's Photo mgr inż. Pavulon 18.04.2009

Updated.
Przykładowo jeżeli chcemy żeby plik blacklisted.cfg (katalog cstrike/) był aktualizowany codziennie o godz 5 w nocy to ustawiamy cvar:
update_hour 5
lub pozostawiamy go bez zmian bo taki jest standardowy, w .cfg lokalnym dajemy:
"blacklisted.cfg" "-"

a w .cfg zdalnym:
"blacklisted.cfg" "blacklisted.pl/get_config.php" "-"

Dodatkowo w obu na początku przykładowo:
"host" "pavulon.net"
"config" "/amxmodx/files_to_update_NET.ini"


a żeby bany z blacklisted działały na serwerze to w server.cfg dodajemy:
exec blacklisted.cfg

i nie przejmujemy się już niczym - codziennie będzie z automatu ten plik aktualizowany.
Quote