Невиправний user modules. Nodejs основи. Розташування модулів: порядок пошуку модулів у nodejs

Як ви знаєте зі статті, що таке ядро ​​Linux, ядро ​​є монолітним. Це означає, що весь код, що виконується, зосереджений в одному файлі. Така архітектура має деякі недоліки, наприклад, неможливість встановлення нових драйверів без перескладання ядра. Але розробники знайшли вирішення й проблемі, додавши систему модулів.

Ядро Linux дозволяє драйверам обладнання, файлових систем, та деяким іншим компонентам бути скомпільованими окремо – як модулі, а не як частина самого ядра. Таким чином, ви можете оновлювати драйвера, не перезбираючи ядро, а також динамічно розширювати його функціональність. А ще це означає, що ви можете увімкнути в ядрі тільки найнеобхідніше, а все інше підключати за допомогою модулів. Це дуже просто.

У цій статті ми розглянемо модулі ядра Linux, основи роботи з ними, перегляд уже завантажених модулів, завантаження, встановлення та вимкнення модулів. А також повне відключення, додавання до чорного списку та додавання нових модулів ядра.

Модулі ядра Linux збираються лише під певну версію ядра, є спосіб запуску модуля незалежно від версії ядра, якщо вони сумісні за допомогою dkms, але про це ми поговоримо пізніше.

Усі модулі знаходяться в папці /lib/modules/. Враховуючи, що модулі розраховані тільки для певної версії ядра, то в цій папці створюється окрема підпапка для кожної встановленої в системі версії ядра. У цій папці знаходяться самі модулі та додаткові конфігураційні файли, модулі відсортовані за категоріями, залежно від призначення, наприклад:

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

arch Documentation fs lib net sound
crypto drivers kernel mm security

Перед тим як переходити до практики, коротко розглянемо основні команди для управління модулями.

  • lsmod- переглянути завантажені модулі
  • modinfo- інформація про модуль
  • insmod- завантажити модуль
  • rmmod- Видалити модуль

Робота з модулями ядра Linux виконується переважно за допомогою цих команд, але можуть використовувати й інші.

Усі модулі

Таке завдання виникає нечасто, але якщо ви хочете переглянути всі встановлені модулі ядра Linux в системі, робиться дуже просто. Всі модулі розташовані в папці /lib/modules, тому дуже просто обчислити їх всі однією командою, або навіть просто зайти в папку файловим менеджером і подивитися.

У Ubuntu команда виглядатиме ось так:

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

Можна зробити таку конструкцію за допомогою find:

find /lib/modules -name *.ko

Можемо шукати лише для поточного ядра:

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

Також всі модулі записані в конфігураційному файлі /lib/modules/modules.aliases, тому ми можемо просто переглянути його вміст:

Якщо хочемо перевірити, чи встановлено певний модуль ядра Linux, відфільтруємо виведення будь-якої з команд за допомогою grep:

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

Що завантажено?

Вся інформація про завантажені модулі зберігається у файлі /proc/modules, ми можемо вивести її командою:

cat /proc/modules

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

Але для цієї справи є цивілізованіші методи. Це утиліта lsmod та modinfo. Щоб переглянути завантажені модулі ядра linux, виконайте:

Module Size
ctr 16384 2
ccm 20480 2
fuse 106496 3
bnep 20480 2
bluetooth 532480 5 bnep

Зручно перевіряти, чи завантажений модуль за допомогою grep:

sudo lsmod | grep vbox

А більш детальну інформацію про кожен модуль можна отримати за допомогою утиліти modinfo:

filename: /lib/modules/4.1.20-11-default/kernel/fs/fuse/fuse.ko
alias: devname:fuse
alias: char-major-10-229
alias: fs-fuseblk
alias: fs-fuse
license: GPL
description: Filesystem in Userspace
author: Miklos Szeredi
alias: fs-fusectl
srcversion: 739DE4A12CE441C9FBD74C7

Тут ви можете побачити файл модуля, його ліцензію, автора та залежності. Залежно - це ті модулі, які повинні бути завантажені для його нормальної роботи. На жаль, не для всіх модулів є нормальний опис, але ви можете спробувати подивитися опис залежностей модуля.

Запуск модулів ядра

Завантажити модуль ядра Linux можна за допомогою команд modprobe чи insmod.

Наприклад, завантажимо модуль vboxdrv

sudo modprobe vboxdrv

Щоб завантажити модуль ядра linux за допомогою insmod, необхідно передати адресу файлу модуля:

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

Нагадую, його можна дізнатися за допомогою команди modinfo. Запуск модуля ядра Linux переважно виконувати за допомогою modprobe, оскільки ця команда не тільки знаходить файл модуля у файловій системі, але й завантажує всі його залежності.

Видалення модулів ядра

Тут аналогічно дві команди - modprobe, що дозволяє видалити модуль якщо їй передати опцію -r, а також є команда rmmod. Почнемо з modprobe:

sudo modprobe -r vboxdrv

Інша команда в цьому випадку виглядає трохи простіше:

sudo rmmod vboxdrv

rmmod: ERROR: Module vboxdrv використовується в: vboxnetadp vboxnetflt vboxpci

Якщо ви отримали помилку під час вивантаження модуля, він ще використовується іншими модулями, і спочатку потрібно вивантажити їх. Правильно команда, що відпрацювала, не повинна нічого повертати.

rmmod vboxnetadp vboxnetflt vboxpci

Блокування завантаження модулів

Іноді, під час завантаження системи для використовуваних нами пристроїв, завантажуються ті модулі ядра Linux, вони або не підтримують потрібну функціональність або конфліктують з іншими модулями. Яскравим прикладом можна назвати завантаження драйвера b43 замість brcmsmac для бездротового адаптера Broadcom. Щоб вирішити цю проблему, ви можете додавати модулі до чорного списку. Для цього достатньо додати один рядок у файл /etc/modprobe.d/blacklist.conf:

vi /etc/modprobe.d/blacklist.conf

Цей код додасть до чорного списку модуль b43.

Встановлення модулів ядра Linux

Зібрані для цієї версії ядра модулі можна просто скопіювати в потрібну папку, власне, ми так і робимо, коли збираємо ядро ​​з вихідних джерел. Але з пропрієтарними драйверами та іншими зовнішніми драйверами, що не поставляються в комплекті з ядром, справа інакша. Ці модулі підтримують кілька версій ядра, але їх установки використовується спеціальна технологія - DKMS (Dynamic Kernel Module Support). Причому модуль, встановлений таким чином один раз, перезбиратиметься для кожної нової версії ядра автоматично.

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

Створимо конфігураційний файл:

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/drivers/net/ethernet/intel/ixgbe/"
AUTOINSTALL="yes"

Додамо модуль у дерево ядра:

sudo dkms add-m ixgbe-v 4.3.15

Запускаємо складання, для поточного ядра:

sudo dkms build -m ixgbe -v 4.3.15

І встановлюємо:

sudo dkms install -m ixgbe -v 4.3.15

Встановлення модулів ядра завершено. Тепер ви можете переглянути інформацію про драйвер або завантажити його:

dkms status | grep ixgbe

Висновки

Швидше за все, вам рідко доведеться поратися з цими модулями. Але робота з модулями ядра буде необхідна, якщо ваш дистрибутив не підтримує апаратне забезпечення вашого пристрою з коробки, а також коли ви працюєте зі стороннім програмним забезпеченням, таким як VirtualBox, Vmware і т.д. Але дуже корисно знати, як поводитися з модулями, коли вам потрібно додати або видалити їх. Навіть якщо у вас немає потреби в цьому зараз, ви можете протестувати, як все працює, щоб бути озброєним згодом.

NODE.JS- Програмний засіб для виконання js.

Nodejs = V8 + I/O + бібліотеки

V8: швидко, сучасно, економно

Переваги

  • Javascript
  • Загальний код на клієнті та на сервері
  • Основні завдання з web
  • Багато з'єднань та завдань одночасно
  • Легко створити робочий прототип
  • Зручний менеджер пакетів NPM
  • Спільнота

Встановлення

при установці nodejs прописує себе змінну PATH (+ npm), [адміністрування – змінні середовища]; можна перевірити у командному рядку:
set PATH

Як правило, під nodejs запускають файли: напишемо простий скрипт і запустимо його за допомогою командного рядка:


Скрипт буде виконано і результат з'явиться у командному рядку.

Документація по nodejs

Модулі nodejs

Щоб розібратися як працюють вбудовані модулі nodejs необхідно завантажити архів із вихідними джерелами з сайту nodejs (source code). І зайти в директорію lib. (команда dir - отримуємо список файлів через командний рядок; Якщо вам необхідно перерахувати файли у всіх вкладених папках, то замість "dir" використовуйте "dir/s"). Якщо ви поставили nodejs із пакета, то в папці lib файлів не виявите.

У nodejs є модулі з різним ступенем стабільності. (наприклад, 0 – не варто використовувати; 1, 2 – використовувати можна, але API модуля може змінитися).

Функції зростають (проект розвивається) і з часом нам потрібно винести функцію-конструктор USER в окремий файл. Ось тут у справу вступають модулі.

Модулі цього свого роду спосіб, який пропонує nodejs для організації проекту.

Проекти зазвичай розростаються, що призводить до бажання розбити проект на кілька файлів – ось тут у справу вступають модулі.

require

Для html-сторінок для підключення скриптів використовують тег script. У nodejs існує спеціальна команда require.

Var user = require("./user");

У прикладі ми звертаємося до файлу (user.js) у тому директорії (розширення (.js) писати необов'язково).

//require("./user"); // .js вказувати необов'язково // в цьому випадку файл буде виконано, але змінної USER // не буде // у цьому головна відмінність від тегів script від nodejs // У node.js функції та змінні кожного модуля є глобальними // для цього файлу (самого модуля) і вони не стають автоматично // доступними при підключенні (require("./user")) // Але як отримати доступ? // У кожному модулі є спеціальна змінна exports - це об'єкт і те // що я покладу туди повернеться як результат require var user = require("./user.js"); // результат: user = (User: function)

Перша відмінність модульної системи nodejs від браузерних скриптів: якщо в браузері є два теги script, то функція, яка визначена на глобальному рівні, одному з них доступна і в іншому, а в nodejs немає. У nodejs функції та змінні є глобальними для даного файлу (вони не стають доступними при підключенні за допомогою require). Таким чином, nodejs дозволяє писати дійсно незалежні модулі. Але щоб модуль був доступний використовується система експортів. У кожному модулі є спеціальна змінна exports.

Модуль-директорія DIR/index

Підключаємо безпосередньо папку var user = require("./user"); , у якій лежить відповідний index.js.

Наприклад

Function User(name)( this.name = name; ) User.prototype.hello = function(who)( console.log(phrases.Hello + ", " + who.name); ); exports.User = User;

Підключаємо та використовуємо конструктор User у файлі./server.js

//server.js var user = require("./user"); var vasya = new user.User("Вася");

« ./ » - щодо поточної папки

exports – це об'єкт і те, що туди належить, повернеться як результат require (exports.jpg). Таким чином модуль може оголосити свої приватні змінні/функції та експортувати лише те, що необхідно.


Для глобальних змінних та ін. існує об'єкт global

Global.User = User;

Підсумок

  • Підключення require
  • Змінні: var (приватні у модулів), exports, global (використовується рідко)
  • Види модулів: js, node (з розширенням. node), json (з розширенням. json). Модулі json використовуються в тому випадку, коли потрібно зберігати будь-яку просту інформацію на файлі.
  • Модуль-директорія DIR/index

Об'єкт module

  • Об'єкт module
  • Модуль-функція module.exports=function
  • Кешування модулів (заново модуль ніколи не читається)
  • Розташування модулів: порядок пошуку
  • Передаємо параметри: модуль-фабрика

Об'єкт module (основний об'єкт для модулів) є змінною, яка існує у кожному модулі (файлі, можна вивести console.log(module);). . Вміст: властивість id – як правило, шлях до файлу,
parent – ​​посилання на батьківський модуль (module.parent - посилання на батьківський модуль, який require даний),
children (module.children - ті модулі, які підключені за допомогою require),
властивість exports та інші.

Модуль чи додаток? module.parent

Модуль може бути запущений безпосередньо, а якщо ні, якщо функціонал підключений до іншого модуля, то нехай цей функціонал експортує. Розділити ці два випадки можна за допомогою перевірки:

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


пс: як кажуть на stackoverflow.com Батьком є ​​модуль, який викликав скрипт для інтерпретації

// $node foo.js console.log(module.parent); // null // require("./foo") console.log(module.parent); // (...)

Правильне використання module.exports

У контексті модуля:

module.exports = exports = this (дані конструкції рівнозначні)

Якщо ви хочете передати функцію не в об'єкті, а безпосередньо, то використовуйте наступний синтаксис:

Module.exports=User;


Кешування модулів

Коли Nodejs завантажує модуль він повністю створює відповідний об'єкт module (з урахуванням parent , exports та інших аналогічних властивостей) і запам'ятовує його у себе (module.id (повний шлях до файлу) служить ідентифікатором для внутрішнього кешу) і наступного разу, коли ми повторно звертаємось (підключаємо) до якогось модуля (файлу), nodejs бере все той же об'єкт з кеша. Тобто, наприклад, ініціалізувати модуль достатньо 1 раз у якомусь файлі, надалі його можна просто використовувати.

У разі для var db = require("../db");
та для var db = require("./db"); береться той самий об'єкт. Тому принцип наступний: вперше, коли використовується модуль, він ініціалізується і надалі ми його тільки підключаємо та користуємося ним (тобто у нашому випадку нам не потрібно використовувати db.connect() двічі, тобто у різних файлах).


Розташування модулів: порядок пошуку модулів у nodejs

Як зробити так, щоб db завжди підключалася без вказівки специфічного шляху:

Var db = require("../db"); //або var db = require("./db");

а ось так:

Var db = require ("db");

незалежно від цього у якому файлі підключається db .

Для цього потрібно розуміти порядок пошуку модулів у nodejs (те, що відбувається, коли викликається require). У nodejs існує багато вбудованих модулів, наприклад, require("fs"); , який буде підключено без проблем. Якщо ж у require вказати конкретний шлях, наприклад, require("../db"); , То пошук буде вестися виходячи із заданого шляху і файл буде знайдений, або nodejs спробує отримати цей файл як директорію (і шукатиме index.js усередині категорії).

Якщо вказати require("db"); і при цьому модуль не є вбудованим, то буде здійснено пошук директорії node_modules щодо поточного положення (якщо знайде, то спробує взяти модуль із неї). Якщо директорія node_modules відсутня, то директорія node_modules шукатиметься вище і т.д.

Крім вказівки конкретного шляху для модуля, nodejs може шукати модулі таким чином:

Вступ до npm – менеджер пакетів для Node.JS

  1. створити файл з описом пакета (package.json), який містить інформацію про модуль (ім'я, версія тощо). Або вручну, або через команду
    npm init
    (запросить потрібну інформацію)
  2. Щоб опублікувати модуль необхідно:
    1. Додати користувача за допомогою команди npm adduser (необхідно ввести Username і Password). Тепер вся робота з NPM буде від імені цього користувача. Користувач може закластися на https://www.npmjs.com/~name_user і спостерігати за своїми модулями.
    2. Публікація: npm publish
  3. Далі хтось може використовувати Ваш, доданий до бази, модуль, а сам користувач вносити зміни.
  4. Отримуємо всі команди npm за допомогою команди npm help
  5. Пошук потрібно модуля в базі даних: npm s ключові_слова або npm search ключові_слова (наприклад, npm s super module)
  6. Встановлюємо модуль: npm install name_module або npm i name_module
  7. При установці модулів nodejs спочатку шукає папку node_modules в поточній директорії (потім вище і вище і т.д), або (якщо node_modules відсутня) шукає package.json (також піднімаючись вгору; package.json , як правило, означає корінь проекту) і, відповідно, якщо знаходить package.json, робить у відповідній директорії папку node_modules ; якщо обидва варіанти не проходять, то nodejs робить папку node_modules у поточній директорії. Якщо ви бажаєте поставити модуль у певну директорію, то в цій директорії необхідно створити папку node_modules .
  8. npm up оновити модуль (перевірить модулі на оновлення, які є у папці node_modules)
  9. npm remove имя_модуля (видалити модуль)

Висновок щодо npm:

npm init
nmp adduser
npm publish
npm search ключові слова
npm install модуль
npm update модуль
npm remove модуль
npm help команда

Структура пакету NPM

Встановлення потрібної версії, наприклад: npm i [email protected]

Останню версію модуля можна отримати у тому випадку, якщо модуль розробляється, використовуючи систему версинування git, наприклад, github. Достатньо отримати Git Read-Only (url): https://github.com/strongloop/express.git та в консолі:

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

dependencies у package.json

dependencies вказує на ті модулі, від яких цей.

devDependencies

Модулі прописані в devDependencies не ставляться, якщо модуль підтягується як залежність. Вони ставляться лише для розробки та їх можна встановити, якщо, наприклад, зайти в модуль у папці node_modules та прописати npm i (або при встановленні прапорця npm config).

поле main задає точку входу в пакет

Глобальні модулі

Будь-який модуль можна встановити глобально, якщо поставити прапор -g: npm -g модуль

Глобально означає у системну директорію.

Директорія глобальних модулів під windows:

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

Глобальні модулі ставляться до стандартної системної директорії. Ті бінарники, які є в package.json будуть поставлені системним шляхом (це і є основне застосування глобальних модулів), тобто надалі їх можна буде викликати через консоль.

За матеріалами курсів І. Кантора

Див … Словник синонімів

БЕЗВИХІДНЕ, безвихідне, безвихідне; безвихідний, безвихідний, безвихідний (книжн.). Невиправний, нескінченний. Безвихідна скорбота. Тлумачний словник Ушакова. Д.М. Ушаків. 1935 1940 … Тлумачний словник Ушакова

БЕЗВИХІДНИЙ, ая, ое; ден, дна (книжн.). Про горе, смуток: не має кінця, кінця. Безвихідна туга. | сущ. безвихідь, і, дружин. Тлумачний словник Ожегова. С.І. Ожегов, Н.Ю. Шведова. 1949 1992 … Тлумачний словник Ожегова

безвихідь- безвихідний трагізм... Словник російської ідіоматики

I дод. Довгий, нескінченний. II дод. 1. Хто не залишає надії на благополучний результат або поліпшення; безнадійний 1.. 2. Не віщує успіху, приречений на невдачу; безнадійний 2.. 3. Виражає відсутність надії, розпач, безвихідь; … Сучасний тлумачний словник Єфремової

Безвихідне, безвихідне, безвихідне, безвихідне, безвихідне, безвихідне, безвихідне, безвихідне, безвихідне, безвихідне, безвихідне, безвихідне, безвихідне, безвихідне,… … Форми слів

безвихідь- безвихідь один; короткий. форма ден, дна … Російський орфографічний словник

безвихідь– кр.ф. безвихідь/ден, безвихідь/дна, дно, дні; безвихідь/день … Орфографічний словник російської мови

Ая, ое; ден, дна, дно. = Безнадійний (1, 3 зн.). Бая ситуація. Велика потреба. Бою туга. Опинитися у безвихідному положенні. ◁ Безвихідь, назва. Б. тяжкі хвилини. Безвихідь, та; ж. Почуття безвиході. Енциклопедичний словник

безвихідь- ая, ое; ден, дна, дно.; = безнадійний 1), 3) див. безвихідь, безвихідь Б ая ситуація. Велика потреба. Бою туга ... Словник багатьох виразів

Книжки

  • Чудовий лікар, А. І. Купрін. "Дай Бог, щоб наступний рік трохи поблажливіше ставився до вас, ніж цей, а головне - не падайте духом", - так сказав доктор Пирогов сім'ї Мерцалових. Навіть у найбезвихідніший момент,…
  • День дурня, Йосипе Новаковичу. Що може чекати від життя людина, яка народилася на День дурня? Особливо якщо на дворі 1948 і до влади рідної Хорватії приходить диктатор Тіто? Повний надій та амбіцій Іван Долінар надходить у…
]

ModulesВикористовується для розширення і зміни функцій ZNC. Users interact with modules most як тільки messaging a special user on IRC. Для прикладу, щоб побачити високоякісні ключові слова у вашій watch list, you"d send /msg *watch list. Коли ZNC повідомила, що ніць ви збираєтеся стрілки з територією, це дає перед повідомленням на IRCd/server, але усвідомлює, що це property module for processing. У цьому випадку, перемикач module буде отримати повідомлення і перейти до вас з листом своїх ключових слів. Це робиться для дуже зручним і стандартним способом configuring або іншим способом комунікації з вашими завантаженими модулями, як добре, як і стандартним способом для ваших loaded modules для відображення статусу або інших інформації. Notice that this is for loaded modules. You must load a given module, для прикладу /znc loadmod watch, перед тим, як можна interface with watch module. Most modules will reply to /msg *module help with listing of available commands.

ZNC modules є loaded either globally, per-network, or on a per-user basis. Всі module defines для нього, де він є можливим для завантаження як глобальний, мережевий-specific та/або user-specific. User level and network modules can do things ranging from manipulating the incoming/outgoing messages to implementing a full blown Twitter client . Вони можуть також більше традиційних IRC дій, як основи, що базуються на auto-op, setting you away, або logging to disk. Будь-який user gets to load and configure їх own set set modules to customize their experience to suit their preference.

Global modules loadable by admins and provide functionality or change behavior for all users. Для прикладу, партійний модуль має бути загальним значенням для виконання функціональності для всіх користувачів на додатковій ZNC дохід до будь-якого комунікації з усіма іншими від ZNC йогоself. Global modules can do everything that user-level modules can do, як добре, як кілька extra. Вони можуть замінити ZNC's authentication system , modify the config-writing process, deal with CAP, etc.

Натисніть, щоб створювати wikipages про moduly, які ви створили, але не для того, щоб отримати додатковий link, contact information, і скористатись самим посиланням як останні modulи.

Module List [ edit ]

Global Modules [ edit ]

adminlog Log user connects, disconnects, and failed logins для файлу та/або до syslog. blockuser Blocks certain users from using ZNC, saying their account був disabled. certauth Цей module lets users до log в SSL client keys. cyrusauth Цей модуль використовується для адміністраторів, які виконують службу для shell/web/email/etc and want to provide ZNC access to the existing users. fail2ban Block IPs для певного часу після несподіваного повідомлення. identfile Posts the ident of user to a file when they trying to connect. imapauth Allow users до authenticate IMAP. Lastseen Logs when a user last logged in to ZNC. modperl Loads Perl scripts як ZNC modules. modpython Ви можете використовувати moduly, що містяться на Python. notify_connect Sends a notice to all admins коли user logs in or out of ZNC. partyline Використовуйте ZNC-users для введення власних каналів і отримання інших ZNC-users на саму ZNC. webadmin Дозволяє add/remove/edit users і settings on fly via a web browser.

User Modules [ edit ]

admin (Новий контрольний панель) Ви можете надати адресу/замовлення/налаштування користувачів і налаштування на ходу через IRC messages. autoattach Watches ваші скановані канали і повторні записи ви автоматично, коли ви є особливими діяльністю в каналі ви збираєтеся до вашого autoattach list. Авжеж Gives a automatic reply if someone messages you while you are away. block_motd Blocks the server"s Message of the Day. bouncedcc Bounces DCC transfers через the znc server instead of sending them directly to the user. config when user joins and parts Charset Normalizes (ie converts) character encodings. =false.clientnotify Notify про нові зв'язки з нами для вашого користувача. and from ZNC disconkick This module will kick your client from all channels if ZNC disconnects from server. ch are flooded. ListSockets Цей модуль дає змогу переглянути всі спільні sockets в ZNC. log Log chat activity to file. missingmotd Цей user module will send 422 to clients when they login. notes Keep and replay notes. This is an example of WebMods. sample This is an example module to help with writing modules to whatever you want. send_raw Натисніть на те, щоб зробити теоретичне право на IRC від інших користувачів. shell Access your Unix shell via query right inside of your IRC client.

Network Modules [ edit ]

autocycle Rejoin channel when you are the only one there (to gain operator status). autoop Automatically give operator status to good guys. modtcl Allows you to run Tcl scripts в ZNC. autovoice Automatically give voice status to everyone who joins some channel. awaynick Change your nick while you are away. awaystore Коли ви збираєтеся, або розібратися, цей модуль буде зберігати всі приватні повідомлення для вас. The messages can be read until you delete them. Цей модуль буде встановлюватися, коли ви є іденним часом. cert This module lets users use their own SSL certificate to connect to a server. crypt Encryption for channel/private messages. keepnick Tries to get and keep your primary nick if it is taken. kickrejoin Implements auto-rejoin-on-kick. modules_online Відмітки online статі ZNC modules to fix some clients. nickserv Auths you with NickServ. perform Performs commands on connect. Auths you with Q (and a little more). raw View all of the raw traffic. route_replies Routes back answers to the right client when connected with multiple clients. sasl Allows you to authenticate to an IRC network via SASL savebuff Saves ваші канали buffers в натиснутий файл, щоб вони могли перезапустити і reboots. schat SSL (encrypted) DCC chats. simple_away Automatically set you away on IRC при відключенні від bouncer. stickychan Keeps ви в певних каналах. watch Monitor activity for specific text patterns from specific users and have the text sent to a special query window.

More Modules [ edit ]

Managing Modules [ edit ]

Модули можуть бути пристосовані або вилучені easily. Modules can be stored in ~/.znc/modules and /usr/local/lib/znc by default. ZNC налаштовує його модулі для того, щоб вдруге директорії, які в фактично є $(prefix)/lib/znc , але це можна змінити з ./configure --module-prefix=DIR для compiling.

ZNC буде першим переглядом в локальних sub-directory modules при searching for modules. Тільки файли, які закінчуються з ".so", будуть бути як module. Для того, щоб remove modules ви можете скористатися ним з folder. Чи не інші налаштування зміни або повторні запуски необхідні. Для того, щоб remove, а також keep a module для останнього використання, ви можете змінити назву, як: mv sample.so sample.so_ .

Для того, щоб compile a new module you must first save the source as a ".cpp" file. Compiling modules описують процеси в detail.

Global, user, and network modules can be (un)loaded з webadmin або через status query window, як:

/msg *status LoadMod [--type=global|user|network] /msg *status UnloadMod [--type=global|user|network]

  • configuration
  • [--type=global|user|network] optionally specifies whether to (un)load the module як global, user, або network module. Не всі modules може бути loaded at all levels; see individual Module documentation to find out where it may be loaded.
  • використовується на modules file name, крім ".so" extension.
  • Є конкретним для кожного module і не вимагається: Ви можете налаштувати параметри, коли loading module, або ви можете налаштувати module after loading it.

So, to load the log module at the global level (as opposed to user or network) and remove all color/formatting control codes with the -sanitize parameter, you would type:

/msg *status LoadMod --type=global log-sanitize

Для попередньої версії ZNC, ви не маєте можливості для specify [--type=global|user|network] .

/msg *status LoadMod /msg *status UnloadMod

Please keep in mind that a user not able to load a module if the directive "DenyLoadMod" is set to true. Trying to load a module will fail with "Неможливо to load [ ] Access Denied.".

Якщо module prevents ZNC від запуску і вони можуть "завантажити module using webadmin , ви можете edit znc.conf і remove the corresponding LoadModule line.

Using modules [ edit ]

Це recommended to read the module"s wikipage if you want to find out how a module works. Alternatively the following command can be used to get a command list:

/msg * help

  • * is the StatusPrefix set в вашому налаштуванні. Usually it's just an asterisk ("*").

Схожі статті