Redmine: Úkolyhttps://dev.freenetis.org/https://dev.freenetis.org/favicon.ico?16557888462019-12-21T08:56:03ZRedmine
Redmine FreenetIS - Požadavek #1138 (Nový): Zálohování Gitlab-u: repository mirroring?https://dev.freenetis.org/issues/11382019-12-21T08:56:03ZTomáš Dulíkdulik@unart.cz
<p>Včera jsme se v kanclu bavili o zálohování a právě teď mě napadlo, že u Gitlabu jde záloha repozitářů vyřešit celkem jednoduše - na pár kliků, nastavením push mirroring-u na Gitlab.com nebo Github:</p>
<p><a class="external" href="https://docs.gitlab.com/ee/user/project/repository/repository_mirroring.html">https://docs.gitlab.com/ee/user/project/repository/repository_mirroring.html</a></p>
<p>Push mirroring je v Gitlab CE verzi zpřístupněný až od verze 10.8, viz release note:<br /><a class="external" href="https://about.gitlab.com/blog/2018/05/22/gitlab-10-8-released/#push-mirroring-now-open-source">https://about.gitlab.com/blog/2018/05/22/gitlab-10-8-released/#push-mirroring-now-open-source</a><br /><a class="external" href="https://gitlab.com/gitlab-org/gitlab-foss/issues/42099">https://gitlab.com/gitlab-org/gitlab-foss/issues/42099</a></p>
<p>Ale pokud bychom použili pro zálohování gitlab.com, tak i ten jejich bezplatný účet poskytuje mirroring vč. "pull mirroring-u" - jakože by si Gitlab.com stahoval mirror od nás.</p>
<p>Samozřejmě zálohování Gitlabu jinam jde i naskriptovat, ale proč se zdržovat skriptováním, když to můžete snadno naklikat.</p>
<p>Možná se zdá, že ztráta vývojářských lokálních kopií a zároveň ztráta Gitlab serveru je nepravděpodobná, ale:<br />ransome viry jsou pro hackery zlatý důl, takže se začínají zaměřovat i na Linux vč. serverů:</p>
<p><a class="external" href="https://www.notebookcheck.net/Lilu-Lilocked-ransomware-has-now-infected-thousands-of-Linux-servers.434547.0.html">https://www.notebookcheck.net/Lilu-Lilocked-ransomware-has-now-infected-thousands-of-Linux-servers.434547.0.html</a><br /><a class="external" href="https://www.linuxinsider.com/story/85870.html">https://www.linuxinsider.com/story/85870.html</a><br /><a class="external" href="https://www.bleepingcomputer.com/news/security/purelocker-ransomware-can-lock-files-on-windows-linux-and-macos/">https://www.bleepingcomputer.com/news/security/purelocker-ransomware-can-lock-files-on-windows-linux-and-macos/</a><br /><a class="external" href="https://www.bankinfosecurity.com/linux-killdisk-ransomware-cant-decrypt-a-9619">https://www.bankinfosecurity.com/linux-killdisk-ransomware-cant-decrypt-a-9619</a><br />(atd.)</p>
<p>Proto je nutné zálohám věnovat pozornost a dělat je netradičně a diverzifikovaně, aby případný útok přežila aspoň nějaká kopie.</p> FreenetIS - Požadavek #1130 (Nový): oddělení práv přepínání podsítíhttps://dev.freenetis.org/issues/11302019-10-31T09:28:23Zslezi2 -slezi2@pvfree.net
<p>Současné nastavení Freenetisu neumožňuje oddělené nastavení práv při přepínání podsítí.<br />Pokud je nastaveno,aby si člen mohl sám přepínat podsítě,je mu zároveň umožněno i editovat počet podsítí.<br />U nás dočasně vyřešeno:</p>
<p>/usr/share/freenetis/application/controllers/allowed_subnets_counts.php</p>
<p>řádek</p>
<p>// access control<br />if(!$this->acl_check_edit('Allowed_subnets_Controller','allowed_subnet',$member_id))<br /> Controller::error(ACCESS);<br />na</p>
<p>if(!$this->acl_check_new('Allowed_subnets_Controller','allowed_subnet',$member_id))<br /> Controller::error(ACCESS);</p> FreenetIS - Požadavek #1031 (Nový): Logování (pro data retention) - přidat ID uživatelehttps://dev.freenetis.org/issues/10312015-11-21T18:34:47ZTomáš Dulíkdulik@unart.cz
<p>Při diskusi o implementaci data retention ve Freenetisu padl dotaz, jak máme vyřešenu situaci, kdy uživateli X smažeme IP adresu (např. při smazání zařízení) a po čase ji přidělíme uživateli Y. Pak ale předchozí provoz z té smazané adresy bude vypadat jako provoz uživatele Y.</p>
<p>Jednoduché řešení by bylo do logu provozu ke každému řádku přidat ID uživatele, jemuž IP adresa v dané chvíli patří.</p>
<p>Ale: MySQL server loggeru by obecně měl jet na jiném fyzickém stroji než DB Freenetisu, navíc kvůli výkonu není možné při ukládání řádků logu pokaždé dotazovat DB Freenetisu o to, komu daná IP adresa patří.<br />To bychom vyřešili tak, že 1x denně (nebo 1x za hodinu) natáhneme do DB loggeru z DB Freenetisu pomocnou temporaray tabulku "IP_adresa - ID uživatele", která by kvůli výkonu byla v RAM, tj.:</p>
<p>CREATE TEMPORARY TABLE neco.temp_table_memory (....) ENGINE=MEMORY;</p> FreenetIS - Požadavek #951 (Odeslaný): Servisní vrstvahttps://dev.freenetis.org/issues/9512014-12-02T21:23:20ZOndřej Fibichfibich@freenetis.org
<a name="Analýza-a-současný-stav"></a>
<h2 >Analýza a současný stav<a href="#Analýza-a-současný-stav" class="wiki-anchor">¶</a></h2>
<p>Servisní vrstva bude obsahovat business funkcionalitu FreenetISu jejíž složitost znemožňuje, aby byla implementována v rámci doménového objektu (modelu s návrhovým vzorem <a href="http://en.wikipedia.org/wiki/Active_record_pattern" class="external">active record</a>) nebo se dotýká více doménových objektů a ze své podstaty není vhodné ji zahrnovat v řadiči (controlleru), jelikož ten by měl pouze v interagovat s uživatelem.</p>
<p>Typicky se jedná např. o funkcionalitu stržení čl. příspěvků, která je implementována jako statická metoda řadiče a tím pádem zamíchána kódu s UI. Navíc statické volání této metody z jiného řadiče je architektonická prasárna. Pokud se to takto používá je nutné načítat mnohdy ne zrovna malou třídu řadiče kvůli jedné funkci (při jednom požadavku na aplikaci by se měl vždy použít pouze jeden řadič což v současném stavu není mnohdy pravda).</p>
<a name="Návrh"></a>
<h2 >Návrh<a href="#Návrh" class="wiki-anchor">¶</a></h2>
<p>Vznikne nová složka <code>/application/services</code>, která bude obsahovat třídy reprezentují jednotlivé services. Vnitřní hierarchie adresářů bude odpovídat použítým PHP namespace. Každá service třída sdružuje funkcionalitu z jedné oblasti a měla by být bezstavová (mezi voláními svých metod neuchovává žádný stav). Výjimkou bezstavovosti je kešování, které tato vrstva může efektivně spravovat.</p>
<p>Service třída musí implementovat rozhraní <code>IService</code>, které definuje přístup k továrně pro získání závislých services.</p>
<p>Jednotlivé services nepůjde získat jinak než pomocí třídy <code>ServiceFactory</code>, která bude dostupná z skrze proměnnou každého řadiče <code>services</code>.<br />Třída <code>ServiceFactory</code> bude metody pro vytvoření všech dostupných service (nepoužije se něco jako <code>ORM#factory</code>, protože pak by nešlo používat našeptávání v IDE). Metody budou pojmenovány následovně: <code>inject<JmenoService></code><br />Vnitřní implementace service továrny bude vytvářet singleton instance jednotlivých service tříd (toto chování půjde v budoucnu snadno upravit).<br />Továrna je nutná kvůli prozatimnímu přemostění, nekompatibility Kohany s PHP namespaces a zároveň umožňuje optimalizovat tvorbu a přidělování service instancí.</p>
<p>Závislosti mezi řadiči, modely, helpery a services bude následující:</p>
<pre>
[Controller A] --> [Service X] --> [Model H]
--> [Model F]
--> [Helper J]
--> [Service F]
--> [Service Y]
--> [Model G]
--> [Helper Q]
</pre>
<p>Řadič je tedy na jeden požadavek vždy pouze jeden. Každý řadič může používat vícero služeb, modelů, helperů a pohledů pro obsluhu jednoho požadavku. Service může používat helpery, modely a jiné services.</p> FreenetIS - Požadavek #920 (Nový): Ergonomie GUIhttps://dev.freenetis.org/issues/9202014-07-20T19:20:27ZOndřej Fibichfibich@freenetis.org
<p>Tento požadavek se zaměřuje na studium ergonomie UI a na modifikace UI dle jeho výsledků. Jednotlivé zjištěné nedostatky se budou vytvářet jako podúkoly.</p> FreenetIS - Chyba #919 (Nový): PSČhttps://dev.freenetis.org/issues/9192014-07-20T15:25:45ZOndřej Fibichfibich@freenetis.org
<p>Aktuálně je vázáno PSC na město, ale PSC se může odlišovat na úrovni ulic. Je tedy nutné přetvořit strukturu adresních bodů tak, aby to reflektovala. Bude zřejmě nutné zavést novou tabulku s adresními body, která bude vázaná na adresní bod a také na ulici (pro snazší zadávání).</p> FreenetIS - Požadavek #892 (Nový): Hranice pro dlužníka a upozornění na placení dle tarifuhttps://dev.freenetis.org/issues/8922014-03-02T16:28:21ZOndřej Fibichfibich@freenetis.org
<p>Aktuálně (1.1) je hranice stavu účtu pro zjištění, zda je člen dlužník/jeho stav kreditu je nízký určena konstantními nastavitelnými hodnotami.<br />Administrátor výši těchto hodnot volí dle výše běžných čl. příspěvků. Problém nastává ovšem, pokud sdružení používá více tarifů (např. pro<br />aktivní členy). V tomto případě konstantní hodnoty nefungují (např. člen s tarifem o poloviční výši čl. příspěvku je upozorňován na placení<br />minimálně o měsíc dříve než jeho kredit dosáhne kritické hodnoty).</p>
<p>Pro správné fungování v těchto okrajových případech je nutné hranici pro dlužníka/upozornění na placení počítat dynamicky během<br />aktivace upozornění z aktuálních nastavených tarifů a to včetně splácení vstupního příspěvku do sdružení. Na rozhraní aktivace upozornění<br />nebude mít pozměněná funkcionalita žádný vliv.</p>
<p>Změny v rozhraní se dotknou nastavení hranic. Namísto konstantních hodnot reprezentující zůstatky na kr. účtech by administrátor<br />nastavoval kolik měsíců před vyčerpáním kreditu se člen bude upozorňovat na placení a kolik měsíců před/po vyčerpání kreditu bude<br />brán jako dlužník.</p>
<p>Po implementaci zainteresovaný vývojář vloží spolu s hotovým řešením také sadu dat, které budou obsahovat základní testovací<br />data (členy, tarify, nastavení hranic, apod.) ověřující správnost implementace.</p> Redmine - Podpora #843 (Nový): Velká písmena v přihlašovacím jméně uživatelehttps://dev.freenetis.org/issues/8432014-01-05T11:21:22Zpkolar -pkolar@atlas.cz
<p>Bylo by možné povolit zadání velkých písmen v přihlašovacím jméně uživatele?<br />Máme naimportovaná data ze starého systému a např. při uložení uživatele s přihlašovacím jménem "Galileo" FIS hlásí chybu: "Pole přihl. jméno musí obsahovat pouze znaky a-z a 0-9 a začínat písmenem.".<br />Nejde o to rozlišovat velká a malá písmena při registraci. Tzn. test na existenci přihlašovacího jména provádět i nadále case-insensitive. Ale pouze umožnit zadat velká a malá písmena v přihlašovacím jméně.</p> FreenetIS Redirection - Chyba #735 (Nový): Při nekorektním stažením konfigurace z FreenetISu se r...https://dev.freenetis.org/issues/7352013-08-06T07:16:40ZOndřej Fibichfibich@freenetis.org
<p>Při neúspěšném stažení konfigurace z kteréhokoli FreenetISu musí být reload konfigurace ukončen.</p> FreenetIS - Požadavek #446 (Nový): [MODUL] Odpočty elektroměrůhttps://dev.freenetis.org/issues/4462013-01-05T09:08:55ZPavel Kocourekcatman@pvfree.net
<p>Integrovat seznam elektroměrů, kde budou zapisovatelné položky:<br />Neměnný údaj: <br />- adresa umístění, případně poznámka, kde ten elměr je namontován-sklep, rozvaděč, na naší bedně a pod.<br />- smluvní sazba za podružný odběr v objektu<br />Tabulka s odečty:<br />- datum odečtu<br />- číslo elektroměru (může dojít ke změně)<br />- stav elektroměru<br />- dopočítaný rozdíl v mezidobí odečtů<br />- dopočítaná cena za mezidobí odečtu<br />- průměrná denní spotřeba v mezidobí odečtů</p>
<p>Průměrná spotřeba upozorní na nárůst spotřeby (cizopasník, vadná UPS atd.) a ty částky zase jsou pomůckou pro finanční plánování.</p>
<p>My elektřinu odečítáme někde i měsíčně, jinde zase ročně nebo dokonce po 3 letech se vzbudí majitel s fakturou. Přehled o spotřebě je důležitou položkou pro plány a zatím to v Excelu není to pravé ořechové :)</p> FreenetIS - Požadavek #193 (Nový): IPv6 supporthttps://dev.freenetis.org/issues/1932012-07-10T12:41:36ZTomáš Dulíkdulik@unart.cz
<p>Toto je k zamyšlení, když teď Ondra předělává evidenci sítě.</p>
<p>IPv6 má 128bit, z toho 64bit je adresa sítě (kterou vlastně máme v tabulce subnet) a 64 bit je adresa hosta (odvozena z MAC adresy nebo z DHCP).</p>
<p>Tzn. IPv4 i IPv6 by bylo možné implementovat v MySQL jednotně, např. pomocí sloupce typu BIGINT (64 bit).<br />V současné době máme IP adresy jako varchar, tzn. zabírají více místa a případné dotazy vyžadující subnet aritmetiku znamenají neustálé převody z řetězce na IP.</p>
<p>MySQL 5.6 už obsahuje funkce, které umí převádět IPv4 i IPv6 z řetězce do binární podoby a zpět:<br /><a class="external" href="http://dev.mysql.com/doc/refman/5.6/en/miscellaneous-functions.html#function_inet6-ntoa">http://dev.mysql.com/doc/refman/5.6/en/miscellaneous-functions.html#function_inet6-ntoa</a></p>
<p>Výsledkem není BIGINT, ale <abbr title="4">VARBINARY</abbr> nebo <abbr title="16">VARBINARY</abbr>.</p>
<p>Pro nižší verze MySQL lze buď doinstalovat UDF modul s těmito funkcemi:<br /><a class="external" href="http://labs.watchmouse.com/2009/10/extending-mysql-5-with-ipv6-functions/">http://labs.watchmouse.com/2009/10/extending-mysql-5-with-ipv6-functions/</a><br />nebo ty funkce implementovat jako SQL procedury. Pro IPv4 kdysi takové procedury ve Freenetis-u byly, protože u inet-aton() se mi nelíbilo, že pro adresy, které obsahují např. mezeru navíc nebo čárku místo tečky, nativní inet-aton vrací NULL, místo aby se převod snažil dokončit, což mě štvalo při snaze naimportovat do MySQL starou databázi v XLS.</p>
<p>Nebo lze využít PHP funkce <br /><a class="external" href="http://php.net/manual/en/function.inet-pton.php">http://php.net/manual/en/function.inet-pton.php</a></p>
<p>Tož špekulujte chlapci..</p> FreenetIS - Požadavek #104 (Nový): Parametr "Zálohovat" u zařízeníhttps://dev.freenetis.org/issues/1042012-01-29T12:14:56ZPavel Kocourekcatman@pvfree.net
<p>Uvítal bych checkbox "Backup" u každého zařízení, který by pro jednotlivé definované typy zařízení dokázal exportovat parametrický soubor pro zálohování vybraných zařízení. Soubor si pak nacucne zálohovací server dle potřeby.<br />Příklad: mám skript, který načítá ze souboru jednotlivé parametry ( IP, název, login, passwd ) a zálohuje pravidelně všechna potřebná zařízení na síti. Doplňování parametrického souboru musíme dělat ručně, takže vůbec-pozdě-chybně-...správně. <br />Formát by byl vhodný asi hodnoty odělené středníkem, každé zařízení na novém řádku. <br />Exportovací interval a čas nastavit v systémových parametrech. <br />Možnost ručně exportovat = hned.<br />Možnost zobrazit seznam zařízení pro zálohování.<br />Každý typ zařízení se zálohuje nějak jinak => oddělené soubory pro RB, Linux, switche atd.</p> FreenetIS - Požadavek #101 (Ve vývoji): [MODUL] Automatická fakturace, export faktur do XML https://dev.freenetis.org/issues/1012012-01-26T13:08:13ZTomáš Dulíkdulik@unart.cz
<p>Nejmenovaná firma potřebuje automatickou fakturaci (vč. DPH) a následný export označených vydaných faktur do XML (formát XML zašlou).<br />Samozřejmě vývoj zaplatí. Prosím Michala o odhad časové náročnosti.</p> FreenetIS - Požadavek #95 (Čeká se): Automatický import výpisu z banky pomocí emailuhttps://dev.freenetis.org/issues/952012-01-20T04:22:53ZTomáš Dulíkdulik@unart.cz
<p>Téměř všechny banky umí posílat výpisy emailem buď pravidelně nebo při každé změně.<br />Tím je možné udělat automatický importér bankovního výpisu, který se nemusí hlásit do web rozhraní banky (což je - kromě FIO - nemožné udělat kvůli autorizaci pomocí SMS atd.), ale stáhne se výpisy normálně přes POP3/IMAP protokol z nějakého email účtu. PHP má pro POP3 i IMAP podporu, takže to je uplně v pohodě.</p> Redmine - Požadavek #10 (Nový): Mobilní klienthttps://dev.freenetis.org/issues/102011-10-30T09:28:32ZRedmine Adminadmin@example.net
<p>Pro Redmine existují mobilní<br /> klienti - jak pro iPhone, tak pro Android:<br /><a class="external" href="http://www.redmine.org/issues/4830">http://www.redmine.org/issues/4830</a></p>
<p>iPhone klient by potřeboval Jarin, Redmine klient ogaři technici.<br />Bohužel androida nemám, takže to bude muset vyzkoušet Klíma nebo Jovák.</p>
<p>Test - klient pro android funguje.</p>
<p>Nevím jak tobě, ale mně to funguje. ..</p>