Compare commits
1256 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ddd28a0607 | ||
|
|
fa92df6567 | ||
|
|
76a3efe039 | ||
|
|
601ed15f20 | ||
|
|
2a3b505dff | ||
|
|
9550227672 | ||
|
|
89c0750463 | ||
|
|
0fa71362b8 | ||
|
|
d8df097e83 | ||
|
|
67c20cabc3 | ||
|
|
5867961383 | ||
|
|
649e280ce1 | ||
|
|
9d982eff1b | ||
|
|
6ac8225b19 | ||
|
|
55ed3c4ae0 | ||
|
|
5d0804639c | ||
|
|
6edb623b9c | ||
|
|
8c2a1e17d9 | ||
|
|
2a2f96d726 | ||
|
|
ec705df38b | ||
|
|
cb20fad13b | ||
|
|
969cae0343 | ||
|
|
f9652258e9 | ||
|
|
6bb891f830 | ||
|
|
4659d2c941 | ||
|
|
8644818949 | ||
|
|
de62956c40 | ||
|
|
3547aec75f | ||
|
|
21b5d775d2 | ||
|
|
0973bc538e | ||
|
|
bf2c4b87ab | ||
|
|
b03087c1c5 | ||
|
|
b814a856d0 | ||
|
|
f6b69a63e2 | ||
|
|
df499ea33c | ||
|
|
007611c429 | ||
|
|
12bf4c7bcc | ||
|
|
5b05be24ad | ||
|
|
f50e3d4e92 | ||
|
|
7177cdd51d | ||
|
|
a71f16ee37 | ||
|
|
070e31ef19 | ||
|
|
42df2b255a | ||
|
|
52027c65b3 | ||
|
|
a2f2bce3ab | ||
|
|
ebcf6fa49b | ||
|
|
c14c762bde | ||
|
|
fd50ab7deb | ||
|
|
0db7521bee | ||
|
|
3adfa2c268 | ||
|
|
e27610a199 | ||
|
|
bd43a16975 | ||
|
|
eb56126224 | ||
|
|
7945fce65d | ||
|
|
8a7ddfbb47 | ||
|
|
03163e424f | ||
|
|
d5b7023927 | ||
|
|
884aca149a | ||
|
|
1836567f97 | ||
|
|
78f71abd31 | ||
|
|
0f63497847 | ||
|
|
8a1e472fed | ||
|
|
3831b5a50a | ||
|
|
3756e1a327 | ||
|
|
c9eb866acd | ||
|
|
55530c05f9 | ||
|
|
422997be9b | ||
|
|
13ff086412 | ||
|
|
298b5ac03e | ||
|
|
e9af2efbd1 | ||
|
|
4027970975 | ||
|
|
0ca7116167 | ||
|
|
1474cf424b | ||
|
|
b763d75703 | ||
|
|
a0501d88ec | ||
|
|
f62d94ba61 | ||
|
|
e99d855284 | ||
|
|
31b78ff106 | ||
|
|
ae0c45a716 | ||
|
|
0105844410 | ||
|
|
07e8395536 | ||
|
|
6c8fc093af | ||
|
|
95a7dcc7fc | ||
|
|
c54156ca1e | ||
|
|
941a8ef661 | ||
|
|
fc79ffc956 | ||
|
|
8e86343942 | ||
|
|
bb87e65745 | ||
|
|
d1989acd5c | ||
|
|
e5bc4ad41b | ||
|
|
927bdc2f2b | ||
|
|
2ff57d8272 | ||
|
|
49baf4b613 | ||
|
|
a573fd9841 | ||
|
|
e91b640bff | ||
|
|
8ee47e2fcc | ||
|
|
092797e75c | ||
|
|
816a01f8af | ||
|
|
3578bbfcad | ||
|
|
b4b15af887 | ||
|
|
c74ef127d1 | ||
|
|
90b3a491c7 | ||
|
|
ad41d02eeb | ||
|
|
19fe48c7ec | ||
|
|
f3d05ca222 | ||
|
|
4aa1848ece | ||
|
|
2176c58cb5 | ||
|
|
2b95daa248 | ||
|
|
e7c0bcf419 | ||
|
|
063682510e | ||
|
|
8542d05f66 | ||
|
|
42aa89971d | ||
|
|
abd607ea10 | ||
|
|
5936ba4626 | ||
|
|
a6c2b9254b | ||
|
|
62669fd181 | ||
|
|
c8fcf6227e | ||
|
|
310b6de2cc | ||
|
|
306535a2a6 | ||
|
|
5944b1b6f5 | ||
|
|
6de9e1d4bd | ||
|
|
4bf6ab9c8c | ||
|
|
1e93dfa35e | ||
|
|
7f2567264c | ||
|
|
d9a9246f1b | ||
|
|
aa8fb62f15 | ||
|
|
6d5eeb88d3 | ||
|
|
ea1d710209 | ||
|
|
032b787b66 | ||
|
|
7024cd22de | ||
|
|
b9b66d5af1 | ||
|
|
b73a0d6347 | ||
|
|
a0bc318ff9 | ||
|
|
642e8464cd | ||
|
|
63a9e55d4e | ||
|
|
a07c73155f | ||
|
|
efbc32d3ed | ||
|
|
83f50bd0d8 | ||
|
|
87cb0f50b5 | ||
|
|
73c779c238 | ||
|
|
40615cf17a | ||
|
|
6dd1448667 | ||
|
|
d8b4091043 | ||
|
|
7ea920efa9 | ||
|
|
7306dfbdd3 | ||
|
|
53c8c41133 | ||
|
|
395dfe5fe7 | ||
|
|
2ec0074a45 | ||
|
|
93dce378ea | ||
|
|
df6fae7aa5 | ||
|
|
57e0705e64 | ||
|
|
f3b31479c4 | ||
|
|
b914be9f0e | ||
|
|
2d0a4b79d8 | ||
|
|
d090b29c55 | ||
|
|
5a8be94cdc | ||
|
|
176a436ad4 | ||
|
|
1a05435691 | ||
|
|
49ce3edbdb | ||
|
|
51df759e25 | ||
|
|
992aa00c3c | ||
|
|
d87d933058 | ||
|
|
e0d639cba0 | ||
|
|
1cbbfb25cc | ||
|
|
f205e6f5c1 | ||
|
|
5e67ea22f5 | ||
|
|
99f522e625 | ||
|
|
f04cd7e28b | ||
|
|
3392a1f17c | ||
|
|
d0d9a1a65d | ||
|
|
16d04fe485 | ||
|
|
43d5c51e7c | ||
|
|
647013f3ff | ||
|
|
2ef631a440 | ||
|
|
86315a245b | ||
|
|
b0ce1b87a9 | ||
|
|
541c16aea6 | ||
|
|
ee1a3fc683 | ||
|
|
b90edcccbd | ||
|
|
4614b93780 | ||
|
|
4f548803cb | ||
|
|
d16dd95d65 | ||
|
|
97f7494c34 | ||
|
|
6179dabfa6 | ||
|
|
05ca683f91 | ||
|
|
170e61e73f | ||
|
|
33f0356ca7 | ||
|
|
4b9117dcb4 | ||
|
|
ec274c90da | ||
|
|
e7a1f013df | ||
|
|
c287bc2f22 | ||
|
|
5b8f8f2c5d | ||
|
|
887c2d0f42 | ||
|
|
06d7aa6623 | ||
|
|
5ed142a6b8 | ||
|
|
da9ca8a1f4 | ||
|
|
1cb5375a92 | ||
|
|
fd11cc30f5 | ||
|
|
a1bfdc0f18 | ||
|
|
e88362ce80 | ||
|
|
b5f0a64e7c | ||
|
|
e3623420b0 | ||
|
|
3344ed4b99 | ||
|
|
b0c91f7804 | ||
|
|
f8cf7f0717 | ||
|
|
29a6b78f27 | ||
|
|
388370b49d | ||
|
|
4d67c25e5a | ||
|
|
eec0dcca82 | ||
|
|
f1dc33761d | ||
|
|
7ea74d0fe3 | ||
|
|
0c635534a1 | ||
|
|
f70a3a4207 | ||
|
|
0fc174b5b3 | ||
|
|
d4eddf042d | ||
|
|
a4210c7e6b | ||
|
|
106438d61d | ||
|
|
94365d2cc9 | ||
|
|
b633c43078 | ||
|
|
84c3f1d786 | ||
|
|
1c963e9aff | ||
|
|
a2fe7f79cc | ||
|
|
8dabdb3f11 | ||
|
|
b9f2957104 | ||
|
|
bdeda87600 | ||
|
|
e98a538f53 | ||
|
|
2e0cb923db | ||
|
|
2e532abf6b | ||
|
|
51e865c98d | ||
|
|
2c27248aa1 | ||
|
|
43c2084e15 | ||
|
|
14cb0f46f3 | ||
|
|
162d507468 | ||
|
|
8624851cf5 | ||
|
|
2d92e93b7b | ||
|
|
78f9018083 | ||
|
|
ecb8a01aaa | ||
|
|
cca2c99f6b | ||
|
|
028d0dd7d8 | ||
|
|
7753e0481c | ||
|
|
5b35e68cf2 | ||
|
|
8b4115fe48 | ||
|
|
8bc1c3e0ed | ||
|
|
69061ed537 | ||
|
|
f151b1268d | ||
|
|
35d9c0e548 | ||
|
|
7baae289d1 | ||
|
|
a33c50361f | ||
|
|
ecc4920b04 | ||
|
|
1f3e28fe83 | ||
|
|
a9132d7b46 | ||
|
|
f54929c6cb | ||
|
|
1a181d08b9 | ||
|
|
94b32f0f73 | ||
|
|
ab98382984 | ||
|
|
5498035ca9 | ||
|
|
a1444659ea | ||
|
|
b9d65ea0e2 | ||
|
|
aac35294b5 | ||
|
|
fef33d652d | ||
|
|
8ef6f420e4 | ||
|
|
7675ebc7d3 | ||
|
|
90e4b36106 | ||
|
|
e7ac2321f2 | ||
|
|
e0d8ade2d0 | ||
|
|
f5546b6a49 | ||
|
|
3c13f82d61 | ||
|
|
121b5cdf32 | ||
|
|
593c03b035 | ||
|
|
3a4e3fa22a | ||
|
|
098b87d09e | ||
|
|
8783b89f21 | ||
|
|
a29d0a6cf6 | ||
|
|
4d0d62a00b | ||
|
|
d951e26fa8 | ||
|
|
52e2c2ccd2 | ||
|
|
87cb5a5c24 | ||
|
|
59967dd1f0 | ||
|
|
46e57af6dd | ||
|
|
9ec69d895c | ||
|
|
c20b239351 | ||
|
|
09d9491354 | ||
|
|
68bc03d6a5 | ||
|
|
95e6b1a59c | ||
|
|
b2fb0b2130 | ||
|
|
b5e90f63a3 | ||
|
|
566a5904a6 | ||
|
|
7678a1a88b | ||
|
|
8490540384 | ||
|
|
2aabae6faa | ||
|
|
d9c841842e | ||
|
|
7cb4f4560a | ||
|
|
d110409944 | ||
|
|
891d9e5e1b | ||
|
|
980aba1cda | ||
|
|
37e8a79159 | ||
|
|
ac3f502547 | ||
|
|
75cbc3c249 | ||
|
|
f8b6b5272b | ||
|
|
86d2e6258d | ||
|
|
8878853319 | ||
|
|
d04f229ffa | ||
|
|
856e12bdc7 | ||
|
|
66e6f9b3f7 | ||
|
|
e77e1d5503 | ||
|
|
7aa61e142e | ||
|
|
5ed57780a3 | ||
|
|
9cc4513ba1 | ||
|
|
f487dc83c4 | ||
|
|
b86cbb3a39 | ||
|
|
ec32fca3f9 | ||
|
|
a4aaa7282b | ||
|
|
f0290da391 | ||
|
|
2ab0807b05 | ||
|
|
9489567576 | ||
|
|
8a3acac3e1 | ||
|
|
e7fe5f795a | ||
|
|
c35b22dc53 | ||
|
|
1341d62da4 | ||
|
|
dfa2739bb1 | ||
|
|
4112263286 | ||
|
|
9c705c4fc9 | ||
|
|
73fd1ef9b4 | ||
|
|
74ba402d5d | ||
|
|
bde96af7da | ||
|
|
6ef0ba3098 | ||
|
|
89ffaff64d | ||
|
|
29131e39d2 | ||
|
|
76b0d76eaa | ||
|
|
60a9605302 | ||
|
|
b35489ee63 | ||
|
|
6d58e5b675 | ||
|
|
d0ad78920f | ||
|
|
b34a2d60e3 | ||
|
|
ca8042c2e9 | ||
|
|
31d7c5173f | ||
|
|
7b5be5feee | ||
|
|
2d683c6ab1 | ||
|
|
5e46ce4210 | ||
|
|
47e8e59a52 | ||
|
|
923ab5b903 | ||
|
|
8c8eaeb92f | ||
|
|
d6a5f23345 | ||
|
|
ba8fa0b37b | ||
|
|
0714aea30d | ||
|
|
da3ac55122 | ||
|
|
f651d9336a | ||
|
|
b7cbb39b51 | ||
|
|
eb96791223 | ||
|
|
ffd8f870f3 | ||
|
|
1ea7990314 | ||
|
|
4839c02d50 | ||
|
|
b6dffae33e | ||
|
|
d925455356 | ||
|
|
ef8506e5ec | ||
|
|
f138ad9885 | ||
|
|
c7abe29762 | ||
|
|
c29a8ed864 | ||
|
|
ca9315314a | ||
|
|
0299b1a5e5 | ||
|
|
3db771bf5f | ||
|
|
1599724239 | ||
|
|
a7f6be8f3f | ||
|
|
d86becd127 | ||
|
|
8e2785cfd1 | ||
|
|
685d097250 | ||
|
|
ee3d8730cc | ||
|
|
3b5ceaa483 | ||
|
|
b68be7385f | ||
|
|
488085324f | ||
|
|
ccc33bf498 | ||
|
|
d137599ac3 | ||
|
|
0a80300563 | ||
|
|
9eb9ba1039 | ||
|
|
0f8f3eca81 | ||
|
|
4ad406a8c3 | ||
|
|
f332a59b76 | ||
|
|
c56d225c1f | ||
|
|
057ddc00c0 | ||
|
|
6499e50775 | ||
|
|
8cde20cef3 | ||
|
|
68713007c8 | ||
|
|
772bedfa34 | ||
|
|
ef78a3c5b6 | ||
|
|
6c818c7a57 | ||
|
|
1b6d8862bc | ||
|
|
7b70b490e7 | ||
|
|
6d9ffaabf8 | ||
|
|
6ebd4ed15b | ||
|
|
eff474df1c | ||
|
|
55a2688f77 | ||
|
|
f6efb6d21f | ||
|
|
eb7503efdd | ||
|
|
e0fdfd6284 | ||
|
|
f7fbf9488a | ||
|
|
516ecdf84c | ||
|
|
a81d2deaab | ||
|
|
6e7314dfbf | ||
|
|
9d14530402 | ||
|
|
c52bd3a2aa | ||
|
|
5df98e9fd8 | ||
|
|
4f7268dae9 | ||
|
|
33f981d4f9 | ||
|
|
35805317ef | ||
|
|
5bd372de88 | ||
|
|
442323f2dc | ||
|
|
1a61bb4670 | ||
|
|
8ea3f077e5 | ||
|
|
525f6c3bf1 | ||
|
|
c790b1ee88 | ||
|
|
9c81ce9612 | ||
|
|
b86c9b360e | ||
|
|
92b821eb37 | ||
|
|
c5fa10f675 | ||
|
|
9df9f6b81a | ||
|
|
fea243aca5 | ||
|
|
f634d234d6 | ||
|
|
5164d6566d | ||
|
|
7d4d5433ef | ||
|
|
61425415c6 | ||
|
|
e880e95c3d | ||
|
|
6f7291940e | ||
|
|
879687e0af | ||
|
|
c43c4d9eb3 | ||
|
|
e0bec8a9d4 | ||
|
|
0dbf06a2e6 | ||
|
|
afc863f48a | ||
|
|
f8de706b0a | ||
|
|
0a1b8ffe43 | ||
|
|
2778c1b109 | ||
|
|
3d83a0b77b | ||
|
|
b0bb00c0ab | ||
|
|
1403fd54e9 | ||
|
|
97870201db | ||
|
|
b97ffb26ab | ||
|
|
c258f8fdc1 | ||
|
|
6eef2b094d | ||
|
|
059017e71a | ||
|
|
1cefbe0299 | ||
|
|
c289e74e4a | ||
|
|
e0c8221a9c | ||
|
|
aadd148cc6 | ||
|
|
4e8401ab7e | ||
|
|
238b2fb519 | ||
|
|
7e7df758a1 | ||
|
|
056949aab0 | ||
|
|
dc5deaab42 | ||
|
|
32d5455f45 | ||
|
|
43bc86becf | ||
|
|
c8346c1d09 | ||
|
|
97305026a7 | ||
|
|
36b57a6bef | ||
|
|
ff6538e920 | ||
|
|
45ce9feaae | ||
|
|
ced6190b55 | ||
|
|
4cd2f7cf32 | ||
|
|
929ea98fce | ||
|
|
adf11de4ec | ||
|
|
43ff7b48f7 | ||
|
|
021547f1e5 | ||
|
|
5afb11d617 | ||
|
|
04c88aee06 | ||
|
|
7bc4686553 | ||
|
|
4bdbba2eb1 | ||
|
|
03a08b5847 | ||
|
|
5ffcd3db92 | ||
|
|
1ad41b1829 | ||
|
|
d29001ef32 | ||
|
|
28177f20f4 | ||
|
|
9e49ea1de7 | ||
|
|
8eb28d15b4 | ||
|
|
7c96059b7f | ||
|
|
65ddfd8fb2 | ||
|
|
ef6eac24cc | ||
|
|
83395fd97e | ||
|
|
85ff325838 | ||
|
|
11142d263c | ||
|
|
8146281616 | ||
|
|
bffec25f44 | ||
|
|
0417a98646 | ||
|
|
19cc93a271 | ||
|
|
886a3eef9f | ||
|
|
c25fbe4cb8 | ||
|
|
4b204b8a29 | ||
|
|
3d58952654 | ||
|
|
777f7939b9 | ||
|
|
d7b71d6e49 | ||
|
|
c7ec840bd8 | ||
|
|
5c272f4d1a | ||
|
|
315f7fd37f | ||
|
|
8a1ac8454d | ||
|
|
3a813da5ac | ||
|
|
38bdb3523d | ||
|
|
39da334c5c | ||
|
|
606324331d | ||
|
|
1093c5dabf | ||
|
|
8d52ac629d | ||
|
|
3bb981ac7f | ||
|
|
5a4b8c1fc9 | ||
|
|
a28fb9df09 | ||
|
|
e12b948bbd | ||
|
|
61b33da43e | ||
|
|
7d2464207b | ||
|
|
5a684b94cd | ||
|
|
09382a055a | ||
|
|
584db2fdab | ||
|
|
346ac5912c | ||
|
|
c212193d87 | ||
|
|
4ad9c89fde | ||
|
|
4fe9122a12 | ||
|
|
9ac289a969 | ||
|
|
9fd4503ba8 | ||
|
|
ff06c93a42 | ||
|
|
5a1c1036dd | ||
|
|
23970fa2cd | ||
|
|
8650c68801 | ||
|
|
75c901a111 | ||
|
|
50ccdcf0d0 | ||
|
|
e6d75b411a | ||
|
|
7d50e3407b | ||
|
|
9f5143ff69 | ||
|
|
634cd14b83 | ||
|
|
050af17888 | ||
|
|
d37147b3c7 | ||
|
|
369abe38ba | ||
|
|
35fc9f2b0e | ||
|
|
1986b85580 | ||
|
|
0ca3628367 | ||
|
|
72afb77ef7 | ||
|
|
899b296bfe | ||
|
|
04044bfec5 | ||
|
|
8e173eab88 | ||
|
|
ce7182a0e7 | ||
|
|
42363879e1 | ||
|
|
c99f1a6e0d | ||
|
|
405a662138 | ||
|
|
71e7ee6f2d | ||
|
|
ec4f5ade70 | ||
|
|
a5552bb088 | ||
|
|
47aa96189f | ||
|
|
cb91ef1f08 | ||
|
|
00c61d8046 | ||
|
|
31881a4342 | ||
|
|
1519f55e68 | ||
|
|
0d25f4021b | ||
|
|
ea621d4db3 | ||
|
|
8ecea4c067 | ||
|
|
dffca5e619 | ||
|
|
86ffe8ba36 | ||
|
|
62c90aadf8 | ||
|
|
e1f0926159 | ||
|
|
79b6e6ff22 | ||
|
|
a283a2508c | ||
|
|
6c297e3df0 | ||
|
|
60ff20f5a0 | ||
|
|
7ec10bf9c6 | ||
|
|
495db47399 | ||
|
|
69ca83914c | ||
|
|
60f9670c4a | ||
|
|
8441d4c21b | ||
|
|
711507fa1d | ||
|
|
e174d1113d | ||
|
|
bf97227594 | ||
|
|
b777b3e77c | ||
|
|
f626dc48ea | ||
|
|
42129f558b | ||
|
|
5f569c9e99 | ||
|
|
8a13172eb3 | ||
|
|
734c488ca0 | ||
|
|
3335fb4f63 | ||
|
|
9c485bd973 | ||
|
|
c9bc27531a | ||
|
|
9a96529ae0 | ||
|
|
362c54e00a | ||
|
|
ad8554ab72 | ||
|
|
8c9b1a5e3c | ||
|
|
cf60947ce7 | ||
|
|
588834ede8 | ||
|
|
fb0ceaf7a3 | ||
|
|
c7eb1df7d5 | ||
|
|
c582f017d7 | ||
|
|
679b150c43 | ||
|
|
393ef181bb | ||
|
|
f0965c2080 | ||
|
|
b1c0112734 | ||
|
|
a7316c0a4b | ||
|
|
9614e70484 | ||
|
|
d0f43e0d28 | ||
|
|
f6490f5325 | ||
|
|
a9bdeba8b1 | ||
|
|
21bbca62c1 | ||
|
|
19a4538262 | ||
|
|
e0ffb28477 | ||
|
|
a1200fb8b8 | ||
|
|
48595c4b84 | ||
|
|
970166cb1f | ||
|
|
ace63ade46 | ||
|
|
a7709ce6e1 | ||
|
|
8b49a5a53f | ||
|
|
28d163cf0b | ||
|
|
43a8a3a2e6 | ||
|
|
ef6ef43501 | ||
|
|
6c4e354f5f | ||
|
|
5e98961faa | ||
|
|
d6100dfda3 | ||
|
|
f6b6fe36da | ||
|
|
eaf84be825 | ||
|
|
e3564ac067 | ||
|
|
d10353b247 | ||
|
|
2c00d103d9 | ||
|
|
4af089ece1 | ||
|
|
51d3dfd5d9 | ||
|
|
e32e3952d0 | ||
|
|
1533c1b3ab | ||
|
|
5b783ebff9 | ||
|
|
58db58e178 | ||
|
|
a55d02de5e | ||
|
|
6586a56e10 | ||
|
|
ebb754088b | ||
|
|
34bc3bd60d | ||
|
|
24c74ebf86 | ||
|
|
f37da64d43 | ||
|
|
623e68480c | ||
|
|
9bfea11442 | ||
|
|
120b24620b | ||
|
|
a1349f8313 | ||
|
|
0ca2ffc576 | ||
|
|
8fcf19b2f5 | ||
|
|
544f807971 | ||
|
|
a25b653753 | ||
|
|
25438db5e3 | ||
|
|
b7a39bc53a | ||
|
|
2675401a40 | ||
|
|
35ea345922 | ||
|
|
e7614de332 | ||
|
|
fe2049c5fe | ||
|
|
4d59388c83 | ||
|
|
415ca8a1ff | ||
|
|
d5582b318d | ||
|
|
95f12b0a72 | ||
|
|
0a43e20091 | ||
|
|
d1d79691dd | ||
|
|
e250894e42 | ||
|
|
337dec8ec3 | ||
|
|
a5a3507667 | ||
|
|
d002b2d009 | ||
|
|
46184fa5f6 | ||
|
|
cf83abb16b | ||
|
|
b20af097b7 | ||
|
|
7057e05925 | ||
|
|
927cf6581c | ||
|
|
3df87f6f36 | ||
|
|
de44db56aa | ||
|
|
4220169206 | ||
|
|
3e1f770226 | ||
|
|
5d36c05278 | ||
|
|
2eb46dad90 | ||
|
|
73efe5ce2e | ||
|
|
975f86b678 | ||
|
|
0d17b389e7 | ||
|
|
1ef2f5c1be | ||
|
|
bac18c09bb | ||
|
|
3770f20a5e | ||
|
|
2a9d76bd9d | ||
|
|
9b4bdfa7a1 | ||
|
|
332721639c | ||
|
|
9cba70ce18 | ||
|
|
ebb82db529 | ||
|
|
ef8b3b966f | ||
|
|
ae89b33abf | ||
|
|
94851bc05d | ||
|
|
3f304a02ff | ||
|
|
6bfa7d5816 | ||
|
|
8898f9477b | ||
|
|
bd95847ae2 | ||
|
|
353c82570b | ||
|
|
25a4658a26 | ||
|
|
6bdd2076a6 | ||
|
|
6f734c789f | ||
|
|
ad3192c881 | ||
|
|
2f85cf7c29 | ||
|
|
2e9f9f5b59 | ||
|
|
aca6363a74 | ||
|
|
5082b8fdd2 | ||
|
|
653ac34265 | ||
|
|
4e11415097 | ||
|
|
32b7feef24 | ||
|
|
413bbc66e5 | ||
|
|
1997742231 | ||
|
|
0b3ba21776 | ||
|
|
f372529cdb | ||
|
|
fec58bf028 | ||
|
|
b855fca9be | ||
|
|
5d5c75dba7 | ||
|
|
93a1cc671f | ||
|
|
fea3d575b7 | ||
|
|
3631c271a6 | ||
|
|
b9b0698668 | ||
|
|
7beec7f584 | ||
|
|
a0b7aa2969 | ||
|
|
15846216bb | ||
|
|
70b6ccc523 | ||
|
|
19da0da0a4 | ||
|
|
7e6c53f7b8 | ||
|
|
e084b48959 | ||
|
|
6398df70d4 | ||
|
|
66ed66308a | ||
|
|
6b4c0db79a | ||
|
|
1065bcda00 | ||
|
|
0713c37a65 | ||
|
|
1831c1c0db | ||
|
|
73b12dd199 | ||
|
|
f825d19eb4 | ||
|
|
e7ad0680bb | ||
|
|
6a5b42949f | ||
|
|
aeebbd08f2 | ||
|
|
1928d1b581 | ||
|
|
338d163fd4 | ||
|
|
c0366fab96 | ||
|
|
bd12bd1809 | ||
|
|
9de339550b | ||
|
|
00b9462708 | ||
|
|
9ca3ae0caa | ||
|
|
4479d21b91 | ||
|
|
a69908a7c3 | ||
|
|
8f3e8aaa5d | ||
|
|
6e05338fbb | ||
|
|
65b788bc54 | ||
|
|
35ac3a9b23 | ||
|
|
7131aa3a03 | ||
|
|
b69912fe31 | ||
|
|
51027f6b30 | ||
|
|
43c4d153f4 | ||
|
|
dac75f0126 | ||
|
|
c3404e48f2 | ||
|
|
e7aa1cdb35 | ||
|
|
24495bc675 | ||
|
|
b17fd3b7a9 | ||
|
|
55fd4d6f76 | ||
|
|
7aa25a7bb4 | ||
|
|
6a92261735 | ||
|
|
9c0d543ccc | ||
|
|
567472a51b | ||
|
|
cb942c800d | ||
|
|
bf1af936fb | ||
|
|
397a6eb573 | ||
|
|
a34aeccb8c | ||
|
|
46eea7dec8 | ||
|
|
1ee2a1bfd3 | ||
|
|
01a267ff05 | ||
|
|
7bae0f5042 | ||
|
|
1d08a14647 | ||
|
|
d26caa5b3c | ||
|
|
d14e32a882 | ||
|
|
a06e623e5e | ||
|
|
cacff26f3d | ||
|
|
7e5b95c503 | ||
|
|
8395f411be | ||
|
|
849f9b8e44 | ||
|
|
c0779bb668 | ||
|
|
18727a0c9c | ||
|
|
3b35740b6d | ||
|
|
4f0a9aff04 | ||
|
|
a9edcd1a26 | ||
|
|
c057c3cf1b | ||
|
|
b3bfe79ec9 | ||
|
|
2e970d0289 | ||
|
|
d4b25ff89b | ||
|
|
dee25ff2e9 | ||
|
|
328b6a73c5 | ||
|
|
95cf2eff4a | ||
|
|
07c468f3ed | ||
|
|
c12fccb2f7 | ||
|
|
b5d6a4ff72 | ||
|
|
49748aa564 | ||
|
|
e366a294da | ||
|
|
f251e031d6 | ||
|
|
b2d2e3e9b6 | ||
|
|
7ffc0892f7 | ||
|
|
a5a060b7c0 | ||
|
|
ceda5da4c5 | ||
|
|
1047116ee3 | ||
|
|
408959ee00 | ||
|
|
c1f68ae297 | ||
|
|
c8817c1e59 | ||
|
|
ebdc6dd7ae | ||
|
|
cb8e9e618d | ||
|
|
67d7203082 | ||
|
|
bb77d76df1 | ||
|
|
e117b16f29 | ||
|
|
959af4027f | ||
|
|
d01e1a15db | ||
|
|
1cbb5eb68a | ||
|
|
3dff85c0e8 | ||
|
|
0c41896376 | ||
|
|
e0c941021d | ||
|
|
08b6773987 | ||
|
|
50a69a54f4 | ||
|
|
cd601e7106 | ||
|
|
901c601dce | ||
|
|
ede9552518 | ||
|
|
29226de8d2 | ||
|
|
22d909a378 | ||
|
|
0e82550588 | ||
|
|
169d69251c | ||
|
|
3bb3ab9bc0 | ||
|
|
334eea8592 | ||
|
|
67e4bc39c5 | ||
|
|
f5329ad495 | ||
|
|
046cde9ada | ||
|
|
320f175466 | ||
|
|
116a86327b | ||
|
|
0fa87b11e6 | ||
|
|
df11f271a3 | ||
|
|
351c277c60 | ||
|
|
c9078db9f5 | ||
|
|
eec3c46b74 | ||
|
|
f17edbda4e | ||
|
|
703ffd6717 | ||
|
|
35f1155250 | ||
|
|
76ed2d8fd1 | ||
|
|
cbf55ca58b | ||
|
|
39afc075ca | ||
|
|
5ea6764f40 | ||
|
|
e7168ca832 | ||
|
|
3c85f8b406 | ||
|
|
86a78b7e3a | ||
|
|
9e745fdd2d | ||
|
|
d5e44ffb89 | ||
|
|
50422cceb4 | ||
|
|
cf92ee43f8 | ||
|
|
9097421ad6 | ||
|
|
288e61784e | ||
|
|
1dcdea964a | ||
|
|
2d1ccf0e19 | ||
|
|
21e036dfae | ||
|
|
4bf5dfb8b1 | ||
|
|
51f975ffe9 | ||
|
|
97cfb84bdc | ||
|
|
bd4da40310 | ||
|
|
94a05d2c28 | ||
|
|
531c9ee420 | ||
|
|
bdc95e78dd | ||
|
|
f61664909f | ||
|
|
fac3e72dd9 | ||
|
|
d1a06ab709 | ||
|
|
b282e8ce98 | ||
|
|
ff86d51220 | ||
|
|
37d65916b9 | ||
|
|
1844d1f524 | ||
|
|
8288336287 | ||
|
|
e987f912f1 | ||
|
|
12cda7d93f | ||
|
|
8ffae9ac12 | ||
|
|
9b0fe9411e | ||
|
|
33e5f888ea | ||
|
|
f2ec507157 | ||
|
|
a1bf353353 | ||
|
|
66466d60af | ||
|
|
e273df8bc3 | ||
|
|
d91631a9dc | ||
|
|
083862691c | ||
|
|
2e31171fe5 | ||
|
|
702911eb66 | ||
|
|
b85b971e20 | ||
|
|
64276396ce | ||
|
|
aa7755af5b | ||
|
|
5d5f7d3252 | ||
|
|
587c18c66a | ||
|
|
ae24dd37b8 | ||
|
|
b74fb3f099 | ||
|
|
b7fc9159ef | ||
|
|
70aeb00aaf | ||
|
|
8b4fb167d7 | ||
|
|
9fcefcffc2 | ||
|
|
3fca59850c | ||
|
|
6313e0b064 | ||
|
|
dbd643f6ab | ||
|
|
aacbabb439 | ||
|
|
23134ae5fd | ||
|
|
1d60fb7de9 | ||
|
|
07ba16593f | ||
|
|
cf71698619 | ||
|
|
10ebdeef09 | ||
|
|
a7286d4ca4 | ||
|
|
350f296725 | ||
|
|
9ea986f0e6 | ||
|
|
d26ff3900c | ||
|
|
e0a5e94f5c | ||
|
|
ef0c06f485 | ||
|
|
da99fb7987 | ||
|
|
07de6cd17a | ||
|
|
e0fe706032 | ||
|
|
4e65bd946d | ||
|
|
c055395157 | ||
|
|
feb3eab3cd | ||
|
|
5c22432b85 | ||
|
|
3f2ad4c37a | ||
|
|
90167a73eb | ||
|
|
17f6203d99 | ||
|
|
0c3ceede24 | ||
|
|
d666255254 | ||
|
|
3a79ff636b | ||
|
|
cbf1281b25 | ||
|
|
7e25878eeb | ||
|
|
5c2fd1f2b5 | ||
|
|
3d904cbd31 | ||
|
|
abb45289ee | ||
|
|
3a39d9d6e2 | ||
|
|
5f5cc13d1a | ||
|
|
fb8102bd01 | ||
|
|
f3498ebbe1 | ||
|
|
7fe4f52956 | ||
|
|
0d1d5a6ad7 | ||
|
|
2da132393f | ||
|
|
8649805ab3 | ||
|
|
7413bf57ab | ||
|
|
1107f0e9e2 | ||
|
|
1eb137e936 | ||
|
|
75fb196660 | ||
|
|
b1293a4b49 | ||
|
|
e1982b177e | ||
|
|
ea758b4f5b | ||
|
|
7dabd1d028 | ||
|
|
2c9bc54010 | ||
|
|
55fc68eb1b | ||
|
|
b6f22b7736 | ||
|
|
f8b2ddde8b | ||
|
|
64c6589448 | ||
|
|
abec656058 | ||
|
|
7598b94ea7 | ||
|
|
5987cae5b6 | ||
|
|
9b85291a9d | ||
|
|
d1445a7972 | ||
|
|
35959261af | ||
|
|
2eed390451 | ||
|
|
40c08a09fd | ||
|
|
08dc0c6c43 | ||
|
|
90bdb0dbf1 | ||
|
|
f9ddc875d5 | ||
|
|
02bae8a12d | ||
|
|
41f1de86b7 | ||
|
|
4b391dd642 | ||
|
|
1c4685fa8f | ||
|
|
f28ca6726e | ||
|
|
ce1e017d91 | ||
|
|
06fafd1eea | ||
|
|
569963f849 | ||
|
|
a175c97dcd | ||
|
|
17e7e5c890 | ||
|
|
ed5481f173 | ||
|
|
ff1fc44b1a | ||
|
|
c6ffe7411b | ||
|
|
d7939c72c6 | ||
|
|
6546b983c4 | ||
|
|
a7bd6daf25 | ||
|
|
07dfea17e6 | ||
|
|
2213cd9241 | ||
|
|
e146595a1a | ||
|
|
7dd7279097 | ||
|
|
6ee53e8d6d | ||
|
|
c81ea2ed50 | ||
|
|
6f1fc641e4 | ||
|
|
c9210003c9 | ||
|
|
2e2976bd78 | ||
|
|
fc0dfc83be | ||
|
|
ccf703e4bc | ||
|
|
bbe3a3bb15 | ||
|
|
6377424320 | ||
|
|
8c787292a6 | ||
|
|
770a99c4a2 | ||
|
|
903478524c | ||
|
|
b008017174 | ||
|
|
3c03bf92c4 | ||
|
|
e1c410be21 | ||
|
|
0120d3f226 | ||
|
|
25dae82cba | ||
|
|
496e8ad2b7 | ||
|
|
2488151757 | ||
|
|
2418e6ae64 | ||
|
|
168a14d2b5 | ||
|
|
9232f31778 | ||
|
|
c08226e1d3 | ||
|
|
9c324b1817 | ||
|
|
36880dadf0 | ||
|
|
25b5db0e23 | ||
|
|
9415d2e8d3 | ||
|
|
2af9d1dd38 | ||
|
|
5033ca0373 | ||
|
|
040216ce3c | ||
|
|
5a67648b7d | ||
|
|
99c29fe86b | ||
|
|
77b4858d5f | ||
|
|
27afadfcdc | ||
|
|
59596a22e5 | ||
|
|
4342f0f212 | ||
|
|
94d205bd59 | ||
|
|
405331d177 | ||
|
|
4015305bd7 | ||
|
|
ffe2851e4f | ||
|
|
bcd2fc8e91 | ||
|
|
6ade5a4f63 | ||
|
|
718722c76f | ||
|
|
e39845afc0 | ||
|
|
0896465891 | ||
|
|
ffa1059b26 | ||
|
|
be85f01756 | ||
|
|
53eafb8c7b | ||
|
|
247d82184a | ||
|
|
63b5346308 | ||
|
|
7a41ab25e4 | ||
|
|
9b87b4dfe4 | ||
|
|
6e1160968d | ||
|
|
5e250c3950 | ||
|
|
0283b88023 | ||
|
|
ee8979aa09 | ||
|
|
78286f22a9 | ||
|
|
9dc9cd3f2b | ||
|
|
3fbd2abb37 | ||
|
|
2f2063c515 | ||
|
|
cd1a67d1ee | ||
|
|
2568703376 | ||
|
|
1fbe93d686 | ||
|
|
4072bbf406 | ||
|
|
e7831f82a7 | ||
|
|
10757f0717 | ||
|
|
e1619b66c0 | ||
|
|
b77f727ed5 | ||
|
|
6eb35caea8 | ||
|
|
fa21d28c90 | ||
|
|
e6fb1ca2b2 | ||
|
|
7cc9abf477 | ||
|
|
a1452eff65 | ||
|
|
62f76f8bae | ||
|
|
9a6f33ffc2 | ||
|
|
e4a1fe741b | ||
|
|
77bcdd92c7 | ||
|
|
0394461e2e | ||
|
|
37b4f2d864 | ||
|
|
b72405806e | ||
|
|
a880c3dbe7 | ||
|
|
044949dc88 | ||
|
|
d71d538de8 | ||
|
|
14665230ff | ||
|
|
02c625ba0d | ||
|
|
0fb4150c96 | ||
|
|
bdbe49efaf | ||
|
|
018c43cdc4 | ||
|
|
8b94a98466 | ||
|
|
3b34a42f10 | ||
|
|
bdbd536cdd | ||
|
|
faf12f4d18 | ||
|
|
074c102ffe | ||
|
|
85e07c639d | ||
|
|
4d342548fa | ||
|
|
097e5e738e | ||
|
|
ca5594a985 | ||
|
|
af93a12b8f | ||
|
|
6ba66543ff | ||
|
|
228078c07b | ||
|
|
21a369dd58 | ||
|
|
f8014f1bf4 | ||
|
|
176f0d94cb | ||
|
|
b6abdcb357 | ||
|
|
47f231a763 | ||
|
|
8d1696bc19 | ||
|
|
6f19b984d0 | ||
|
|
88f656ade5 | ||
|
|
abe12a318a | ||
|
|
a23b619951 | ||
|
|
9ce840347a | ||
|
|
471b63dd83 | ||
|
|
f50f0b582a | ||
|
|
1e8cf244be | ||
|
|
f428d8bf35 | ||
|
|
6ad34c0ace | ||
|
|
7b86984312 | ||
|
|
62b1c314d6 | ||
|
|
7041098e9f | ||
|
|
0e5c2af981 | ||
|
|
d5a236f793 | ||
|
|
2955ac6535 | ||
|
|
da454c0762 | ||
|
|
e694ed0a43 | ||
|
|
0e36246192 | ||
|
|
933ca8d0d8 | ||
|
|
426355de20 | ||
|
|
a86d5a6a69 | ||
|
|
0f42bbb062 | ||
|
|
0d5e665c3a | ||
|
|
81aae5b7cf | ||
|
|
4ec1599b0e | ||
|
|
d6d02b268e | ||
|
|
31ab202744 | ||
|
|
3cc7123a9a | ||
|
|
42de9abfe3 | ||
|
|
c6465b2a94 | ||
|
|
462c6613fc | ||
|
|
f05307da73 | ||
|
|
119d648a93 | ||
|
|
b2c14544ab | ||
|
|
8eb09bd556 | ||
|
|
bbae163a6e | ||
|
|
2bd61aface | ||
|
|
124c22a5ee | ||
|
|
cf0df99bf1 | ||
|
|
f5dc247fb3 | ||
|
|
534b98feaa | ||
|
|
c4e7811307 | ||
|
|
b5b51d428f | ||
|
|
900cfac1aa | ||
|
|
a4eb028801 | ||
|
|
82b720b44e | ||
|
|
42b6e99ada | ||
|
|
3320d5e10c | ||
|
|
4495d3f56c | ||
|
|
66ddfd7a9a | ||
|
|
6963e98c28 | ||
|
|
d345fbd4b2 | ||
|
|
56c97bc7af | ||
|
|
a125547110 | ||
|
|
c053aa2d01 | ||
|
|
470ecffbaa | ||
|
|
b973d13c83 | ||
|
|
470e9264e2 | ||
|
|
ae28886b2f | ||
|
|
4ff387cc28 | ||
|
|
ed0102b212 | ||
|
|
19263c985b | ||
|
|
dff7171d3c | ||
|
|
4a6b99b15d | ||
|
|
4dd75fbd47 | ||
|
|
07eef3d26c | ||
|
|
7583ad802b | ||
|
|
35fb76d13f | ||
|
|
3584d8a445 | ||
|
|
69e4ba1f95 | ||
|
|
32428557b3 | ||
|
|
a850eb4269 | ||
|
|
9eee7f156e | ||
|
|
9aa05e1cc1 | ||
|
|
d92e8442ab | ||
|
|
66f3a2218c | ||
|
|
2c9269391b | ||
|
|
9671e29a72 | ||
|
|
80c5737ffd | ||
|
|
40a61167e0 | ||
|
|
2c71d36662 | ||
|
|
fd8ad05ca4 | ||
|
|
adcbb6c482 | ||
|
|
7b9c4b35a6 | ||
|
|
2049c2bebc | ||
|
|
7583174edd | ||
|
|
f82a629877 | ||
|
|
760354188b | ||
|
|
53dca9e338 | ||
|
|
5c71a4f82f | ||
|
|
f8998aaed7 | ||
|
|
f6a07f4c40 | ||
|
|
9df2258a70 | ||
|
|
bf2b022ec7 | ||
|
|
c3f1050dce | ||
|
|
50631ee265 | ||
|
|
2c43032810 | ||
|
|
f9b1ea70de | ||
|
|
12897231a5 | ||
|
|
256b7517ed | ||
|
|
b961a8555b | ||
|
|
f695857d48 | ||
|
|
8f07acb60a | ||
|
|
121a378259 | ||
|
|
2cd0e7a796 | ||
|
|
3474c48c47 | ||
|
|
5b69879c20 | ||
|
|
a6195462f2 | ||
|
|
cd165a37d6 | ||
|
|
06770c756a | ||
|
|
8e7788f06c | ||
|
|
f05eb3c7e2 | ||
|
|
47d5e09e2f | ||
|
|
6dcc5c813c | ||
|
|
779df186e0 | ||
|
|
f112a83588 | ||
|
|
e94f8f8965 | ||
|
|
5711d11c4b | ||
|
|
98fa05dd4f | ||
|
|
11e64ec3cc | ||
|
|
a946cdfb45 | ||
|
|
f0135edcd3 | ||
|
|
900e5eda01 | ||
|
|
f02e489c8e | ||
|
|
204c87b7cf | ||
|
|
ce4395b8e6 | ||
|
|
ec10c9f962 | ||
|
|
709a591d26 | ||
|
|
58f9ca8516 | ||
|
|
f283468add | ||
|
|
2b1b46914e | ||
|
|
2fd1e6f406 | ||
|
|
3cc1286953 | ||
|
|
7621e58d88 | ||
|
|
4baed861eb | ||
|
|
0a3a067b12 | ||
|
|
2af9d020c0 | ||
|
|
3a60239815 | ||
|
|
571cb503ef | ||
|
|
f2f53cb1ef | ||
|
|
aa815390e2 | ||
|
|
aceb75e0c6 | ||
|
|
7b7b989c1b | ||
|
|
8aea8ea50e | ||
|
|
a3417b7410 | ||
|
|
66de656c5c | ||
|
|
9b8d1dbf30 | ||
|
|
dab379e16e | ||
|
|
aad5196cac | ||
|
|
a002c152e8 | ||
|
|
96a582a590 | ||
|
|
29b28c2a09 | ||
|
|
1b8f2ce23c | ||
|
|
6100a734cc | ||
|
|
008fbf861a | ||
|
|
596783bab4 | ||
|
|
66125c27cb | ||
|
|
44abde194b | ||
|
|
c71c9536fe | ||
|
|
11f6ae0310 | ||
|
|
10b5a9ec29 | ||
|
|
9c77ecf886 | ||
|
|
7071b68c79 | ||
|
|
73cb5c9bb7 | ||
|
|
4c9344e402 | ||
|
|
033553a2a8 | ||
|
|
bd8250f100 | ||
|
|
76d466b89f | ||
|
|
0979110095 | ||
|
|
591776ab6c | ||
|
|
b18ddf18ac | ||
|
|
6cad48361b | ||
|
|
baa59820f1 | ||
|
|
c03207f3eb | ||
|
|
e039531ddd | ||
|
|
e94a19a522 | ||
|
|
1aedc4e035 | ||
|
|
6fa6ac2899 | ||
|
|
6dee37ee72 | ||
|
|
64a958a799 | ||
|
|
d36abd2c8e | ||
|
|
b1dfc8a7ea | ||
|
|
c78fc4f85a | ||
|
|
9de0f3d847 | ||
|
|
42cc6d2186 | ||
|
|
b0a2bb437a | ||
|
|
51e72e696d | ||
|
|
9183f13aeb | ||
|
|
28a936be79 |
13
.dockerignore
Executable file
@@ -0,0 +1,13 @@
|
||||
.dockerignore
|
||||
.env
|
||||
.git
|
||||
.github
|
||||
.gitignore
|
||||
docker-compose.yml
|
||||
Dockerfile
|
||||
dockerfiles/LICENSE
|
||||
dockerfiles/README.md
|
||||
docs
|
||||
LICENSE.txt
|
||||
README.md
|
||||
CONTRIBUTING
|
||||
16
.env
Executable file
@@ -0,0 +1,16 @@
|
||||
#GLOBAL PATH VARIABLES
|
||||
|
||||
APP_DATA_LOCATION=/path/to/docker_appdata
|
||||
APP_CONFIG_LOCATION=/path/to/docker_config
|
||||
LOGS_LOCATION=/path/to/docker_logs
|
||||
|
||||
#ENVIRONMENT VARIABLES
|
||||
|
||||
TZ=Europe/Paris
|
||||
HOST_USER_ID=1000
|
||||
HOST_USER_GID=1000
|
||||
PORT=20211
|
||||
|
||||
#DEVELOPMENT VARIABLES
|
||||
|
||||
DEV_LOCATION=/path/to/local/source/code
|
||||
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Executable file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
42
.github/ISSUE_TEMPLATE/i-have-an-issue.md
vendored
Executable file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
name: I have an issue
|
||||
about: Describe this issue template's purpose here.
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the issue**
|
||||
|
||||
|
||||
**Paste last few lines from `pialert.log`**
|
||||
|
||||
> You can use `tail -20 /home/pi/pialert/front/log/pialert.log`
|
||||
|
||||
```
|
||||
paste_here
|
||||
```
|
||||
|
||||
**Paste your `pialert.conf` (remove personal info)**
|
||||
|
||||
```
|
||||
paste_here
|
||||
```
|
||||
|
||||
**Paste your `docker-compose.yml` and `.env` (remove personal info)**
|
||||
|
||||
`docker-compose.yml`
|
||||
|
||||
```
|
||||
paste_here
|
||||
```
|
||||
|
||||
`.env`
|
||||
|
||||
```
|
||||
paste_here
|
||||
```
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
64
.github/workflows/docker_dev.yml
vendored
Executable file
@@ -0,0 +1,64 @@
|
||||
---
|
||||
name: docker
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '**'
|
||||
tags:
|
||||
- '*.*.*'
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
docker_dev:
|
||||
runs-on: ubuntu-latest
|
||||
if: contains(github.event.head_commit.message, 'PUSHPROD') != 'True'
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Set up dynamic build ARGs
|
||||
id: getargs
|
||||
run: echo "version=$(cat ./stable/VERSION)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
with:
|
||||
# list of Docker images to use as base name for tags
|
||||
images: |
|
||||
jokobsk/pi.alert_dev
|
||||
# generate Docker tags based on the following events/attributes
|
||||
tags: |
|
||||
type=raw,value=latest
|
||||
type=schedule
|
||||
type=ref,event=branch
|
||||
type=ref,event=pr
|
||||
type=semver,pattern={{version}}
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
type=semver,pattern={{major}}
|
||||
type=sha
|
||||
|
||||
- name: Login to DockerHub
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
70
.github/workflows/docker_prod.yml
vendored
Executable file
@@ -0,0 +1,70 @@
|
||||
# This workflow uses actions that are not certified by GitHub.
|
||||
# They are provided by a third-party and are governed by
|
||||
# separate terms of service, privacy policy, and support
|
||||
# documentation.
|
||||
|
||||
# GitHub recommends pinning actions to a commit SHA.
|
||||
# To get a newer version, you will need to update the SHA.
|
||||
# You can also reference a tag or branch, but the action may change without warning.
|
||||
|
||||
name: Publish Docker image
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
tags:
|
||||
- '*.*.*'
|
||||
jobs:
|
||||
docker:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Set up dynamic build ARGs
|
||||
id: getargs
|
||||
run: echo "version=$(cat ./stable/VERSION)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
with:
|
||||
# list of Docker images to use as base name for tags
|
||||
images: |
|
||||
jokobsk/pi.alert
|
||||
# generate Docker tags based on the following events/attributes
|
||||
tags: |
|
||||
type=semver,pattern={{version}},value=${{ inputs.version }}
|
||||
type=semver,pattern={{major}}.{{minor}},value=${{ inputs.version }}
|
||||
type=semver,pattern={{major}},value=${{ inputs.version }}
|
||||
type=ref,event=branch,suffix=-{{ sha }}
|
||||
type=ref,event=pr
|
||||
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/') }}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- name: Login to DockerHub
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
13
.gitignore
vendored
Executable file
@@ -0,0 +1,13 @@
|
||||
.vscode
|
||||
.DS_Store
|
||||
config/pialert.conf
|
||||
db/*
|
||||
db/pialert.db
|
||||
front/log/*
|
||||
front/plugins/**/*.log
|
||||
**/%40eaDir/
|
||||
**/@eaDir/
|
||||
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
14
CONTRIBUTING
Executable file
@@ -0,0 +1,14 @@
|
||||
# Contributing to this project
|
||||
|
||||
## Issues, bugs, feature requests
|
||||
|
||||
The issue tracker is the preferred channel for bug reports, features requests and submitting pull requests.
|
||||
|
||||
Before submitting a new issue please spend a couple of minutes on research:
|
||||
|
||||
* Check [🛑 Common issues](https://github.com/jokob-sk/Pi.Alert/tree/main/dockerfiles#-common-issues)
|
||||
* Check [💡 Closed issues](https://github.com/jokob-sk/Pi.Alert/issues?q=is%3Aissue+is%3Aclosed) if a similar issue was solved in the past.
|
||||
|
||||
## Pull-requests (PRs)
|
||||
|
||||
If you submit a PR please do check that your changes are backward compatible with existing installations. Existing features should be always preserved.
|
||||
54
Dockerfile
Executable file
@@ -0,0 +1,54 @@
|
||||
FROM debian:bullseye-slim
|
||||
|
||||
# default UID and GID
|
||||
ENV USER=pi USER_ID=1000 USER_GID=1000 PORT=20211
|
||||
#TZ=Europe/London
|
||||
|
||||
# Todo, figure out why using a workdir instead of full paths don't work
|
||||
# Todo, do we still need all these packages? I can already see sudo which isn't needed
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install --no-install-recommends tini snmp ca-certificates curl libwww-perl arp-scan perl apt-utils cron sudo nginx-light php php-cgi php-fpm php-sqlite3 php-curl sqlite3 dnsutils net-tools python3 iproute2 nmap python3-pip zip -y \
|
||||
&& pip3 install requests paho-mqtt scapy cron-converter pytz json2table dhcp-leases pyunifi \
|
||||
&& update-alternatives --install /usr/bin/python python /usr/bin/python3 10 \
|
||||
&& apt-get clean autoclean \
|
||||
&& apt-get autoremove \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& rm -rf /var/www/html \
|
||||
&& ln -s /home/pi/pialert/front /var/www/html
|
||||
|
||||
# create pi user and group
|
||||
# add root and www-data to pi group so they can r/w files and db
|
||||
RUN groupadd --gid "${USER_GID}" "${USER}" && \
|
||||
useradd \
|
||||
--uid ${USER_ID} \
|
||||
--gid ${USER_GID} \
|
||||
--create-home \
|
||||
--shell /bin/bash \
|
||||
${USER} && \
|
||||
usermod -a -G ${USER_GID} root && \
|
||||
usermod -a -G ${USER_GID} www-data
|
||||
|
||||
COPY --chmod=775 --chown=${USER_ID}:${USER_GID} . /home/pi/pialert/
|
||||
|
||||
# Pi.Alert
|
||||
RUN rm /etc/nginx/sites-available/default \
|
||||
&& ln -s /home/pi/pialert/install/default /etc/nginx/sites-available/default \
|
||||
&& sed -ie 's/listen 80/listen '${PORT}'/g' /etc/nginx/sites-available/default \
|
||||
# run the hardware vendors update
|
||||
&& /home/pi/pialert/back/update_vendors.sh \
|
||||
# Create a backup of the pialert.conf to be used if the user didn't supply a configuration file
|
||||
&& cp /home/pi/pialert/config/pialert.conf /home/pi/pialert/back/pialert.conf_bak \
|
||||
# Create a backup of the pialert.db to be used if the user didn't supply a database
|
||||
&& cp /home/pi/pialert/db/pialert.db /home/pi/pialert/back/pialert.db_bak \
|
||||
# Create a buildtimestamp.txt to later check if a new version was released
|
||||
&& date +%s > /home/pi/pialert/front/buildtimestamp.txt
|
||||
|
||||
ENTRYPOINT ["tini", "--"]
|
||||
|
||||
CMD ["/home/pi/pialert/dockerfiles/start.sh"]
|
||||
|
||||
|
||||
|
||||
|
||||
## command to build docker: DOCKER_BUILDKIT=1 docker build . --iidfile dockerID
|
||||
2
FUNDING.yml
Executable file
@@ -0,0 +1,2 @@
|
||||
github: jokob-sk
|
||||
patreon: 84385063
|
||||
0
LICENSE.txt
Normal file → Executable file
164
README.md
Normal file → Executable file
@@ -1,27 +1,23 @@
|
||||
# Pi.Alert
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
|
||||
WIFI / LAN intruder detector.
|
||||
💻🔍 WIFI / LAN intruder detector.
|
||||
|
||||
Scan the devices connected to your WIFI / LAN and alert you the connection of
|
||||
unknown devices. It also warns the disconnection of "always connected" devices.
|
||||
Scans for devices connected to your WIFI / LAN and alerts you if new and unknown devices are found.
|
||||
|
||||
![Main screen][main]
|
||||
|
||||
*(Apologies for my English and my limited knowledge of Python, php and
|
||||
JavaScript)*
|
||||
# 🐳 Docker image
|
||||
[](https://github.com/jokob-sk/Pi.Alert/actions/workflows/docker_prod.yml)
|
||||
[](https://github.com/jokob-sk/Pi.Alert)
|
||||
[](https://hub.docker.com/r/jokobsk/pi.alert)
|
||||
[](https://hub.docker.com/r/jokobsk/pi.alert)
|
||||
[](https://hub.docker.com/r/jokobsk/pi.alert)
|
||||
|
||||
## How it works
|
||||
The system continuously scans the network for:
|
||||
- New devices
|
||||
- New connections (re-connections)
|
||||
- Disconnections
|
||||
- "Always Connected" devices down
|
||||
- Devices IP changes
|
||||
- Internet IP address changes
|
||||
🐳 [Docker hub](https://registry.hub.docker.com/r/jokobsk/pi.alert) | 📄 [Dockerfile](https://github.com/jokob-sk/Pi.Alert/blob/main/Dockerfile) | 📚 [Docker instructions](https://github.com/jokob-sk/Pi.Alert/blob/main/dockerfiles/README.md) | 🆕 [Release notes](https://github.com/jokob-sk/Pi.Alert/releases)
|
||||
|
||||
## Scan Methods
|
||||
Up to three scanning methods are used:
|
||||
## 🔍 Scan Methods
|
||||
The system continuously scans the network for, **New devices**, **New connections** (re-connections), **Disconnections**, **"Always Connected" devices down**, Devices **IP changes** and **Internet IP address changes**. Scanning methods are:
|
||||
- **Method 1: arp-scan**. The arp-scan system utility is used to search
|
||||
for devices on the network using arp frames.
|
||||
- **Method 2: Pi-hole**. This method is optional and complementary to
|
||||
@@ -33,89 +29,89 @@ Up to three scanning methods are used:
|
||||
examines the DHCP leases (addresses assigned) to find active devices
|
||||
that were not discovered by the other methods.
|
||||
|
||||
## Components
|
||||
The system consists of two parts:
|
||||
## 🧩 Integrations
|
||||
- [Apprise](https://hub.docker.com/r/caronc/apprise), [Pushsafer](https://www.pushsafer.com/), [NTFY](https://ntfy.sh/)
|
||||
- [Webhooks](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/WEBHOOK_N8N.md) ([sample JSON](docs/webhook_json_sample.json))
|
||||
- Home Assistant via [MQTT](https://www.home-assistant.io/integrations/mqtt/) - discovery ~10s per device, use [MQTT Explorer](https://mqtt-explorer.com/) to delete devices
|
||||
- [API endpoint](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/API.md)
|
||||
- [Plugin system](https://github.com/jokob-sk/Pi.Alert/tree/main/front/plugins) for custom script monitoring
|
||||
|
||||
### Back
|
||||
In charge of:
|
||||
- Scan the network searching connected devices using the scanning methods
|
||||
described
|
||||
- Store the information in the DB
|
||||
- Report the changes detected by e-mail
|
||||
|
||||
| ![Report 1][report1] | ![Report 2][report2] |
|
||||
| -------------------- | -------------------- |
|
||||
|
||||
### Front
|
||||
A web frontal that allows:
|
||||
- Manage the devices inventory and the characteristics
|
||||
- Display in a visual way all the information collected by the back
|
||||
- Sessions
|
||||
- Connected devices
|
||||
- Favorites
|
||||
- Events
|
||||
- Presence
|
||||
- Concurrent devices
|
||||
- Down alerts
|
||||
- IP's
|
||||
- ...
|
||||
|
||||
| ![Screen 1][screen1] | ![Screen 2][screen2] |
|
||||
| -------------------- | -------------------- |
|
||||
| ![Screen 3][screen3] | ![Screen 4][screen4] |
|
||||
|
||||
|
||||
# Installation
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
Initially designed to run on a Raspberry PI, probably it can run on many other
|
||||
Linux distributions.
|
||||
|
||||
- [Installation Guide](docs/INSTALL.md)
|
||||
|
||||
|
||||
## Device Management
|
||||
# 📥 Installation
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
|
||||
- [Device Management instructions](docs/DEVICE_MANAGEMENT.md)
|
||||
⚠ Only tested as a [docker container - follow these instructions here](dockerfiles/README.md).
|
||||
> Check out [leiweibau's fork](https://github.com/leiweibau/Pi.Alert/) if you want to install Pi.Alert on the server directly or original instructions for [pucherot's original code](https://github.com/pucherot/Pi.Alert/)
|
||||
|
||||
# 📑 Features
|
||||
- Display:
|
||||
- Sessions, Connected devices, Favorites, Events, Presence, Concurrent devices, Down alerts, IP's
|
||||
- Manual Nmap scans, Optional speedtest for Device "Internet"
|
||||
- Simple Network relationship display
|
||||
- Maintenance tasks and Settings like:
|
||||
- Theme Selection (blue, red, green, yellow, black, purple) and Light/Dark-Mode Switch
|
||||
- DB maintenance, Backup, Restore tools and CSV Export / Import
|
||||
- Simple login Support
|
||||
- 🌟[Plugin system](https://github.com/jokob-sk/Pi.Alert/tree/main/front/plugins)
|
||||
- Create custom plugins with automatically generated settings and UI.
|
||||
- Monitor anything for changes
|
||||
- Check the [instructions](https://github.com/jokob-sk/Pi.Alert/tree/main/front/plugins) carefully if you are up for a challenge! Current plugins include:
|
||||
- Detecting Rogue DHCP servers via NMAP
|
||||
- Monitoring HTTP status changes of domains/URLs
|
||||
- Import devices from DHCP.leases files, a UniFi controller, or an SNMP enabled router
|
||||
- Creation of dummy devices to visualize your [network map](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/NETWORK_TREE.md)
|
||||
|
||||
| ![Screen 1][screen1] | ![Screen 2][screen2] | ![Screen 5][screen5] |
|
||||
|----------------------|----------------------| ----------------------|
|
||||
| ![Screen 3][screen3] | ![Screen 4][screen4] | ![Screen 6][screen6] |
|
||||
| ![Screen 8][screen8] | ![Report 2][report2] | ![Screen 9][screen9] |
|
||||
|
||||
|
||||
## Other useful info
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
### 🔗 Other Alternatives
|
||||
|
||||
### [Versions History](docs/VERSIONS_HISTORY.md)
|
||||
- [WatchYourLAN](https://github.com/aceberg/WatchYourLAN) - Lightweight network IP scanner with web GUI (Open source)
|
||||
- [Fing](https://www.fing.com/) - Network scanner app for your Internet security (Commercial, Phone App, Proprietary hardware)
|
||||
|
||||
### Powered by:
|
||||
| Product | Objetive |
|
||||
| ------------ | -------------------------------------- |
|
||||
| Python | Programming language for the Back |
|
||||
| PHP | Programming language for the Front-end |
|
||||
| JavaScript | Programming language for the Front-end |
|
||||
| Bootstrap | Front-end framework |
|
||||
| Admin.LTE | Bootstrap template |
|
||||
| FullCalendar | Calendar component |
|
||||
| Sqlite | DB engine |
|
||||
| Lighttpd | Webserver |
|
||||
| arp-scan | Scan network using arp commands |
|
||||
| Pi.hole | DNS Server with Ad-block |
|
||||
| dnsmasq | DHCP Server |
|
||||
### 📚 Documentation
|
||||
|
||||
- Initial Docker Setup: [Docker instructions](https://github.com/jokob-sk/Pi.Alert/blob/main/dockerfiles/README.md)
|
||||
- App Usage and Configuration: [All Documentation](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/README.md)
|
||||
|
||||
### License
|
||||
GPL 3.0
|
||||
[Read more here](LICENSE.txt)
|
||||
|
||||
### Contact
|
||||
pi.alert.application@gmail.com
|
||||
GPL 3.0 | [Read more here](LICENSE.txt) | Source of the [animated GIF (Loading Animation)](https://commons.wikimedia.org/wiki/File:Loading_Animation.gif) | Source of the [selfhosted Fonts](https://github.com/adobe-fonts/source-sans)
|
||||
|
||||
***Suggestions and comments are welcome***
|
||||
### 🥇 Special thanks
|
||||
|
||||
This code is a collaborative body of work, with special thanks to:
|
||||
|
||||
- 🏆 [pucherot/Pi.Alert](https://github.com/pucherot/Pi.Alert) is the original creator od PiAlert
|
||||
- [leiweibau](https://github.com/leiweibau/Pi.Alert): Dark mode (and much more)
|
||||
- [Macleykun](https://github.com/Macleykun): Help with Dockerfile clean-up
|
||||
- [Final-Hawk](https://github.com/Final-Hawk): Help with NTFY, styling and other fixes
|
||||
- [TeroRERO](https://github.com/terorero): Spanish translation
|
||||
- [Data-Monkey](https://github.com/Data-Monkey): Split-up of the python.py file and more
|
||||
- Please see the [Git contributors](https://github.com/jokob-sk/Pi.Alert/graphs/contributors) for a full list of people and their contributions to the project
|
||||
|
||||
## ☕ Support me
|
||||
|
||||
<a href="https://github.com/sponsors/jokob-sk" target="_blank"><img src="https://i.imgur.com/X6p5ACK.png" alt="Sponsor Me on GitHub" style="height: 30px !important;width: 117px !important;" width="150px" ></a>
|
||||
<a href="https://www.buymeacoffee.com/jokobsk" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 30px !important;width: 117px !important;" width="117px" height="30px" ></a>
|
||||
<a href="https://www.patreon.com/user?u=84385063" target="_blank"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Patreon_logo_with_wordmark.svg/512px-Patreon_logo_with_wordmark.svg.png" alt="Support me on patreon" style="height: 30px !important;width: 117px !important;" width="117px" ></a>
|
||||
|
||||
BTC: 1N8tupjeCK12qRVU2XrV17WvKK7LCawyZM
|
||||
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
[main]: ./docs/img/1_devices.jpg "Main screen"
|
||||
[screen1]: ./docs/img/2_1_device_details.jpg "Screen 1"
|
||||
[screen2]: ./docs/img/2_2_device_sessions.jpg "Screen 2"
|
||||
[screen3]: ./docs/img/2_3_device_presence.jpg "Screen 3"
|
||||
[screen4]: ./docs/img/3_presence.jpg "Screen 4"
|
||||
[main]: ./docs/img/devices_split.png "Main screen"
|
||||
[screen1]: ./docs/img/device_details.png "Screen 1"
|
||||
[screen2]: ./docs/img/events.png "Screen 2"
|
||||
[screen3]: ./docs/img/presence.png "Screen 3"
|
||||
[screen4]: ./docs/img/maintenance.png "Screen 4"
|
||||
[screen5]: ./docs/img/network.png "Screen 5"
|
||||
[screen6]: ./docs/img/settings.png "Screen 6"
|
||||
[screen7]: ./docs/img/help_faq.png "Screen 7"
|
||||
[screen8]: ./docs/img/plugins_webmon.png "Screen 8"
|
||||
[screen9]: ./docs/img/device_nmap.png "Screen 9"
|
||||
[report1]: ./docs/img/4_report_1.jpg "Report sample 1"
|
||||
[report2]: ./docs/img/4_report_2.jpg "Report sample 2"
|
||||
[main_dark]: /docs/img/1_devices_dark.jpg "Main screen dark"
|
||||
[maintain_dark]: /docs/img/5_maintain.jpg "Maintain screen dark"
|
||||
|
||||
|
||||
141
back/pialert-cli
Executable file
@@ -0,0 +1,141 @@
|
||||
#!/bin/bash
|
||||
SCRIPT=$(readlink -f $0)
|
||||
SCRIPTPATH=`dirname $SCRIPT`
|
||||
PIA_CONF_FILE=${SCRIPTPATH}'/../config/pialert.conf'
|
||||
|
||||
case $1 in
|
||||
|
||||
help)
|
||||
echo "pialert-cli v0.1 (https://github.com/leiweibau/Pi.Alert)"
|
||||
echo "Usage: pialert-cli <command>"
|
||||
echo ""
|
||||
echo "The is a list of supported commands:"
|
||||
echo ""
|
||||
echo " set_login - Sets the parameter PIALERT_WEB_PROTECTION in the config file to TRUE"
|
||||
echo " - If the parameter is not present, it will be created. Additionally the"
|
||||
echo " default password '123456' is set."
|
||||
echo ""
|
||||
echo " unset_login - Sets the parameter PIALERT_WEB_PROTECTION in the config file to FALSE"
|
||||
echo " - If the parameter is not present, it will be created. Additionally the"
|
||||
echo " default password '123456' is set."
|
||||
echo ""
|
||||
echo " set_password <password> - Sets the new password as a hashed value."
|
||||
echo " - If the PIALERT_WEB_PROTECTION parameter does not exist yet, it will be"
|
||||
echo " created and set to 'True' (login enabled)"
|
||||
echo ""
|
||||
echo " set_autopassword - Sets a new random password as a hashed value and show it plaintext in"
|
||||
echo " the console."
|
||||
echo " - If the PIALERT_WEB_PROTECTION parameter does not exist yet, it will be"
|
||||
echo " created and set to 'True' (login enabled)"
|
||||
echo ""
|
||||
echo " disable_scan - Stops all active scans"
|
||||
echo " - Prevents new scans from starting"
|
||||
echo ""
|
||||
echo " enable_scan - Stops all active scans"
|
||||
echo " - Prevents new scans from starting"
|
||||
echo ""
|
||||
echo ""
|
||||
;;
|
||||
|
||||
set_login)
|
||||
## Check if PIALERT_WEB_PROTECTION exists
|
||||
CHECK_PROT=$(grep "PIALERT_WEB_PROTECTION" $PIA_CONF_FILE | wc -l)
|
||||
if [ $CHECK_PROT -eq 0 ]
|
||||
then
|
||||
## Create PIALERT_WEB_PROTECTION and enable it
|
||||
sed -i "/^VENDORS_DB.*/a PIALERT_WEB_PROTECTION = True" $PIA_CONF_FILE
|
||||
sed -i "/^PIALERT_WEB_PROTECTION.*/a PIALERT_WEB_PASSWORD = '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92'" $PIA_CONF_FILE
|
||||
else
|
||||
## Switch PIALERT_WEB_PROTECTION to enable
|
||||
sed -i "/PIALERT_WEB_PROTECTION/c\PIALERT_WEB_PROTECTION = True" $PIA_CONF_FILE
|
||||
fi
|
||||
echo "Login is now enabled"
|
||||
;;
|
||||
|
||||
unset_login)
|
||||
## Check if PIALERT_WEB_PROTECTION exists
|
||||
CHECK_PROT=$(grep "PIALERT_WEB_PROTECTION" $PIA_CONF_FILE | wc -l)
|
||||
if [ $CHECK_PROT -eq 0 ]
|
||||
then
|
||||
## Create PIALERT_WEB_PROTECTION and disable it
|
||||
sed -i "/^VENDORS_DB.*/a PIALERT_WEB_PROTECTION = False" $PIA_CONF_FILE
|
||||
sed -i "/^PIALERT_WEB_PROTECTION.*/a PIALERT_WEB_PASSWORD = '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92'" $PIA_CONF_FILE
|
||||
else
|
||||
## Switch PIALERT_WEB_PROTECTION to disable
|
||||
sed -i "/PIALERT_WEB_PROTECTION/c\PIALERT_WEB_PROTECTION = False" $PIA_CONF_FILE
|
||||
fi
|
||||
echo "Login is now disabled"
|
||||
;;
|
||||
|
||||
set_password)
|
||||
PIA_PASS=$2
|
||||
## Check if PIALERT_WEB_PROTECTION exists
|
||||
CHECK_PROT=$(grep "PIALERT_WEB_PROTECTION" $PIA_CONF_FILE | wc -l)
|
||||
if [ $CHECK_PROT -eq 0 ]
|
||||
then
|
||||
## Create PIALERT_WEB_PROTECTION and enable it
|
||||
sed -i "/^VENDORS_DB.*/a PIALERT_WEB_PROTECTION = True" $PIA_CONF_FILE
|
||||
fi
|
||||
## Prepare Hash
|
||||
PIA_PASS_HASH=$(echo -n $PIA_PASS | sha256sum | awk '{print $1}')
|
||||
echo " The hashed password is:"
|
||||
echo " $PIA_PASS_HASH"
|
||||
## Check if the password parameter is set
|
||||
CHECK_PWD=$(grep "PIALERT_WEB_PASSWORD" $PIA_CONF_FILE | wc -l)
|
||||
if [ $CHECK_PWD -eq 0 ]
|
||||
then
|
||||
sed -i "/^PIALERT_WEB_PROTECTION.*/a PIALERT_WEB_PASSWORD = '$PIA_PASS_HASH'" $PIA_CONF_FILE
|
||||
else
|
||||
sed -i "/PIALERT_WEB_PASSWORD/c\PIALERT_WEB_PASSWORD = '$PIA_PASS_HASH'" $PIA_CONF_FILE
|
||||
fi
|
||||
echo ""
|
||||
echo "The new password is set"
|
||||
;;
|
||||
|
||||
set_autopassword)
|
||||
## Check if PIALERT_WEB_PROTECTION exists
|
||||
CHECK_PROT=$(grep "PIALERT_WEB_PROTECTION" $PIA_CONF_FILE | wc -l)
|
||||
if [ $CHECK_PROT -eq 0 ]
|
||||
then
|
||||
## Create PIALERT_WEB_PROTECTION and enable it
|
||||
sed -i "/^VENDORS_DB.*/a PIALERT_WEB_PROTECTION = True" $PIA_CONF_FILE
|
||||
fi
|
||||
## Create autopassword
|
||||
PIA_AUTOPASS=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)
|
||||
echo " The password is: $PIA_AUTOPASS"
|
||||
## Prepare Hash
|
||||
PIA_AUTOPASS_HASH=$(echo -n $PIA_AUTOPASS | sha256sum | awk '{print $1}')
|
||||
echo " The hashed password is:"
|
||||
echo " $PIA_AUTOPASS_HASH"
|
||||
## Check if the password parameter is set
|
||||
CHECK_PWD=$(grep "PIALERT_WEB_PASSWORD" $PIA_CONF_FILE | wc -l)
|
||||
if [ $CHECK_PWD -eq 0 ]
|
||||
then
|
||||
## Create password parameter
|
||||
sed -i "/^PIALERT_WEB_PROTECTION.*/a PIALERT_WEB_PASSWORD = '$PIA_AUTOPASS_HASH'" $PIA_CONF_FILE
|
||||
else
|
||||
## Overwrite password parameter
|
||||
sed -i "/PIALERT_WEB_PASSWORD/c\PIALERT_WEB_PASSWORD = '$PIA_AUTOPASS_HASH'" $PIA_CONF_FILE
|
||||
fi
|
||||
echo ""
|
||||
echo "The new password is set"
|
||||
;;
|
||||
|
||||
disable_scan)
|
||||
## stop active scans
|
||||
sudo killall arp-scan
|
||||
touch ${SCRIPTPATH}/../db/setting_stoparpscan
|
||||
echo "The arp-scan is disabled"
|
||||
;;
|
||||
|
||||
enable_scan)
|
||||
## stop active scans
|
||||
rm ${SCRIPTPATH}/../db/setting_stoparpscan
|
||||
echo "The arp-scan is enabled"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "pialert-cli v0.1 (https://github.com/leiweibau/Pi.Alert)"
|
||||
echo "Use \"pialert-cli help\" for a list of supported commands."
|
||||
esac
|
||||
|
||||
1372
back/pialert.py
173
back/report_sample.html
Executable file
@@ -0,0 +1,173 @@
|
||||
<!-- ---------------------------------------------------------------------------
|
||||
# Pi.Alert
|
||||
# Open Source Network Guard / WIFI & LAN intrusion detector
|
||||
#
|
||||
# repot_template.html - Back module. Template to email reporting in HTML format
|
||||
#-------------------------------------------------------------------------------
|
||||
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3
|
||||
#--------------------------------------------------------------------------- -->
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
<font face=sans-serif>
|
||||
<table align=center width=100% cellpadding=0 cellspacing=0 style="border-radius: 5px;">
|
||||
<tr>
|
||||
<td bgcolor=#EFB956 align=center style="padding: 20px 10px 10px 10px; font-size: 30px; font-weight: bold; color:#000000; border-top-right-radius: 5px; border-top-left-radius: 5px; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)">
|
||||
Pi.Alert Report
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor=#2656f1 width=100% align=center style="padding: 20px 10px 10px 10px; font-size: 20px; font-weight: bold; color:#ffffff; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)">
|
||||
<a style="color:#ffffff;cursor:pointer;" href="https://github.com/jokob-sk/Pi.Alert/releases">🆕 New version available 🆕</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table width=100% border=0 bgcolor=#FFD966 cellpadding=5px cellspacing=0 style="border-collapse: collapse; font-size: 15px; text-align:center; color:#404040">
|
||||
<tr>
|
||||
<td width=100%> Report Date: <b>2023-01-30 22:17</b> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor=#F5F5F5 height=200 valign=top style="padding: 10px">
|
||||
<table style="border-collapse: collapse; font-size: 12px; color:#70707" width="100%" cellspacing="0" cellpadding="3px" bordercolor="#C0C0C0" border="1">
|
||||
<tr>
|
||||
<th width='120px' style='color:blue; font-size: 12px;' bgcolor='#909090' >New devices</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table style="border-collapse: collapse; font-size: 12px; color:#70707" width="100%" cellspacing="0" cellpadding="3px" bordercolor="#C0C0C0" border="1">
|
||||
<tr>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >MAC</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Datetime</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >IP</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Event Type</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Device name</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Comments</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="http://192.168.1.1:20211/deviceDetails.php?mac=00:00:00:ef:a5:6c">00:00:00:ef:a5:6c</a></td>
|
||||
<td>2023-01-30 22:15:09</td>
|
||||
<td>192.168.1.1</td>
|
||||
<td>New Device</td>
|
||||
<td>(name not found)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="http://192.168.1.1:20211/deviceDetails.php?mac=00:00:00:ef:a5:6c">00:00:00:ef:a5:6c</a></td>
|
||||
<td>2023-01-30 22:17:59</td>
|
||||
<td>192.168.1.82</td>
|
||||
<td>New Device</td>
|
||||
<td>(name not found)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="border-collapse: collapse; font-size: 12px; color:#70707" width="100%" cellspacing="0" cellpadding="3px" bordercolor="#C0C0C0" border="1">
|
||||
<tr>
|
||||
<th width='120px' style='color:blue; font-size: 12px;' bgcolor='#909090' >Events</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<ul>
|
||||
<li>
|
||||
<table style="border-collapse: collapse; font-size: 12px; color:#70707" width="100%" cellspacing="0" cellpadding="3px" bordercolor="#C0C0C0" border="1">
|
||||
<tr>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >MAC</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Datetime</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >IP</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Event Type</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Device name</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Comments</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="http://192.168.1.1:20211/deviceDetails.php?mac=00:00:00:ef:a5:6c">00:00:00:ef:a5:6c</a></td>
|
||||
<td>2023-01-30 22:15:09</td>
|
||||
<td>192.168.1.92</td>
|
||||
<td>Disconnected</td>
|
||||
<td>(name not found)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="border-collapse: collapse; font-size: 12px; color:#70707" width="100%" cellspacing="0" cellpadding="3px" bordercolor="#C0C0C0" border="1">
|
||||
<tr>
|
||||
<th width='120px' style='color:blue; font-size: 12px;' bgcolor='#909090' >Changed or new ports</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table style="border-collapse: collapse; font-size: 12px; color:#70707" width="100%" cellspacing="0" cellpadding="3px" bordercolor="#C0C0C0" border="1">
|
||||
<tr>
|
||||
<th>new</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table style="border-collapse: collapse; font-size: 12px; color:#70707" width="100%" cellspacing="0" cellpadding="3px" bordercolor="#C0C0C0" border="1">
|
||||
<tr>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Name</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >MAC</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Port</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >State</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Service</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Extra</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>New device</td>
|
||||
<td><a href="http://192.168.1.1:20211/deviceDetails.php?mac=00:00:00:ef:a5:6c">00:00:00:ef:a5:6c</a></td>
|
||||
<td>3263/tcp</td>
|
||||
<td>open</td>
|
||||
<td>ecolor-imager</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table style="border-collapse: collapse; font-size: 12px; color:#70707" width="100%" cellspacing="0" cellpadding="3px" bordercolor="#C0C0C0" border="1">
|
||||
<tr>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Name</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >MAC</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Port</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >State</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Service</th>
|
||||
<th width='120px' style='color:#F0F0F0' bgcolor='#909090' >Extra</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>New device</td>
|
||||
<td><a href="http://192.168.1.1:20211/deviceDetails.php?mac=00:00:00:ef:a5:6c">00:00:00:ef:a5:6c</a></td>
|
||||
<td>3264/tcp</td>
|
||||
<td>open</td>
|
||||
<td>ccmail</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<tr>
|
||||
<td>
|
||||
<table width=100% bgcolor=#46802e cellpadding=5px cellspacing=0 style="font-size: 13px; font-weight: bold; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px;">
|
||||
<tr>
|
||||
<td width=50% style="text-align:center"> Pi.Alert - Synology-NAS</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
50
back/report_sample.txt
Executable file
@@ -0,0 +1,50 @@
|
||||
Report Date: 2021-12-08 12:30
|
||||
Server: Synology-NAS
|
||||
|
||||
New Devices
|
||||
----------------------
|
||||
Name: (name not found)
|
||||
MAC: 2c:2c:2c:2c:2c:2c
|
||||
IP: 192.168.1.121
|
||||
Time: 2021-12-08 12:30
|
||||
More Info: Micro-Star INTL CO., LTD.
|
||||
|
||||
Name: (name not found)
|
||||
MAC: 2c:2c:2c:2c:2c:2c
|
||||
IP: 192.168.1.151
|
||||
Time: 2021-12-08 12:30
|
||||
More Info: Espressif Inc.
|
||||
|
||||
|
||||
|
||||
Events
|
||||
----------------------
|
||||
Name: Samsung
|
||||
MAC: 2c:2c:2c:2c:2c:2c
|
||||
IP: 192.168.1.27
|
||||
Time: 2021-12-08 12:30
|
||||
Event: Connected
|
||||
More Info:
|
||||
|
||||
Name: (name not found)
|
||||
MAC: 2c:2c:2c:2c:2c:2c
|
||||
IP: 192.168.1.6
|
||||
Time: 2021-12-08 12:30
|
||||
Event: Disconnected
|
||||
More Info:
|
||||
|
||||
Name: Google-Home-Mini
|
||||
MAC: 2c:2c:2c:2c:2c:2c
|
||||
IP: 192.168.1.16
|
||||
Time: 2021-12-08 12:30
|
||||
Event: Disconnected
|
||||
More Info:
|
||||
|
||||
Name: (name not found)
|
||||
MAC: 2c:2c:2c:2c:2c:2c
|
||||
IP: 192.168.1.119
|
||||
Time: 2021-12-08 12:30
|
||||
Event: Disconnected
|
||||
More Info:
|
||||
|
||||
|
||||
96
back/report_template.html
Normal file → Executable file
@@ -14,20 +14,17 @@
|
||||
|
||||
<body>
|
||||
<font face=sans-serif>
|
||||
<table align=center width=80% border=1 bordercolor=#909090 cellpadding=0 cellspacing=0 style="border-collapse: collapse; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.5)">
|
||||
<table align=center width=100% cellpadding=0 cellspacing=0 style="border-radius: 5px;">
|
||||
<tr>
|
||||
<td bgcolor=#EFB956 align=center style="padding: 20px 10px 10px 10px; font-size: 36px; font-weight: bold; color:#7F6000; text-shadow: 4px 4px 6px #909090">
|
||||
<td bgcolor=#EFB956 align=center style="padding: 20px 10px 10px 10px; font-size: 30px; font-weight: bold; color:#000000; border-top-right-radius: 5px; border-top-left-radius: 5px; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)">
|
||||
Pi.Alert Report
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<table width=100% border=0 bgcolor=#FFD966 cellpadding=5px cellspacing=0 style="border-collapse: collapse; font-size: 16px; text-align:center; color:#5F5000">
|
||||
<tr>
|
||||
<td width=33%> Report Date: <b><REPORT_DATE></b> </td>
|
||||
<td width=34%> Scan Cycle: <b><SCAN_CYCLE></b> </td>
|
||||
<td width=33%> Server: <b><SERVER_NAME></b> </td>
|
||||
<table width=100% border=0 bgcolor=#FFD966 cellpadding=5px cellspacing=0 style="border-collapse: collapse; font-size: 15px; text-align:center; color:#404040"> <tr>
|
||||
<td width=100%> Report Date: <b><REPORT_DATE></b> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
@@ -35,84 +32,21 @@
|
||||
|
||||
<tr>
|
||||
<td bgcolor=#F5F5F5 height=200 valign=top style="padding: 10px">
|
||||
<SECTION_INTERNET>
|
||||
<p style="font-size: 24px; font-weight: bold; color:#C04040; text-shadow: 2px 2px 4px #A0A0A0"> Internet: </p>
|
||||
|
||||
<table width=100% border=1 bordercolor=#C0C0C0 cellpadding=3px cellspacing=0 style="border-collapse: collapse; font-size: 12px; color:#707070; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)">
|
||||
<tr bgcolor=#909090 style="color:#F0F0F0">
|
||||
<th width=140> Event Type </th>
|
||||
<th width=130> Datetime </th>
|
||||
<th width=100> IP </th>
|
||||
<th> Additional Info </th>
|
||||
</tr>
|
||||
|
||||
<TABLE_INTERNET>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
</SECTION_INTERNET>
|
||||
|
||||
<SECTION_NEW_DEVICES>
|
||||
<p style="font-size: 14px; font-weight: bold; color:#C04040; text-shadow: 2px 2px 4px #A0A0A0"> New Devices: </p>
|
||||
|
||||
<table width=100% border=1 bordercolor=#C0C0C0 cellpadding=3px cellspacing=0 style="border-collapse: collapse; font-size: 12px; color:#707070; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)">
|
||||
<tr bgcolor=#909090 style="color:#F0F0F0">
|
||||
<th width=140> MAC </th>
|
||||
<th width=130> Datetime </th>
|
||||
<th width=100> IP </th>
|
||||
<th width=140> Device Name </th>
|
||||
<th> Vendor </th>
|
||||
</tr>
|
||||
|
||||
<TABLE_NEW_DEVICES>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
</SECTION_NEW_DEVICES>
|
||||
|
||||
<SECTION_DEVICES_DOWN>
|
||||
<p style="font-size: 14px; font-weight: bold; color:#C04040; text-shadow: 2px 2px 4px #A0A0A0"> Devices Down: </p>
|
||||
|
||||
<table width=100% border=1 bordercolor=#C0C0C0 cellpadding=3px cellspacing=0 style="border-collapse: collapse; font-size: 12px; color:#707070; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)">
|
||||
<tr bgcolor=#909090 style="color:#F0F0F0">
|
||||
<th width=140> MAC </th>
|
||||
<th width=130> Datetime </th>
|
||||
<th width=100> IP </th>
|
||||
<th> Device Name </th>
|
||||
</tr>
|
||||
|
||||
<TABLE_DEVICES_DOWN>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
</SECTION_DEVICES_DOWN>
|
||||
|
||||
<SECTION_EVENTS>
|
||||
<p style="font-size: 14px; font-weight: bold; color:#409040; text-shadow: 2px 2px 4px #A0A0A0"> Events: </p>
|
||||
|
||||
<table width=100% border=1 bordercolor=#C0C0C0 cellpadding=3px cellspacing=0 style="border-collapse: collapse; font-size: 12px; color:#707070; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)">
|
||||
<tr bgcolor=#909090 style="color:#F0F0F0">
|
||||
<th width=140> MAC </th>
|
||||
<th width=130> Datetime </th>
|
||||
<th width=100> IP </th>
|
||||
<th width=100> Event Type </th>
|
||||
<th width=140> Device Name </th>
|
||||
<th> Additional Info </th>
|
||||
</tr>
|
||||
|
||||
<TABLE_EVENTS>
|
||||
</table>
|
||||
</SECTION_EVENTS>
|
||||
|
||||
<INTERNET_TABLE>
|
||||
<NEW_DEVICES_TABLE>
|
||||
<DOWN_DEVICES_TABLE>
|
||||
<EVENTS_TABLE>
|
||||
<PORTS_TABLE>
|
||||
<PLUGINS_TABLE>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<table width=100% border=0 bgcolor=#70AD47 cellpadding=5px cellspacing=0 style="border-collapse: collapse; font-size: 12px; font-weight: bold; color:#385723">
|
||||
<table width=100% bgcolor=#46802e cellpadding=5px cellspacing=0 style="font-size: 13px; font-weight: bold; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px;">
|
||||
<tr>
|
||||
<td width=25% style="text-align:Left"> <span style="display:inline-block; transform: rotate(180deg)">©</span> <PIALERT_YEAR> Puche</td>
|
||||
<td width=50% style="text-align:center"> Pi.Alert <PIALERT_VERSION> (<PIALERT_VERSION_DATE>) </td>
|
||||
<td width=25% style="text-align:right"> GNU GPLv3</td>
|
||||
<td width=50% style="text-align:center"> Pi.Alert - <SERVER_NAME></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
@@ -120,4 +54,4 @@
|
||||
</table>
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
32
back/report_template.txt
Normal file → Executable file
@@ -1,27 +1,9 @@
|
||||
========================================
|
||||
Pi.Alert Report
|
||||
========================================
|
||||
|
||||
Report Date: <REPORT_DATE>
|
||||
Scan Cycle: <SCAN_CYCLE>
|
||||
Server: <SERVER_NAME>
|
||||
Report Date: <REPORT_DATE>
|
||||
Server: <SERVER_NAME>
|
||||
|
||||
<SECTION_NEW_DEVICES>
|
||||
<SECTION_DEVICES_DOWN>
|
||||
<SECTION_EVENTS>
|
||||
<SECTION_INTERNET>
|
||||
Internet
|
||||
----------------------------------------------------------------------
|
||||
<TABLE_INTERNET>
|
||||
</SECTION_INTERNET><SECTION_NEW_DEVICES>
|
||||
New Devices
|
||||
----------------------------------------------------------------------
|
||||
<TABLE_NEW_DEVICES>
|
||||
</SECTION_NEW_DEVICES><SECTION_DEVICES_DOWN>
|
||||
Devices Down
|
||||
----------------------------------------------------------------------
|
||||
<TABLE_DEVICES_DOWN>
|
||||
</SECTION_DEVICES_DOWN><SECTION_EVENTS>
|
||||
Events
|
||||
----------------------------------------------------------------------
|
||||
<TABLE_EVENTS>
|
||||
</SECTION_EVENTS>
|
||||
----------------------------------------------------------------------
|
||||
(?) <PIALERT_YEAR> Puche Pi.Alert <PIALERT_VERSION> (<PIALERT_VERSION_DATE>) GNU GPLv3
|
||||
<PORTS_TABLE>
|
||||
<PLUGINS_TABLE>
|
||||
|
||||
61
back/report_template_new_version.html
Executable file
@@ -0,0 +1,61 @@
|
||||
<!-- ---------------------------------------------------------------------------
|
||||
# Pi.Alert
|
||||
# Open Source Network Guard / WIFI & LAN intrusion detector
|
||||
#
|
||||
# repot_template.html - Back module. Template to email reporting in HTML format
|
||||
#-------------------------------------------------------------------------------
|
||||
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3
|
||||
#--------------------------------------------------------------------------- -->
|
||||
|
||||
<html>
|
||||
|
||||
<head>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<font face=sans-serif>
|
||||
<table align=center width=100% cellpadding=0 cellspacing=0 style="border-radius: 5px;">
|
||||
<tr>
|
||||
<td bgcolor=#EFB956 align=center style="padding: 20px 10px 10px 10px; font-size: 30px; font-weight: bold; color:#000000; border-top-right-radius: 5px; border-top-left-radius: 5px; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)">
|
||||
Pi.Alert Report
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor=#2656f1 width=100% align=center style="padding: 20px 10px 10px 10px; font-size: 20px; font-weight: bold; color:#ffffff; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)">
|
||||
<a style="color:#ffffff;cursor:pointer;" href="https://github.com/jokob-sk/Pi.Alert/releases">🆕 New version available 🆕</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table width=100% border=0 bgcolor=#FFD966 cellpadding=5px cellspacing=0 style="border-collapse: collapse; font-size: 15px; text-align:center; color:#404040"> <tr>
|
||||
<td width=100%> Report Date: <b><REPORT_DATE></b> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td bgcolor=#F5F5F5 height=200 valign=top style="padding: 10px">
|
||||
|
||||
<INTERNET_TABLE>
|
||||
<NEW_DEVICES_TABLE>
|
||||
<DOWN_DEVICES_TABLE>
|
||||
<EVENTS_TABLE>
|
||||
<PORTS_TABLE>
|
||||
<PLUGINS_TABLE>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<table width=100% bgcolor=#46802e cellpadding=5px cellspacing=0 style="font-size: 13px; font-weight: bold; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px;">
|
||||
<tr>
|
||||
<td width=50% style="text-align:center"> Pi.Alert - <SERVER_NAME></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</font>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
2013
back/speedtest-cli
Executable file
32
back/vendors_db_update.sh → back/update_vendors.sh
Normal file → Executable file
@@ -3,9 +3,9 @@
|
||||
# Pi.Alert
|
||||
# Open Source Network Guard / WIFI & LAN intrusion detector
|
||||
#
|
||||
# vendors_db_update.sh - Back module. IEEE Vendors db update
|
||||
# update_vendors.sh - Back module. IEEE Vendors db update
|
||||
# ------------------------------------------------------------------------------
|
||||
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3
|
||||
# Puche 2021 / 2022+ jokob jokob@duck.com GNU GPLv3
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
@@ -23,19 +23,21 @@ cd /usr/share/ieee-data/
|
||||
sudo mkdir -p 2_backup
|
||||
sudo cp *.txt 2_backup
|
||||
sudo cp *.csv 2_backup
|
||||
|
||||
sudo curl -# -O http://standards-oui.ieee.org/iab/iab.csv
|
||||
sudo curl -# -O http://standards-oui.ieee.org/iab/iab.txt
|
||||
|
||||
sudo curl -# -O http://standards-oui.ieee.org/oui28/mam.csv
|
||||
sudo curl -# -O http://standards-oui.ieee.org/oui28/mam.txt
|
||||
|
||||
sudo curl -# -O http://standards-oui.ieee.org/oui36/oui36.csv
|
||||
sudo curl -# -O http://standards-oui.ieee.org/oui36/oui36.txt
|
||||
|
||||
sudo curl -# -O http://standards-oui.ieee.org/oui/oui.csv
|
||||
sudo curl -# -O http://standards-oui.ieee.org/oui/oui.txt
|
||||
|
||||
echo ""
|
||||
echo Download Start
|
||||
echo ""
|
||||
sudo curl $1 -LO https://standards-oui.ieee.org/iab/iab.csv \
|
||||
-LO https://standards-oui.ieee.org/iab/iab.txt \
|
||||
-LO https://standards-oui.ieee.org/oui28/mam.csv \
|
||||
-LO https://standards-oui.ieee.org/iab/iab.txt \
|
||||
-LO https://standards-oui.ieee.org/oui28/mam.csv \
|
||||
-LO https://standards-oui.ieee.org/oui28/mam.txt \
|
||||
-LO https://standards-oui.ieee.org/oui36/oui36.csv \
|
||||
-LO https://standards-oui.ieee.org/oui36/oui36.txt \
|
||||
-LO https://standards-oui.ieee.org/oui/oui.csv \
|
||||
-LO https://standards-oui.ieee.org/oui/oui.txt
|
||||
echo ""
|
||||
echo Download Finished
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
echo ""
|
||||
87
back/webhook_json_sample.json
Executable file
@@ -0,0 +1,87 @@
|
||||
[
|
||||
{
|
||||
"headers": {
|
||||
"host": "192.168.1.82:5678",
|
||||
"user-agent": "curl/7.74.0",
|
||||
"accept": "*/*",
|
||||
"content-type": "application/json",
|
||||
"content-length": "872"
|
||||
},
|
||||
"params": {},
|
||||
"query": {},
|
||||
"body": {
|
||||
"username": "Pi.Alert",
|
||||
"text": "There are new notifications",
|
||||
"attachments": [
|
||||
{
|
||||
"title": "Pi.Alert Notifications",
|
||||
"title_link": "",
|
||||
"text": {
|
||||
"internet": [],
|
||||
"new_devices": [{
|
||||
"MAC": "74:ac:74:ac:74:ac",
|
||||
"Datetime": "2023-01-30 22:15:09",
|
||||
"IP": "192.168.1.1",
|
||||
"Event Type": "New Device",
|
||||
"Device name": "(name not found)",
|
||||
"Comments": null
|
||||
}],
|
||||
"down_devices": [],
|
||||
"events": [{
|
||||
"MAC": "74:ac:74:ac:74:ac",
|
||||
"Datetime": "2023-01-30 22:15:09",
|
||||
"IP": "192.168.1.92",
|
||||
"Event Type": "Disconnected",
|
||||
"Device name": "(name not found)",
|
||||
"Comments": null
|
||||
}, {
|
||||
"MAC": "74:ac:74:ac:74:ac",
|
||||
"Datetime": "2023-01-30 22:15:09",
|
||||
"IP": "192.168.1.150",
|
||||
"Event Type": "Disconnected",
|
||||
"Device name": "(name not found)",
|
||||
"Comments": null
|
||||
}],
|
||||
"ports": [{
|
||||
"new": {
|
||||
"Name": "New device",
|
||||
"MAC": "74:ac:74:ac:74:ac",
|
||||
"Port": "22/tcp",
|
||||
"State": "open",
|
||||
"Service": "ssh",
|
||||
"Extra": ""
|
||||
}
|
||||
}, {
|
||||
"new": {
|
||||
"Name": "New device",
|
||||
"MAC": "74:ac:74:ac:74:ac",
|
||||
"Port": "53/tcp",
|
||||
"State": "open",
|
||||
"Service": "domain",
|
||||
"Extra": ""
|
||||
}
|
||||
}, {
|
||||
"new": {
|
||||
"Name": "New device",
|
||||
"MAC": "74:ac:74:ac:74:ac",
|
||||
"Port": "80/tcp",
|
||||
"State": "open",
|
||||
"Service": "http",
|
||||
"Extra": ""
|
||||
}
|
||||
}, {
|
||||
"new": {
|
||||
"Name": "New device",
|
||||
"MAC": "74:ac:74:ac:74:ac",
|
||||
"Port": "443/tcp",
|
||||
"State": "open",
|
||||
"Service": "https",
|
||||
"Extra": ""
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
143
config/pialert.conf
Normal file → Executable file
@@ -1,37 +1,118 @@
|
||||
#-------------------------------------------------------------------------------
|
||||
# Pi.Alert
|
||||
# Open Source Network Guard / WIFI & LAN intrusion detector
|
||||
#-----------------AUTOGENERATED FILE-----------------#
|
||||
# #
|
||||
# Generated: 2022-12-30_22-19-40 #
|
||||
# #
|
||||
# Config file for the LAN intruder detection app: #
|
||||
# https://github.com/jokob-sk/Pi.Alert #
|
||||
# #
|
||||
#-----------------AUTOGENERATED FILE-----------------#
|
||||
|
||||
|
||||
# General
|
||||
#---------------------------
|
||||
# Scan using interface eth0
|
||||
# SCAN_SUBNETS = ['192.168.1.0/24 --interface=eth0']
|
||||
#
|
||||
# pialert.conf - Back module. Configuration file
|
||||
#-------------------------------------------------------------------------------
|
||||
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3
|
||||
#-------------------------------------------------------------------------------
|
||||
# Scan multiple interfaces (eth1 and eth0):
|
||||
# SCAN_SUBNETS = [ '192.168.1.0/24 --interface=eth1', '192.168.1.0/24 --interface=eth0' ]
|
||||
SCAN_SUBNETS=['192.168.1.0/24 --interface=eth1']
|
||||
PRINT_LOG=False
|
||||
TIMEZONE='Europe/Berlin'
|
||||
PIALERT_WEB_PROTECTION=False
|
||||
PIALERT_WEB_PASSWORD='8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92'
|
||||
INCLUDED_SECTIONS=['internet','new_devices','down_devices','events']
|
||||
SCAN_CYCLE_MINUTES=5
|
||||
DAYS_TO_KEEP_EVENTS=90
|
||||
# Used for generating links in emails. Make sure not to add a trailing slash!
|
||||
REPORT_DASHBOARD_URL='http://pi.alert'
|
||||
|
||||
PIALERT_PATH = '/home/pi/pialert'
|
||||
DB_PATH = PIALERT_PATH + '/db/pialert.db'
|
||||
LOG_PATH = PIALERT_PATH + '/log'
|
||||
VENDORS_DB = '/usr/share/arp-scan/ieee-oui.txt'
|
||||
PRINT_LOG = False
|
||||
|
||||
SMTP_SERVER = 'smtp.gmail.com'
|
||||
SMTP_PORT = 587
|
||||
SMTP_USER = 'user@gmail.com'
|
||||
SMTP_PASS = 'password'
|
||||
# Email
|
||||
#---------------------------
|
||||
REPORT_MAIL=False
|
||||
SMTP_SERVER='smtp.gmail.com'
|
||||
SMTP_PORT=587
|
||||
REPORT_TO='user@gmail.com'
|
||||
REPORT_FROM='Pi.Alert <user@gmail.com>'
|
||||
SMTP_SKIP_LOGIN=False
|
||||
SMTP_USER='user@gmail.com'
|
||||
SMTP_PASS='password'
|
||||
SMTP_SKIP_TLS=False
|
||||
|
||||
REPORT_MAIL = False
|
||||
REPORT_FROM = 'Pi.Alert <' + SMTP_USER +'>'
|
||||
REPORT_TO = 'user@gmail.com'
|
||||
REPORT_DEVICE_URL = 'http://pi.alert/deviceDetails.php?mac='
|
||||
|
||||
# QUERY_MYIP_SERVER = 'https://diagnostic.opendns.com/myip'
|
||||
QUERY_MYIP_SERVER = 'http://ipv4.icanhazip.com'
|
||||
DDNS_ACTIVE = False
|
||||
DDNS_DOMAIN = 'your_domain.freeddns.org'
|
||||
DDNS_USER = 'dynu_user'
|
||||
DDNS_PASSWORD = 'A0000000B0000000C0000000D0000000'
|
||||
DDNS_UPDATE_URL = 'https://api.dynu.com/nic/update?'
|
||||
# Webhooks
|
||||
#---------------------------
|
||||
REPORT_WEBHOOK=False
|
||||
WEBHOOK_URL='http://n8n.local:5555/webhook-test/aaaaaaaa-aaaa-aaaa-aaaaa-aaaaaaaaaaaa'
|
||||
WEBHOOK_PAYLOAD='json' # webhook payload data format for the "body > attachements > text" attribute
|
||||
# in https://github.com/jokob-sk/Pi.Alert/blob/main/docs/webhook_json_sample.json
|
||||
# supported values: 'json', 'html' or 'text'
|
||||
# e.g.: for discord use 'html'
|
||||
WEBHOOK_REQUEST_METHOD='GET'
|
||||
|
||||
PIHOLE_ACTIVE = False
|
||||
PIHOLE_DB = '/etc/pihole/pihole-FTL.db'
|
||||
DHCP_ACTIVE = False
|
||||
DHCP_LEASES = '/etc/pihole/dhcp.leases'
|
||||
|
||||
# Apprise
|
||||
#---------------------------
|
||||
REPORT_APPRISE=False
|
||||
APPRISE_HOST='http://localhost:8000/notify'
|
||||
APPRISE_URL='mailto://smtp-relay.sendinblue.com:587?from=user@gmail.com&name=apprise&user=user@gmail.com&pass=password&to=user@gmail.com'
|
||||
|
||||
|
||||
# NTFY
|
||||
#---------------------------
|
||||
REPORT_NTFY=False
|
||||
NTFY_HOST='https://ntfy.sh'
|
||||
NTFY_TOPIC='replace_my_secure_topicname_91h889f28'
|
||||
NTFY_USER='user'
|
||||
NTFY_PASSWORD='passw0rd'
|
||||
|
||||
|
||||
# PUSHSAFER
|
||||
#---------------------------
|
||||
REPORT_PUSHSAFER=False
|
||||
PUSHSAFER_TOKEN='ApiKey'
|
||||
|
||||
|
||||
# MQTT
|
||||
#---------------------------
|
||||
REPORT_MQTT=False
|
||||
MQTT_BROKER='192.168.1.2'
|
||||
MQTT_PORT=1883
|
||||
MQTT_USER='mqtt'
|
||||
MQTT_PASSWORD='passw0rd'
|
||||
MQTT_QOS=0
|
||||
MQTT_DELAY_SEC=2
|
||||
|
||||
|
||||
# DynDNS
|
||||
#---------------------------
|
||||
DDNS_ACTIVE=False
|
||||
DDNS_DOMAIN='your_domain.freeddns.org'
|
||||
DDNS_USER='dynu_user'
|
||||
DDNS_PASSWORD='A0000000B0000000C0000000D0000000'
|
||||
DDNS_UPDATE_URL='https://api.dynu.com/nic/update?'
|
||||
|
||||
|
||||
# PiHole
|
||||
#---------------------------
|
||||
# if enabled you need to map '/etc/pihole/pihole-FTL.db' in docker-compose.yml
|
||||
PIHOLE_ACTIVE=False
|
||||
# if enabled you need to map '/etc/pihole/dhcp.leases' in docker-compose.yml
|
||||
DHCP_ACTIVE=False
|
||||
|
||||
|
||||
# Pholus
|
||||
#---------------------------
|
||||
PHOLUS_ACTIVE=False
|
||||
PHOLUS_TIMEOUT=120
|
||||
PHOLUS_FORCE=False
|
||||
PHOLUS_DAYS_DATA=7
|
||||
PHOLUS_RUN='once'
|
||||
PHOLUS_RUN_TIMEOUT=600
|
||||
PHOLUS_RUN_SCHD='0 4 * * *'
|
||||
|
||||
|
||||
#-------------------IMPORTANT INFO-------------------#
|
||||
# This file is ingested by a python script, so if #
|
||||
# modified it needs to use python syntax #
|
||||
#-------------------IMPORTANT INFO-------------------#
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
VERSION = '2.60'
|
||||
VERSION_YEAR = '2021'
|
||||
VERSION_DATE = '2021-01-20'
|
||||
BIN
db/pialert.db
Normal file → Executable file
50
docker-compose.yml
Executable file
@@ -0,0 +1,50 @@
|
||||
version: "3"
|
||||
services:
|
||||
pialert:
|
||||
privileged: true
|
||||
build: .
|
||||
container_name: pialert
|
||||
network_mode: "host"
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${APP_DATA_LOCATION}/pialert_dev/config:/home/pi/pialert/config
|
||||
# - ${APP_DATA_LOCATION}/pialert/config:/home/pi/pialert/config
|
||||
- ${APP_DATA_LOCATION}/pialert_dev/db:/home/pi/pialert/db
|
||||
# - ${APP_DATA_LOCATION}/pialert/db:/home/pi/pialert/db
|
||||
# (optional) useful for debugging if you have issues setting up the container
|
||||
- ${LOGS_LOCATION}:/home/pi/pialert/front/log
|
||||
# ---------------------------------------------------------------------------
|
||||
# DELETE START anyone trying to use this file: comment out / delete BELOW lines, they are only for development purposes
|
||||
- ${APP_DATA_LOCATION}/pialert/dhcp_samples/dhcp1.leases:/mnt/dhcp1.leases
|
||||
- ${APP_DATA_LOCATION}/pialert/dhcp_samples/dhcp2.leases:/mnt/dhcp2.leases
|
||||
# - ${DEV_LOCATION}/back/pialert.py:/home/pi/pialert/back/pialert.py
|
||||
- ${DEV_LOCATION}/pialert:/home/pi/pialert/pialert
|
||||
# - ${DEV_LOCATION}/back/report_template.html:/home/pi/pialert/back/report_template.html
|
||||
# - ${DEV_LOCATION}/back/report_template_new_version.html:/home/pi/pialert/back/report_template_new_version.html
|
||||
# - ${DEV_LOCATION}/back/report_template.txt:/home/pi/pialert/back/report_template.txt
|
||||
- ${DEV_LOCATION}/pholus:/home/pi/pialert/pholus
|
||||
- ${DEV_LOCATION}/dockerfiles:/home/pi/pialert/dockerfiles
|
||||
- ${APP_DATA_LOCATION}/pialert/php.ini:/etc/php/7.4/fpm/php.ini
|
||||
# - ${DEV_LOCATION}/front/api:/home/pi/pialert/front/api
|
||||
- ${DEV_LOCATION}/front/css:/home/pi/pialert/front/css
|
||||
- ${DEV_LOCATION}/front/lib/AdminLTE:/home/pi/pialert/front/lib/AdminLTE
|
||||
- ${DEV_LOCATION}/front/js:/home/pi/pialert/front/js
|
||||
- ${DEV_LOCATION}/front/php:/home/pi/pialert/front/php
|
||||
- ${DEV_LOCATION}/front/deviceDetails.php:/home/pi/pialert/front/deviceDetails.php
|
||||
- ${DEV_LOCATION}/front/devices.php:/home/pi/pialert/front/devices.php
|
||||
- ${DEV_LOCATION}/front/events.php:/home/pi/pialert/front/events.php
|
||||
- ${DEV_LOCATION}/front/plugins.php:/home/pi/pialert/front/plugins.php
|
||||
- ${DEV_LOCATION}/front/help_faq.php:/home/pi/pialert/front/help_faq.php
|
||||
- ${DEV_LOCATION}/front/index.php:/home/pi/pialert/front/index.php
|
||||
- ${DEV_LOCATION}/front/maintenance.php:/home/pi/pialert/front/maintenance.php
|
||||
- ${DEV_LOCATION}/front/network.php:/home/pi/pialert/front/network.php
|
||||
- ${DEV_LOCATION}/front/presence.php:/home/pi/pialert/front/presence.php
|
||||
- ${DEV_LOCATION}/front/settings.php:/home/pi/pialert/front/settings.php
|
||||
- ${DEV_LOCATION}/front/plugins:/home/pi/pialert/front/plugins
|
||||
# DELETE END anyone trying to use this file: comment out / delete ABOVE lines, they are only for development purposes
|
||||
# ---------------------------------------------------------------------------
|
||||
environment:
|
||||
- TZ=${TZ}
|
||||
- PORT=${PORT}
|
||||
- HOST_USER_ID=${HOST_USER_ID}
|
||||
- HOST_USER_GID=${HOST_USER_GID}
|
||||
1335
front/lib/AdminLTE/bower_components/jvectormap/LICENSE-AGPL → dockerfiles/LICENSE
Normal file → Executable file
229
dockerfiles/README.md
Executable file
@@ -0,0 +1,229 @@
|
||||
[](https://github.com/jokob-sk/Pi.Alert/actions/workflows/docker_prod.yml)
|
||||
[](https://github.com/jokob-sk/Pi.Alert)
|
||||
[](https://hub.docker.com/r/jokobsk/pi.alert)
|
||||
[](https://hub.docker.com/r/jokobsk/pi.alert)
|
||||
[](https://hub.docker.com/r/jokobsk/pi.alert)
|
||||
|
||||
# 🐳 A docker image for Pi.Alert
|
||||
|
||||
🐳 [Docker hub](https://registry.hub.docker.com/r/jokobsk/pi.alert) | 📄 [Dockerfile](https://github.com/jokob-sk/Pi.Alert/blob/main/Dockerfile) | 📚 [Docker instructions](https://github.com/jokob-sk/Pi.Alert/blob/main/dockerfiles/README.md) | 🆕 [Release notes](https://github.com/jokob-sk/Pi.Alert/releases)
|
||||
|
||||
<a href="https://raw.githubusercontent.com/jokob-sk/Pi.Alert/main/docs/img/devices_split.png" target="_blank">
|
||||
<img src="https://raw.githubusercontent.com/jokob-sk/Pi.Alert/main/docs/img/devices_split.png" width="300px" />
|
||||
</a>
|
||||
<a href="https://raw.githubusercontent.com/jokob-sk/Pi.Alert/main/docs/img/network.png" target="_blank">
|
||||
<img src="https://raw.githubusercontent.com/jokob-sk/Pi.Alert/main/docs/img/network.png" width="300px" />
|
||||
</a>
|
||||
|
||||
|
||||
## 📕 Basic Usage
|
||||
|
||||
- You will have to run the container on the host network, e.g:
|
||||
|
||||
```yaml
|
||||
docker run -d --rm --network=host \
|
||||
-v local/path/pialert/config:/home/pi/pialert/config \
|
||||
-v local/path/pialert/db:/home/pi/pialert/db \
|
||||
-e TZ=Europe/Berlin \
|
||||
-e PORT=20211 \
|
||||
jokobsk/pi.alert:latest
|
||||
```
|
||||
- The initial scan can take up-to 15min (with 50 devices and MQTT). Subsequent ones 3 and 5 minutes so wait that long for all of the scans to run.
|
||||
|
||||
### Docker environment variables
|
||||
|
||||
| Variable | Description | Default |
|
||||
| :------------- |:-------------| -----:|
|
||||
| `PORT` |Port of the web interface | `20211` |
|
||||
|`TZ` |Time zone to display stats correctly. Find your time zone [here](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) | `Europe/Berlin` |
|
||||
|`HOST_USER_GID` |User ID (UID) to map the user in the container to a server user with sufficient read&write permissions on the mapped files | `1000` |
|
||||
|`HOST_USER_ID` |User Group ID (GID) to map the user group in the container to a server user group with sufficient read&write permissions on the mapped files | `1000` |
|
||||
|
||||
### Docker paths
|
||||
|
||||
| | Path | Description |
|
||||
| :------------- | :------------- |:-------------|
|
||||
| **Required** | `:/home/pi/pialert/config` | Folder which will contain the `pialert.conf` file (see below for details) |
|
||||
| **Required** | `:/home/pi/pialert/db` | Folder which will contain the `pialert.db` file |
|
||||
|Optional| `:/home/pi/pialert/front/log` | Logs folder useful for debugging if you have issues setting up the container |
|
||||
|Optional| `:/etc/pihole/pihole-FTL.db` | PiHole's `pihole-FTL.db` database file. Required if you want to use PiHole |
|
||||
|Optional| `:/etc/pihole/dhcp.leases` | PiHole's `dhcp.leases` file. Required if you want to use PiHole |
|
||||
|Optional| `:/home/pi/pialert/front/api` | A simple [API endpoint](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/API.md) containing static (but regularly updated) json and other files. |
|
||||
|
||||
|
||||
### Config (`pialert.conf`)
|
||||
|
||||
- If unavailable, the app generates a default `pialert.conf` and `pialert.db` file on the first run.
|
||||
- The preferred way is to manage the configuration via the Settings section in the UI.
|
||||
- You can modify [pialert.conf](https://github.com/jokob-sk/Pi.Alert/tree/main/config) directly, if needed.
|
||||
|
||||
#### Important settings
|
||||
|
||||
These are the most important settings to get at least some output in your Devices screen. Usually, only one approach is used, but you should be able to combine these approaches.
|
||||
|
||||
##### For arp-scan: ENABLE_ARPSCAN, SCAN_SUBNETS
|
||||
|
||||
- ❗ To use the arp-scan method, you need to set the `SCAN_SUBNETS` variable.
|
||||
* The adapter will probably be `eth0` or `eth1`. (Run `iwconfig` to find your interface name(s))
|
||||
* Specify the network filter (which **significantly** speeds up the scan process). For example, the filter `192.168.1.0/24` covers IP ranges 192.168.1.0 to 192.168.1.255.
|
||||
* Examples for one and two subnets (❗ Note the `['...', '...']` format):
|
||||
* One subnet: `SCAN_SUBNETS = ['192.168.1.0/24 --interface=eth0']`
|
||||
* Two subnets: `SCAN_SUBNETS = ['192.168.1.0/24 --interface=eth0', '192.168.1.0/24 --interface=eth1 -vlan=107']`
|
||||
* More documentation on how to e.g. [setup vlans & limitations](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/SUBNETS.md)
|
||||
|
||||
##### For pihole: PIHOLE_ACTIVE, DHCP_ACTIVE
|
||||
|
||||
* `PIHOLE_ACTIVE`: You need to map `:/etc/pihole/pihole-FTL.db in the docker-compose.yml` file if you enable this setting.
|
||||
* `DHCP_ACTIVE` : You need to map `:/etc/pihole/dhcp.leases in the docker-compose.yml` file if you enable this setting.
|
||||
|
||||
### **Common issues**
|
||||
|
||||
💡 Before creating a new issue, please check if a similar issue was [already resolved](https://github.com/jokob-sk/Pi.Alert/issues?q=is%3Aissue+is%3Aclosed).
|
||||
|
||||
**Permissions**
|
||||
|
||||
* If facing issues (AJAX errors, can't write to DB, empty screen, etc,) make sure permissions are set correctly, and check the logs under `/home/pi/pialert/front/log`.
|
||||
* To solve permission issues you can try setting the owner and group of the `pialert.db` by executing the following on the host system: `docker exec pialert chown -R www-data:www-data /home/pi/pialert/db/pialert.db`.
|
||||
* Map to local User and Group IDs. Specify the enviroment variables `HOST_USER_ID` and `HOST_USER_GID` if needed.
|
||||
* If still facing issues, try to map the pialert.db file (⚠ not folder) to `:/home/pi/pialert/db/pialert.db` (see Examples below for details)
|
||||
|
||||
**Container restarts / crashes**
|
||||
|
||||
* Check the logs for details. Often a required setting for a notification method is missing.
|
||||
|
||||
**unable to resolve host**
|
||||
|
||||
* Check that your `SCAN_SUBNETS` variable is using the correct mask and `--interface` as outlined in the instructions above.
|
||||
|
||||
|
||||
Docker-compose examples can be found below.
|
||||
|
||||
## 📄 Examples
|
||||
|
||||
### Example 1
|
||||
|
||||
```yaml
|
||||
version: "3"
|
||||
services:
|
||||
pialert:
|
||||
container_name: pialert
|
||||
image: "jokobsk/pi.alert:latest"
|
||||
network_mode: "host"
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- local/path/pialert/config:/home/pi/pialert/config
|
||||
- local/path/pialert/db:/home/pi/pialert/db
|
||||
# (optional) useful for debugging if you have issues setting up the container
|
||||
- local/path/logs:/home/pi/pialert/front/log
|
||||
environment:
|
||||
- TZ=Europe/Berlin
|
||||
- HOST_USER_ID=1000
|
||||
- HOST_USER_GID=1000
|
||||
- PORT=20211
|
||||
```
|
||||
|
||||
To run the container execute: `sudo docker-compose up -d`
|
||||
|
||||
### Example 2
|
||||
|
||||
Example by [SeimuS](https://github.com/SeimusS).
|
||||
|
||||
```yaml
|
||||
pialert:
|
||||
container_name: PiAlert
|
||||
hostname: PiAlert
|
||||
privileged: true
|
||||
image: jokobsk/pi.alert:latest
|
||||
environment:
|
||||
- TZ=Europe/Bratislava
|
||||
restart: always
|
||||
volumes:
|
||||
- ./pialert/pialert_db:/home/pi/pialert/db
|
||||
- ./pialert/pialert_config:/home/pi/pialert/config
|
||||
network_mode: host
|
||||
```
|
||||
|
||||
To run the container execute: `sudo docker-compose up -d`
|
||||
|
||||
### Example 3
|
||||
|
||||
`docker-compose.yml`
|
||||
|
||||
```yaml
|
||||
version: "3"
|
||||
services:
|
||||
pialert:
|
||||
container_name: pialert
|
||||
image: "jokobsk/pi.alert:latest"
|
||||
network_mode: "host"
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${APP_DATA_LOCATION}/pialert/config:/home/pi/pialert/config
|
||||
- ${APP_DATA_LOCATION}/pialert/db/pialert.db:/home/pi/pialert/db/pialert.db
|
||||
# (optional) useful for debugging if you have issues setting up the container
|
||||
- ${LOGS_LOCATION}:/home/pi/pialert/front/log
|
||||
environment:
|
||||
- TZ=${TZ}
|
||||
- HOST_USER_ID=${HOST_USER_ID}
|
||||
- HOST_USER_GID=${HOST_USER_GID}
|
||||
- PORT=${PORT}
|
||||
```
|
||||
|
||||
`.env` file
|
||||
|
||||
```yaml
|
||||
#GLOBAL PATH VARIABLES
|
||||
|
||||
APP_DATA_LOCATION=/path/to/docker_appdata
|
||||
APP_CONFIG_LOCATION=/path/to/docker_config
|
||||
LOGS_LOCATION=/path/to/docker_logs
|
||||
|
||||
#ENVIRONMENT VARIABLES
|
||||
|
||||
TZ=Europe/Paris
|
||||
HOST_USER_ID=1000
|
||||
HOST_USER_GID=1000
|
||||
PORT=20211
|
||||
|
||||
#DEVELOPMENT VARIABLES
|
||||
|
||||
DEV_LOCATION=/path/to/local/source/code
|
||||
```
|
||||
|
||||
To run the container execute: `sudo docker-compose --env-file /path/to/.env up`
|
||||
|
||||
### Example 4
|
||||
|
||||
Courtesy of [pbek](https://github.com/pbek). The volume `pialert_db` is used by the db directory. The two config files are mounted directly from a local folder to their places in the config folder. You can backup the `docker-compose.yaml` folder and the docker volumes folder.
|
||||
|
||||
```yaml
|
||||
pialert:
|
||||
image: jokobsk/pi.alert
|
||||
ports:
|
||||
- "80:20211/tcp"
|
||||
environment:
|
||||
- TZ=Europe/Vienna
|
||||
networks:
|
||||
local:
|
||||
ipv4_address: 192.168.1.2
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- pialert_db:/home/pi/pialert/db
|
||||
- ./pialert/pialert.conf:/home/pi/pialert/config/pialert.conf
|
||||
```
|
||||
|
||||
## 🏅 Recognitions
|
||||
|
||||
Big thanks to <a href="https://github.com/Macleykun">@Macleykun</a> for help and tips&tricks for Dockerfile(s):
|
||||
|
||||
<a href="https://github.com/Macleykun">
|
||||
<img src="https://avatars.githubusercontent.com/u/26381427?size=50">
|
||||
</a>
|
||||
|
||||
## ☕ Support me
|
||||
|
||||
<a href="https://github.com/sponsors/jokob-sk" target="_blank"><img src="https://i.imgur.com/X6p5ACK.png" alt="Sponsor Me on GitHub" style="height: 30px !important;width: 117px !important;" width="150px" ></a>
|
||||
<a href="https://www.buymeacoffee.com/jokobsk" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 30px !important;width: 117px !important;" width="117px" height="30px" ></a>
|
||||
<a href="https://www.patreon.com/user?u=84385063" target="_blank"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Patreon_logo_with_wordmark.svg/512px-Patreon_logo_with_wordmark.svg.png" alt="Support me on patreon" style="height: 30px !important;width: 117px !important;" width="117px" ></a>
|
||||
|
||||
BTC: 1N8tupjeCK12qRVU2XrV17WvKK7LCawyZM
|
||||
33
dockerfiles/start.sh
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/bin/sh
|
||||
/home/pi/pialert/dockerfiles/user-mapping.sh
|
||||
|
||||
# # if custom variables not set we do not need to do anything
|
||||
# if [ -n "${TZ}" ]; then
|
||||
# FILECONF=/home/pi/pialert/config/pialert.conf
|
||||
# if [ -f "$FILECONF" ]; then
|
||||
# sed -ie "s|Europe/Berlin|${TZ}|g" /home/pi/pialert/config/pialert.conf
|
||||
# else
|
||||
# sed -ie "s|Europe/Berlin|${TZ}|g" /home/pi/pialert/back/pialert.conf_bak
|
||||
# fi
|
||||
# fi
|
||||
|
||||
if [ -n "${PORT}" ]; then
|
||||
sed -ie 's/listen 20211/listen '${PORT}'/g' /etc/nginx/sites-available/default
|
||||
fi
|
||||
|
||||
# I hope this will fix DB permission issues going forward
|
||||
FILEDB=/home/pi/pialert/db/pialert.db
|
||||
if [ -f "$FILEDB" ]; then
|
||||
chown -R www-data:www-data /home/pi/pialert/db/pialert.db
|
||||
fi
|
||||
|
||||
chmod -R a+rw /home/pi/pialert/front/log
|
||||
chmod -R a+rw /home/pi/pialert/config
|
||||
|
||||
/etc/init.d/php7.4-fpm start
|
||||
/etc/init.d/nginx start
|
||||
|
||||
# cron -f
|
||||
#python /home/pi/pialert/back/pialert.py
|
||||
# echo "[DEBUG] DATA MONKEY VERSION ..."
|
||||
python /home/pi/pialert/pialert/
|
||||
29
dockerfiles/user-mapping.sh
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -z "${USER}" ]; then
|
||||
echo "We need USER to be set!"; exit 100
|
||||
fi
|
||||
|
||||
# if both not set we do not need to do anything
|
||||
if [ -z "${HOST_USER_ID}" -a -z "${HOST_USER_GID}" ]; then
|
||||
echo "Nothing to do here." ; exit 0
|
||||
fi
|
||||
|
||||
# reset user_?id to either new id or if empty old (still one of above
|
||||
# might not be set)
|
||||
USER_ID=${HOST_USER_ID:=$USER_ID}
|
||||
USER_GID=${HOST_USER_GID:=$USER_GID}
|
||||
|
||||
LINE=$(grep -F "${USER}" /etc/passwd)
|
||||
# replace all ':' with a space and create array
|
||||
array=( ${LINE//:/ } )
|
||||
|
||||
# home is 5th element
|
||||
USER_HOME=${array[4]}
|
||||
|
||||
sed -i -e "s/^${USER}:\([^:]*\):[0-9]*:[0-9]*/${USER}:\1:${USER_ID}:${USER_GID}/" /etc/passwd
|
||||
sed -i -e "s/^${USER}:\([^:]*\):[0-9]*/${USER}:\1:${USER_GID}/" /etc/group
|
||||
|
||||
chown -R ${USER_ID}:${USER_GID} ${USER_HOME}
|
||||
|
||||
exec su - "${USER}"
|
||||
98
docs/API.md
Executable file
@@ -0,0 +1,98 @@
|
||||
## API endpoints
|
||||
|
||||
PiAlert comes with a simple API. These API endpoints are static files, that are periodically updated based on your settings.
|
||||
|
||||
|
||||
### When are the endpoints updated
|
||||
|
||||
Once you enable the API (`ENABLE_API` setting), the endpoints are updated when objects in the API endpoints are changed:
|
||||
|
||||
### Location of the endpoints
|
||||
|
||||
In the container, these files are located under the `/home/pi/pialert/front/api/` folder and thus on the `<pialert_url>/api/<File name>` url.
|
||||
|
||||
### Available endpoints
|
||||
|
||||
You can access the following files:
|
||||
|
||||
| File name | Description |
|
||||
|----------------------|----------------------|
|
||||
| `notification_text.txt` | The plain text version of the last notification. |
|
||||
| `notification_text.html` | The full HTML of the last email notification. |
|
||||
| `notification_json_final.json` | The json version of the last notification (e.g. used for webhooks - [sample JSON](https://github.com/jokob-sk/Pi.Alert/blob/main/back/webhook_json_sample.json)). |
|
||||
| `table_devices.json` | The current (at the time of the last update as mentioned above on this page) state of all of the available Devices detected by the app. |
|
||||
| `table_nmap_scan.json` | The current state of the discovered ports by the regular NMAP scans. |
|
||||
| `table_pholus_scan.json` | The latest state of the [pholus](https://github.com/jokob-sk/Pi.Alert/tree/main/pholus) (A multicast DNS and DNS Service Discovery Security Assessment Tool) scan results. |
|
||||
| `table_plugins_events.json` | The list of the unprocessed (pending) notification events (plugins_events DB table). |
|
||||
| `table_plugins_history.json` | The list of notification events history. |
|
||||
| `table_plugins_objects.json` | The content of the plugins_objects table. Find more info on the [Plugin system here](https://github.com/jokob-sk/Pi.Alert/tree/main/front/plugins)|
|
||||
| `language_strings.json` | The content of the language_strings table, which in turn is loaded from the plugins `config.json` definitions. |
|
||||
| `table_custom_endpoint.json` | A custom endpoint generated by the SQL query specified by the `API_CUSTOM_SQL` setting. |
|
||||
| `table_settings.json` | The content of the settings table. |
|
||||
|
||||
Current/latest state of the aforementioned files depends on your settings.
|
||||
|
||||
### JSON Data format
|
||||
|
||||
The endpoints starting with the `table_` prefix contain most, if not all, data contained in the corresponding database table. The common format for those is:
|
||||
|
||||
```JSON
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"db_column_name": "data",
|
||||
"db_column_name2": "data2"
|
||||
},
|
||||
{
|
||||
"db_column_name": "data3",
|
||||
"db_column_name2": "data4"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Example JSON of the `table_devices.json` endpoint with two Devices (database rows):
|
||||
|
||||
```JSON
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"dev_MAC": "Internet",
|
||||
"dev_Name": "Net - Huawei",
|
||||
"dev_DeviceType": "Router",
|
||||
"dev_Vendor": null,
|
||||
"dev_Group": "Always on",
|
||||
"dev_FirstConnection": "2021-01-01 00:00:00",
|
||||
"dev_LastConnection": "2021-01-28 22:22:11",
|
||||
"dev_LastIP": "192.168.1.24",
|
||||
"dev_StaticIP": 0,
|
||||
"dev_PresentLastScan": 1,
|
||||
"dev_LastNotification": "2023-01-28 22:22:28.998715",
|
||||
"dev_NewDevice": 0,
|
||||
"dev_Network_Node_MAC_ADDR": "",
|
||||
"dev_Network_Node_port": "",
|
||||
"dev_Icon": "globe"
|
||||
},
|
||||
{
|
||||
"dev_MAC": "a4:8f:ff:aa:ba:1f",
|
||||
"dev_Name": "Net - USG",
|
||||
"dev_DeviceType": "Firewall",
|
||||
"dev_Vendor": "Ubiquiti Inc",
|
||||
"dev_Group": "",
|
||||
"dev_FirstConnection": "2021-02-12 22:05:00",
|
||||
"dev_LastConnection": "2021-07-17 15:40:00",
|
||||
"dev_LastIP": "192.168.1.1",
|
||||
"dev_StaticIP": 1,
|
||||
"dev_PresentLastScan": 1,
|
||||
"dev_LastNotification": "2021-07-17 15:40:10.667717",
|
||||
"dev_NewDevice": 0,
|
||||
"dev_Network_Node_MAC_ADDR": "Internet",
|
||||
"dev_Network_Node_port": 1,
|
||||
"dev_Icon": "shield-halved"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
47
docs/DATABASE.md
Executable file
@@ -0,0 +1,47 @@
|
||||
|
||||
# A high-level description of the datbase structure
|
||||
|
||||
⚠ Disclaimer: As I'm not the original author, some of the information might be inaccurate. Feel free to submit a PR to correct anything within this page or documentation in general.
|
||||
|
||||
The MAC address is used as a foreign key in most cases.
|
||||
|
||||
## 🔍Tables overview
|
||||
|
||||
| Table name | Description | Sample data |
|
||||
|----------------------|----------------------| ----------------------|
|
||||
| CurrentScan | Result of the current scan | ![Screen1][screen1] |
|
||||
| Devices | The main devices database that also contains the Network tree mappings. | ![Screen2][screen2] |
|
||||
| DHCP_Leases | Used for importing devices from DHCP_Leases files. Also leveraged by some plugins. | ![Screen3][screen3] |
|
||||
| Events | Used to collect connection/disconnection events. | ![Screen4][screen4] |
|
||||
| Nmap_Scan | Contains results of the scheduled Nmap scan, taht is also displayed in the Nmap tab on each device. | ![Screen5][screen5] |
|
||||
| Online_History | Used to display the `Device presence over time` chart | ![Screen6][screen6] |
|
||||
| Parameters | Used to pass values between the frontend and backend. | ![Screen7][screen7] |
|
||||
| Pholus_Scan | Scan results of the Pholus python network penetration script. | ![Screen8][screen8] |
|
||||
| PiHole_Network | Table to copy the devices from the PiHole database | ![Screen9][screen9] |
|
||||
| Plugins_Events | For capturing events exposed by a plugin via the `last_result.log` file. If unique then saved into the `Plugins_Objects` table. Entries are deleted once processed and stored in the `Plugins_History` and/or `Plugins_Objects` tables. | ![Screen10][screen10] |
|
||||
| Plugins_History | History of all entries from the `Plugins_Events` table | ![Screen11][screen11] |
|
||||
| Plugins_Language_Strings | Language strings colelcted from the plugin `config.json` files used for string resolution in the frontend. | ![Screen12][screen12] |
|
||||
| Plugins_Objects | Unique objects detected by individual plugins. | ![Screen13][screen13] |
|
||||
| ScanCycles | (obsolete) Used to determine and identify different scan cycles. | ![Screen14][screen14] |
|
||||
| Sessions | Used to display sessions in the charts | ![Screen15][screen15] |
|
||||
| Settings | Database representation of the sum of all settings from `pialert.conf` and plugins coming from `config.json` files. | ![Screen16][screen16] |
|
||||
|
||||
|
||||
|
||||
[screen1]: /docs/img/DATABASE/CurrentScan.png
|
||||
[screen2]: /docs/img/DATABASE/Devices.png
|
||||
[screen3]: /docs/img/DATABASE/DHCP_Leases.png
|
||||
[screen4]: /docs/img/DATABASE/Events.png
|
||||
[screen5]: /docs/img/DATABASE/Nmap_Scan.png
|
||||
[screen6]: /docs/img/DATABASE/Online_History.png
|
||||
[screen7]: /docs/img/DATABASE/Parameters.png
|
||||
[screen8]: /docs/img/DATABASE/Pholus_Scan.png
|
||||
[screen9]: /docs/img/DATABASE/PiHole_Network.png
|
||||
[screen10]: /docs/img/DATABASE/Plugins_Events.png
|
||||
[screen11]: /docs/img/DATABASE/Plugins_History.png
|
||||
[screen12]: /docs/img/DATABASE/Plugins_Language_Strings.png
|
||||
[screen13]: /docs/img/DATABASE/Plugins_Objects.png
|
||||
[screen14]: /docs/img/DATABASE/ScanCycles.png
|
||||
[screen15]: /docs/img/DATABASE/Sessions.png
|
||||
[screen16]: /docs/img/DATABASE/Settings.png
|
||||
|
||||
31
docs/DEBUG_INVALID_JSON.md
Executable file
@@ -0,0 +1,31 @@
|
||||
# How to debug the Invalid JSON response error
|
||||
|
||||
Check the the HTTP response of the failing backend call by following these steps:
|
||||
|
||||
- Open developer console in your browser (usually, e. g. for Chrome, key F12 on the keyboard).
|
||||
- Follow the steps in this screenshot:
|
||||
|
||||
![F12DeveloperConsole][F12DeveloperConsole]
|
||||
|
||||
- Copy the URL causing the error and enter it in the address bar of your browser directly and hit enter. The copied URLs could look something like this (notice the query strings at the end):
|
||||
- `http://<pialert URL>:20211/php/server/devices.php?action=getDevicesTotals`
|
||||
- `http://<pialert URL>:20211/php/server/devices.php?action=getDevicesList&status=all`
|
||||
|
||||
- Post the error response in the existing issue thread on GitHub or create a new issue and include the redacted response of the failing query.
|
||||
|
||||
For reference, the above queries should return results in the following format:
|
||||
|
||||
First URL:
|
||||
|
||||
![array][array]
|
||||
|
||||
Second URL:
|
||||
|
||||
![json][json]
|
||||
|
||||
You can copy and paste any JSON result (result of the second query) into an online JSON checker, such as [this one](https://jsonchecker.com/) to check if it's valid.
|
||||
|
||||
|
||||
[F12DeveloperConsole]: ./img/DEBUG/Invalid_JSON_repsonse_debug.png "F12DeveloperConsole"
|
||||
[array]: ./img/DEBUG/array_result_example.png "array"
|
||||
[json]: ./img/DEBUG/JSON_result_example.png "json"
|
||||
2
docs/DEVICE_MANAGEMENT.md
Normal file → Executable file
@@ -18,7 +18,7 @@ To edit device information:
|
||||
- **Owner**: Device owner (The list is self-populated with existing owners)
|
||||
- **Type**: Select a device type from the dropdown list (Smartphone, Table,
|
||||
Laptop, TV, router, ....) or type a new device type
|
||||
- **Vendor**: Automatically updated by Pi.Alert
|
||||
- **Vendor**: Automatically updated by Pi.Alert when empty or unknown
|
||||
- **Favorite**: Mark the device as favorite and then it will appears at the
|
||||
begining of the device list
|
||||
- **Group**: Select a grouper ('Always on', 'Personal', Friends') or type
|
||||
|
||||
30
docs/ICONS.md
Executable file
@@ -0,0 +1,30 @@
|
||||
## Icons overview
|
||||
|
||||
Icons are used to visually distinguish devices in the app in most of the device listing tables and the [network tree](/docs/NETWORK_TREE.md). Currently only free [Font Awesome](https://fontawesome.com/search?o=r&m=free) icons (up-to v 6.4.0) are supported (I have an unblockable [sponsorship goal](https://github.com/sponsors/jokob-sk) to add the material design icon pack).
|
||||
|
||||

|
||||
|
||||
## ⚙ How to use custom device Icons
|
||||
|
||||
You can assign icons individually on each device in the Details tab.
|
||||
|
||||

|
||||
|
||||
- You can click into the `Icon` field or click the Pencil (2) icon in the above screenshot to enter any text. Only [free Font Awesome](https://fontawesome.com/search?o=r&m=free) icons in the following format will work:
|
||||
|
||||
1. For any value that is only prefixed with `fa-`, you can enter the value directly, such as `server`, `tv`, `ethernet`.
|
||||
2. If you want to add another classname, e.g. `fa-brands`, you can enter `brands fa-[fontawesome-icon-name]`, so for `apple` that is using the syntax`fa-brands fa-apple`, you would enter `brands fa-apple`.
|
||||
|
||||
- If you want to mass-apply an icon to all devices of the same device type (Field marked (4) in the above screenshot), you can click the copy button (Marked (1) in the above screenshot). A confirmation prompt is displayed. If you proceed, icons of all devices set to the same device type as the current device, will be overwritten with the current device's icon.
|
||||
|
||||
- The dropdown (3) contains all icons already used in the app for device icons. You need to navigate away or refresh the page once you add a new icon.
|
||||
|
||||
## 🌟 Pro Font Awesome icons
|
||||
|
||||
If you own the premium package of Font Awesome icons you can mount it in your Docker container the following way:
|
||||
|
||||
```yaml
|
||||
/font-awesome:/home/pi/pialert/front/lib/AdminLTE/bower_components/font-awesome:ro
|
||||
```
|
||||
|
||||
You can use the full range of Font Awesome icons afterwards.
|
||||
299
docs/INSTALL.md
@@ -1,299 +0,0 @@
|
||||
# Pi.Alert Installation Guide
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
Initially designed to run on a Raspberry PI, probably it can run on many other
|
||||
Linux distributions.
|
||||
|
||||
Estimated time: 20'
|
||||
|
||||
### Dependencies
|
||||
| Dependency | Comments |
|
||||
| ---------- | -------------------------------------------------------- |
|
||||
| Lighttpd | Probably works on other webservers / not tested |
|
||||
| arp-scan | Required for Scan Method 1 |
|
||||
| Pi.hole | Optional. Scan Method 2. Check devices doing DNS queries |
|
||||
| dnsmasq | Optional. Scan Method 3. Check devices using DHCP server |
|
||||
| IEEE HW DB | Necessary to identified Device vendor |
|
||||
|
||||
# Installation process
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
|
||||
|
||||
## Raspberry Setup
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
1.1 - Install 'Raspberry Pi OS'
|
||||
- Instructions https://www.raspberrypi.org/documentation/installation/installing-images/
|
||||
- *Lite version (without Descktop) is enough for Pi.Alert*
|
||||
|
||||
1.2 - Activate ssh
|
||||
- Create a empty file with name 'ssh' in the boot partition of the SD
|
||||
|
||||
1.3 - Start the raspberry
|
||||
|
||||
1.4 - Login to the system with pi user
|
||||
```
|
||||
user: pi
|
||||
password: raspberry
|
||||
```
|
||||
|
||||
1.5 - Change the default password of pi user
|
||||
```
|
||||
passwd
|
||||
```
|
||||
|
||||
1.6 - Setup the basic configuration
|
||||
```
|
||||
sudo raspi-config
|
||||
```
|
||||
|
||||
1.7 - Optionally, configure a static IP in raspi-config
|
||||
|
||||
1.8 - Update the OS
|
||||
```
|
||||
sudo apt-get update
|
||||
sudo apt-get upgrade
|
||||
sudo shutdown -r now
|
||||
```
|
||||
|
||||
|
||||
## Pi-hole Setup (optional)
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
2.1 - Links & Doc
|
||||
- https://pi-hole.net/
|
||||
- https://github.com/pi-hole/pi-hole
|
||||
- https://github.com/pi-hole/pi-hole/#one-step-automated-install
|
||||
|
||||
2.2 - Login to the system with pi user
|
||||
|
||||
2.3 - Install Pi-hole
|
||||
```
|
||||
curl -sSL https://install.pi-hole.net | bash
|
||||
```
|
||||
- Select "Install web admin interface"
|
||||
- Select "Install web server lighttpd"
|
||||
|
||||
2.4 - Configure Pi-hole admin password
|
||||
```
|
||||
pihole -a -p PASSWORD
|
||||
```
|
||||
|
||||
2.5 - Connect to web admin panel
|
||||
```
|
||||
hostname -I
|
||||
```
|
||||
- http://192.168.1.x/admin/
|
||||
- (*replace 192.168.1.x with your Raspberry IP*)
|
||||
|
||||
2.6 - Activate DHCP server
|
||||
- Pi-hole admin portal -> Settings -> DHCP -> Mark "DHCP server enabled"
|
||||
|
||||
2.7 - Add pi.alert DNS Record
|
||||
```
|
||||
hostname -I
|
||||
```
|
||||
- Pi-hole admin portal -> Local DNS -> DNS Records -> Add new domain /IP
|
||||
- pi.alert 192.168.1.x
|
||||
- (*replace 192.168.1.x with your Raspberry IP*)
|
||||
|
||||
2.8 - Deactivate your current DHCP Server (*Normaly at your router or AP*)
|
||||
|
||||
2.9 - Renew your computer IP to unsure you are using the new DHCP and DNS server
|
||||
- Windows: cmd -> ipconfig /renew
|
||||
- Linux: shell -> sudo dhclient -r; sudo dhclient
|
||||
- Mac: Apple menu -> System Preferences -> Network -> Select the network
|
||||
-> Advanced -> TCP/IP -> Renew DHCP Lease
|
||||
|
||||
|
||||
## Lighttpd & PHP
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
If you have installed Pi.hole, lighttpd and PHP are already installed and this
|
||||
block is not necessary
|
||||
|
||||
3.1 - Install lighttpd
|
||||
```
|
||||
sudo apt-get install lighttpd -y
|
||||
```
|
||||
|
||||
3.2 - If Pi.Alert will be the only site available in this webserver, you can
|
||||
redirect the default server page to pialert subfolder
|
||||
```
|
||||
sudo mv /var/www/html/index.lighttpd.html /var/www/html/index.lighttpd.html.old
|
||||
sudo ln -s ~/pialert/install/index.html /var/www/html/index.html
|
||||
```
|
||||
|
||||
3.3 - Install PHP
|
||||
```
|
||||
sudo apt-get install php php-cgi php-fpm php-sqlite3 -y
|
||||
```
|
||||
|
||||
3.4 - Activate PHP
|
||||
```
|
||||
sudo lighttpd-enable-mod fastcgi-php
|
||||
sudo /etc/init.d/lighttpd restart
|
||||
```
|
||||
|
||||
|
||||
## arp-scan & Python
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
4.1 - Install arp-scan utility and test
|
||||
```
|
||||
sudo apt-get install arp-scan -y
|
||||
sudo arp-scan -l
|
||||
```
|
||||
|
||||
4.2 - Test Python
|
||||
|
||||
New versions of 'Raspberry Pi OS' includes Python. You can check that
|
||||
Python is installed with the command:
|
||||
```
|
||||
python -V
|
||||
```
|
||||
|
||||
New versions of Ubuntu includes Python 3. You can choose between use `python3`
|
||||
command or to install Python 2 (that includes `python` command).
|
||||
|
||||
|
||||
If you prefer to use Python 3, in the next installation block, you must update
|
||||
`pialert.cron` file with the correct command: `python3` instead of `python`.
|
||||
```
|
||||
python3 -V
|
||||
```
|
||||
|
||||
4.3 - If Python is not installed in your system, you can install it with this
|
||||
command:
|
||||
```
|
||||
sudo apt-get install python
|
||||
```
|
||||
Or this one if you prefer Python 3:
|
||||
```
|
||||
sudo apt-get install python3
|
||||
```
|
||||
|
||||
## Pi.Alert
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
5.1 - Download Pi.Alert and uncompress
|
||||
```
|
||||
cd
|
||||
curl -LO https://github.com/pucherot/Pi.Alert/raw/main/tar/pialert_latest.tar
|
||||
tar xvf pialert_latest.tar
|
||||
rm pialert_latest.tar
|
||||
```
|
||||
|
||||
5.2 - Public the front portal
|
||||
```
|
||||
sudo ln -s ~/pialert/front /var/www/html/pialert
|
||||
```
|
||||
|
||||
5.3 - Configure web server redirection
|
||||
|
||||
If you have configured your DNS server (Pi.hole or other) to resolve pi.alert
|
||||
with the IP of your raspberry, youy must configure lighttpd to redirect these
|
||||
requests to the correct pialert web folder
|
||||
```
|
||||
sudo cp ~/pialert/install/pialert_front.conf /etc/lighttpd/conf-available
|
||||
sudo ln -s ../conf-available/pialert_front.conf /etc/lighttpd/conf-enabled/pialert_front.conf
|
||||
sudo /etc/init.d/lighttpd restart
|
||||
```
|
||||
|
||||
5.4 - If you want to use email reporting with gmail
|
||||
- Go to your Google Account https://myaccount.google.com/
|
||||
- On the left navigation panel, click Security
|
||||
- On the bottom of the page, in the Less secure app access panel,
|
||||
click Turn on access
|
||||
- Click Save button
|
||||
|
||||
5.5 - Config Pialert parameters
|
||||
```
|
||||
sed -i "s,'/home/pi/pialert','$HOME/pialert'," ~/pialert/config/pialert.conf
|
||||
nano ~/pialert/config/pialert.conf
|
||||
```
|
||||
- If you want to use email reporting, configure this parameters
|
||||
```ini
|
||||
REPORT_MAIL = True
|
||||
SMTP_USER = 'user@gmail.com'
|
||||
SMTP_PASS = 'password'
|
||||
REPORT_TO = 'user@gmail.com'
|
||||
```
|
||||
|
||||
- If you want to update your Dynamic DNS, configure this parameters
|
||||
```ini
|
||||
DDNS_ACTIVE = True
|
||||
DDNS_DOMAIN = 'your_domain.freeddns.org'
|
||||
DDNS_USER = 'dynu_user'
|
||||
DDNS_PASSWORD = 'A0000000B0000000C0000000D0000000'
|
||||
DDNS_UPDATE_URL = 'https://api.dynu.com/nic/update?'
|
||||
```
|
||||
|
||||
- If you have installed Pi.hole and DHCP, activate this parameters
|
||||
```ini
|
||||
PIHOLE_ACTIVE = True
|
||||
DHCP_ACTIVE = True
|
||||
```
|
||||
|
||||
5.6 - Update vendors DB
|
||||
```
|
||||
python ~/pialert/back/pialert.py update_vendors
|
||||
```
|
||||
or
|
||||
```
|
||||
python3 ~/pialert/back/pialert.py update_vendors
|
||||
```
|
||||
|
||||
5.7 - Test Pi.Alert Scan
|
||||
```
|
||||
python ~/pialert/back/pialert.py internet_IP
|
||||
python ~/pialert/back/pialert.py 1
|
||||
```
|
||||
or
|
||||
```
|
||||
python3 ~/pialert/back/pialert.py internet_IP
|
||||
python3 ~/pialert/back/pialert.py 1
|
||||
```
|
||||
|
||||
5.8 - Update crontab template with python3
|
||||
|
||||
If you prefer to use Python 3 (installed in the previous block), you must
|
||||
update `pialert.cron` file with the correct command: `python3` instead of
|
||||
`python`
|
||||
```
|
||||
sed -i 's/python/python3/g' ~/pialert/install/pialert.cron
|
||||
```
|
||||
|
||||
5.9 - Add crontab jobs
|
||||
```
|
||||
(crontab -l 2>/dev/null; cat ~/pialert/install/pialert.cron) | crontab -
|
||||
```
|
||||
|
||||
5.10 - Add permissions to the web-server user
|
||||
```
|
||||
sudo chgrp -R www-data ~/pialert/db
|
||||
chmod -R 770 ~/pialert/db
|
||||
```
|
||||
|
||||
5.11 - Check DNS record for pi.alert (explained in point 2.7 of Pi.hole
|
||||
installation)
|
||||
- Add pi.alert DNS Record
|
||||
```
|
||||
hostname -I
|
||||
```
|
||||
- Pi-hole admin portal -> Local DNS -> DNS Records -> Add new domain /IP
|
||||
- pi.alert 192.168.1.x
|
||||
- (*replace 192.168.1.x with your Raspberry IP*)
|
||||
|
||||
5.12 - Use admin panel to configure the devices
|
||||
- http://pi.alert/
|
||||
- http://192.168.1.x/pialert/
|
||||
- (*replace 192.168.1.x with your Raspberry IP*)
|
||||
|
||||
|
||||
## Device Management
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
|
||||
- [Device Management instructions](./DEVICE_MANAGEMENT.md)
|
||||
|
||||
|
||||
### License
|
||||
GPL 3.0
|
||||
[Read more here](../LICENSE.txt)
|
||||
|
||||
### Contact
|
||||
pi.alert.application@gmail.com
|
||||
54
docs/NETWORK_TREE.md
Executable file
@@ -0,0 +1,54 @@
|
||||
## How to setup your Network page
|
||||
|
||||
Make sure you have a root device with the MAC `Internet` (No other MAC addresses are currently supported as the root node).
|
||||
|
||||
## ⚡Quick setup:
|
||||
|
||||
* Go to Devices > Device Details.
|
||||
* Find the device(s) you want to use as network devices (network nodes).
|
||||
* Set the Type of such a device to one of the following: AP, Firewall, Gateway, PLC, Powerline, Router, Switch, USB LAN Adapter, USB WIFI Adapter and WLAN.
|
||||
* Save and go to Network where the devices you've marked as network devices (by selecting the Type as mentioned above) will show up as tabs.
|
||||
* You can now assign the Unassigend devices to the correct network node.
|
||||
|
||||
|
||||
## 🔍Detailed example:
|
||||
|
||||
In this example you will setup a device named `rapberrypi` as a `Switch` in our network.
|
||||
|
||||
### 1) Device details page
|
||||
|
||||
- Go to the `Devices` (1) page:
|
||||
|
||||

|
||||
|
||||
- In the (2) `Details` tab navigate to the the `Type` (3) dropdown and select the type `Switch` (4).
|
||||
|
||||
> Note: Only the following device types will show up as selectable Network nodes ( = devices you can connect other devices to):
|
||||
> AP, Firewall, Gateway, PLC, Powerline, Router, Switch, USB LAN Adapter, USB WIFI Adapter and WLAN.
|
||||
|
||||
- Assign a device to your root device from the `Node` (5) dropdown which has the MAC `Internet` (6) (Your name may differ, but the MAC needs to be set to `Internet` - this is done by default).
|
||||
|
||||
- Save your changes (7)
|
||||
|
||||
### 1) Network page
|
||||
|
||||
- Navigate to your `Network` (1) page:
|
||||
|
||||

|
||||
|
||||
- Notice the newly added `raspberrypi` (2) tab which now represents a network node, also showing up in the tree (3).
|
||||
- As we asssigned the `raspberrypi` in the previous 1) Device details page section to the `Internet` parent network node in step (6), the link is also showing up in the tree diagram (4)
|
||||
- We can now assign the device `(AppleTV)` (5) to this `raspberrypi` node, representing a network Switch in this example
|
||||
|
||||
### 1) Network page with 2 levels
|
||||
|
||||
- After clicking the `Assign` button in the previous section, the `(AppleTV)` (1) device is now connected to our `raspberrypi` (2).
|
||||
|
||||

|
||||
|
||||
- You can see the `raspberrypi` represents the Network node type `Switch` (3)
|
||||
- The `(AppleTV)` to `raspberrypi` connection is also displayed in the table of `Connected devices` (4).
|
||||
- You can also see that our `raspberrypi` node is connected to it's Parent network device node with the MAC `Internet` (5). This connection again shows up in the tree (6) as well.
|
||||
|
||||
|
||||
|
||||
2
docs/RAMDOM_MAC.md → docs/RANDOM_MAC.md
Normal file → Executable file
@@ -4,7 +4,7 @@
|
||||
The latest versions of some operating systems (IOS and Android) incorporate a
|
||||
new & interesting functionality to improve privacy: **Random MACs**.
|
||||
|
||||
This functionality allows you to **hide the true MAC** of the device and
|
||||
This functionality allows you to **hide the real MAC** of the device and
|
||||
**assign a random MAC** when we connect to WIFI networks.
|
||||
|
||||
This behavior is especially useful when connecting to WIFI's that we do not
|
||||
102
docs/README.md
Executable file
@@ -0,0 +1,102 @@
|
||||
## Documentation overview
|
||||
|
||||
In the app hover-over settings or fields/labels or click blue in-app ❔ (question-mark) icons to get to relevant documentation pages.
|
||||
|
||||

|
||||
|
||||
There is also an in-app Help / FAQ section that should be answering frequently asked questions.
|
||||
|
||||
### 📥 Installation
|
||||
|
||||
⚠ Only tested as a [docker container - follow these instructions here](https://github.com/jokob-sk/Pi.Alert/blob/main/dockerfiles/README.md).
|
||||
> Check out [leiweibau's fork](https://github.com/leiweibau/Pi.Alert/) if you want to install Pi.Alert on the server directly or original instructions for [pucherot's original code](https://github.com/pucherot/Pi.Alert/)
|
||||
|
||||
|
||||
### 📚 Table of contents
|
||||
|
||||
#### Popular/Suggested
|
||||
|
||||
- [API endpoints details](/docs/API.md)
|
||||
- [Plugin system details and how to develop your own](/front/plugins/README.md)
|
||||
- [Network tree map configuration](/docs/NETWORK_TREE.md)
|
||||
- [Gmail as SMTP server for sending emails](/docs/SMTP_GMAIL.md)
|
||||
- [Subnets and vlans configuration for arp-scan](/docs/SUBNETS.md)
|
||||
|
||||
#### System Management
|
||||
|
||||
- [Manage devices (legacy docs)](/docs/DEVICE_MANAGEMENT.md)
|
||||
- [Random MAC/MAC icon meaning (legacy docs)](/docs/RANDOM_MAC.md)
|
||||
- [Custom Icons configuration and support](/docs/ICONS.md)
|
||||
|
||||
#### Examples
|
||||
|
||||
- [N8N webhook example](/docs/WEBHOOK_N8N.md)
|
||||
|
||||
#### Misc
|
||||
|
||||
- [New Version notifications](/docs/VERSIONS.md)
|
||||
- [Version history (legacy)](/docs/VERSIONS_HISTORY.md)
|
||||
- [Invalid JSON errors debug help](/docs/DEBUG_INVALID_JSON.md)
|
||||
- [Database structure](/docs/DATABASE.md)
|
||||
|
||||
Feel free to suggest or submit new docs via a PR.
|
||||
|
||||
## 👨💻 Development priorities
|
||||
|
||||
Highest to lowest:
|
||||
|
||||
* Fixing core functionality bugs not solvable with workarounds
|
||||
* New core functionality unlocking other opportunities (e.g.: plugins)
|
||||
* Refactoring enabling faster implementation of future functionality
|
||||
* UI improvements
|
||||
|
||||
Design philosophy: Focus on core functionality and leverage existing apps and tools to make PiAlert integratable into other workflows.
|
||||
|
||||
Examples:
|
||||
|
||||
1. Supporting apprise makes more sense than implementing multiple individual notification gateways
|
||||
2. Implementing regular expressions support across settings for validation makes more sense than validating one setting with a specific expression.
|
||||
|
||||
UI specific requests are low priority as the framework picked by the original developer is not very extensible (and afaik doesn't support components) and has limited mobile support. Also I argue the value proposition is smaller than working on something else.
|
||||
|
||||
Feel free to submit PRs if interested. try to **keep the PRs small/on topic** so they are easier to review and approve.
|
||||
|
||||
That being said, I'd reconsider if more people and or recurring sponsors file a request 😉.
|
||||
|
||||
## 🙏 Feature requests
|
||||
|
||||
Please be as detailed as possible with **workarounds** you considered and why a native feature is the better way. This gives me better context and will make it more likely to be implemented. Ideally a feature request should be in the format "I want to be able to do XYZ so that ZYX. I considered these approaches XYZ".
|
||||
|
||||
## ➕ Pull-requests (PRs)
|
||||
|
||||
If you submit a PR please:
|
||||
|
||||
1. Check that your changes are backward compatible with existing installations and with a blank setup.
|
||||
2. Existing features should always be preserved.
|
||||
3. Keep the PR small, on-topic and don't change code that is not necessary for the PR to work
|
||||
4. New features code should ideally be re-usable for different purposes, not be for a very narrow use-case.
|
||||
5. New functionality should ideally be implemented via the Plugins system, if possible.
|
||||
|
||||
Suggested test cases:
|
||||
|
||||
- Blank setup with no DB or config
|
||||
- Existing DB / config
|
||||
- Sending a notification (e. g. Delete a device and wait for a scan to run) and testing all notification gateways, especially:
|
||||
- Email, Apprise (e.g. via Telegram), webhook (e.g. via Discord), MQTT (e.g. via HomeAssitant)
|
||||
- Saving settings
|
||||
- Test a couple of plugins
|
||||
- Check the Error log for anything unusual
|
||||
|
||||
Some additional context:
|
||||
|
||||
* Permanent settings/config is stored in the `pialert.conf` file
|
||||
* Currently temporary (session?) settings are stored in the `Parameters` DB table as key - value pairs. This table is wiped during a container rebuild/restart and it's values re-initialized from cookies / session data from the browser.
|
||||
|
||||
## 🐛 Submitting an issue or bug
|
||||
|
||||
Before submitting a new issue please spend a couple of minutes on research:
|
||||
|
||||
* Check [🛑 Common issues](https://github.com/jokob-sk/Pi.Alert/tree/main/dockerfiles#-common-issues)
|
||||
* Check [💡 Closed issues](https://github.com/jokob-sk/Pi.Alert/issues?q=is%3Aissue+is%3Aclosed) if a similar issue was solved in the past.
|
||||
|
||||
⚠ Please follow the pre-defined issue template to resolve your issue faster.
|
||||
15
docs/SMTP_GMAIL.md
Executable file
@@ -0,0 +1,15 @@
|
||||
## Use the Gmail SMTP server
|
||||
|
||||
1) Create an app password by following the instructions from Google, you need to Enable 2FA for this to work.
|
||||
[https://support.google.com/accounts/answer/185833](https://support.google.com/accounts/answer/185833)
|
||||
|
||||
2) Specify the following settings:
|
||||
|
||||
```python
|
||||
SMTP_SKIP_TLS=True
|
||||
SMTP_FORCE_SSL=True
|
||||
SMTP_PORT=465
|
||||
SMTP_SERVER='smtp.gmail.com'
|
||||
SMTP_PASS='16-digit passcode from google'
|
||||
```
|
||||
|
||||
21
docs/SUBNETS.md
Executable file
@@ -0,0 +1,21 @@
|
||||
## Subnets configuration
|
||||
|
||||
The arp-scan time itself depends on the number of IP addresses to check.
|
||||
The number of IPs to check depends on the [network mask](https://www.calculator.net/ip-subnet-calculator.html) you set on the `SCAN_SUBNETS` setting.
|
||||
|
||||
For example, a `/24` mask results in 256 IPs to check, where as a `/16` mask checks around 65,536. Every IP takes a couple seconds. This means that with an incorrect configuration the arp-scan will take hours to complete instead of seconds.
|
||||
|
||||
- Specify the network mask. For example, the filter `192.168.1.0/24` covers IP ranges 192.168.1.0 to 192.168.1.255
|
||||
- Run `iwconfig` in your container to find your interface name(s) (e.g.: `eth0`, `eth1`).
|
||||
- Append e.g.: ` -vlan=107` to the interface field (e.g.: `eth0 -vlan=107`) for multiple vlans. More details in this [comment in this issue](https://github.com/jokob-sk/Pi.Alert/issues/170#issuecomment-1419902988)
|
||||
|
||||
### 🔍Example:
|
||||
|
||||

|
||||
|
||||
### Support for VLANS
|
||||
|
||||
Please note about the accessibility of the macvlans when they are configured on the same computer. My understanding this is a general networking behavior, but feel free to clarify via a PR/issue.
|
||||
|
||||
- Pi.Alert does not detect the macvlan container when it is running on the same computer.
|
||||
- Pi.Alert recognizes the macvlan container when it is running on a different computer.
|
||||
25
docs/VERSIONS.md
Executable file
@@ -0,0 +1,25 @@
|
||||
## Am I running the latest released version?
|
||||
|
||||
Since version 23.01.14 PiAlert uses a simple timestamp-based version check to verify if a new version is available. You can check the [current and past releases here](https://github.com/jokob-sk/Pi.Alert/releases), or have a look at what I'm [currently working on](https://github.com/jokob-sk/Pi.Alert/issues/138).
|
||||
|
||||
If you are not on the latest version, the app will notify you, that a new released version is avialable the following way:
|
||||
|
||||
### 📧 Via email on a notification event
|
||||
|
||||
If any notification occurs and an email is sent, the email will contain a note that a new version is available. See the sample email below:
|
||||
|
||||

|
||||
|
||||
### 🆕 In the UI
|
||||
|
||||
In the UI via a notification Icon and via a custom message in the Maintenance section.
|
||||
|
||||

|
||||
|
||||
For a comparison, this is how the UI looks like if you are on the latest stable image:
|
||||
|
||||

|
||||
|
||||
## Implementation details
|
||||
|
||||
During build a [/home/pi/pialert/front/buildtimestamp.txt](https://github.com/jokob-sk/Pi.Alert/blob/092797e75ccfa8359444ad149e727358ac4da05f/Dockerfile#L44) file is created. The app then periodically checks if a new release is available with a newer timestamp in GitHub's rest-based JSON endpoint (check the `def isNewVersion():` method in `pialert.py` for details).
|
||||
52
docs/VERSIONS_HISTORY.md
Normal file → Executable file
@@ -3,6 +3,9 @@
|
||||
|
||||
| Version | Description |
|
||||
| ------- | --------------------------------------------------------------- |
|
||||
| v3.00 | Major set of New features & Enhancements |
|
||||
| v2.70 | New features & Usability improvements in the web prontal |
|
||||
| v2.61 | Bug fixing |
|
||||
| v2.60 | Improved the compability of installation process (Ubuntu) |
|
||||
| v2.56 | Bug fixing |
|
||||
| v2.55 | Bug fixing |
|
||||
@@ -11,6 +14,54 @@
|
||||
| v2.50 | First public release |
|
||||
|
||||
|
||||
# 🆕 2022+ [Newest Release notes](https://github.com/jokob-sk/Pi.Alert/issues/138)
|
||||
|
||||
## Pi.Alert v3.02
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
**PENDING UPDATE DOC**
|
||||
- Fixed: UNIQUE constraint failed with Local MAC #114
|
||||
|
||||
|
||||
## Pi.Alert v3.01
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
**PENDING UPDATE DOC**
|
||||
- Fixed: Problem with local MAC & IP (raspberry) #106
|
||||
|
||||
|
||||
## Pi.Alert v3.00
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
**PENDING UPDATE DOC**
|
||||
- `arp-scan` config options: interface, several subnets. #101 #15
|
||||
- Next/previos button while editing devices #66 #37
|
||||
- Internet presence/sessions monitoring #63
|
||||
- Logical delete / archive / hide Device #93
|
||||
- Flag to mark device with random MAC's #87
|
||||
- New Device Types predefined in combobox #92
|
||||
- Ask before leave the page with unsaved changes #104
|
||||
- Option to don't mark devices as new during installation #94
|
||||
- Uninstall script #62
|
||||
- Fixed: Error updating name of devices w/o IP #97
|
||||
- Fixed: Deleted devices reappear #84
|
||||
- Fixed: Device running Pi.Alert must be marked as "on-line" #76
|
||||
- Fixed: Incorrect calculation of presence hours #102
|
||||
- Fixed: Problem redirect to homepage clicking in logo #103
|
||||
|
||||
|
||||
## Pi.Alert v2.70
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
- Added Client names resolution #43
|
||||
- Added Check to mark devices as "known" #16
|
||||
- Remember "Show XXX entries" dropdown value #16 #26
|
||||
- Remember "sorting" in devices #16
|
||||
- Remember "Device panel " in device detail #16
|
||||
- Added "All" option to "Show x Entries" option #16
|
||||
- Added optional Location field (Door, Basement, etc.) to devices #16
|
||||
- "Device updated successfully" message now is not modal #16
|
||||
- Now is possible to delete Devices #16
|
||||
- Added Device Type Singleboard Computer (SBC) #16
|
||||
- Allowed to use " in device name #42
|
||||
|
||||
|
||||
## Pi.Alert v2.60
|
||||
<!--- --------------------------------------------------------------------- --->
|
||||
- `pialert.conf` moved from `back` to `config` folder
|
||||
@@ -18,6 +69,7 @@
|
||||
- Added compatibility with Python 3 (default version installed with Ubuntu)
|
||||
- Added compatibility in the Installation guide with Ubuntu server
|
||||
- Eliminated some unnecessary packages from the installation
|
||||
|
||||
|
||||
|
||||
### License
|
||||
|
||||
18
docs/WEBHOOK_N8N.md
Executable file
@@ -0,0 +1,18 @@
|
||||
### Create a simple n8n workflow
|
||||
|
||||

|
||||
|
||||
### Specify your email template
|
||||
See [sample JSON](https://github.com/jokob-sk/Pi.Alert/blob/main/back/webhook_json_sample.json) if you want to see the JSON paths used in the email template below
|
||||

|
||||
|
||||
```
|
||||
Events count: {{ $json["body"]["attachments"][0]["text"]["events"].length }}
|
||||
New devices count: {{ $json["body"]["attachments"][0]["text"]["new_devices"].length }}
|
||||
```
|
||||
|
||||
### Get your webhook in n8n
|
||||

|
||||
|
||||
### Configure PiAlert to point to the above URL
|
||||

|
||||
|
Before Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 135 KiB |
BIN
docs/img/2_4_device_nmap.jpg
Executable file
|
After Width: | Height: | Size: 172 KiB |
BIN
docs/img/2_5_device_nmap_ready.jpg
Executable file
|
After Width: | Height: | Size: 198 KiB |
|
Before Width: | Height: | Size: 136 KiB |
0
docs/img/4_report_1.jpg
Normal file → Executable file
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
BIN
docs/img/4_report_2.jpg
Normal file → Executable file
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 32 KiB |
BIN
docs/img/@eaDir/device_details.png@SynoEAStream
Executable file
BIN
docs/img/@eaDir/devices_dark.png@SynoEAStream
Executable file
BIN
docs/img/@eaDir/devices_light.png@SynoEAStream
Executable file
BIN
docs/img/@eaDir/devices_split.png@SynoEAStream
Executable file
BIN
docs/img/@eaDir/events.png@SynoEAStream
Executable file
BIN
docs/img/@eaDir/help_faq.png@SynoEAStream
Executable file
BIN
docs/img/@eaDir/maintenance.png@SynoEAStream
Executable file
BIN
docs/img/@eaDir/network.png@SynoEAStream
Executable file
BIN
docs/img/@eaDir/presence.png@SynoEAStream
Executable file
BIN
docs/img/@eaDir/settings.png@SynoEAStream
Executable file
BIN
docs/img/DATABASE/CurrentScan.png
Executable file
|
After Width: | Height: | Size: 58 KiB |
BIN
docs/img/DATABASE/DHCP_Leases.png
Executable file
|
After Width: | Height: | Size: 7.1 KiB |
BIN
docs/img/DATABASE/Devices.png
Executable file
|
After Width: | Height: | Size: 85 KiB |
BIN
docs/img/DATABASE/Events.png
Executable file
|
After Width: | Height: | Size: 43 KiB |
BIN
docs/img/DATABASE/Nmap_Scan.png
Executable file
|
After Width: | Height: | Size: 44 KiB |
BIN
docs/img/DATABASE/Online_History.png
Executable file
|
After Width: | Height: | Size: 47 KiB |
BIN
docs/img/DATABASE/Parameters.png
Executable file
|
After Width: | Height: | Size: 39 KiB |
BIN
docs/img/DATABASE/Pholus_Scan.png
Executable file
|
After Width: | Height: | Size: 92 KiB |
BIN
docs/img/DATABASE/PiHole_Network.png
Executable file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
docs/img/DATABASE/Plugins_Events.png
Executable file
|
After Width: | Height: | Size: 17 KiB |
BIN
docs/img/DATABASE/Plugins_History.png
Executable file
|
After Width: | Height: | Size: 72 KiB |
BIN
docs/img/DATABASE/Plugins_Language_Strings.png
Executable file
|
After Width: | Height: | Size: 42 KiB |
BIN
docs/img/DATABASE/Plugins_Objects.png
Executable file
|
After Width: | Height: | Size: 65 KiB |
BIN
docs/img/DATABASE/ScanCycles.png
Executable file
|
After Width: | Height: | Size: 35 KiB |
BIN
docs/img/DATABASE/Sessions.png
Executable file
|
After Width: | Height: | Size: 61 KiB |
BIN
docs/img/DATABASE/Settings.png
Executable file
|
After Width: | Height: | Size: 52 KiB |
BIN
docs/img/DEBUG/Invalid_JSON_repsonse_debug.png
Executable file
|
After Width: | Height: | Size: 197 KiB |
BIN
docs/img/DEBUG/JSON_result_example.png
Executable file
|
After Width: | Height: | Size: 54 KiB |
BIN
docs/img/DEBUG/array_result_example.png
Executable file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
docs/img/GENERAL/in-app-help.png
Executable file
|
After Width: | Height: | Size: 8.7 KiB |
BIN
docs/img/ICONS/device-icon.png
Executable file
|
After Width: | Height: | Size: 49 KiB |
BIN
docs/img/ICONS/devices-icons.png
Executable file
|
After Width: | Height: | Size: 13 KiB |
BIN
docs/img/NETWORK_TREE/Device_Details_Network_Type.png
Executable file
|
After Width: | Height: | Size: 100 KiB |
BIN
docs/img/NETWORK_TREE/Network_Page.png
Executable file
|
After Width: | Height: | Size: 185 KiB |
BIN
docs/img/NETWORK_TREE/Network_Page_2_Levels.png
Executable file
|
After Width: | Height: | Size: 89 KiB |
BIN
docs/img/SUBNETS/subnets_vlan.png
Executable file
|
After Width: | Height: | Size: 20 KiB |
BIN
docs/img/VERSIONS/latest-version-maintenance.png
Executable file
|
After Width: | Height: | Size: 60 KiB |
BIN
docs/img/VERSIONS/new-version-available-email.png
Executable file
|
After Width: | Height: | Size: 32 KiB |
BIN
docs/img/VERSIONS/new-version-available-maintenance.png
Executable file
|
After Width: | Height: | Size: 61 KiB |
BIN
docs/img/WEBHOOK_N8N/Webhook_settings.png
Executable file
|
After Width: | Height: | Size: 61 KiB |
BIN
docs/img/WEBHOOK_N8N/n8n_send_email_settings.png
Executable file
|
After Width: | Height: | Size: 38 KiB |
BIN
docs/img/WEBHOOK_N8N/n8n_webhook_settings.png
Executable file
|
After Width: | Height: | Size: 31 KiB |
BIN
docs/img/WEBHOOK_N8N/n8n_workflow.png
Executable file
|
After Width: | Height: | Size: 6.3 KiB |
0
docs/img/android_random_mac.jpg
Normal file → Executable file
|
Before Width: | Height: | Size: 551 KiB After Width: | Height: | Size: 551 KiB |
BIN
docs/img/device_details.png
Executable file
|
After Width: | Height: | Size: 132 KiB |
BIN
docs/img/device_nmap.png
Executable file
|
After Width: | Height: | Size: 157 KiB |
BIN
docs/img/devices_dark.png
Executable file
|
After Width: | Height: | Size: 187 KiB |