Forum Turris
Fórum Turris Nápověda

Milí majitelé routerů Turris,

toto fórum bylo 9. 12. 2016 zmrazeno a nahrazeno naším novým Turris fórem. Ještě chvíli bude dostupné k prohlížení, ale již zde není možné přispívat. Více informací naleznete v oznámení o uzavření fóra.


Dear Turris routers users,

this forum has been frozen on Dec 9th, 2016 and replaced by our new Turris forum. It will be read-only accessible for some time after. For more information, read the announcement about closing the forum.

Nahoru Téma Majitelé routerů / Technická podpora / Majordomo se nezobrazuje po přidání do /etc/config/updater
- - Dne 2014-11-10 11:01
[větev tématu přesunuto]
Nadřazený - - Od fojtp Dne 2014-11-10 09:32
majordomo pridan do updateru, proveden update, ale v sekci Statistiky mam pouze: Collectd a Grafy..
Nadřazený - - Od Drx001 Dne 2014-11-10 10:04
Ještě to chce restart... :wink:
Nadřazený - Od fojtp Dne 2014-11-10 11:01
nemam rad "zbytecny" restarty, kazdopadne dekuji obema za nakopnuti --> restart sluzeb luci, lightttpd, lcollectu, crona a vymazani luci cache pomohlo..
Nadřazený - Od commar (>>) Dne 2014-11-10 10:05
Musíš restartovat, mě se to objevilo až po restartu...

EDIT: pozdě, zase jsem druhej... :grin:
Nadřazený - Od Jan Čermák (>>) Dne 2014-11-10 11:08 Hlasů 1
Dovolil jsem si to přesunout, v předchozím tématu už začínal být pěkný nepořádek...
Nadřazený - Od Ruda004 Dne 2014-11-25 23:47
Co jste tam přesně napsal?  Jak se Majordomo instaluje, aby se automaticky aktualizoval?
- - Od Drx001 Dne 2014-11-10 18:25 Upraveno 2014-11-10 18:29
Majordomo funguje perfektně. Měl bych jen jeden dotaz - je možné nějak nastavit, aby byl klient identifikován nějakým lidštějším způsobem, než je MAC adresa? :red:
Nadřazený - - Od JFila (>>) Dne 2014-11-11 08:46 Upraveno 2014-11-11 09:03
Nádhera, skoro jako velký čínský firewall. :twisted:
Jinak bych se také přimlouval o načítání hostname například z /etc/config/dhcp.
Ještě bych doplnil součty pro každý seznam a možnost si definovat od do pomocí dotazu.
To je uloženo v nějaké db? Jak je možné k datům přistupovat přímo?
Nadřazený - - Od milanroubal (>) Dne 2014-11-11 09:55 Hlasů 1
V LuCi ma to Majordomo 2 zalozky - Overview a Settings. A prave v sekci Settings je videt, kde to uchovava data a jak zarucit, aby zustaly uchovane i po restartu.
Nadřazený - - Od Robin Obůrka Dne 2014-11-14 17:42 Hlasů 3
Dobrý den,

já vás ještě doplním: dokumentace je již k nalezení na adrese: https://www.turris.cz/doc/navody/majordomo

Protože jsme chtěli Majordoma ohlásit nějak oficiálněji, tak jsme dokumentaci nepublikovali, ale když už se používá, tak jsme ji zveřejnili dříve oproti plánu.
Nadřazený - Od NONES (>>>) Dne 2014-11-14 20:40
Je dobře, že jste MajorDoma spustili "v předstihu". My o ty oficiality v kravatkách moc nestojíme, raději předhodit něco na hraní a my už si nějak přežvejkáme - případně vzneseme další požadavky na úpravy. 100x palec nahoru :grin:
Nadřazený - - Od Robin Obůrka Dne 2014-11-13 16:11
Dobrý den,

tohle není konfigurační volba, takže nastavit se nedá. Způsob identifikace stroje by bylo nutné změnit na úrovni implementace.

Při návrhu aplikace jsme se v tomto bodě rozhodli myslet na méně zkušené uživatele, kteří si většinou domácí síť realizují čistě přes DHCP a nehodlají se zabývat přiřazováním IP adres jednotlivým zařízením. Pro takový typ sítě je MAC adresa spolehlivější identifikátor.

Doporučuji v nastavení zapnout funkci "Vyhledávání výrobce" - hodně to usnadní identifikaci zařízení.
Nadřazený - - Od Drx001 Dne 2014-11-13 16:14
Myslím, že méně zkušení uživatelé vůbec netuší, co je MAC adresa a jak podle ní zjistit konkrétní zařízení, ale budiž, nějak se s tím poperu... :)
Nadřazený - - Od Jan Čermák (>>) Dne 2014-11-13 16:36
Kolega tím chtěl hlavně říct, že v případě, že je IP adresa z DHCP, v době, kdy log čtete, už zařízení nemusí být v síti, tudíž pak není možné ho identifikovat. Pokud zařízení stále v síti je, stačí se podívat na aktuální "zápůjčky" z DHCP, kde najdete, která MAC adresa má jakou IP adresu.
Nadřazený - - Od Drx001 Dne 2014-11-13 16:41
Jasně, já tomu rozumím. Jenom si myslím, že by pro běžného uživatele i přesto byla IP adresa srozumitelnější. A úplně nejlepší by byl název zařízení, pokud ho má router jak zjistit. Já si poradím i s tou MAC adresou, jenom mi to nepřipadá moc 'user-friendly', to je všechno. :wink:
Nadřazený - - Od Jan Čermák (>>) Dne 2014-11-13 16:47
Pokud budete mít v logu jen záznam "192.168.1.123", nejen, že to nebude o moc víc user friendly, ale dost možná ani nebudete mít šanci zjistit, jaké zařízení to bylo. Pokud provedete to, co doporučoval kolega, tedy pokud si zapnete identifikaci výrobce, budete tam mít "nějakou jinou adresu" (kterou zpravidla najdete na nějakém štítku na síťovém zařízení) a název výrobce síťové karty, který se často shoduje s výrobcem celého zařízení. Ta IP adresa by byla opravdu jen zbytečný údaj.
Nadřazený - - Od JFila (>>) Dne 2014-11-13 19:18
Myslel jsem, že při ukládání do DB se projde následujících několik kroků:

máme k MAC IP adresu? -> ne, zalogovat MAC
máme k IP adrese hostname? -> ne, zalogovat MAC
máme -> zalogovat hostname
Nadřazený - - Od fojtp Dne 2014-11-13 19:35
no a nebo si rucne zeditovat soubor majordomo_serialized_mac_vendor a dat si tam:
00:01:15:44:66:77=Muj notebook
Nadřazený - - Od NONES (>>>) Dne 2014-11-13 20:15 Hlasů 1
O editaci tohoto souboru svými uživatelsky přívětivými názvy zařízení také uvažuji. Zdá se mi to nejjednodušší a nejelegantnější vyřešení "popiskového" problému
Nadřazený - - Od JFila (>>) Dne 2014-11-13 22:02 Upraveno 2014-11-13 22:07
Tak jsem si to napsal, třeba to někomu také poslouží.
http://jfilaa.blogspot.cz/2014/11/turris-pekna-jmena-pro-rozsireni.html

Jediným dosud (22:08) známým problémem je, že stahování známé MAC přepíše. Vážení řešitelé, nebylo by možné upřednostňovat hodnoty uživatelem definované?
Nadřazený - Od PabloRadegast (>) Dne 2014-11-14 10:14 Hlasů 1
Dobry den,
mohl byste mi, prosim, napovedet, kam umistit ten skript, jak ho pojmenovat a jestli je treba jeste neco nastavit, abych to zprovoznil. Linux neni moje silna stranka. Nebo bych si mohl pockat, jestli programatori z Turrisu nepreprogramuji Majordomo, aby to davalo smysluplne udaje.
Dekuji
Nadřazený - - Od Robin Obůrka Dne 2014-11-14 11:24
No, jde o to, že ten soubor není konfigurační soubor, ale jedná se o serializovaný výstup z cache. Cache má nějakou definovanou platnost, která časem vyprší a proto se musí vybudovat znovu.
Nadřazený - - Od JFila (>>) Dne 2014-11-14 11:48
Nechápu, mluvíte o souboru majordomo_serialized_mac_vendor?  Není možné při každé obnově spustit uvedený skriptík?
Nadřazený - - Od Robin Obůrka Dne 2014-11-14 17:19 Hlasů 1
Ano, mluvím o tom souboru majordomo_serialized_mac_vendor.

Nicméně, domluvili jsme se, že možnost mít ty stroje pojmenované nějak hezky je zajímavý podnět, který by nemělo být obtížné doimplementovat. Budeme se tím zabývat. Nemohu vám slíbit žádný termín a určitě už vůbec nemohu predikovat do jakého update se tuto funkci povede dostat, ale budeme to řešit.

Primárním identifikátorem stále zůstane MAC adresa, na tom nic měnit nehodláme, ale konfigurace bude rozšířena o "statická pojmenování" a majordomo bude ukazovat primárně tyto popisky.

Obecně je MAC adresa spolehlivější identifikátor než IP nebo nedejbože hostname. I když chápu uživatelský pohled na věc, tak integrita dat je naprostou prioritou.
Nadřazený - - Od JFila (>>) Dne 2014-11-15 08:35
Děkuji za odpověď.

Začal jsem podrobněji koumat kód, pokusil jsem se i část změnit ale na výsledku se to neprojevilo (provedl jsem i restart routeru a použil i jiný webový prohlížeč). Jak je to možné?
Například jsem upravoval toto /usr/bin/majordomo_show.lua

if make_lookup_mac and macdb:lookup(addr) then
    io.stdout:write(string.format("pokus%s (%s)\n", addr, macdb:lookup(addr)));
else
    io.stdout:write(string.format("pokus%s\n", addr));
end
Nadřazený - - Od Robin Obůrka Dne 2014-11-15 13:31 Upraveno 2014-11-15 13:45 Hlasů 2
OK, tak si uděláme technické okénko pro zájemce.

Ze všeho nejdříve bych vás chtěl upozornit, že žádná ze změn, kterou uděláte v kódu, nepřežije nejbližší update. Stejně tak vám při hrátkách s kódem nemohu zaručit konzistenci dat apod. Ale jestli máte zájem, tak pro zájemce popíši, jak majordomo funguje.

Editoval jste soubor, který nikde nepoužíváte. majordomo_show.lua je pouze interface z příkazového řádku. Je to hodně hloupá a primitivní alternativa k tomu webovému rozhraní a používal jsem ji převážně pro debugging.

Majordomo je z jedné části plugin pro lcollect, který co minutu vypíše nové řádky do souboru /tmp/ucollect_majordomo (ucollect namísto lcollect v názvu je z historických důvodů) v poměrně čitelném formátu.

Veškerá logika zpracování dat je řízena souborem /etc/cron.d/majordomo, který:

- každých 5 minut provede operaci downsize. Aby soubor /tmp/ucollect_majordomo nerostl nad únosnou mez, tak postupně provádí zmenšování pomocí operace merge (bude vysvětleno dále), do souboru /tmp/majordomo_downsize.

- každou první minutu nové hodiny vyrobí tzv. denní soubor. Ten vyrobí tak, že provede naposledy operaci downsize a soubor /tmp/majordomo_downsize zkopíruje (a přejmenuje) jako hodinový soubor do majordomo_db (ať ji máte kdekoliv). Společně s tím provede merge dat z dané hodiny do příslušného denního a měsíčního souboru v majordomo_db.

- každou hodinu v 04 minut (tedy krátce po vytvoření nového denního souboru) zaktualizuje cache o nové adresy. To kvůli lepšímu uživatelskému zážitku. Při otevření webu nečekáte, až se na pozadí provede resolving nových záznamů, které ještě nejsou v cache.

- každé 3 dny ve 3:00 hodiny ráno zneplatní cache, aby data nezastarávala (to je to, proč se vám vaše hezké názvy mazaly)

A teď jak tyto operace vypadají z pohledu souborů:

/usr/share/lcollect/lua/majordomo_lib.lua - jedná se o společný kód, který používá více binárek, které jsou psané v lue. Obsahuje mimo jiné definice pro cache, kód, který zajistí resolving a parsování výsledků, načtení libovolného DB souboru, několik důležitých konstant a podobně.

/usr/bin/majordomo_merge.lua - implementuje zmíněnou operaci merge se soubory. V jednoduchosti se jedná o obyčejné sčítání počtu paketů a velikostí pro shodné klíče - tj. čtveřice zdroj, cíl, port, protokol. Mimo součtu hodnot se stará o to, že nad nějakou definovanou konstantu (aktuálně 6000 položek, tuším), provede součet všech ostatních do jedné položky "ostatní". Znovu pojistka proti nadměrnému růstu databázových souborů.

/usr/bin/majordomo_cache.lua - velmi jednoduché operace pro správu cache. Na příkaz majordomo_cache.lua invalidate smaže soubory majordomo_db/majordomo_serialized_* a na příkaz majordomo_cache.lua precache projde všechny hodinové, denní, měsíční soubory v majordomo_db a pro každou z položek provede resolving a uložení do cache, pokud ji v cache doposud nemá. Btw. pro větší DB je docela zajímavé udělat majordomo_cache.lua invalidate a následně time majordomo_cache.lua precache - na čase, který se cache pro větší počet položek vytváří, je vidět, jak je ta cache důležitá. (Na mém turrisu to trvalo 36 minut pro historii dlouhou 40 dní.)

/usr/bin/majordomo_show.lua - jak bylo zmíněno, pouze alternativní interface k luci. Nikde se nepoužívá automaticky.

/usr/bin/majordomo_db.sh - správa databáze. Dělá 3 základní věci. 1) Provádí operaci downsize. Logicky byla popsána výše, technicky se jedná o provedení operace merge (btw. ta je definovaná pro 3 soubory - zdroj1, zdroj2, cíl) na zdrojcíh ucollect_majordomo a majordomo_downsize do souboru majordomo_downsize. 2) Provádí operaci genhour, logicky opět výše, technicky to je merge majordomo_downsize + měsíční soubor do stejného měsíčního souboru; merge majordomo_downsize + denní soubor do stejného denního souboru; přesunutí a přejmenování majordomo_downsize na hodinový soubor. 3) Odstraňuje měsíční, denní a hodinové soubory "starší než" ty počty, které volíte v konfiguraci ve webovém rozhraní.

Poslední částí jsou kódy pro luci. Základem je adresář /usr/lib/lua/luci a zde soubory model/cbi/majordomo/settings.lua, view/majordomo/index.htm, view/majordomo/details.htm, controller/majordomo/majordomo.lua.

V krátkosti. settings.lua je popis konfiguračního souboru, toho jak data vypadají a jak má nějaká vnitřní logika luci nakreslit ty formuláře, které ve webovém rozhraní editujete. Soubory index.html a detail.html jsou šablony (+ definice nějakých konstant pro hezčí výstup) a nakonec majordomo.lua, který popisuje jak naplnit proměnné šablon, pár pomocných funkcí  + nějaké základní definice, které luci vyžaduje - např. umístění aplikace v menu apod.

Obecně k té luci: Luci není úplně nejlepší příklad "webového" frameworku, takže místy to není úplně optimálně řešené. Problém luci je prakticky nulová dokumentace. Je to hodně o experimentování.

Tak, snad je můj popis dostatečně vyčerpávající. Přeji příjemnou zábavu ;-)
Nadřazený - - Od stibi Dne 2014-11-15 13:36
super, díky!
Nadřazený - Od JFila (>>) Dne 2014-11-15 17:10
Skvělé, také děkuji. Laborování byl jeden z důvodů, proč se do projektu Turris přihlašoval. :lol:
Nadřazený - - Od Robin Obůrka Dne 2014-11-20 16:00 Hlasů 3
Slíbená úprava je nachystaná. Objeví se v nejbližší aktualizaci, kterou máme připravenou, ale musí projít běžným testovacím kolečkem.
Nadřazený - Od NONES (>>>) Dne 2014-11-21 20:43 Hlasů 1
Tak to je super, velké díky. Hlavně za rychlost! Dávám palec vzhůru
Nahoru Téma Majitelé routerů / Technická podpora / Majordomo se nezobrazuje po přidání do /etc/config/updater

Powered by mwForum 2.29.3 © 1999-2013 Markus Wichitill