Index php táblafájl. Automatikus fórummotor felismerés

05.03.2020 Érdekes

Bizonyos moduloknak kommunikálniuk kell a hardverrel, hogy teljesítsék feladataikat. Ezek a modulok egy további illesztőprogram-réteggel rendelkeznek. Ezután minden illesztőprogramnak szüksége van egy táblafájlra, hogy beszéljen a tényleges hardverrel.
A táblafájlt a felhasználónak kell megadnia, mivel annak megvalósítása nemcsak a használt mögöttes rendszertől (HAL), hanem a tényleges hardverkonfigurációtól (vezetékezéstől) is függ.

Sablonok

Minden illesztőprogram tartalmaz egy sablont a saját táblafájljához. Csak annyi a teendő, hogy ezt a fájlt a projekt könyvtárába másolja, és végrehajtja a rutinokat. Vegye figyelembe, hogy el kell távolítania a _template részt a fájlnévből.

Támogatott táblák

Néhány táblán előre meghatározott hardver található. Ahol ezek egy közös tábla, biztosítunk egy makefile-t ( /boards/base/xxx/board.mk), amelyet beilleszthet a saját projekt makefile-jába. Ez ezután automatikusan tartalmazza az összes szabványos hardver-illesztőprogramot és táblafájlt. További előre definiált táblafájlok is megtalálhatók a /boards/addons.


Az index.php fájl a fórum kulcsfájlja, és szinte minden művelethez használják. Munkája a következő lépésekből áll:
1) Csatlakozás konfigurációs fájlok adatbázis.php és iboard.php.
2) Kapcsolat létrehozása a DBMS-szel és hozzáférés az adatbázishoz.
3) Információk beolvasása a felhasználó cookie-jaiból vagy a szkriptnek átadott paraméterekből, információk kinyerése erről a felhasználóról az adatbázisból és hitelességének ellenőrzése.
4) Sikertelen ellenőrzés (vagy a felhasználóra vonatkozó információ hiánya) esetén a Vendég felhasználói profilhoz (regisztrációs szám - 1) tartozó adatok felhasználói adatként kerülnek lekérésre.
5) A felhasználó által a profilbeállításokban meghatározott stílus- és felületnyelvi fájlok összekapcsolódnak.
6)Ha a t paraméter szerepel a szkripthívás paramétereiben, akkor a megadott témával és a témakörrel kapcsolatos adatok az adatbázisból lekérésre kerülnek.
7)Ha a szkripthívás paraméterei között szerepel az f paraméter, akkor a fórumra vonatkozó adatok lekérésre kerülnek az adatbázisból.
8) Ha a t vagy f paraméterek jelen vannak, akkor a rendszer ellenőrzi, hogy a felhasználónak van-e elegendő jogosultsága a megfelelő fórum megtekintéséhez.
9) Az m paraméterben megadott modul csatlakoztatása folyamatban van. Ha az m paraméter hiányzik, akkor a modul típusát a rendszer a partíció típusától függően határozza meg, amelyhez a ezt az akciót. Ha a partíció típusa nincs megadva, akkor a rendszer ellenőrzi, hogy miként jelenjen meg kezdőlap. Abban az esetben, ha az egyik szakaszt főoldalként választják ki, akkor a megfelelő típusú szakasz megjelenítéséért felelős modul csatlakozik, ellenkező esetben a main.php modul. Tartalmaz egy stílusfájlt is, amelynek neve megegyezik a beépülő moduléval, de a stílusok könyvtárának a felhasználói profil beállításaiban kiválasztott stílusnak megfelelő alkönyvtárában található.
10) Az a paramétert ellenőriztük. Ha nincs kifejezetten beállítva, akkor egyenlőnek lesz nyilvánítva a megtekintéssel. Továbbá, ha egy adott szakasz meg van adva, és az a paraméter megegyezik a nézet értékkel, akkor a helyére kerül<имя_раздела>_Kilátás.
11) A kért művelettől függően (az a szkripthívás paraméterben van megadva) vagy a tmplate1.php fájl (ha a művelet nem tartalmazza a do_ előtagot), vagy a tmplate2.php fájl (egyébként) kapcsolódik. Ezután a megfelelő sablonban felsorolt ​​összes művelet meghívásra kerül, és a main_action művelet helyett az a paraméterben megadott művelet lesz ténylegesen meghívva.
12) A fórumnapló információkat tartalmaz az elvégzett műveletről, a műveletet végrehajtó felhasználó azonosítóját és IP címét.
Az index.php fájlban is van egy feldolgozási funkció végzetes hibák, amely egy hibaüzenet megjelenítésére szolgál, valamint az error.log fájlban található hibaszöveg kijavítására.

Kezdjük rögtön a fő szkript kóddal:

#!/usr/bin/perl

# which-forum.pl szkript
# (c) 2010 Alexandr A Alexeev, http://webhely/

szigorúan használjon;

# kommentált sor – a szigorúság kedvéért
# ha a motorstatisztikák gyűjtése a feladat, hagyja úgy, ahogy van
# ha készít egy listát a fórumokról - törölje a megjegyzéseket

az én $adataim ;
$adat .= $_ while (<> ) ;

# ellenőrizze, hogy hányat működtetett a phpBB lábléc hivatkozás nélkül
nyomtatja ki a "phpbb \n"
if ($adat =~ /]+href="[^"]*http:\/\/(?:www\.)?phpbb\.com\/?[^>]*>phpBB/i vagy
# $data =~ /viewforum\.php\?[^""]*f=\d+/i vagy
$adat =~ /phpBB\-SEO/i vagy
$adat =~ /) ;
nyomtatja ki az "ipb \n"
if ($adat =~ /]+href="[^"]*http:\/\/(?:www\.)?invision(?:board|power)\.com\/?[^"]*"[^>]*> [^<]*IP\.Board/i vagy
$adat =~ /]+href="[^"]*http:\/\/(?:www\.)?invisionboard\.com\/?[^>]*>Invision Power Board/i vagy
$adat =~ /

/én vagy
$adat =~ /index\.php\?[^""]*showforum=\d+/i) ;
print "vbulletin \n"
if ($adat =~ /Támogatja:?[^<]+vBulletin[^<]+(?:Version)?/i vagy
$adat =~ /) ;
print "smf \n"
if ($adat =~ /]+href="[^"]*http:\/\/(?:www\.)?simplemachines\.org\/?[^>]*>Támogatja az SMF/i vagy
$adat =~ /index\.php\?[^""]*board=\d+\.0/i) ;
print "punbb \n"
if ($adat =~ /]+href="[^"]*http:\/\/(?:(?:www\.)?punbb\.org|punbb\.informer\.com)\/?"[^>]*> PunBB/i) ; #vagy
# $data =~ /viewforum\.php\?[^""]*id=\d+/i);
print "fluxbb \n"
# if($data =~ /viewtopic\.php\?id=\d+/i vagy
if ( $adat =~ /]+href="http:\/\/(?:www\.)fluxbb\.org\/?"[^>]*>FluxBB/i) ;
print "exbb \n"
if ($adat =~ /]+href="[^"]*http:\/\/(?:www\.)?exbb\.org\/?[^>]*>ExBB/i) ; # vagy
# $adat =~ /fórumok\.php\?[^""]*fórum=\d+/i);
print "yabb \n"
if ($adat =~ /]+href="[^"]*http:\/\/(?:www\.)?yabbforum\.com\/?[^>]*>YaBB/i vagy
$data =~ /YaBB\.pl\?[^""]*num=\d+/i ) ;
print "dleforum \n"
if ($adat =~ /\(Támogatja a DLE fórum\)<\/title>/én vagy
$adat =~ /]+href="[^"]+(?:http:\/\/(?:www\.)?dle\-files\.ru|act=copyright)[^"]*">DLE fórum<\/a>/én) ;
print "ikontábla \n"
if ($adat =~ /]+href="[^"]*http:\/\/(?:www\.)?ikonboard\.com\/?[^"]*"[^>]*>Ikonboard/i vagy
$adat =~ /\n"
if ($adat =~ /\n"
# if($data =~ /fórumok\.php\?fid=\d+/i vagy
# $data =~ /topic\.php\?fid=\d+/i vagy
if ($adat =~ /]+href="http:\/\/(?:www\.)?flashbb\.net\/?"[^>]*>FlashBB/i) ;
print "stokesit \n"
# if($data =~ /fórum\.php\?f=\d+/i vagy
if ($adat =~ /]+href="http:\/\/(?:www\.)?stokesit\.com\.au\/?"[^>]*>[^\/]*Stokes IT/i) ;
print "pódium \n"
# if($data =~ /topic\.php\?t=\d+/i vagy
if ($adat =~ /]+href=[""]?http:\/\/(?:www\.)?sopebox\.com\/?[""]?[^>]*>Pódium/i) ;
print "usebb \n"
# if($data =~ /fórum\.php\?id=\d+/i vagy
if ($adat =~ /]+href="http:\/\/(?:www\.)?usebb\.net\/?"[^>]*>BB/i használata) ;
print "wrforum \n"
# if($data =~ /index\.php\?fid=\d+/i vagy
if ($adat =~ /]+href="http:\/\/(?:www\.)?wr\-script\.ru\/?"[^>]*>WR\-Forum/i) ;
print "még egy másik fórum \n"
if ($data =~ /Még egy fórum\.net/i vagy
$adat =~ /default\.aspx\?g=posts&t=\d+/i) ;

Ez és más, a bejegyzésben említett szkriptek megtalálhatók ebben az archívumban.

Forgatókönyv melyik-fórum.pl megvizsgálja a html-oldal kódját, hogy vannak-e benne fórummotor-aláírások. Hasonló technikát alkalmaztunk a WordPress és a Joomla meghatározásakor is, de van néhány különbség. Először is, maga a szkript nem tölti be az oldal kódját, hanem beolvassa az stdin-ből vagy egy argumentumként átadott fájlból. Ez lehetővé teszi, hogy egyszer letöltsük az oldalt, például a wget segítségével, majd több elemzőn keresztül lefuttatjuk, ha több is van. Másodszor, ebben a szkriptben az aláírás jelenléte a motor 100%-os jele. Legutóbb az aláírás jelenléte csak a megfelelő motornak adott súlyt, és a legnagyobb tömegű motort „nyerte meg”. Úgy döntöttem, hogy ebben az esetben egy ilyen megközelítés csak szükségtelenül bonyolítja a kódot.

A forgatókönyv teszteléséhez végeztem egy kis kutatást. Összeállítottam egy listát több ezer fórumról, és mindegyiket végigfutottam a szkriptemen, így meghatározva a programok aktiválásának százalékos arányát és a különféle motorok népszerűségét.

A fórumok listájának lekéréséhez a Google elemzőmet használtam. keresőmotor hasonló kéréseket küldeni

site:forum.*.ru
site:talk.*.ru
site:board.*.ru
site:smf.*.ru
site:phpbb.*.ru
....

stb. A teljes lekérdezésgenerátor kódot megtalálja a fájlban gen-forumsearch-urls.pl. A .ru zónán kívül .su .ua .kz és .by is használatos volt. Legutóbb nehéz volt egy ilyen vizsgálatot lefolytatni, mivel a WordPress és a Joomla webhelyek URL-jében nincsenek ilyen aláírások. Az olyan katalógusok, mint a cmsmagazine.ru/catalogue/, nem biztosítanak megfelelő mintaméretet. Mi az a 600 webhely a Drupalon?

Be kell vallanom, hogy a kísérlet eredménye csalódást okozott. A 12 590 vizsgált helyszín közül csak 7 083 motort sikerült azonosítani, vagyis csak az esetek 56%-ában. Lehet, hogy nem vettem figyelembe néhány motort? Bitrix a fórumok felén állt? Vagy több időt kellett volna töltenem az aláírások keresésével? Általánosságban elmondható, hogy itt több kutatásra van szükség.

A sikeresen azonosított motorok 56%-a közül a várakozásoknak megfelelően az IPB (31%), a phpBB (26,6%) és a vBulletin (26,5%) volt a legnépszerűbb.

Őket szorosan követi az SMF (5,8%) és a DLEForum (5,3%). Kedvenc punBB-m csak a 6. helyen végzett (1,64%). Nem javaslom, hogy erősen bízzon ezekben a számokban (azt mondják, hogy a Runet minden harmadik fóruma IPB-n működik), de bizonyos következtetéseket természetesen le lehet vonni.

Például, ha webhelyet kíván létrehozni egy fórummotoron, és módosítani szeretné a fórumot, mondjuk 0,01 USD-t fizet a felhasználóknak minden üzenetért hetente egyszeri automatikus pénzfelvétellel, akkor válassza ki a három legnépszerűbb motor egyikét. . Minél népszerűbb a fórum, annál valószínűbb, hogy talál egy programozót, aki jártas ebben.

Ha nem várható jelentős változás a motorban, akkor érdemes lehet kevésbé népszerű motort választani, például SMF vagy punBB. Ez csökkenti a számot hacker támadások a fórumra, és az arra automatikusan küldött spam mennyiségére.

A fórumok megtalálására/meghatározására szolgáló szkriptek több gyakorlati felhasználást is találhatnak. Az első dolog, ami személy szerint eszembe jutott, az volt, hogy a beazonosított fórumokat TCI szerint rendezem, és az egyik oldalukra mutató hivatkozásokat tartalmazó bejegyzéseket az első száz közé helyeztem. A száz fórum dofollow linkje azonban semmilyen módon nem érintette a TIC-et (2 frissítés is elmúlt), ezért jobb, ha nem vesztegeti az időt itt, hacsak nem érdekel az átállás.

Nyilvánvaló, hogy a szkriptek név szerinti használata messze nem az egyetlen. Szerintem könnyen kitalálhatod, hogyan használhatod még őket.