Javíthatatlan felhasználói modulok. Nodejs alapjai. Modul elrendezés: a modulok keresésének sorrendje a nodejs-ben

Ahogy a cikkből tudja, mi a Linux kernel, a kernel monolitikus. Ez azt jelenti, hogy az összes végrehajtható kód egy fájlba koncentrálódik. Ennek az architektúrának van néhány hátránya, például az, hogy nem lehet új illesztőprogramokat telepíteni a kernel újraépítése nélkül. De a fejlesztők erre a problémára is megoldást találtak, egy modulrendszerrel kiegészítve.

A Linux kernel lehetővé teszi a hardver-illesztőprogramok, fájlrendszer-illesztőprogramok és bizonyos egyéb összetevők külön-külön, modulokként történő fordítását, nem pedig a kernel részeként. Így frissítheti az illesztőprogramokat a kernel újraépítése nélkül, valamint dinamikusan bővítheti funkcióit. Ez azt is jelenti, hogy csak a lényeget foglalhatja bele a kernelbe, és minden mást modulok segítségével csatlakoztathat. Ez nagyon egyszerű.

Ebben a cikkben bemutatjuk a Linux kernel modulokat, a velük való munka alapjait, a már betöltött modulok megtekintését, a modulok betöltését, telepítését és letiltását. Valamint teljes letiltása, feketelistára való felvétel és új kernelmodulok hozzáadása.

A Linux kernelmodulok csak egy adott kernelverzióhoz készülnek, kernelverziótól függetlenül van mód egy modul futtatására, ha kompatibilisek a dkms-szel, de erről majd később.

Minden modul a / lib / modules / mappában található. Tekintettel arra, hogy a modulok csak egy adott kernelverzióhoz készültek, ebben a mappában külön almappa jön létre a rendszerre telepített minden kernelverzióhoz. Ez a mappa magát a modulokat és további konfigurációs fájlokat tartalmazza, a modulok céljuktól függően kategóriákba vannak rendezve, például:

ls /lib/modules/4.1.20-11-default/kernel/

arch Dokumentáció fs lib net hang
crypto illesztőprogramok kernel mm biztonság

Mielőtt belevágnánk a gyakorlatba, vessünk egy pillantást a modulok kezeléséhez szükséges alapvető parancsokra.

  • lsmod- lásd a betöltött modulokat
  • modinfo- információ a modulról
  • insmod- töltse be a modult
  • rmmod- távolítsa el a modult

A Linux kernelmodulokkal való munka elsősorban ezekkel a parancsokkal történik, de mások is megtehetik.

Minden modul

Ez egy ritka feladat, de ha az összes telepített Linux kernel modult szeretné látni a rendszeren, akkor ez nagyon egyszerű. Az összes modul a / lib / modules mappában található, ezért nagyon könnyű egy paranccsal mindegyiket kiszámítani, vagy akár csak a fájlkezelővel bemenni a mappába és megnézni.

Ubuntuban a parancs így fog kinézni:

dpkg -S * .ko | grep / lib / modulok

Ilyen konstrukciót készíthet a find segítségével:

find / lib / modules -name * .ko

Csak az aktuális kernelt tudunk keresni:

find / lib / modules / $ (uname -r) -name * .ko

Ezenkívül minden modul a /lib/modules/modules.aliases konfigurációs fájlba van írva, így csak megnézhetjük a tartalmát:

Ha ellenőrizni akarjuk, hogy egy adott Linux kernelmodul telepítve van-e, akkor a grep segítségével szűrjük bármelyik parancs kimenetét:

find / lib / modules -name * .ko | grep vbox

/lib/modules/4.1.20-11-default/weak-updates/misc/vboxnetadp.ko
/lib/modules/4.1.20-11-default/weak-updates/misc/vboxvideo.ko

Mi van betöltve?

A betöltött modulokról minden információ a / proc / modules fájlban van tárolva, ezt a következő paranccsal tudjuk megjeleníteni:

cat / proc / modules

tun 32768 2 - Élő 0xffffffffa07a9000
vboxpci 28672 0 - Élő 0xffffffffa07a1000 (O)
vboxnetadp 28672 0 - Élő 0xffffffffa0632000 (O)
vboxnetflt 32768 0 - Élő 0xffffffffa06f3000 (O)
af_packet 40960 8 - Élő 0xffffffffa065b000

De vannak civilizáltabb módszerek is erre a kérdésre. Ezek az lsmod és a modinfo segédprogramok. A betöltött linux kernel modulok futásának megtekintéséhez:

Használt modul mérete
ctr 16384 2
ccm 20480 2
biztosíték 106496 3
bnep 20480 2
bluetooth 532480 5 bnep

Kényelmes ellenőrizni, hogy egy modul be van-e töltve grep-pel:

sudo lsmod | grep vbox

Az egyes modulokról részletesebb információkat a modinfo segédprogram segítségével szerezhet be:

fájlnév: /lib/modules/4.1.20-11-default/kernel/fs/fuse/fuse.ko
alias: fejlesztőnév: biztosíték
alias: char-major-10-229
alias: fs-fuseblk
alias: fs-fuse
licenc: GPL
leírás: Fájlrendszer a Userspace-ben
szerző: Szeredi Miklós
alias: fs-fusectl
srcverzió: 739DE4A12CE441C9FBD74C7

Itt láthatja a modul fájlját, licencét, szerzőjét és függőségeit. A függőségek azok a modulok, amelyeket be kell tölteni a megfelelő működéshez. Sajnos nem minden modulhoz érhető el normál leírás, de megpróbálhatja megnézni a modul függőségei leírását.

Kernel modulok futtatása

A Linux kernel modult a modprobe vagy az insmod parancsokkal töltheti be.

Például töltse be a vboxdrv modult

sudo modprobe vboxdrv

A linux kernel modul insmod használatával történő betöltéséhez át kell adnia a modulfájl címét:

sudo insmod /lib/modules/4.1.20-11-default/weak-updates/misc/vboxdrv.ko

Hadd emlékeztesselek arra, hogy a modinfo paranccsal találhatod meg. Célszerű egy Linux kernel modult a modprobe segítségével elindítani, mivel ez a parancs nem csak a modulfájlt keresi meg a fájlrendszerben, hanem betölti az összes függőségét is.

Kernel modulok eltávolítása

Itt hasonlóan két parancs - a modprobe - lehetővé teszi a modul eltávolítását, ha átadja neki az -r kapcsolót, és ott van az rmmod parancs is. Kezdjük a modprobe-val:

sudo modprobe -r vboxdrv

A másik parancs ebben az esetben kicsit egyszerűbbnek tűnik:

sudo rmmod vboxdrv

rmmod: HIBA: A vboxdrv modult használja: vboxnetadp vboxnetflt vboxpci

Ha hibaüzenetet kap egy modul kirakodása közben, akkor azt továbbra is használják más modulok, és először ki kell töltenie őket. A helyesen végrehajtott parancs nem adhat vissza semmit.

rmmod vboxnetadp vboxnetflt vboxpci

Blokkolja a modul betöltését

Előfordulhat, hogy a rendszerindítás során az általunk használt eszközökhöz nem megfelelő Linux kernelmodulok töltődnek be, vagy nem támogatják a kívánt funkcionalitást, vagy ütköznek más modulokkal. Kiváló példa a b43 illesztőprogram betöltése a brcmsmac helyett a Broadcom vezeték nélküli adapterekhez. A probléma megoldásához modulokat vehet fel a feketelistára. Ehhez csak adjon hozzá egy sort az /etc/modprobe.d/blacklist.conf fájlhoz:

vi /etc/modprobe.d/blacklist.conf

Ez a kód feketelistára helyezi a b43 modult.

Linux kernel modulok telepítése

A kernel ezen verziójához összeállított modulokat egyszerűen átmásolhatjuk a kívánt mappába, valójában akkor tesszük ezt, amikor a kernelt forrásból építjük fel. De a szabadalmaztatott illesztőprogramokkal és más, a kernelhez nem mellékelt külső meghajtókkal a helyzet más. Ezek a modulok a kernel több verzióját támogatják, de telepítésükhöz speciális technológiát alkalmaznak - DKMS-t (Dynamic Kernel Module Support). Sőt, az így egyszer telepített modul a kernel minden új verziójához automatikusan újraépül.

wget http://tenet.dl.sourceforge.net/project/e1000/ixgbe%20stable/4.3.15/ixgbe-4.3.15.tar.gz
$ sudo tar -xf ixgbe-4.3.15.tar.gz -C / usr / local / src
$ sudo mv /usr/local/src/ixgbe-4.3.15/src /usr/src/ixgbe-4.3.15

Hozzunk létre egy konfigurációs fájlt:

sudo vi /usr/src/ixgbe-4.3.15/dkms.conf

PACKAGE_NAME = "ixgbe"
PACKAGE_VERSION = "4.3.15"
BUILT_MODULE_NAME = "ixgbe"
DEST_MODULE_LOCATION = "/ kernel / illesztőprogramok / net / ethernet / intel / ixgbe /"
AUTOMATIKUS TELEPÍTÉS = "igen"

Adjuk hozzá a modult a kernelfához:

sudo dkms add -m ixgbe -v 4.3.15

Elindítjuk a buildet az aktuális kernelhez:

sudo dkms build -m ixgbe -v 4.3.15

És telepítse:

sudo dkms install -m ixgbe -v 4.3.15

A kernelmodulok telepítése befejeződött. Most megtekintheti az illesztőprogram adatait, vagy letöltheti azokat:

dkms állapot | grep ixgbe

következtetéseket

Valószínű, hogy ritkán kell vacakolni ezekkel a modulokkal. De a kernelmodulokkal való munkára akkor lesz szükség, ha a disztribúció nem támogatja az eszköz hardverét a dobozból, és akkor is, ha harmadik féltől származó szoftverekkel dolgozik, mint például a VirtualBox, Vmware stb. De nagyon hasznos tudni, hogyan kell kezelni modulokat, amikor hozzá kell adni vagy el kell távolítani őket. Még ha most nincs is rá szüksége, kipróbálhatja, hogyan működnek a dolgok, és később élesítheti.

NODE.JS Egy szoftvereszköz a js végrehajtásához.

Nodejs = V8 + I / O + könyvtárak

V8: gyors, modern, gazdaságos

Előnyök

  • Javascript
  • Megosztott kód a kliensen és a szerveren
  • Alapvető webes feladatok
  • Sok kapcsolat és feladat egyszerre
  • Könnyen létrehozható egy működő prototípus
  • Kényelmes npm csomagkezelő
  • Közösség

Telepítés

a telepítés során a nodejs regisztrálja magát a PATH változóban (+ npm), [adminisztráció - környezeti változók]; parancssorban ellenőrizhető:
állítsa be a PATH-t

A fájlok általában nodejs alatt futnak: írjunk egy egyszerű szkriptet, és futtassuk a parancssoron keresztül:


A szkript végrehajtásra kerül, és az eredmény megjelenik a parancssorban.

Nodejs dokumentáció

Nodejs modulok

A beépített nodejs modulok működésének megértéséhez le kell töltenie a forrásarchívumot a nodejs webhelyről (forráskód). És menj a lib könyvtárba. (dir parancs - a fájlok listájának lekérése a parancssorban; Ha az összes almappában fel kell sorolnia a fájlokat, akkor a "dir" helyett használja a "dir / s" parancsot). Ha a nodejs-t a csomagból telepítette, akkor a lib mappában nem talál fájlokat.

A nodejs-ben különböző mértékben vannak modulok stabilitás... (például 0 - nem érdemes használni; 1, 2 - használhatod, de a modul API-ja változhat).

A függvények növekednek (a projekt fejlődik), és idővel át kell helyeznünk a USER konstruktor függvényt egy külön fájlba. Itt jönnek be a modulok.

A modulok az a mód, amelyet a nodejs kínál a projektek megszervezéséhez.

A projektek általában növekednek, ami azt eredményezi, hogy a projektet több fájlra kell felosztani – itt jönnek be a modulok.

igényelnek

A html-oldalak szkriptek összekapcsolásához használja a script címkét. A nodejs-ben van egy speciális követelmény parancs.

Var user = követelmény (./ user");

Példánkban az ugyanabban a könyvtárban lévő fájlra (user.js) hivatkozunk (a kiterjesztés (.js) nem kötelező).

//require(./user "); // A .js nem kötelező // ebben az esetben a fájl végrehajtásra kerül, de a USER változó nem lesz // // ez a fő különbség a nodejs-ből származó szkriptcímkéktől // A node.js-ben az egyes függvények és változók modulok globálisak // ehhez a fájlhoz (magához a modulhoz), és nem // válnak automatikusan elérhetővé csatlakozáskor ((./ user")) // De hogyan lehet hozzáférni? // Minden modulnak van egy speciális változója, exports - ez egy objektum, és // amit oda raktam, az eredményként vissza fog térni request var user = request ("./ user.js"); // eredmény: user = (Felhasználó: függvény)

Az első különbség a nodejs moduláris rendszer és a böngésző szkriptek között: ha két script tag van a böngészőben, akkor az egyik által globális szinten definiált funkció elérhető a másikban, de nem a nodejs-ben. A nodejs-ben a függvények és változók globálisak egy adott fájlhoz (nem érhetők el, ha a követelményen keresztül csatlakozik). Így a nodejs valóban független modulok írását teszi lehetővé. De ahhoz, hogy a modul elérhető legyen, azt használják export rendszer... Minden modulnak van egy speciális változója, az úgynevezett export.

DIR / index modul könyvtár

Közvetlenül tartalmazza a var user = request (./ user") mappát; amely tartalmazza a megfelelő indexet.js.

Például

Függvény Felhasználó (név) (this.name = név;) User.prototype.hello = függvény (ki) (console.log (phrases.Hello + "," + who.name);); exports.User = Felhasználó;

Csatlakozunk és használjuk a User konstruktort a fájlban. / Server.js

//server.js var user = követelmény (./ user"); var vasya = új felhasználó.Felhasználó ("Vasya");

"./" - az aktuális mappához viszonyítva

Az exports egy objektum, és ami hozzá van rendelve, az a követelmény (exports.jpg) eredményeként visszakerül. Így a modul deklarálhatja saját privát változóit/függvényeit, és csak azt exportálhatja, amire szüksége van.


Globális változókhoz stb. van egy globális objektum

Global.User = Felhasználó;

Eredmény

  • Csatlakozás szükséges
  • Változók: var (privát modulok), exports, globális (ritkán használt)
  • Modulok típusai: js, node (.node kiterjesztéssel), json (.json kiterjesztéssel). A Json modulokat akkor használják, ha egyszerű információkat kell tárolnia egy fájlban.
  • DIR / index modul könyvtár

Modul objektum

  • Modul objektum
  • Funkció modul module.exports = függvény
  • Modul gyorsítótárazása (a modult soha többé nem olvassák be)
  • Modulhelyek: keresési sorrend
  • Átadási paraméterek: modul-gyári

A modul objektum (a modulok mögöttes objektuma) egy változó, amely minden modulban létezik (fájl, kinyomtathatja console.log (modul);). ... Tartalom: id tulajdonság - általában a fájl elérési útja,
szülő - hivatkozás a szülőmodulra (module.parent - hivatkozás az ezt igénylő szülőmodulra),
gyermekek (module.childs - azok a modulok, amelyek a követelményen keresztül szerepelnek),
ingatlant és egyebeket exportál.

Modul vagy alkalmazás? modul.szülő

A modul közvetlenül elindítható, és ha nem, ha a funkcionalitás egy másik modulhoz csatlakozik, akkor hagyja, hogy ezt a funkciót exportálja. Ezt a két esetet szétválaszthatja az alábbiakkal:

If (module.parent) (exports.run = run;) else (run ();)


ps: ahogy a stackoverflow.com-on mondják, a szülő az a modul, amely meghívta az értelmezendő szkriptet

// $ csomópont foo.js console.log (module.parent); // null // igényel (./ foo") console.log (module.parent); // (...)

A module.exports helyes használata

A modullal összefüggésben:

module.exports = exports = ez (ezek a konstrukciók egyenértékűek)

Ha nem objektumban, hanem közvetlenül szeretne függvényt átadni, használja a következő szintaxist:

Module.exports = Felhasználó;


Modulok gyorsítótárazása

Amikor a Nodejs betölt egy modult, teljesen létrehozza a megfelelő modulobjektumot (figyelembe véve a szülőt, az exportokat és más hasonló tulajdonságokat), és megjegyzi magának (a modul.id (a fájl teljes elérési útja) a belső gyorsítótár azonosítójaként szolgál). és legközelebb, amikor hozzáférünk (csatlakozunk) bármely modulhoz (fájlhoz), a nodejs ugyanazt az objektumot veszi a gyorsítótárból. Vagyis például elég egy modult 1-szer inicializálni bármely fájlban, majd egyszerűen használhatja.

Esetünkben a var db = követelmény (../ db");
és var esetén db = követelmény (./ db"); ugyanazt a tárgyat veszik. Az alapelv tehát a következő: a modul első használatakor inicializálódik, és a jövőben csak csatlakozunk és használjuk (vagyis esetünkben nem kell kétszer használnunk a db.connect ()-t, vagyis különböző fájlokban).


Modul elrendezés: a modulok keresésének sorrendje a nodejs-ben

Hogyan lehet elérni, hogy a db mindig csatlakozzon konkrét elérési út megadása nélkül:

Var db = megköveteli (../ db"); // vagy var db = követelmény (./ db");

így:

Var db = megköveteli ("db");

függetlenül attól, hogy melyik fájlba csatlakozik a db.

Ehhez meg kell értenie, hogy a nodejs milyen sorrendben keresi a modulokat (mi történik, amikor a request meghívásra kerül). A nodejs-ben sok beépített modul található, például a request ("fs"); probléma nélkül csatlakoztatható lesz. Ha egy adott elérési utat ad meg a request-ben, például request (../ db"); , akkor a keresés a megadott elérési út alapján történik és a fájl meg lesz találva, vagy a nodejs ezt a fájlt próbálja meg könyvtárként megszerezni (és a kategórián belül az index.js-t keresi).

Ha megadja a követelményt ("db"); és a modul nincs beépítve, akkor az aktuális pozícióhoz képest a node_modules könyvtárban lesz keresve (ha megtalálja, megpróbálja elvenni onnan a modult). Ha a node_modules könyvtár hiányzik, akkor a node_modules könyvtár magasabban lesz keresve stb.

Amellett, hogy megadnak egy adott modul elérési útját, a nodejs ilyen típusú modulokat kereshet:

Az npm – Node.JS csomagkezelőjének bemutatása

  1. hozzon létre egy csomagleíró fájlt (package.json), amely információkat tartalmaz a modulról (név, verzió stb.). Akár manuálisan, akár paranccsal
    npm init
    (kérni fogja a szükséges információkat)
  2. A modul közzétételéhez a következőkre lesz szüksége:
    1. Adjon hozzá egy felhasználót az npm adduser paranccsal (meg kell adnia a felhasználónevet és a jelszót). Most minden npm-mel végzett munka ennek a felhasználónak a nevében történik. A felhasználó bejelentkezhet a https://www.npmjs.com/~name_user webhelyre, és megnézheti a moduljait.
    2. Megjelenés: npm publish
  3. Ezután valaki használhatja az alapmodulhoz adott hozzáadását, és a felhasználó maga végezhet változtatásokat.
  4. Az összes npm parancs lekérése az npm help paranccsal
  5. Keresnie kell egy modult az adatbázisban: npm s kulcsszavak vagy npm keresési kulcsszavak (például npm s szuper modul)
  6. Telepítse a modult: npm install name_module vagy npm i name_module
  7. Modulok telepítésekor a nodejs először megkeresi a node_modules mappát az aktuális könyvtárban (majd magasabban és magasabban stb.), vagy (ha a node_modules hiányzik) a package.json fájlt (szintén felfelé haladva; a package.json általában jelöli a projekt gyökerét), és ennek megfelelően, ha megtalálja a package.json fájlt, létrehoz egy node_modules mappát a megfelelő könyvtárban; Ha mindkét beállítás sikertelen, akkor a nodejs létrehoz egy node_modules mappát az aktuális könyvtárban. Ha egy modult egy adott könyvtárba szeretne helyezni, akkor ebben a könyvtárban létre kell hoznia egy node_modules mappát.
  8. npm up frissítse a modult (ellenőrzi a modulok frissítéseit, amelyek a node_modules mappában vannak)
  9. npm modul_name eltávolítása (modul eltávolítása)

npm kimenet:

npm init
nmp adduser
npm közzé
npm keresési kulcsszavak
npm telepítési modul
npm frissítő modul
npm modul eltávolítása
npm help parancs

NPM csomagstruktúra

A kívánt verzió telepítése, például: npm i [e-mail védett]

A modul legújabb verziója akkor szerezhető be, ha a modult a git verziószámító rendszerrel fejlesztik, például a githubon. Elég beszerezni a Git Read-Only-t (url): https://github.com/strongloop/express.git és a konzolban:

npm i https://github.com/strongloop/express.git

függőségek a package.json fájlban

A függőségek azokra a modulokra mutatnak, amelyektől ez függ.

devDependencies

A devDependenciesben írt modulok nem kerülnek telepítésre, ha a modult függőségként húzzák be. Csak fejlesztés céljából vannak telepítve, és akkor telepíthetők, ha például a node_modules mappában lévő modulra lépünk, és beírjuk az npm i-t (vagy az npm config flag telepítésekor).

a fő mező adja meg a csomag belépési pontját

Globális modulok

Bármely modul globálisan telepíthető a -g jelző beállításával: npm -g module

Globálisan a rendszerkönyvtárat jelenti.

A Windows globális moduljainak könyvtára:

C: \ users \ User_Name \ AppData \ Roaming \ npm

A globális modulok a szabványos rendszerkönyvtárba kerülnek. Azok a binárisok, amelyek a package.json fájlban vannak, a rendszerútvonalon kerülnek kiszállításra (ez a globális modulok fő alkalmazása), vagyis a jövőben a konzolon keresztül hívhatók meg.

Kantor I. tanfolyamainak anyagai alapján

cm… Szinonima szótár

VESZTESÉGMENTES, reménytelen, reménytelen; reménytelen, reménytelen, reménytelen (könyv). Jóvátehetetlen, végtelen. Kétségbeesett gyász. Ushakov magyarázó szótára. D.N. Ushakov. 1935 1940... Ushakov magyarázó szótára

MEGOLDHATATLAN, oh, oh; odú, fenék (könyv). Gyászról, bánatról: eredmény nélkül, vég nélkül. Kétségbeesett melankólia. | főnév reménytelenség, és feleségek. Ozsegov magyarázó szótára. S.I. Ozhegov, N. Yu. Shvedova. 1949 1992... Ozsegov magyarázó szótára

reménytelen- Reménytelen tragédia... Orosz idiómák szótára

I adj. Hosszú, végtelen. II kb. 1. Reményt sem hagyni a sikeres kimenetelhez vagy javuláshoz; reménytelen 1 .. 2. Nem sok jót ígér, kudarcra van ítélve; reménytelen 2 .. 3. Reménytelenség, kétségbeesés, reménytelenség kifejezése; ... Az orosz nyelv modern magyarázó szótára, Efremova

Reménytelen, reménytelen, reménytelen, reménytelen, reménytelen, reménytelen, reménytelen, reménytelen, reménytelen, reménytelen, reménytelen, reménytelen, reménytelen, reménytelen, reménytelen, reménytelen, ... ... A szavak formái

reménytelen- kétségbeesett; rövid odú forma, alsó... Orosz helyesírási szótár

reménytelen- cr.f. kétségbeesés / den, kétségbeesés / alsó, alsó, alsó; kétségbeesett / nap ... Orosz nyelv helyesírási szótár

Aya, oh; odú, fenék, fenék. = Reménytelen (1, 3 karakter). B-edik helyzet. Nincs szükség. Nagy melankólia. Találja magát reménytelen helyzetben. ◁ Kétségbeesett, adv. B. fájdalmas percek. Reménytelenség, és; f. A reménytelenség érzése... enciklopédikus szótár

reménytelen- ó, ó; odú, alsó, alsó .; = reménytelen 1), 3) lásd még. reménytelenség, kilátástalanság B th helyzet. Nincs szükség. Nagy melankólia... Sok kifejezés szótára

Könyvek

  • Csodálatos orvos, A.I. Kuprin. "Adja Isten, hogy az elkövetkező évben egy kicsit engedékenyebben bánjon veled, mint ez az egy, és ami a legfontosabb - ne veszítsd el a lelked" - mondta Dr. Pirogov a Mertszalov családnak. Még a legkétségbeesettebb pillanatban is...
  • Bolondok napja, Josip Novakovich. Mit várhat az életétől egy Bolondok napján született ember? Főleg, ha 1948 van, és a diktátor, Tito kerül hatalomra szülőhazájában, Horvátországban? Tele reményekkel és ambíciókkal, Ivan Dolinar belép ...
]

Modulok a ZNC működésének kiterjesztésére és módosítására szolgálnak. A felhasználók a modulokkal leggyakrabban úgy lépnek kapcsolatba, hogy üzenetet küldenek egy speciális felhasználónak az IRC-n. Ha például meg szeretné tekinteni a kiemelt kulcsszavakat a figyelőlistán, akkor "d elküldi / msg * figyelőlista... Amikor a ZNC látja, hogy az "újraüzenetbe küldendő nick" csillaggal kezdődik, akkor nem továbbítja az üzenetet az IRCd-nek / szervernek, hanem a megfelelő modulnak küldi el feldolgozásra. Ebben az esetben az óramodul megkapja az üzenetet, és válaszol Önnek a kulcsszavak listájával. Ez egy nagyon kényelmes és szabványos módot biztosít a betöltött modulok konfigurálására vagy más módon történő kommunikációjára, valamint egy általános és szabványos módot a betöltött modulok állapot- vagy egyéb információk megjelenítésére. Figyelje meg, hogy ez a betöltött modulokra vonatkozik. Be kell töltenie például egy adott modult / znc loadmod óra, mielőtt interfésülhetne az óramodullal. A legtöbb modul válaszolni fog / msg * modul help az elérhető parancsok listájával.

A ZNC modulok is be vannak töltve globálisan, hálózatonként, vagy a felhasználónként alapon. Minden modul maga határozza meg, hogy elérhető-e globális, hálózatspecifikus és/vagy felhasználó-specifikus betöltésre. A felhasználói szintű és a hálózati modulok a bejövő/kimenő üzenetek manipulálásától a teljes Twitter kliens megvalósításáig számos dolgot megtehetnek. Hagyományosabb IRC-feladatokat is el tudnak végezni, mint például a kihívás alapú automatikus működés, a távollét vagy a lemezre naplózás. Minden felhasználó betöltheti és konfigurálhatja saját modulkészletét, hogy saját igényeinek megfelelően testreszabhassa élményét.

A globális modulok az adminisztrátorok által betölthetők, és minden felhasználó számára funkcionalitást vagy viselkedésmódosítást biztosítanak. Például a partyline modulnak globálisnak kell lennie, mivel egy adott ZNC-példány összes felhasználója számára biztosítja a funkcionalitást, hogy kommunikálni tudjon egymással a ZNC-n belülről. A globális modulok mindent megtehetnek, amit a felhasználói szintű modulok, valamint néhány extrát. Lecserélhetik a ZNC hitelesítési rendszerét, módosíthatják a konfigurációk írási folyamatát, kezelhetik a CAP-ot stb.

Nyugodtan hozzon létre wikioldalakat az Ön által létrehozott modulokról, de ne felejtsen el hozzáadni egy letöltési linket, elérhetőségi adatokat, és használja ugyanazt az elrendezést, mint a többi modul. A hozzájárulásokat mindig nagyra értékeljük.

Modul lista [szerkesztés]

Globális modulok [szerkesztés]

adminlog A naplófelhasználó csatlakozik, bontja a kapcsolatot, és sikertelen bejelentkezik egy fájlhoz és/vagy a rendszernaplóhoz. blockuser Letilt bizonyos felhasználókat a ZNC használatában, mondván, hogy fiókjuk le van tiltva. certauth Ez a modul lehetővé teszi a felhasználók számára, hogy SSL ügyfélkulcsokon keresztül jelentkezzenek be. cyrusauth Ez a modul azoknak a rendszergazdáknak készült, akik shell / web / email / etc szervert futtatnak, és ZNC hozzáférést szeretnének biztosítani meglévő felhasználóiknak. fail2ban Az IP-címek blokkolása egy ideig sikertelen bejelentkezés után. identfile A felhasználó azonosítóját közzéteszi egy fájlban, amikor csatlakozni próbál. imapauth Lehetővé teszi a felhasználók számára az IMAP-on keresztüli hitelesítést. lastseen Naplózik, amikor a felhasználó utoljára bejelentkezett a ZNC-be. modperl A Perl-szkripteket ZNC-modulként tölti be. modpython Lehetővé teszi Python-on írt modulok használatát. notify_connect Értesítést küld minden adminisztrátornak, amikor egy felhasználó bejelentkezik a ZNC-be vagy kijelentkezik. partyline Lehetővé teszi a ZNC felhasználók számára, hogy csatlakozzanak belső csatornákhoz és lekérdezzenek más ZNC felhasználókat ugyanazon a ZNC-n. webadmin Lehetővé teszi felhasználók és beállítások gyors hozzáadását/eltávolítását/szerkesztését webböngészőn keresztül.

Felhasználói modulok [szerkesztés]

admin (most vezérlőpult) Lehetővé teszi felhasználók és beállítások menet közbeni hozzáadását/eltávolítását/szerkesztését IRC üzeneteken keresztül. autoattach Figyeli a leválasztott csatornákat, és automatikusan újracsatlakoztatja Önt, ha meghatározott tevékenység van egy csatornán, amelyet hozzáadott az automatikus csatolási listához. automatikus válasz Automatikus választ ad, ha valaki üzenetet küld Önnek, amíg távol van. block_motd Blokkolja a szerver "a nap üzenetét. bouncedcc Visszaveri a DCC átviteleket a znc szerveren keresztül, ahelyett, hogy közvetlenül a felhasználónak küldené azokat. buffextras Becenevek módosításai, csatlakozások, részek, témamódosítások stb. hozzáadása a lejátszási pufferhez. chansaver Csatornákat ment config amikor a felhasználó csatlakozik és részei karakterkészlet Normalizálja (azaz átalakítja) a karakterkódolásokat.clearbufferonmsg Ez a modul megpróbálja áthidalni a szakadékot a régi pufferrel való elárasztás között, ha KeepBuffer = true, és esetleg hiányzó üzenetek kiírása között, ha KeepBuffer = false. clientnotify Értesítés az új bejövő kapcsolatokról a felhasználó felé Vezérlőpult Lehetővé teszi felhasználók és beállítások menet közbeni hozzáadását / eltávolítását / szerkesztését az IRC üzeneteken keresztül.ctcpflood Ez a modul megpróbálja blokkolni a CTCP floods.dcc fájlt. a ZNC disconkick-ből Ez a modul kirúgja a kliensét az összes csatornáról, ha a ZNC megszakad a szervertől. flooddetach Ez a modul leválasztja Önt a csatornákról ch elárasztják. listsockets Ez a modul megjeleníti a ZNC összes nyitott socketjének listáját. napló A csevegési tevékenység naplózása a fájlba. missingmotd Ez a felhasználói modul 422-t küld az ügyfeleknek, amikor bejelentkeznek. jegyzetek Jegyzetek megtartása és lejátszása. Ez egy példa a WebModokra. minta Ez egy példamodul, amely segít a modulok írásában, és azt csinálja, amit akar. send_raw Lehetővé teszi nyers forgalom küldését az IRC-re más felhasználóktól. shell A Unix shell elérése közvetlenül az IRC kliensben található lekérdezéssel.

Hálózati modulok [szerkesztés]

autocycle Csatlakozzon újra egy csatornához, amikor egyedül vagy ott (a kezelői státusz megszerzéséhez). autoop Automatikusan kezelői státuszt ad a jófiúknak. modtcl Lehetővé teszi Tcl-szkriptek futtatását ZNC-ben. autovoice Automatikusan ad hangállapotot mindenkinek, aki csatlakozik valamelyik csatornához. awaynick Cserélje ki a nickjét, amíg távol van. awaystore Amikor távol van vagy levált, ez a modul elmenti az összes privát üzenetet. Az üzenetek addig olvashatók, amíg nem törli őket. Ez a modul akkor is el fogja távolítani Önt, ha egy ideig tétlen lesz. cert Ez a modul lehetővé teszi a felhasználók számára, hogy saját SSL-tanúsítványukat használják a szerverhez való csatlakozáshoz. crypt Csatorna / privát üzenetek titkosítása. keepnick Megpróbálja megszerezni és megtartani az elsődleges nickjét, ha elveszik. kickrejoin Az auto-rejoin-on-kick megvalósítása. modules_online Meghamisítja a ZNC modulok online állapotát egyes kliensek javítása érdekében. A nickserv a NickServ segítségével hitelesíti Önt. végrehajtása Parancsokat hajt végre a csatlakozáskor. Hitelesíti a Q-val (és még egy kicsit). raw Az összes nyers forgalom megtekintése. route_replies A válaszokat visszairányítja a megfelelő klienshez, ha több klienshez kapcsolódik. sasl Lehetővé teszi, hogy hitelesítsen egy IRC-hálózatot SASL savebuff segítségével. A csatorna puffereit titkosított fájlba menti, így azok túlélhetik az újraindítást és újraindítást. chat SSL (titkosított) DCC csevegés. simple_away Automatikusan távolítja Önt az IRC-ről, ha leválasztja a kidobóról. stickychan Meghatározott csatornákban tart. Figyelje meg az adott felhasználóktól származó konkrét szövegminták tevékenységét, és küldje el a szöveget egy speciális lekérdező ablakba.

További modulok [szerkesztés]

Modulok kezelése [szerkesztés]

A modulok könnyen hozzáadhatók vagy eltávolíthatók. A modulok alapértelmezés szerint a ~ / .znc / modules és / usr / local / lib / znc mappákban tárolhatók. A ZNC ebbe a második könyvtárba telepíti a moduljait, ami valójában $ (prefix) / lib / znc, de ez a fordítás előtt megváltoztatható a ./configure --module-prefix = DIR paranccsal.

A ZNC először a modulok helyi alkönyvtárában keresi a modulokat. Csak a „.so”-ra végződő fájlok jelennek meg modulként. A modulok eltávolításához egyszerűen törölheti őket a mappából. Más konfigurációmódosításra vagy újraindításra nincs szükség. Modul eltávolításához, de későbbi felhasználásra való megtartásához is módosíthatja a nevet, például: mv sample.so sample.so_.

Egy új modul lefordításához először el kell mentenie a forrást ".cpp" fájlként. A modulok összeállítása részletesen leírja a folyamatot.

Globális, felhasználói és hálózati modulok (le) tölthetők be a webadminból vagy a * állapotlekérdező ablakon keresztül, például:

/ msg * állapot LoadMod [--type = globális | felhasználó | hálózat] / msg * status UnloadMod [--type = globális | felhasználó | hálózat]

  • konfigurációt
  • A [--type = globális | felhasználó | hálózat] opcionálisan megadja, hogy a modul globális, felhasználói vagy hálózati modulként legyen-e betöltve. Nem minden modul tölthető be minden szinten; tekintse meg az egyedi modul dokumentációját, hogy megtudja, hol lehet betölteni.
  • a modules fájlnéven alapul, kivéve a ".so" kiterjesztést.
  • Modulonként specifikusak és nem kötelezőek: Megadhat paramétereket a modul betöltésekor, vagy beállíthatja a modult a betöltés után.

Tehát, hogy betöltse a log modul a globális szinten (szemben a felhasználói vagy hálózattal), és távolítsa el az összes szín/formázás vezérlőkódot a -Fertőtlenít paramétert írja be:

/ msg * status LoadMod --type = globális log -sanitize

A ZNC régebbi verzióinál nem lesz lehetősége megadni [--type = global | user | network]. Ebben az esetben csak használja:

/ msg * állapot LoadMod / msg * status UnloadMod

Ne feledje, hogy a felhasználó nem tud modult betölteni, ha a "DenyLoadMod" direktíva igazra van állítva. A modul betöltése sikertelen lesz, ha "Nem sikerült betölteni [ ] Hozzáférés megtagadva. ".

Ha egy modul megakadályozza a ZNC elindulását, és ezért nem tudja kirakni a modult a webadmin segítségével, akkor szerkesztheti a znc.conf fájlt, és eltávolíthatja a megfelelő LoadModule sort.

Modulok használata [szerkesztés]

Javasoljuk, hogy olvassa el a modul wikioldalát, ha meg akarja tudni, hogyan működik egy modul. Alternatív megoldásként a következő paranccsal kaphat parancslistát:

/üzenet* Segítség

  • * a konfigurációban beállított StatusPrefix. Általában "csak egy csillag (" * ").

Hasonló cikkek

  • Javíthatatlan felhasználói modulok

    Ahogy a cikkből tudja, mi a Linux kernel, a kernel monolitikus. Ez azt jelenti, hogy az összes végrehajtható kód egy fájlba koncentrálódik. Ennek az architektúrának van néhány hátránya, például az, hogy nem lehet új illesztőprogramokat telepíteni ...

  • Történelem a történelem dátumaiban

    A jövőben, 2012-ben, egy kerek dátumot ünnepelnek - az orosz államiság születésének 1150. évfordulóját. Oroszország elnöke ennek megfelelő rendeletet adott ki, és kijelentette, hogy célszerűnek tartja az évfordulót Ukrajnával és ...

  • Igaz, hogy a skandináv tengerészektől?

    A szlávok Európa legnagyobb etnikai közössége, de mit is tudunk valójában róluk? A történészek máig vitatkoznak arról, hogy kiről jöttek, és arról, hogy hol volt a hazájuk, és honnan származik a „szlávok” önnév. A szlávok eredete ...

  • A keleti szlávok az ókorban a szlávok milyen népekből származnak

    Számos hipotézis létezik a szlávok eredetéről. Valaki a Közép-Ázsiából érkezett szkítákra és szarmatákra utal, valaki az árjákra, germánokra, mások teljesen a keltákkal azonosítják őket. "Norman" változat Az eredet összes hipotézise ...

  • Az elmúlt évek krónikája története

    Az elmúlt évek meséje a 12. században készült, és a leghíresebb ókori orosz krónika. Most bekerült az iskolai tantervbe – éppen ezért minden diáknak, aki nem akarja olvasni vagy hallgatni ezt a művet, köteles ...

  • A régi orosz állam első hercegei

    Az állam megalakulása a keleti szlávok körében a törzsi rendszer hosszú felbomlásának és az osztálytársadalomba való átmenet természetes eredménye volt. A közösség tagjai közötti tulajdon és társadalmi rétegződés folyamata oda vezetett, hogy ...