forked from chilek/lms
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME.pl
7682 lines (6576 loc) · 330 KB
/
README.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
LMS - LAN Management System 1.11-git
[logo-small.png]
LMS Developers
Copyright © 2001-2013 LMS Developers
__________________________________________________________________
Spis treści
1. Wstęp
1.1. Czym jest LMS
1.2. Autorzy
1.3. Licencja
1.4. Informacje dodatkowe
2. Instalacja i konfiguracja
2.1. Wstęp
2.2. Wymagania
2.3. Instalacja LMS
2.4. Lokalizacja
2.5. Instalacja serwera baz danych
2.6. Konfiguracja podstawowa
2.7. Prawa dostępu
2.8. Upgrade
2.9. Dokumenty
2.10. Baza podziału terytorialnego (TERYT)
3. Interfejs Użytkownika (LMS-UI)
3.1. Logowanie
3.2. Administracja
3.3. Klienci
3.4. Komputery
3.5. Osprzęt sieciowy
3.6. Sieci IP
3.7. Finanse
3.8. Dokumenty
3.9. Hosting
3.10. Wiadomości
3.11. Przeładowanie
3.12. Statystyki
3.13. Helpdesk
3.14. Terminarz
3.15. Konfiguracja
4. Skrypty
4.1. Instalacja
4.2. Lista dostępnych skryptów
4.3. Opis i konfiguracja
5. Generator plików konfiguracyjnych (lms-mgc)
5.1. Instalacja
5.2. Konfiguracja
5.3. Przykład zastosowania lms-mgc
6. LMS Daemon
6.1. Informacje podstawowe
6.2. Moduły
6.3. T-Script
7. Dla dociekliwych
7.1. Drzewo katalogów
7.2. Struktura bazy danych
7.3. Format pliku konfiguracyjnego
7.4. Generowanie danych losowych
7.5. Poziomy dostępu
7.6. Ograniczenia
8. Dodatki
8.1. Moje konto
8.2. Moje konto 2
8.3. Panel SQL
8.4. Ostrzeżenia + squid
8.5. Antywirus
9. Userpanel
9.1. O programie
9.2. Instalacja
9.3. Konfiguracja
9.4. Wygląd (style)
9.5. Moduły
10. FAQ
Spis tabel
2-1. Lista zmian zrywających zgodność z wcześniejszymi wydaniami
4-1. Lista skryptów wykonywalnych
6-1. Lista modułów demona lmsd
7-1. Drzewo katalogów LMS
Spis przykładów
3-1. Domeny. Konfiguracja PowerDNS.
3-2. Hosting. Konfiguracja proftpd.
3-3. Konta. Konfiguracja serwera pocztowego (postfix+sasl+courier).
3-4. Konta. Konfiguracja pure-ftpd.
4-1. Lms-notify: Przykładowy wyciąg 10 ostatnich operacji kasowych
4-2. Lms-notify: Przykład szablonu
5-1. Lms-mgc: Przykład instancji
6-1. Parser: Tworzenie pliku /etc/hosts
6-2. Parser: Lista dłużników
6-3. Parser: Opisy komputerów dla iptrafa.
6-4. Parser: Plik "ethers" dla programu arp.
6-5. Parser: Zamiennik modułu notify
6-6. Parser: Statystyki.
7-1. Format opcji konfiguracyjnych
__________________________________________________________________
Rozdział 1. Wstęp
1.1. Czym jest LMS
"LMS" jest zintegrowanym systemem zarządzania sieciami przeznaczonym
dla różnej wielkości dostawców internetu (ISP).
Oprogramowanie to stworzone w PHP, C i Perlu, współpracujące z różnymi
bazami danych, składa się z przyjaznego interfejsu użytkownika
(frontend) oraz programów instalowanych na serwerze dostępowym
(backend) udostępniając następujące funkcjonalności:
* zarządzanie dostępem do internetu (w tym kontrola przepływności i
statystyki),
* moduły finansowo-księgowe z fakturowaniem,
* korespondencja seryjna i wiadomości administracyjne do klientów,
* zarządzanie kontami i hostingiem,
* ewidencja klientów i sprzętu (mapa sieci),
* system obsługi zgłoszeń (helpdesk),
* zarządzanie dowolnymi usługami,
* zarządzanie czasem (terminarz),
* panel administracyjny dla abonenta.
Całość została wymyślona w ramach administracji ASK NetX i tam jest
nieustannie rozwijana i poddawana testom.
LMS nie zastąpi Ci umiejętności jakie powinien mieć administrator.
Jeśli nie potrafisz wykonać tak prostych czynności jak instalacja czy
konfiguracja, prawdopodobnie nie będziesz umiał dostroić LMS do swojego
systemu. Tak więc bez znajomości systemów U*IX się nie obejdzie.
__________________________________________________________________
1.2. Autorzy
1.2.1. LMS Developers
* Kod PHP:
Łukasz 'Baseciq' Mozer
Michał 'DziQs' Zapalski
Radosław 'Warden' Antoniuk
Krzysztof 'hunter' Drewicz
Marcin 'Lexx' Król
Aleksander A.L.E.C Machniak
Tomasz 'Chilek' Chiliński
Konrad 'kondi' Rzentarzewski
Grzegorz 'Ceho' Chwesewicz
* Kod C:
Aleksander 'A.L.E.C' Machniak
Marcin 'Lexx' Król
Tomasz 'Chilek' Chiliński
* Kod Perl:
Łukasz 'Baseciq' Mozer
Michał 'DziQs' Zapalski
Maciej 'agaran' Pijanka
Krzysztof 'hunter' Drewicz
Tomasz 'Chilek' Chiliński
Grzegorz 'Ceho' Chwesewicz
* Design:
Łukasz 'Baseciq' Mozer
* HTML, JavaScript, CSS:
Łukasz 'Baseciq' Mozer
Paweł 'Bob_R' Czerski
Paweł 'sickone' Kisiela
Tomasz 'Chilek' Chiliński
Konrad 'kondi' Rzentarzewski
Grzegorz 'Ceho' Chwesewicz
* Grafika:
Piotr 'Pierzak' Mierzeński
Grzegorz 'byko' Cichowski
Kuba 'kflis' Flis
Łukasz 'Baseciq' Mozer
Jakub 'Jimmac' Steiner
* Dokumentacja i strona WWW:
Aleksander 'A.L.E.C' Machniak
Kuba 'shasta' Jankowski
Grzegorz 'JaBBaS' Dzięgielewski
Łukasz 'Baseciq' Mozer
Marcin 'Lexx' Król
Konrad 'kondi' Rzentarzewski
* Betatesterzy:
Grzegorz 'byko' Cichowski
Radosław 'Warden' Antoniuk
Tomasz 'dzwonek' Dzwonkowski
Sebastian 'Victus' Frasunkiewicz
Kuba 'kflis' Flis
Krystian 'UFOczek' Kochanowski
Grzegorz 'JaBBaS' Dzięgielewski
Andrzej 'chsh' Grądziel
__________________________________________________________________
1.2.2. Inni
LMS zawiera fragmenty następującego oprogramowania: phpMyAdmin,
phpsysinfo, NewsPortal, overLIB, ezpdf, xajax, Tigra Calendar,
procedury konwersji liczb na postać słowną autorstwa Piotra Klebana
oraz przykłady kodu zawarte w Podręczniku PHP.
__________________________________________________________________
1.3. Licencja
Niniejszy program jest oprogramowaniem wolnodostępnym; możesz go
rozprowadzać dalej i/lub modyfikować na warunkach Powszechnej Licencji
Publicznej GNU, wydanej przez Fundację Wolnodostępnego Oprogramowania -
według wersji drugiej tej Licencji lub którejś z późniejszych wersji.
Niniejszy program rozpowszechniany jest z nadzieją, iż będzie on
użyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej
gwarancji PRZYDATNOŚCI HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH
ZASTOSOWAŃ. W celu uzyskania bliższych informacji - Powszechna Licencja
Publiczna GNU.
Z pewnością wraz z niniejszym programem otrzymałeś też egzemplarz
Powszechnej Licencji Publicznej GNU; jeśli nie - napisz do Free
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
Angielski tekst tej licencji znajduje się tutaj.
__________________________________________________________________
1.4. Informacje dodatkowe
1.4.1. Kontakt z autorami
Najlepiej poprzez listę mailingową, na którą można się zapisać
wysyłając pustego maila o temacie "subscribe lms" na adres
ecartis@lists.lms.org.pl, a maile wysyła się na adres
lms@lists.lms.org.pl.
__________________________________________________________________
1.4.2. Zgłaszanie błędów i pomysłów
Aby efektywnie zgłosić błąd lub nowy pomysł, najlepiej jest zapisać się
na listę mailingową gdzie ktoś z autorów bądź użytkowników będzie miał
szansę odpowiedzieć na pytania Cię nurtujące. Dostępny jest także dla
testów BTS, gdzie można zgłaszać błędy po uprzedniej rejestracji.
Raporty z BTS idą także na listę mailingową, więc najlepiej się
zapisać, zgłosić błąd poprzez BTS, wysłać linka na listę i czekać na
rozwój wydarzeń. Adres BTS to http://bts.lms.org.pl.
__________________________________________________________________
1.4.3. Najnowsza wersja
Zawsze aktualną wersję LMS można pobrać z repozytorium CVS za pomocą
interfejsu www tutaj, lub klasycznie (dostęp anonimowy, puste hasło):
cvs -d :pserver:cvs@cvs.lms.org.pl:/cvsroot login
cvs -d :pserver:cvs@cvs.lms.org.pl:/cvsroot co lms
cvs -d :pserver:cvs@cvs.lms.org.pl:/cvsroot logout
Repozytorium CVS można także przeglądać przy pomocy interfejsu WWW pod
adresem http://cvs.lms.org.pl.
__________________________________________________________________
1.4.4. Historia zmian
Informacje o zmianach jakie zaszły w kolejnych wersjach LMS zawarte są
w pliku ChangeLog.
__________________________________________________________________
1.4.5. Wsparcie komercyjne
Wielokrotnie na liście dyskusyjnej pojawiają się pytania typu "kiedy
dana funkcjonalność zostanie dodana, czy też jaka kwota przyspieszyłaby
wykonanie pewnych konkretnych prac." Aby nie zaśmiecać głównej listy
mailingowej powstała lista lms-support. Aby się na nią zapisać należy
wysyłać email o treści: "subscribe lms-support" na adres ecartis (at)
lists.lms.org.pl, a konkretne maile wysyła się na adres lms-support
(at) lists.lms.org.pl.
Osoby poszukujące płatnego wsparcia w instalacji/konfiguracji lub
potrzebujące nowych funkcjonalności powinny właśnie skorzystać z listy
lms-support. Tam rozmawiamy o pieniądzach. Zlecając prace czy też
pytając się o cenę należy pamiętać że LMS jest projektem Open Source.
Nie jest on produktem jakiejś firmy, a więc każdą poprawkę należy
uzgadniać bezpośrednio z developerem który ma ją wykonać. Osoby
potrzebujące dokumentu potwierdzającego wykonanie usługi (faktury VAT,
rachunku uproszczonego, umowy zlecenia bądź o dzieło) powinny to od
razu zaznaczyć - najprawdopodobniej uzyskanie takiego dokumentu
podniesie koszty całej usługi.
Najbardziej doświadczonym w załatwianiu tego typu spraw jest Alec.
Prowadzi on stronę www gdzie można dokonywać wpłat mających na celu
rozwój projektu. Szczegóły znajdują się na stronie: http://lms.alec.pl.
__________________________________________________________________
Rozdział 2. Instalacja i konfiguracja
2.1. Wstęp
LMS składa się z kilku modułów, podstawowym modułem jest LMS-UI
(interfejs użytkownika). Jest on w całości napisany w PHP i do pracy
wymaga bazy danych (właściwie to każdy moduł wymaga bazy danych). To
właśnie w LMS-UI wykonujemy wszystkie czynności, reszta modułów ma
tylko za zadanie zautomatyzować pracę LMS.
LMS to także zestaw skryptów w języku Perl, i to właśnie te skrypty
wymagają abyś posiadał interpreter tego języka. Jeśli będziesz chciał
używać tych skryptów, musisz mieć Perl'a. Skrypty pozwalają m.in. na
comiesięczne naliczanie opłat abonamentowych bądź wysyłanie upomnień.
Największy z nich - LMS-MGC jest skryptem, ale na tyle uniwersalnym że
potrafi wygenerować praktycznie dowolny plik konfiguracyjny i
zrestartować usługę na twoim serwerze.
Jest jeszcze LMS Daemon, napisany w języku C. Jest on przeznaczony (a
właściwie jego wtyczki) do generowania plików konfiguracyjnych i
restartowania usług. Można go stosować jako zamiennik lub uzupełnienie
skryptów perlowych. Odpowiada on za to, aby to co zostało zmienione w
LMS-UI zostało zmienione także w rzeczywistości.
__________________________________________________________________
2.2. Wymagania
2.2.1. Serwer WWW
Ponieważ LMS-UI jest napisane w PHP, niezbędny jest serwer WWW z
interpreterem tego języka. Preferowanym serwerem jest Apache
(www.apache.org).
__________________________________________________________________
2.2.2. Interpreter PHP
Interpreter powinien być w wersji 5.2.x lub nowszej. PHP można ściągnąć
ze strony www.php.net. W szczególności wymagane są następujące moduły
(sprawdź "extension" w php.ini lub wyjście funkcji phpinfo()):
* pcre, posix,
* zlib (dla kompresowanych backupów),
* gd i/lub ming (tylko dla mapy sieci),
* mysql, mysqli lub pgsql (dla bazy danych),
* iconv, mbstring
* PEAR::Mail (wymaga PEAR::Net_SMTP i PEAR::Net_Socket) do mailingu.
__________________________________________________________________
2.2.3. Serwer baz danych
LMS nie będzie działał prawidłowo na wersjach MySQL starszych od 5.0.
LMS współpracuje także z PostgreSQL w wersji 8.4.x lub nowszych.
__________________________________________________________________
2.2.4. Biblioteka Smarty
LMS-UI do pracy wymaga jeszcze biblioteki Smarty
(http://www.smarty.net) w wersji 3.0 lub wyższej.
__________________________________________________________________
2.2.5. Perl
O ile dla LMS-UI wystarczy to co powyżej, to żeby mieć działający
LMS-MGC i resztę skryptów potrzebujemy także Perla i moduły do niego,
które można pobrać z www.cpan.org, czyli:
* perl właściwy i jego podstawowe moduły (POSIX, GetOpt::Long),
* Config::IniFiles,
* DBI,
* DBD-mysql (Jeśli masz zamiar używać mysql'a),
* DBD-Pg (Jeśli masz zamiar używać postgres'a),
__________________________________________________________________
2.2.6. Kompilator języka C
Jeśli chcesz uruchomić LMS Daemon będziesz potrzebował działający
kompilator języka C, gdyż jest on dostarczany wyłącznie w postaci kodu
źródłowego.
__________________________________________________________________
2.2.7. Przeglądarka www
LMS posiada webowy interfejs, dlatego wymagana jest przeglądarka, która
obsługuje javascript i ma włączone cookies. Z naszego doświadczenia
wynika, że najlepszym wyborem będzie Mozilla Firefox 1.x.
__________________________________________________________________
2.3. Instalacja LMS
LMS w postaci archiwum tar.gz można pobrać ze strony domowej projektu
(www.lms.org.pl), a następnie rozpakować i umieścić w wybranym katalogu
(np. /var/www/lms ) dostępnym dla serwera www:
$ cd /var/www
$ wget http://www.lms.org.pl/download/stable/lms-x.x.x.tar.gz
$ tar zxf lms-x.x.x.tar.gz
Biblioteka Smarty zawarta jest w paczce z LMSem. Natomiast gdy używasz
wersji systemu pobranej wprost z CVSu musisz sam zadbać o jej
instalację. Najprościej skorzystać ze skryptu /devel/smarty_install.sh,
który pobierze bibliotekę Smarty z Internetu i skopiuje zawartość
katalogu /lib z pobranej paczki do katalogu /lib/Smarty.
Notatka
Położenie wszystkich katalogów możesz zmienić w sekcji [directories]
pliku lms.ini.
Pliki z konfiguracją (sample/lms.ini i sample/lms-mgc.ini) umieść w
katalogu /etc/lms.
Skrypty wykonywalne z katalogu bin najlepiej przenieść do katalogu
/usr/sbin.
Ostrzeżenie
Serwer www musi mieć prawo odczytu pliku lms.ini oraz prawa odczytu i
zapisu do katalogu backup. Stanowi to potencjalne obniżenie poziomu
bezpieczeństwa systemu.
Ostrzeżenie
Bezwzględnie LMS wymaga wyłączenia opcji PHP register_globals.
Notatka
Począwszy od wersji 1.6 przechowywanie konfiguracji interfejsu
użytkownika w lms.ini jest przestarzałe. Jedynymi koniecznymi sekcjami
w tym pliku są [database] i [directories] oraz konfiguracja skryptów
perlowych. Ustawienia LMS-UI przechowywane są w bazie danych i mogą być
modyfikowane przez interfejs użytkownika, mają także wyższy priorytet
od tych zawartych w lms.ini.
Zalecane zmiany w php.ini (lub httpd.conf dla wirtualki LMSa):
mbstring.func_overload = 7
register_globals = off
max_execution_time = 60 ; co najmniej
memory_limit = 32M ; co najmniej
Przed pierwszym uruchomieniem LMSa wymagane jest ustawienie opcji
konfiguracyjnych bazy danych i katalogów w pliku lms.ini. Następnie po
uruchomieniu LMS-UI zakładamy konto użytkownika uprzywilejowanego
(zaznaczając wszystkie uprawnienia). Po czym możemy przystąpić do
konfiguracji podstawowej systemu. W menu Konfiguracja -> Interfejs
użytkownika ustawiamy podstawowe opcje odnoszące się do LMS-UI.
Następnie wymagane jest zdefiniowanie przynajmniej jednej firmy
(oddziału) oraz wskazane jest zdefiniowanie stawek podatkowych, planów
numeracyjnych, województw oraz hostów.
__________________________________________________________________
2.4. Lokalizacja
Domyślnym językiem interfejsu użytkownika jest angielski, a znaki są
kodowane w UTF-8. Aby znaki narodowe innych języków były poprawnie
wyświetlane należy mieć w systemie odpowiednie locale. Np. dla języka
polskiego będzie to komenda:
# localedef -v -c -i pl_PL -f UTF-8 /usr/share/locale/pl_PL.UTF-8
Jeśli w interfejsie użytkownika znaki narodowe w dalszym ciągu nie będą
wyświetlane poprawnie możliwe, że trzeba będzie dodać do pliku
konfiguracyjnego serwera www (httpd.conf) wpis:
AddDefaultCharset Off
oraz w konfiguracji PHP (php.ini) zakomentować wpis:
;default_charset = "iso-8859-1"
Informacje na temat konfiguracji kodowania bazy danych w dalszej części
rozdziału.
__________________________________________________________________
2.5. Instalacja serwera baz danych
2.5.1. MySQL
2.5.1.1. Wstęp
Ta bardzo popularna baza jest dostępna z większością dystrybucji
Linuksa. Jeżeli jednak będziesz musiał ją zainstalować samodzielnie,
zacznij od ściągnięcia źródeł z www.mysql.com.
__________________________________________________________________
2.5.1.2. Instalacja serwera MySQL
Po rozpakowaniu, wejdź do katalogu z naszym MySQL i wydaj kolejno
polecenia:
$ ./configure --prefix=/usr/local/mysql
$ make
$ make install
$ /usr/local/mysql/bin/mysql_install_db
$ chown mysql -R /usr/local/mysql/var
$ /usr/local/mysql/bin/safe_mysqld &
$ /usr/local/mysql/bin/mysqladmin -u root password nowe_hasło
__________________________________________________________________
2.5.1.3. Utworzenie bazy danych
Konieczne to jest jeżeli uruchamiasz LMS po raz PIERWSZY. Tak więc,
wejdź do katalogu w którym masz LMS'a i uruchom shell mysql'a:
mysql -u[tutaj wpisz użytkownika z pełnym dostępem do bazy] -p
Enter password:[podaj hasło]
mysql> CREATE DATABASE lms CHARACTER SET utf8 COLLATE utf8_polish_ci;
mysql> GRANT USAGE ON lms.* TO lms@localhost;
mysql> GRANT ALL ON lms.* TO lms@localhost IDENTIFIED BY 'twoje_hasło';
mysql> flush privileges;
__________________________________________________________________
2.5.1.4. Konfiguracja LMS (lms.ini)
Ponieważ MySQL jest domyślną bazą dla LMS'u, konfiguracja ogranicza się
do podania w sekcji [database] pliku /etc/lms/lms.ini hasła i
użytkownika:
user = lms
password = hasło_z_pkt.3
W PHP dostępne są dwa rozszerzenia do obsługi bazy MySQL (mysql i
mysqli). LMS obsługuje oba, możesz wybrać, ktego chcesz użyć ustawiając
odpowiednio opcję type w sekcji [database].
Po takim zabiegu, o ile LMS'owi uda się nawiązać połączenie do bazy
danych, można już bez problemu dostać się do systemu. Jeżeli jednak w
bazie danych nie ma żadnego konta użytkownika, jedyną rzeczą jaką
zobaczysz będzie formularz dodania użytkownika. Jeżeli podasz
prawidłowe dane użytkownika, LMS przeniesie Cię na stronę logowania
gdzie od razu będziesz mógł użyć nowo utworzonego konta.
Zatrzymaj się tutaj i dodaj coś do crona, tak dla świętego spokoju:
12 4 3,10,17,21,28 * * /usr/bin/mysqldump -u lms --password=Twoje-super-tajne-hasło \
--add-drop-table --add-locks lms > backups/lms-auto-"$(date +%s)".sql
Spowoduje to wykonywanie o 4:12 rano, każdego 3, 10, 17, 21 i 28 dnia
miesiąca automagicznie zrzutu danych z mysqla.
__________________________________________________________________
2.5.2. PostgreSQL
2.5.2.1. Wstęp
LMS jest testowany na PostgreSQL 8.4.x i nowszych, możesz mieć problemy
korzystając ze starszych wersji. Jeżeli nie masz zainstalowanego
serwera PostgreSQL, możesz np. własnoręcznie skompilować go ze źródeł
dostępnych na stronie www.postgresql.org.
__________________________________________________________________
2.5.2.2. Instalacja
Jest to wersja skrócona instalacji, więcej informacji znajdziesz w
dokumentacji postgresa. Po ściągnięciu i rozpakowaniu wejdź do katalogu
głównego i wpisz kolejno poniższe polecenia.
$ ./configure --enable-locale
$ gmake
$ su
$ gmake install
$ adduser postgres
$ mkdir /usr/local/pgsql/data
$ chown postgres /usr/local/pgsql/data
$ su - postgres
$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data --locale=pl_PL.UTF-8
$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
Ostrzeżenie
Dotyczy wersji <= 9.1.x: Wymagane jest dodanie wpisu w postgresql.conf:
custom_variable_classes = 'lms'
__________________________________________________________________
2.5.2.3. Utworzenie bazy danych
Mając uruchomiony serwer możesz przystąpić do tworzenia bazy o nazwie
'lms', której właścicielem będzie użytkownik z loginem 'lms'.
$ /usr/local/pgsql/bin/createuser -DPRS lms
$ /usr/local/pgsql/bin/createdb -E UNICODE -O lms lms
__________________________________________________________________
2.5.2.4. Konfiguracja LMS (lms.ini)
Dla systemu LMS domyślnym serwerem baz danych jest MySQL, dlatego w
sekcji [database] pliku /etc/lms/lms.ini należy ustawić następujące
opcje:
type = postgres
user = lms
password = hasło_podane_przy_tworzeniu_użytkownika_lms
Notatka
Hasło jest wymagane w zależności od konfiguracji autentykacji
użytkowników postgresa w /usr/local/pgsql/data/pg_hba.conf. Domyślnie
hasło nie jest wymagane.
Po takim zabiegu, o ile LMS'owi uda się nawiązać połączenie do bazy
danych, można już bez problemu dostać się do systemu. Jeżeli jednak w
bazie danych nie ma żadnego konta użytkownika, jedyną rzeczą jaką
zobaczysz będzie formularz dodania użytkownika.
Zatrzymaj się tutaj i dodaj coś do crona, tak dla świętego spokoju:
12 4 3,10,17,21,28 * * /usr/bin/pg_dump -U lms --clean \
--file=backups/lms-auto-"$(date +%s)".sql
__________________________________________________________________
2.6. Konfiguracja podstawowa
Głównym plikiem konfiguracyjnym LMS jest lms.ini, który należy umieścić
w katalogu /etc/lms lub w katalogu głównym LMS'a. Zawiera on zmienne
konfiguracyjne LMS-UI oraz wszystkich skryptów wykonywalnych z
wyjątkiem LMS-MGC.
Notatka
Pamiętaj o usunięciu średników na początku linii z ustawianym
parametrem konfiguracyjnym.
__________________________________________________________________
2.6.1. Sekcja [database] - ustawienia bazy danych
* type
Typ drivera bazy danych. Aktualnie w 100% supportowany jest
'mysql', 'mysqli' oraz 'postgres'. Domyślnie: mysql
Przykład: type = mysql
* host
Host gdzie zainstalowana jest baza danych. Najczęściej, localhost,
ale można tutaj wstawić cokolwiek (ip, domena, ścieżka do gniazda w
formacie '/path/to/socket'). Domyślnie: localhost
Przykład: host = localhost
* user
Użytkownik do bazy danych. W wielu wypadkach (jeżeli postępowałeś
zgodnie ze wskazówkami w dokumentacji) będzie to 'lms'. Jeżeli
chcesz używać konta uprzywilejowanego, prawdopodobnie wpiszesz
'root' (MySQL na większości *nixów), 'mysql' (na PLD) bądź
'postgres' (PostgreSQL). Domyślnie: mysql
Przykład: user = lms
* password
Hasło do bazy danych. Domyślnie puste.
Przykład: password = password
* database
Nazwa bazy danych, domyślnie lms.
Przykład: database = lms
__________________________________________________________________
2.6.2. Sekcja [directories] - ustawienia katalogów
* sys_dir
Katalog systemowy. Jest to miejsce gdzie jest cała zawartość UI
LMS'a, czyli index.php, grafiki, szablony i reszta. Domyślnie,
index.php stara się sam odnaleźć w filesystemie używając getcwd(),
ale lepiej by było gdyby mu powiedzieć gdzie jest:
Przykład: sys_dir = /var/www/htdocs/lms/
* modules_dir
Katalog z "modułami" LMS'a. Czyli zawartość katalogu modules.
Domyślnie jest to podkatalog modules w sys_dir.
Przykład: modules_dir = /usr/share/lms/modules/
* lib_dir
Katalog z "bibliotekami" LMS'a. Czyli zawartość katalogu lib.
Domyślnie to podkatalog lib w sys_dir.
Przykład: lib_dir = /usr/share/lms/lib/
* backup_dir
Katalog z kopiami zapasowymi bazy danych - miejsce gdzie LMS
zapisuje zrzuty z bazy. Domyślnie jest to podkatalog 'backups'.
Przykład: backup_dir = /var/backup/lms/
Ostrzeżenie
Jeśli katalog z kopiami zapasowymi będzie osiągalny z poziomu WWW, to
każdy bez autoryzacji będzie miał do nich dostęp.
* doc_dir
Katalog na archiwum dokumentów - miejsce gdzie LMS zapisuje pobrane
pliki. Domyślnie jest to podkatalog 'documents'.
Przykład: doc_dir = /usr/share/documents/
Ostrzeżenie
Jeśli ten katalog będzie osiągalny z poziomu WWW, to każdy bez
autoryzacji będzie miał do nich dostęp.
* smarty_compile_dir
Katalog kompilacji Smarty-ego. Miejsce gdzie Smarty kompiluje
szablony. Domyślnie to templates_c w katalogu sysdir.
Przykład: smarty_compile_dir = /var/smarty/compile/lms
* smarty_templates_dir
Katalog z szablonami którymi Smarty-ego. Domyślnie to podkatalog
templates z sys_dir'a.
Przykład: smarty_templates_dir = /usr/share/lms/templates
__________________________________________________________________
2.6.3. Sekcja [finances] - konfiguracja finansów
Sekcja ta zawiera opcje dotyczące naliczania opłat, a także dane do
druków przelewu, których opis znajdziesz w rozdziale o fakturach.
* suspension_percentage (opcjonalny)
Wartość procentowa obciążenia generowana dla obciążeń zawieszonych.
Domyślnie: '0'
Przykład: suspension_percentage = 50
__________________________________________________________________
2.7. Prawa dostępu
2.7.1. Idea
LMS ma możliwość zdefiniowania do 256 reguł dostępu do systemu. Każda z
nich może zabraniać, bądź pozwalać na dostęp do konkretnych modułów.
Każdemu użytkownikowi można przydzielić dowolną kombinację reguł
dostępu.
Domyślnie zdefiniowana jest następująca lista reguł dostępu:
* pełen dostęp
* odczyt wszystkich danych (z wyjątkiem Helpdesku)
* podłączanie i odłączanie komputerów
* zarządzanie finansami
* przeładowywanie konfiguracji
* zarządzanie klientami
* zarządzanie komputerami
* dostęp do statystyk
* dostęp do korespondencji seryjnej
* zarządzanie Helpdeskiem (RT)
* obsługa Helpdesku (RT)
* zarządzanie hostingiem
* konfiguracja interfejsu użytkownika
* zarządzanie sieciami i urządzeniami sieciowymi
* zarządzanie terminarzem
* zarządzanie i konfiguracja demona
* operacje kasowe
* zarządzanie grupami klientów
* zarządzanie grupami komputerów
* przypisywanie klientów do grup
* przypisywanie komputerów do grup
* zarządzanie kontami voip
* zarządzanie Userpanelem
* brak dostępu do modyfikacji i zakładania kont użytkowników
* brak dostępu
Niektóre z nich zezwalają na dostęp do modułów oraz dwie zabraniają.
Moduły do których użytkownik ma zawsze dostęp to: welcome, copyrights,
logout, chpasswd (przy czym chpasswd umożliwia tylko zmianę własnego
hasła), dostęp do reszty jest zdefiniowany regułami.
Notatka
Jeśli nie ustawimy użytkownikowi żadnej reguły dostępu, to LMS
domyślnie przydzieli mu regułkę 0, czyli pełen dostęp.
__________________________________________________________________
2.7.2. Jak to działa?
Decyzja czy użytkownik ma prawo dostępu do modułu czy nie przebiega
następująco:
- najpierw sprawdzana jest lista modułów, do których zawsze ma się
dostęp,
- potem następuje sprawdzenie czy moduł pasuje do reguł w
poszczególnych poziomach, do których użytkownik ma dostęp,
- na końcu podejmowana jest decyzja czy użytkownik ma uprawnienia by do
modułu się dobrać. Jeżeli moduł się załapał na którykolwiek poziom,
który zabrania dostępu, dostęp zostanie zabroniony nawet jeżeli
użytkownik ma ustawiony poziom, który pozwala na dostęp do modułu (np.
ktoś ma pełny dostęp oraz brak dostępu do modułu dodawania komputerów,
nie będzie on mógł się odwołać do tego modułu). Jeżeli moduł pasuje do
poziomu, który pozwala na dostęp do danego modułu LMS zezwala na dalszą
pracę. Jeżeli natomiast moduł się nie "załapał" na żaden poziom również
zostanie mu wyświetlony komunikat o braku dostępu.
__________________________________________________________________
2.7.3. Reguły dostępu definiowane przez użytkownika
Zaawansowani użytkownicy mają możliwość zdefiniowania dodatkowych
dowolnych reguł dostępu lub przedefiniowania istniejących. W tym celu
należy utworzyć skrypt PHP na wzór lib/accesstable.php. Lokalizację
pliku podajemy w opcji custom_accesstable sekcji [phpui].
W ten sposób można zdefiniować własne reguły zezwalające lub
zabraniające dostępu do dowolnych modułów. Moduł to nazwa pliku PHP z
katalogu modules, którą w regułach dostępu podajemy bez rozszerzenia.
Dla przykładu, można zdefiniować uprawnienie do odczytu faktur (np. na
potrzeby skryptu lms-sendinvoices) w następujący sposób:
<?php
$access['table'][100]['name'] = 'odczyt faktur';
$access['table'][100]['allow_reg'] = '^invoice$';
?>
__________________________________________________________________
2.8. Upgrade
Uaktualnienie LMS'a przebiega w kilku etapach. Zacznij od sprawdzenia
wymagań systemu, gdyż mogły ulec zmianie. Jeśli korzystasz z bazy MySQL
powinieneś także zweryfikować uprawnienia użytkownika, one też ulegały
zmianie w przeszłości.
Najpierw utwórz katalog z plikami nowej wersji (nie zaleca się
nadpisywania starych plików nowymi) oraz usuń zawartość katalogu
templates_c.
Następnie, jeśli nie masz jeszcze w systemie locali pl_PL.UTF-8, należy
je utworzyć komendą:
# localedef -v -c -i pl_PL -f UTF-8 /usr/share/locale/pl_PL.UTF-8
Jeśli w interfejsie użytkownika znaki narodowe nie będą wyświetlane
poprawnie możliwe, że trzeba będzie w pliku konfiguracyjnym serwera www
(httpd.conf) ustawić:
AddDefaultCharset Off
oraz w konfiguracji PHP (php.ini) wyłączyć/zakomentować domyślne
kodowanie:
;default_charset = "iso-8859-1"
Kolejnym krokiem jest dokonanie zmian w bazie. Od wersji 1.3.1
wprowadzono automatyczną procedurę aktualizacji struktury bazy danych.
Następuje ona za każdym razem podczas uruchomienia LMS-UI (jeszcze
przed zalogowaniem do systemu).
Ostatni etap - konwersja danych do unicodu. Począwszy od wersji 1.5.4
zaleca się przechowywanie danych zakodowanych w utf-8 (UNICODE),
poniżej zostanie przedstawiony przykład migracji z kodowania ISO-8859-2
do UNICODE na bazie danych PostgreSQL.
Zaczynamy od utworzenia backupu danych w LMSie. Następnie przechodzimy
do katalogu z backupami i wykonujemy konwersję pliku backupu.
# iconv --from-code=ISO-8859-2 --to-code=UTF-8 < plik_backupu > nowy_plik
Po czym zmieniamy nazwę nowo powstałego pliku na lms-xxxxxxx.sql, aby
plik ten był widoczny z poziomu LMS-UI. Teraz należy utworzyć bazę
danych z kodowaniem UNICODE (opis w dziale Instalacja). Po czym
uruchamiamy LMS-UI i odtwarzamy dane z przekonwertowanego backupu.
Ostrzeżenie
Jeżeli używasz wersji pobranej z CVSu musisz dodatkowo zadbać o
instalację biblioteki Smarty. Do katalogu /lib/Smarty wgraj zawartość
katalogu /lib z paczki Smarty. Czynność (wraz z pobraniem biblioteki
Smarty) automatycznie wykonuje skrypt /devel/smarty_install.sh.
__________________________________________________________________
2.8.1. Zmiany w konfiguracji
Poniżej znajduje się lista zmian (oraz numer wersji), które zrywają
zgodność z wcześniejszymi wydaniami. Zmiany najcześćiej dotyczą
usunięcia jakiejś opcji/funkcji, zmiany nazwy opcji konfiguracyjnej,
zachowania.
Tabela 2-1. Lista zmian zrywających zgodność z wcześniejszymi wydaniami
Wersja Opis zmiany
1.11.8
* opcje smtp_* i debug_email przeniesiono z sekcji [phpui] do sekcji
[mail]
* lms-notify: opcję mailtemplate zastąpiono opcją debtors_template,
opcję mailsubject zastąpiono opcją debtors_subject, usunięto
parametr --template-file (-D)
* lms-notify-sms: opcję smstemplate zastąpiono opcją
debtors_template, usunięto parametr --template-file (-D)
__________________________________________________________________
2.9. Dokumenty
LMS umożliwia generowanie oraz przechowywanie przeróżnych dokumentów
tj. faktur, dowodów wpłat oraz dokumentów nie-finansowych np. umów,
protokołów. Dokumenty mogą być numerowane wg wzorców (planów)
numeracyjnych zdefiniowanych przy pomocy menu Konfiguracja - Plany
numeracyjne.
__________________________________________________________________
2.9.1. Sposób wyliczania podatku VAT
Poniżej przedstawiono sposób w jaki wyliczany jest podatek w LMS.
Wartości wszystkich działań są zaokrąglane do dwóch miejsc po
przecinku.
W bazie LMS cena jednostkowa pozycji fakturowej jest przechowywana jako
wartość brutto (z podatkiem).
* wartość podatku = (stawka podatku / 100) + 1
Przykład: stawka podatku VAT to 22%
wartość podatku = (22 / 100) + 1 = 1,22
* cena jednostkowa netto = cena jednostkowa brutto / wartość podatku
Przykład: cena brutto metra kabla wynosi 2,56 zł, a stawka podatku
VAT to 22%
cena jednostkowa netto = 2,56 zł / 1,22 = 2,10 zł
* sumaryczna cena brutto = cena jednostkowa brutto * ilość sztuk
Przykład: cena brutto metra kabla wynosi 2,56 zł, ilość metrów
1366, a stawka podatku VAT to 22%
cena sumaryczna brutto = 2,56 zł * 1366 m = 3496,96 zł
* cena sumaryczna netto = cena sumaryczna brutto / wartość podatku
Przykład: cena brutto metra kabla wynosi 2,56 zł, ilość metrów
1366, a stawka podatku VAT to 22%
cena sumaryczna netto = (2,56 zł * 1366 m = 3496,96 zł) / 1,22 =
2866,36 zł
__________________________________________________________________
2.9.2. Faktury
LMS umożliwia wystawianie faktur automatycznie i ręcznie. Ręczne
wystawienie faktury jest możliwe z menu 'Nowa faktura' w panelu
'Finanse'. Automatyczne wystawianie faktur wymaga włączenia tej opcji
podczas przypisywania taryf użytkownikom. W takim wypadku zapisem
faktur do bazy zajmuje się skrypt lms-payments lub demon lmsd
Do poprawnego działania i tworzenia wydruków wymagane jest ustawienie
podstawowych parametrów faktury takich jak nagłówek, stopka, domyślny
wystawca, miejsce wystawienia oraz konto bankowe w definicji firmy.
Ponadto mamy do dyspozycji opcje sekcji [invoices] konfiguracji:
* print_balance_history
Określa czy na fakturze (html) drukować listę operacji finansowych
na koncie klienta. Domyślnie: nie ustawiona.
Przykład: print_balance_history = true
* print_balance_history_limit
Liczba rekordów na liście operacji finansowych na fakturze.
Domyślnie: 10.
Przykład: print_balance_history_limit = 20000
Wygenerowane faktury można obejrzeć w dwojaki sposób: albo poprzez
ikonkę drukarki na wykazie bilansu finansowego (ogólnego bądź
pojedynczego użytkownika), albo poprzez 'Lista faktur' z menu
'Finanse'. W przypadku listy faktur, możliwe jest także filtrowanie
faktur do wydruku.
Podczas wydruku faktury domyślnie wyświetlany jest oryginał i kopia,
można to zmienić:
* default_printpage
Lista oddzielonych przecinkiem nazw stron wydruku faktur. Można
użyć zdefiniowane ciągi znaków "original", "copy" i "duplicate".
Domyślnie: "original,copy".
Przykład: default_printpage = "original"
__________________________________________________________________
2.9.2.1. HTML
Przy domyślnych ustawieniach faktury wyświetlane są w formacie html wg
domyślnego szablonu. W sekcji [invoices] masz do dyspozycji jeszcze
następujące opcje:
* template_file
Szablon faktury, który powinien znajdować się w katalogu templates.
Domyślnie: invoice.html.
Przykład: template_file = invoice-mynet.html
* content_type
Content-type dla faktury. Jeżeli wpiszesz tutaj
'application/octet-stream' to przeglądarka zechce wysłać plik do
zapisania na dysku, zamiast go wyświetlić. Przydatne jeśli używasz
własnego szablonu, który wygeneruje np.rtf'a lub xls'a. Domyślnie:
'text/html'
Przykład: content_type = application/octet-stream
* attachment_name
Można podać nazwę pliku, jako który ma zostać zapisany gotowy
wydruk. Domyślnie: pusta.
Przykład: attachment_name = faktura.xls
Wynikowy dokument HTML zawiera oryginały i kopie, które są oddzielone
znacznikami podziału strony poprzez CSS. Tak więc każda nowoczesna
przeglądarka zgodna z CSS powinna bezproblemowo drukować faktury ładnie
podzielone na strony. Funkcja ta była testowana na przeglądarkach
Microsoft Internet Explorer 6.0, Opera 7.02 oraz Mozilla 1.3.
Notatka
Praktycznie każda przeglądarka internetowa ma możliwość konfiguracji
wydruku, gdzie można wyłączyć funkcje takie jak drukowanie stopki i
nagłówka, czy też adresu na wydruku.
__________________________________________________________________
2.9.2.2. PDF
Możliwe jest także tworzenie faktur jako pliki pdf. Przypisanie opcji
type z sekcji [invoices] wartości 'pdf' spowoduje, że faktury zamiast w
html'u będą tworzone jako pliki "portable data format". Opcja
template_file spełnia podobną rolę jak dla faktur html'owych, z tym, że
posiada predefiniowane wartości: 'standard' - faktura podstawowa
(odpowiednik invoice.html) i 'FT-0100' - faktura przystosowana do
drukowania na drukach FT-0100 zawierających druk polecenia przelewu. W
opcji template_file można także wstawić nazwę pliku php, jednak ta
możliwość jest przeznaczona dla zaawansowanych użytkowników, gdyż
wymaga utworzenia pliku php, a nie tak jak w przypadku faktur
html'owych szablonu Smarty.
__________________________________________________________________
2.9.2.3. Korekty
Faktury korygujące korzystają z ustawień dotyczących pozostałych faktur
z sekcji [invoices]. Domyślny szablon faktury uwzględnia faktury
korygujące. Jednak udostępniono opcję pozwalającą na zdefiniowanie
osobnego szablonu dla korekt (pozostałe opcje są wspólne dla faktur i
dla korekt):
* cnote_template_file
Szablon faktury korygującej, który powinien znajdować się w
katalogu templates. Domyślnie: invoice.html.
Przykład: cnote_template_file = invoice-mynet.html
__________________________________________________________________
2.9.2.4. Automatyczne generowanie numeru konta bankowego
LMS umożliwia automatyczne generowanie numeru konta bankowego w
standardzie IBAN zawierającego ID klienta. Funkcja ta może być używana
do masowej identyfikacji płatności która jako usługa znajduje się w
ofercie większości banków. Aby masowa identyfikacja była możliwa,
należy podpisać umowę z bankiem z której potrzebne nam będą:
* Numer rozliczeniowy banku
zawsze stały dla każdego banku, złożony z 8 cyfr
* Identyfikator rachunku
identyfikator naszego wirtualnego rachunku, złożony z 4 cyfr
Gdy mamy potrzebne dane, definiujemy konto bankowe w konfiguracji firmy
(oddziału). System sam rozpozna (na podstawie długości), czy
wprowadzono cały numer rachunku firmy czy prefiks do płatności
masowych. Prefix powinien składać się z 8 do 20 cyfr bez spacji i
innych znaków.
Od tej pory jeśli używamy faktur PDF z szablonem FT-0100, lub drukujemy
bloczki przelewu/wpłaty z menu Finanse -> Wydruki -> Faktury -> Drukuj