Cron védelme futtatás ellen - Supercron

szantog képe

Kategória: 
modulismertető

Visszatérő probléma a cron.php védelme a mezei userek elől. Nagyon sok lényege nincs, igazából bárki nyomkodhatja a cron.php-t, akkor lesz csak gáz, ha valaki elkezdi hajtani, akkor már érdemes szétnézni, kinek van baja velünk. Amíg a Drupal 7-ben ez alapfunkció, Drupal 6-ban még kell hozzá kis segítség.

A Supercron erre is gyógyírt nyújt, legalább is a dev verziója.

  • Nézzük, mit tud még, leginkább a modul adatlapja alapján:
  • Megmutatja, milyen hook-ok akadnak a cronra. Ez tök jó, ha debugol az ember, hiszen ha pl a cron.php kifut az időből, akkor ki lehet deríteni, hogy mi miatt.
  • A a hookok sorrendjét lehet cserélgetni, amik a cront használják.
  • Akár ki is kapcsolhatjuk a nekünk nem tetsző hookokat
  • Párhuzamosan is futhatnak a cront használó hookok, így ha a szolgáltatónál alacsony a php max futási idő, akár gyógyulhat is a cron ezáltal.
  • A hibakeresés csúcsa: Önállóan is futtathatjuk a cront használó hookokat.
  • Ha elakad egy hook, attól még a többi lefut, így csak az az egy funkció sérül, amivel gond van.
  • Megmutatja, hogy mennyi ideig tartott a cron futása.
  • Megnézhetjük, milyen végeredményt produkáltak futás után az egyes hookok
  • Torlódáscsökkentésbe bevonható, vagyis ha nagy a forgalom, optimalizálja a cron processek futását.
  • És ami a védelmet illeti: Meg lehet adni, hogy melyik ip címről legyen futtatható a cron.

Én eddig kb 3-4-szer használtam, egyszer azt sikerült kideríteni vele, hogy az egyik átirányítás kiakasztja a search modul indexelését. Másik alkalommal a twitter modul debugolására használtam, a többire meg nem emlékszem. :)

Az install nem teljesen a szokványos, annyit kell még csinálni, hogy a modul könyvtárában lévő supercron.php-t a Drupal gyökérkönyvtárába kell másolni. A 6.x-2.x-dev verzióban már ez sem kötelező, tehát akár védett könyvtárba is pakolhatjuk, mondjuk a sites/all/modules-be. Sejtésem szerint az eredeti cron.php ez esetben törölhető, viszont ezt ugye minden core frissítés után meg kell tenni.

Ha nem akarunk macskagyilkosok lenni, .htaccessben letilthatjuk az eredeti cron.php elérését.