<!-- $Id$ -->
<chapter id="contrib">
<title>Dodatki</title>
     <para>W niniejszym rozdziale zostaną opisane dodatkowe moduły i rozwiązania
     zwiększające funkcjonalność LMS'a znajdujące się w katalogu 
     <filename>contrib</filename>. Część z nich należy dostosować do własnych 
     potrzeb, a niektóre integrują się z interfejsem <emphasis>LMS-UI</emphasis>.</para>
     <sect1 id="contrib-customer">
         <title>Moje konto</title>
          <sect2 id="customer-intro">
          <title>Wstęp</title>
          <para>W katalogu <filename>contrib/customer</filename> znajduje się
          przykład rozwiązania, dzięki któremu każdy klient twojej sieci
          może sprawdzić własny bilans finansowy.</para>
          <para>Skrypt sprawdza spod jakiego adresu jest żądanie i wyświetla
          bilans i informacje o kliencie, który jest właścicielem komputera
          o tym adresie.</para>
          <para>Dla osób korzystających z proxy, nie korzystających
          z sieci tylko w domu, albo którzy nie chcą aby dzieci/małżonkowie/pracownicy 
          mieli wgląd w dane finansowe dotyczące ich dostępu do sieci/innych 
          usług przeznaczone jest "Moje konto 2".</para>
          </sect2>
          <sect2 id="customer-install">
          <title>Instalacja</title>
          <para>Pliki należy skopiować w dowolne miejsce i wystawić
          pod adresem dostępnym dla każdego użytkownika, a następnie
          ustawić poprawną ścieżkę do <filename>lms.ini</filename> w pliku 
          <filename>index.php</filename>.</para>     
          </sect2>
     </sect1>
     <sect1 id="contrib-customer2">
         <title>Moje konto 2</title>
          <sect2 id="customer2-intro">
          <title>Wstęp</title>
          <para>W katalogu <filename>contrib/customer_otherip</filename> znajduje się
          odpowiednik <filename>contrib/customer</filename>, który nie rozpoznaje
          klienta po adresie IP, ale wymaga logowania. Uwierzytelnianie odbywa się na 
          podstawie numeru PIN oraz telefonu klienta, ale możliwe jest także
          wykorzystanie ID lub numeru umowy (dodatkowe pole w bazie) - patrz 
          pliki balanceview.php i authentication.inc).</para>
          <para>Skrypt wyświetla bilans i informacje o kliencie, a także w połączeniu
	  z <filename>contrib/formularz_przelewu_wplaty</filename> umożliwia klientowi wydrukowanie 
	  formularza przelewu/wpłaty na kwotę zaległości. Panel pozwala również na 
	  pobieranie i wydruk faktur przez klienta.</para>
          </sect2>
          <sect2 id="customer2-install">
          <title>Instalacja</title>
          <para>Instalacja sprowadza się do ustawienia opcji <filename>sys_dir</filename>
          w sekcji <emphasis>[directories]</emphasis> pliku lms.ini oraz zlinkowania 
          katalogu <filename>img</filename> z lms'owymi ikonkami.</para>     
          </sect2>
     </sect1>
     <sect1 id="contrib-sqlpanel">
         <title>Panel SQL</title>
          <sect2 id="sqlpanel-intro">
          <title>Wstęp</title>
          <para>W katalogu <filename>contrib/sqlpanel</filename> znajdziesz
          moduł, dzięki któremu będziesz miał możliwość bezpośredniego dostępu 
          do bazy danych poprzez zadawanie zapytań SQL. Wyniki wyświetlane są
          w formie tabeli. Ponadto podawany jest czas wykonania zapytania. 
          Możliwe jest także drukowanie wyników zapytania.</para>
          <para>Ilość wyświetlanych wierszy na jednej stronie ograniczana jest
          domyślnie do 50. Można to zmienić przy pomocy zmiennej '<prompt>sqlpanel_pagelimit</prompt>'
          w sekcji <emphasis>[phpui]</emphasis> konfiguracji.</para>
          </sect2>
          <sect2 id="sqlpanel-install">
          <title>Instalacja</title>
          <para>Instalacja polega na skopiowaniu plików w odpowiednie miejsca
          w drzewie katalogów lms'a. Plik <filename>sql.php, sqllang.php</filename> skopiuj
          do katalogu <filename>modules</filename>, a pliki <filename>sql.html, sqlprint.html
          </filename> do katalogu <filename>templates</filename>.
          Po tej czynności dostęp do modułu będzie możliwy przez wywołanie
          http://lms.adres.pl/?m=sql.</para>
          </sect2>
     </sect1>
     <sect1 id="contrib-squid">
         <title>Ostrzeżenia + squid</title>
          <sect2 id="squid-redirector-intro">
          <title>Wstęp</title>
          <para>Ten mały zestaw narzędzi pozwala za pomocą squida w dosyć elegancki sposób 
          wyświetlać wiadomości administracyjne oraz w razie potrzeby blokować dostęp
          do w3cache. Oczywiście aby to działało w 100%, wszyscy klienci muszą 
          korzystać ze squida.</para>
          <para>Kluczowym elementem jest redirector. Odpowiada on za to, 
          aby w momencie ustawienia dla danego komputera flagi warn, 
          przekierowywał wszystkie żądania wysyłane do serwera proxy na nasz, 
          ustalony wcześniej adres. Przekierowaniu nie ulegają adresy zawierające 
          adres naszej winietki, tak aby umożliwić załadowanie się obrazków.
          Jeśli komputer ma ustawioną flagę warn, to po przekierowaniu użytkownik ma 
          możliwość oznaczenia wiadomości jako przeczytanej, po czym skrypt automatycznie 
          kieruje przeglądarkę na pierwotnie wywoływany URL. W przypadku oznaczeniu danego 
          komputera jako wyłączony, użytkownik będzie zawsze przekierowywany na adres 
          winietki, bez możliwości oznaczenia wiadomości jako przeczytanej.
          Więcej informacji znajdziesz w pliku
          <filename>README</filename>.</para>
          </sect2>
          <sect2 id="squid-redirector-install">
          <title>Instalacja</title>
          <para>Zaczynamy od konfiguracji squida (<filename>squid.conf</filename>):
<screen>
# wersja 2.5
redirector_bypass on
redirect_program /sciezka/do/lms-squid
# wersja 2.6
url_rewrite_program /sciezka/do/lms-squid
</screen>
          które informują squida aby dla każdego adresu używał naszego 
          redirectora. Następnie należy skonfigurować redirectora. Otwieramy 
          w naszym ulubionym edytorze plik lms-squid i praktycznie
          wszystko co można w nim ustawić to:
<screen>
my $configfile = '/etc/lms/lms.ini';
</screen>
          Czyli położenie pliku konfiguracyjnego. Reszta konfiguracji 
          ustawiana jest w <filename>lms.ini</filename>, gdzie dopisujemy sekcję 
          <filename>[redirector]</filename> i definiujemy adres winietki:
<screen>
[redirector]
redirect        = http://net-komp.net.pl
</screen>
          Do katalogu gdzie ma być widoczna winietka kopiujemy pliki
          <filename>index.php, message.html</filename> i zawartość katalogu 
          <filename>img</filename>.</para>
          </sect2>
     </sect1>
     <sect1 id="contrib-antyvir">
          <title>Antywirus</title>
          <sect2 id="contrib-antyvir-intro">
               <title>Wstęp</title>
               <para>Większość z nas miała problemy z zawirusowanymi komputerami.
               Różni ludzie mają różne podejście do problemu. Skrypt lms-antyvir
               wykrywa wirusy zagrażające stabilności sieci. Jest oparty na programie
               tcpdump, przy pomocy którego możemy spróbować wykryć wirusy/trojany
               same się rozprzestrzeniające jak Mydoom itp. Cechą wspólną prawie wszystkich 
               tego typu programów jest skanowanie sieci na portach 135 i 445 oraz 
               dodatkowych w zależności od odmiany wirusa. Oczywiście MS Windows też korzysta 
               z tych portów, ale nie w takim stopniu. Po wykryciu nadmiernego ruchu
               wyświetlana jest informacja na standardowe wyjście lub włączane jest 
               ostrzeżenie ze zdefiniowanym komunikatem.</para>
          </sect2>
          <sect2 id="contrib-antyvir-config">
               <title>Konfiguracja</title>
               <para>Konfigurację lms-antyvir dokonuje się w sekcji <emphasis>[antyvir]</emphasis> pliku
               <filename>lms.ini</filename>, a masz do dyspozycji następujące opcje:</para>
               <itemizedlist>
                    <listitem>
                         <para>logfile</para>
                         <para>Lokalizacja tymczasowych pliku(ów) z logami tcpdumpa.
                         Domyślnie: /tmp/antyvir</para>
                         <para>Przykład:     <prompt>logfile = /var/log/antyvir</prompt></para>
                    </listitem>
                    <listitem>
                         <para>interfaces</para>
                         <para>Lista oddzielonych spacją nazw interfejsów, z których tcpdump ma 
                         zbierać dane. Domyślnie: eth0</para>
                         <para>Przykład:     <prompt>interfaces = eth0 eth1</prompt></para>
                    </listitem>
                    <listitem>
                         <para>ports</para>
                         <para>Lista oddzielonych spacją portów, z których tcpdump ma zbierać dane.
                         Dla każdego tworzony jest osobny proces, więc nie przesadzać. Domyślnie: 135 445</para>
                         <para>Przykład:     <prompt>ports = 445</prompt></para>
                    </listitem>
                    <listitem>
                         <para>packets</para>
                         <para>Określa liczbę pakietów po odebraniu której tcpdump kończy pracę.
                         Domyślnie: 1000</para>
                         <para>Przykład:     <prompt>packets = 500</prompt></para>
                    </listitem>
                    <listitem>
                         <para>threshold</para>
                         <para>Określa liczbę pakietów, po przekroczeniu której program uznaje
                         ruch w sieci za podejrzany. Domyślnie: 50</para>
                         <para>Przykład:     <prompt>threshold = 100</prompt></para>
                    </listitem>
                    <listitem>
                         <para>field</para>
                         <para>Ma to związek z tcpdumpem i jego różnymi wersjami. W starszych
                         wersjach powinno być tu 6. Jak to sprawdzić? tcpdump -i eth1 -enp -c 1
                         otrzymujemy 00:03:38.613761 0:40:f4:b3:1c:67 0:30:84:b3:bb:8d 0800 1414:
                         10.100.0.52.4314 > 172.181.172.35.4662: .... interesuje nas pole w tym
                         wypadku 6 czyli adres IP nadawcy. Domyślnie: 11</para>
                         <para>Przykład:     <prompt>field = 6</prompt></para>
                    </listitem>
                    <listitem>
                         <para>message</para>
                         <para>Treść ostrzeżenia, w którym można zastosować zmienną %DATE dla bieżącej daty
                         i godziny. Jeśli pusta, ostrzeżenie nie zostanie włączone. Domyślnie: pusta</para>
                         <para>Przykład:     <prompt>message = Wykryto wirusa w dniu %DATE</prompt></para>
                    </listitem>
               </itemizedlist>
          </sect2>
     </sect1>
</chapter>
