Compare commits
704 Commits
dev-micros
...
v4.0.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a4743b6db5 | ||
|
|
b3880f7e7e | ||
|
|
30fffdfe52 | ||
|
|
c8d6540ca6 | ||
|
|
2b2f08c231 | ||
|
|
0cfed90a7b | ||
|
|
01008dc1aa | ||
|
|
26b90cfdba | ||
|
|
b218051104 | ||
|
|
a2fa93938f | ||
|
|
c220d11dd0 | ||
|
|
40d533ecc5 | ||
|
|
d1a1c96e74 | ||
|
|
1a18985c0d | ||
|
|
8eede7b559 | ||
|
|
caab40b08e | ||
|
|
18fa320b19 | ||
|
|
6f9f6638d6 | ||
|
|
5688e2f7bc | ||
|
|
4738097178 | ||
|
|
591ecc3664 | ||
|
|
b9089a39ac | ||
|
|
b7bdf89d37 | ||
|
|
849ea9f7b2 | ||
|
|
bd737ef563 | ||
|
|
e250bd38f8 | ||
|
|
7083da702a | ||
|
|
3d01c20339 | ||
|
|
3b74649206 | ||
|
|
a10f0c992e | ||
|
|
32974620c4 | ||
|
|
0781e3ad8e | ||
|
|
0ce107eea0 | ||
|
|
73e3efd92f | ||
|
|
69bff8d8fe | ||
|
|
22b223f82f | ||
|
|
7b0d43c8b8 | ||
|
|
7c64fb7a11 | ||
|
|
61f8b69f02 | ||
|
|
c32fedeb4c | ||
|
|
4ba3bed742 | ||
|
|
810318b584 | ||
|
|
863fda3ef3 | ||
|
|
deb7715ea1 | ||
|
|
adaebb17e7 | ||
|
|
e3f6ab43ff | ||
|
|
cf977b7612 | ||
|
|
fedb60fc8f | ||
|
|
f8ddf88b8c | ||
|
|
301581da63 | ||
|
|
88cb945760 | ||
|
|
c61d0052a9 | ||
|
|
147c3a1153 | ||
|
|
e9f1e4d8da | ||
|
|
f3a995f68f | ||
|
|
a967163d28 | ||
|
|
d3514213ca | ||
|
|
a55341f406 | ||
|
|
1c9a5bfa18 | ||
|
|
179900fab0 | ||
|
|
9011e30521 | ||
|
|
418f4ce576 | ||
|
|
9eb65237f9 | ||
|
|
89a667569b | ||
|
|
b87091a33a | ||
|
|
d9a659acbc | ||
|
|
ec8347fd7d | ||
|
|
b161729c46 | ||
|
|
2194a7fc23 | ||
|
|
03c6471e97 | ||
|
|
be52ed7d44 | ||
|
|
3afc9db5d3 | ||
|
|
30d882e1c0 | ||
|
|
4836279b77 | ||
|
|
4a74bfebc4 | ||
|
|
653cd758f4 | ||
|
|
e65f577202 | ||
|
|
3f9478de30 | ||
|
|
070a03c73e | ||
|
|
244692e766 | ||
|
|
a154fffcce | ||
|
|
ae0c529fca | ||
|
|
edcca87acf | ||
|
|
356188a350 | ||
|
|
cafb950aa7 | ||
|
|
549627a355 | ||
|
|
e6307648da | ||
|
|
fab4467bfd | ||
|
|
37666c5075 | ||
|
|
871efc88b5 | ||
|
|
db5611233b | ||
|
|
caa1fd4d9b | ||
|
|
be3f5548f4 | ||
|
|
a33740c372 | ||
|
|
130d71d5a0 | ||
|
|
bcd9c692e6 | ||
|
|
5947f3362d | ||
|
|
4bbfbb82bc | ||
|
|
6f7876d3e7 | ||
|
|
d4aff8067e | ||
|
|
eaca70d29b | ||
|
|
a1889c88d3 | ||
|
|
53b3926e29 | ||
|
|
745e76db79 | ||
|
|
82e153c277 | ||
|
|
b080b73b97 | ||
|
|
1c05d8df28 | ||
|
|
efc80a183b | ||
|
|
8a92912035 | ||
|
|
b870cf828a | ||
|
|
4cb4fe53a5 | ||
|
|
f70992e9a1 | ||
|
|
eb48d77636 | ||
|
|
df1686a2ae | ||
|
|
8781c78c15 | ||
|
|
ad5b0ce2a0 | ||
|
|
039e641046 | ||
|
|
f1f62efe6f | ||
|
|
b3053f32b2 | ||
|
|
09184b0402 | ||
|
|
98562fd967 | ||
|
|
65e9e64cb4 | ||
|
|
573ecbd58d | ||
|
|
a801fcca49 | ||
|
|
e9d16ee172 | ||
|
|
db4dfc93e8 | ||
|
|
cf17f03ae0 | ||
|
|
64f3ee797e | ||
|
|
e287705e88 | ||
|
|
9583b2bae0 | ||
|
|
2698993a6d | ||
|
|
a14b595e8c | ||
|
|
d7957b85ae | ||
|
|
227a51423d | ||
|
|
ea0e7340cc | ||
|
|
999680e94b | ||
|
|
566dbbb157 | ||
|
|
75d995d54e | ||
|
|
908faa491b | ||
|
|
7a254e343e | ||
|
|
016ac336b9 | ||
|
|
1cfd3a10ad | ||
|
|
1838029d22 | ||
|
|
7767043a5a | ||
|
|
b1cfa6db19 | ||
|
|
623d5a5546 | ||
|
|
8c676eb965 | ||
|
|
1e4ccce36c | ||
|
|
1808206e74 | ||
|
|
0fbc2b92aa | ||
|
|
42d274e988 | ||
|
|
ec64680a66 | ||
|
|
d006b89efd | ||
|
|
48654c382d | ||
|
|
8d23168a87 | ||
|
|
e27baaec9d | ||
|
|
31a37ae506 | ||
|
|
6360f90102 | ||
|
|
b829003711 | ||
|
|
fae773b25a | ||
|
|
0e8df4441d | ||
|
|
35e7e26d67 | ||
|
|
14c88280f5 | ||
|
|
aaab9d3bc5 | ||
|
|
02095595c6 | ||
|
|
9a80664ce2 | ||
|
|
b69e7e4ddf | ||
|
|
db642782b0 | ||
|
|
33dedbbfa3 | ||
|
|
a8f53de511 | ||
|
|
3b7dad989f | ||
|
|
4d62c5298a | ||
|
|
538c6b5233 | ||
|
|
969a14802b | ||
|
|
5c7f683d16 | ||
|
|
c7874e5e40 | ||
|
|
628e4fa873 | ||
|
|
8e01abbeb6 | ||
|
|
89ee99f98d | ||
|
|
21452d091f | ||
|
|
d21f55b476 | ||
|
|
d01453ea1d | ||
|
|
09e3327e94 | ||
|
|
00deeb9fdd | ||
|
|
0aed1ba04f | ||
|
|
526947e3a1 | ||
|
|
b52308df80 | ||
|
|
bdb9e02df0 | ||
|
|
6273020127 | ||
|
|
4d1a464954 | ||
|
|
9711ab6c5f | ||
|
|
95963eb0be | ||
|
|
0596edb0a1 | ||
|
|
7ac82d4ad9 | ||
|
|
74a9ad955b | ||
|
|
c23cce672c | ||
|
|
d39b4b3624 | ||
|
|
2c3ebeec09 | ||
|
|
86f2ffa61f | ||
|
|
017781ff35 | ||
|
|
7d72ad0f37 | ||
|
|
152033f98a | ||
|
|
c21bf5b87d | ||
|
|
fa60d40171 | ||
|
|
d80d5557c8 | ||
|
|
6c7ac8d7f4 | ||
|
|
d72867da35 | ||
|
|
14347b73f2 | ||
|
|
11e2bf4cbb | ||
|
|
b2553d35fd | ||
|
|
58f8a02557 | ||
|
|
34450144ba | ||
|
|
f9e08d53af | ||
|
|
006e402d9f | ||
|
|
8132012534 | ||
|
|
3e8f02eea4 | ||
|
|
7312980453 | ||
|
|
8c20d41d89 | ||
|
|
d50d53ac1f | ||
|
|
b0d7ab2e81 | ||
|
|
91223b7518 | ||
|
|
616e4b6e0c | ||
|
|
5170ea81e7 | ||
|
|
53a8cd8ee4 | ||
|
|
2229e8cb7d | ||
|
|
9ce1041b0e | ||
|
|
187065098b | ||
|
|
467bdf0045 | ||
|
|
9462b5b461 | ||
|
|
da7f29a9e0 | ||
|
|
d06bfd91ff | ||
|
|
b9bba10697 | ||
|
|
4581de92ad | ||
|
|
72c520cca7 | ||
|
|
835ee2a046 | ||
|
|
d03dee8fda | ||
|
|
6e89598a51 | ||
|
|
0a2aa6f734 | ||
|
|
2e7836eec3 | ||
|
|
31bdda8bf8 | ||
|
|
2fc93fa819 | ||
|
|
3c5a939b16 | ||
|
|
0f40c4cd49 | ||
|
|
7ad184cb48 | ||
|
|
41a7d5d0a8 | ||
|
|
78c48e004c | ||
|
|
7106d61881 | ||
|
|
8ead4c4708 | ||
|
|
52ca7d3503 | ||
|
|
7d504da0a8 | ||
|
|
c6dee2252b | ||
|
|
680c4a9ec4 | ||
|
|
3887d57fa4 | ||
|
|
d733daed9d | ||
|
|
de8651ab52 | ||
|
|
0ce641d10b | ||
|
|
316224b424 | ||
|
|
cf9bbce284 | ||
|
|
6eae6c046e | ||
|
|
837a430228 | ||
|
|
71431f8fb5 | ||
|
|
0c7cd1f299 | ||
|
|
674682e919 | ||
|
|
a5ca8115af | ||
|
|
d4338fce42 | ||
|
|
14e8135f81 | ||
|
|
e925f07505 | ||
|
|
b792b51bd0 | ||
|
|
fb64813b2a | ||
|
|
b16e0e33ab | ||
|
|
818921e4a2 | ||
|
|
6c437459ca | ||
|
|
b276901874 | ||
|
|
85b92f46f5 | ||
|
|
237b8b5ede | ||
|
|
438d008c34 | ||
|
|
53a3de1ebc | ||
|
|
2d35747e75 | ||
|
|
71feebea6d | ||
|
|
c8c75e7a70 | ||
|
|
7b2263e9a5 | ||
|
|
9cd216bbba | ||
|
|
e032ff4485 | ||
|
|
fbe9ca5dd9 | ||
|
|
4533bb6dd7 | ||
|
|
3320c03603 | ||
|
|
c3574d96d7 | ||
|
|
ebd2419634 | ||
|
|
133c256543 | ||
|
|
98a2a72f33 | ||
|
|
bc12b598ce | ||
|
|
a34f679c43 | ||
|
|
f008fd082e | ||
|
|
d2fd895582 | ||
|
|
746a812ae8 | ||
|
|
b67c69b88b | ||
|
|
f6ee20730a | ||
|
|
2829a96c84 | ||
|
|
37e1a92a89 | ||
|
|
81c4717472 | ||
|
|
94aac686c9 | ||
|
|
b75848515b | ||
|
|
a26cf9a3ff | ||
|
|
a7e4f728d2 | ||
|
|
921d234972 | ||
|
|
6bec9f977f | ||
|
|
6eaa9f8af1 | ||
|
|
5ef189b445 | ||
|
|
9f8283892e | ||
|
|
6ba2dc9601 | ||
|
|
e23512c860 | ||
|
|
32b6fe1625 | ||
|
|
8663b6d108 | ||
|
|
7794aa4c99 | ||
|
|
ba90ea59f4 | ||
|
|
aadb4c44a1 | ||
|
|
467ad39873 | ||
|
|
0a92b2db48 | ||
|
|
60a8f1ea61 | ||
|
|
1063061b47 | ||
|
|
54186575e0 | ||
|
|
114005d572 | ||
|
|
cde59a5ab1 | ||
|
|
e6bb26ce12 | ||
|
|
0cde953d58 | ||
|
|
ce7a804a70 | ||
|
|
67716aedde | ||
|
|
54a98cd6e5 | ||
|
|
31a901bea9 | ||
|
|
f0fdc90226 | ||
|
|
e14f892bc6 | ||
|
|
39158b0d1e | ||
|
|
acc264534e | ||
|
|
48dcb4acbf | ||
|
|
1c40f9eb4c | ||
|
|
9e418eb423 | ||
|
|
e4ff3a87a7 | ||
|
|
e82551c97f | ||
|
|
d877a4aecf | ||
|
|
5c50a40bdb | ||
|
|
9caf0f375c | ||
|
|
1ed8285452 | ||
|
|
16170e613c | ||
|
|
b3fb45dd36 | ||
|
|
54f5912da6 | ||
|
|
8542ded488 | ||
|
|
e6561faf8c | ||
|
|
f291b7b0fc | ||
|
|
d9ea2abf1a | ||
|
|
60a072809b | ||
|
|
9828d6457d | ||
|
|
d6f390d7d4 | ||
|
|
6ddafc8de0 | ||
|
|
ed5c83cf66 | ||
|
|
bf227b5e6f | ||
|
|
8bc1350e2e | ||
|
|
3aa0dd2f51 | ||
|
|
6c1f1e1db7 | ||
|
|
0c615fcb3b | ||
|
|
3ca900af6c | ||
|
|
1481626b1b | ||
|
|
a0ba5aeca4 | ||
|
|
f48a922b4c | ||
|
|
2418273191 | ||
|
|
09a10d7838 | ||
|
|
40ed1dd612 | ||
|
|
2aa38f1117 | ||
|
|
5d81ad9830 | ||
|
|
dffb45e233 | ||
|
|
5606c7b29a | ||
|
|
9d5b4f63d3 | ||
|
|
2c353023ab | ||
|
|
6992cdbaa4 | ||
|
|
9576079bfa | ||
|
|
1e08ccaae3 | ||
|
|
80e07eb53a | ||
|
|
54b7a27e65 | ||
|
|
5dc6100e8e | ||
|
|
a5c1a7122d | ||
|
|
61442462c7 | ||
|
|
917c31bef4 | ||
|
|
989439587f | ||
|
|
e74130733e | ||
|
|
2cce9a4f4c | ||
|
|
b721dfeb71 | ||
|
|
645b9b2c37 | ||
|
|
b419ebfe5d | ||
|
|
96d40a2946 | ||
|
|
e9b40573c7 | ||
|
|
ad316dfeac | ||
|
|
62cbaf3c04 | ||
|
|
cdb7eb3da9 | ||
|
|
671e0bbf71 | ||
|
|
50704b7b6a | ||
|
|
c198d1f593 | ||
|
|
c91cd2eecf | ||
|
|
31e47f4a04 | ||
|
|
470a9c4afa | ||
|
|
98692be3ba | ||
|
|
5c5077d7ec | ||
|
|
8cbecc20bc | ||
|
|
c13cae9ab3 | ||
|
|
74de687b90 | ||
|
|
ed3aca7d0c | ||
|
|
c9467f31c8 | ||
|
|
ad08632809 | ||
|
|
e9562dcf82 | ||
|
|
bea47b2640 | ||
|
|
242078ec15 | ||
|
|
5ca140df46 | ||
|
|
1259212cb2 | ||
|
|
750fa5be5e | ||
|
|
299c43e10d | ||
|
|
969450cad3 | ||
|
|
3da330b637 | ||
|
|
86bd64e887 | ||
|
|
e02f939cb8 | ||
|
|
2deebea6c8 | ||
|
|
fc2b1bb23c | ||
|
|
848d94bad1 | ||
|
|
4bde6e2d1f | ||
|
|
e7694b644f | ||
|
|
07b3ac967a | ||
|
|
c955bd9126 | ||
|
|
ee69783a66 | ||
|
|
b43c86520f | ||
|
|
0952f62bf0 | ||
|
|
44be7ec634 | ||
|
|
cddb0e94fa | ||
|
|
1a9fb77361 | ||
|
|
f7392461ad | ||
|
|
b567dc26f8 | ||
|
|
a08f84f5b3 | ||
|
|
b1277ff2ac | ||
|
|
aea1550a77 | ||
|
|
262c1fe1e2 | ||
|
|
2d1e684c69 | ||
|
|
5c6fb8b9ec | ||
|
|
a6be8b08c3 | ||
|
|
6503c1b84d | ||
|
|
1fc1588303 | ||
|
|
ae03c5c33e | ||
|
|
2d2603ff27 | ||
|
|
55881b0c5e | ||
|
|
adf752db85 | ||
|
|
d211669244 | ||
|
|
99af39db69 | ||
|
|
e707239d12 | ||
|
|
d349e43523 | ||
|
|
d52df89ab3 | ||
|
|
ae48518271 | ||
|
|
d7238881dc | ||
|
|
ebf2d7d5c6 | ||
|
|
259087aa95 | ||
|
|
0d7e2056f0 | ||
|
|
c35178bcbb | ||
|
|
5da3fb6c19 | ||
|
|
1961aa62da | ||
|
|
8678b454e3 | ||
|
|
b26408ade2 | ||
|
|
e60c000aad | ||
|
|
411c618be1 | ||
|
|
04fe9e18b6 | ||
|
|
b5772ce7f4 | ||
|
|
1c3a5232c7 | ||
|
|
35caed4b07 | ||
|
|
6fb6e92382 | ||
|
|
83a4493a61 | ||
|
|
5cedcf1ebf | ||
|
|
2ebc649fdf | ||
|
|
996e9c2e4b | ||
|
|
01f27da4b2 | ||
|
|
6151dcb8ff | ||
|
|
26e4dd9859 | ||
|
|
531b240990 | ||
|
|
3e82403d41 | ||
|
|
3564abfa29 | ||
|
|
cd87fb4500 | ||
|
|
65ffc7a656 | ||
|
|
dab7aa77c9 | ||
|
|
6847b5180a | ||
|
|
e0ba4e4b20 | ||
|
|
955becdb46 | ||
|
|
daba3a3f28 | ||
|
|
33b8d1a1f5 | ||
|
|
0a4a5b392c | ||
|
|
4422d54b74 | ||
|
|
e4883bf588 | ||
|
|
961243eefd | ||
|
|
c9c3e003eb | ||
|
|
0faa9f63d2 | ||
|
|
a44932d4f8 | ||
|
|
5e35c23883 | ||
|
|
550f5ad299 | ||
|
|
dd19ed8bcd | ||
|
|
ff34e1098c | ||
|
|
763922b349 | ||
|
|
757844d3ac | ||
|
|
e5775e548f | ||
|
|
477e686806 | ||
|
|
8d5f912adc | ||
|
|
45f206d947 | ||
|
|
2a271e9dea | ||
|
|
a007903ea2 | ||
|
|
bb55498285 | ||
|
|
39b482bab9 | ||
|
|
8b91d3c7e5 | ||
|
|
f56611b0e1 | ||
|
|
760a6f50b2 | ||
|
|
c5f629d761 | ||
|
|
b754dfff73 | ||
|
|
3d4937144f | ||
|
|
f7f01f4c90 | ||
|
|
8ce89f1621 | ||
|
|
00cdb0bf1e | ||
|
|
3ce188333e | ||
|
|
7ddf82cf1b | ||
|
|
1e17da594d | ||
|
|
299922a38a | ||
|
|
8360644864 | ||
|
|
d445766f01 | ||
|
|
601c369f2d | ||
|
|
818bdd67ba | ||
|
|
967ef64728 | ||
|
|
6607d52539 | ||
|
|
d48925f9ba | ||
|
|
e36c682fb1 | ||
|
|
63c7212685 | ||
|
|
6f5d2170c2 | ||
|
|
a6ba03c33b | ||
|
|
b7c18bd320 | ||
|
|
0ff74497ad | ||
|
|
cc658f0223 | ||
|
|
c634082608 | ||
|
|
8c3b3d8ac1 | ||
|
|
f791e19ae7 | ||
|
|
c19f6cc535 | ||
|
|
b256b941a6 | ||
|
|
6a2501ad81 | ||
|
|
323a9e3f99 | ||
|
|
352891d7d1 | ||
|
|
b094d88770 | ||
|
|
f9a762ffc1 | ||
|
|
3476a235ab | ||
|
|
c978301d23 | ||
|
|
e61475e9ac | ||
|
|
e440d10bce | ||
|
|
b4b74c9949 | ||
|
|
157f32f094 | ||
|
|
1ce58a361f | ||
|
|
d19b7bafd9 | ||
|
|
797caf0e7b | ||
|
|
0e17964204 | ||
|
|
eca61f9418 | ||
|
|
658a4c0f1a | ||
|
|
50fa8d1c1d | ||
|
|
9e7b252700 | ||
|
|
9fc9163453 | ||
|
|
1f01a1b8b6 | ||
|
|
8055b6891c | ||
|
|
6416f24f93 | ||
|
|
7cbf3c0dfa | ||
|
|
28526885f6 | ||
|
|
da50285edf | ||
|
|
3bf4400836 | ||
|
|
d1afb828d4 | ||
|
|
ac0398d8f3 | ||
|
|
671057e507 | ||
|
|
78fe66a155 | ||
|
|
1900a2cc1e | ||
|
|
d202938370 | ||
|
|
6f66d7134d | ||
|
|
a70d363b62 | ||
|
|
3799d6d187 | ||
|
|
1fd56085f2 | ||
|
|
61de7f7abf | ||
|
|
bd37b67ab8 | ||
|
|
6c0a5c0806 | ||
|
|
5be16c47be | ||
|
|
ebe37afa4a | ||
|
|
4ec232f35c | ||
|
|
53e2909690 | ||
|
|
092653c838 | ||
|
|
d204861c56 | ||
|
|
1494dd5ee9 | ||
|
|
4a3e697d78 | ||
|
|
f234ca2985 | ||
|
|
b64bbb4262 | ||
|
|
41f139fdf1 | ||
|
|
386b94c126 | ||
|
|
36d2d31878 | ||
|
|
3e0dc52376 | ||
|
|
aef48107fe | ||
|
|
9fb2c92a15 | ||
|
|
6dbe24e34f | ||
|
|
656d407ade | ||
|
|
133af50067 | ||
|
|
bb03f0d250 | ||
|
|
4d373fb1c7 | ||
|
|
c21453861f | ||
|
|
587a0aac68 | ||
|
|
58a083109e | ||
|
|
97d326ac88 | ||
|
|
909616efbe | ||
|
|
fa566c2101 | ||
|
|
8a7d740c95 | ||
|
|
69e5c2ef48 | ||
|
|
f202cd7327 | ||
|
|
f6861ec122 | ||
|
|
76a10f3dd7 | ||
|
|
6c16125fa4 | ||
|
|
d6b9d445aa | ||
|
|
5403ce690e | ||
|
|
8bb3f64e70 | ||
|
|
bcbdf3441e | ||
|
|
4c355d8a68 | ||
|
|
44c32f364a | ||
|
|
439bb9667e | ||
|
|
d0daf64ae9 | ||
|
|
6e90ed67ad | ||
|
|
ebc44fa1ea | ||
|
|
5ba716a437 | ||
|
|
b7a427fc6f | ||
|
|
6067fcbc9e | ||
|
|
8b767a8aff | ||
|
|
3c6cf48d9f | ||
|
|
c6b77aecb9 | ||
|
|
3119c8f9a6 | ||
|
|
ada2dea463 | ||
|
|
9001214462 | ||
|
|
77bc5eaabd | ||
|
|
c4263299b9 | ||
|
|
633b59f99f | ||
|
|
35f1ddcbae | ||
|
|
7279acff7e | ||
|
|
91dc8f4c92 | ||
|
|
dfba26b76a | ||
|
|
4954f11c93 | ||
|
|
40f752f48f | ||
|
|
5ccf299003 | ||
|
|
b5f8b3c1eb | ||
|
|
cfe2199354 | ||
|
|
074c973aeb | ||
|
|
2166001174 | ||
|
|
98b82b9fc6 | ||
|
|
a56d92e4eb | ||
|
|
283c8361f2 | ||
|
|
3743fc5cfa | ||
|
|
08d2154489 | ||
|
|
449ce0a927 | ||
|
|
5dff6f76d1 | ||
|
|
5ae181cd89 | ||
|
|
09887a439e | ||
|
|
b1d999a42e | ||
|
|
c857796318 | ||
|
|
68b3693531 | ||
|
|
79fb4c550d | ||
|
|
b02e495028 | ||
|
|
acdd51ffdf | ||
|
|
69f3d96be2 | ||
|
|
c7e3c9d8d0 | ||
|
|
d80002afc8 | ||
|
|
5ade42ca7c | ||
|
|
8636215314 | ||
|
|
4f4fe972d3 | ||
|
|
38a39a2aaa | ||
|
|
1d40cef5d5 | ||
|
|
d9160aac2d | ||
|
|
5125be8094 | ||
|
|
cadf862c7b | ||
|
|
13639b3a01 | ||
|
|
f0c8a4053c | ||
|
|
e47d8b02d3 | ||
|
|
de7faed4c3 | ||
|
|
fbd03c1fc5 | ||
|
|
e23b77c400 | ||
|
|
df6ec36515 | ||
|
|
192836dd2c | ||
|
|
3510f6f90b | ||
|
|
db7394d86c | ||
|
|
772e7cd07d | ||
|
|
15403befc0 | ||
|
|
4d0f7f2de2 | ||
|
|
8cdb1865bf | ||
|
|
c5843a55c3 | ||
|
|
54bc4ad403 | ||
|
|
8fe26a08b3 | ||
|
|
75b2dd2e27 | ||
|
|
83b7560d4d | ||
|
|
946fbbc053 | ||
|
|
54174dd4f2 | ||
|
|
017d1719a6 | ||
|
|
efdf5b2b30 | ||
|
|
4a58852ebd | ||
|
|
cf18a96900 | ||
|
|
d1f4e77e6d | ||
|
|
757b09f031 | ||
|
|
6f78768459 | ||
|
|
c3c31ec4ac | ||
|
|
3dce199b79 | ||
|
|
403e8bc185 | ||
|
|
0f15ae7bef | ||
|
|
112b01afff | ||
|
|
4a45ad0025 |
@@ -1,4 +1,10 @@
|
||||
/src/assets
|
||||
/build
|
||||
/node_modules
|
||||
/dist
|
||||
/icons
|
||||
helm
|
||||
docker-entrypoint.d
|
||||
.dockerignore
|
||||
DockerFile
|
||||
.github
|
||||
|
||||
94
.eslintrc
@@ -1,22 +1,80 @@
|
||||
{
|
||||
"extends": ["airbnb", "prettier"],
|
||||
"plugins": ["prettier"],
|
||||
"env": {
|
||||
"browser": true,
|
||||
"jest": true
|
||||
"browser": true,
|
||||
"es2021": true
|
||||
},
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"ecmaFeatures": {
|
||||
"jsx": true
|
||||
},
|
||||
"ecmaVersion": 12,
|
||||
"sourceType": "module",
|
||||
"allowImportExportEverywhere": false,
|
||||
"codeFrame": false,
|
||||
"project": "./tsconfig.json"
|
||||
},
|
||||
"ignorePatterns": ["build/", "dist/"],
|
||||
"extends": [
|
||||
"plugin:react/recommended",
|
||||
"plugin:@typescript-eslint/eslint-recommended",
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
"airbnb",
|
||||
"airbnb-typescript",
|
||||
"prettier",
|
||||
"plugin:import/errors",
|
||||
"plugin:import/warnings",
|
||||
"plugin:import/typescript"
|
||||
],
|
||||
"plugins": ["import", "react", "@typescript-eslint", "prettier"],
|
||||
"rules": {
|
||||
"max-len": ["error", {"code": 150}],
|
||||
"prefer-promise-reject-errors": ["off"],
|
||||
"react/jsx-filename-extension": ["off"],
|
||||
"react/prop-types": ["warn"],
|
||||
"no-return-assign": ["off"],
|
||||
"react/jsx-props-no-spreading": ["off"],
|
||||
"react/destructuring-assignment": ["off"],
|
||||
"import/extensions": [
|
||||
"error",
|
||||
"ignorePackages",
|
||||
{
|
||||
"js": "never",
|
||||
"jsx": "never",
|
||||
"ts": "never",
|
||||
"tsx": "never"
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/naming-convention": [
|
||||
"error",
|
||||
{
|
||||
"selector": "function",
|
||||
"format": ["PascalCase", "camelCase"],
|
||||
"leadingUnderscore": "allowSingleOrDouble"
|
||||
}
|
||||
],
|
||||
"no-restricted-syntax": ["error", "ForInStatement", "LabeledStatement", "WithStatement"],
|
||||
"react/jsx-one-expression-per-line": "off",
|
||||
"react/jsx-wrap-multilines": "off",
|
||||
"react/jsx-curly-newline": "off"
|
||||
"react/function-component-definition": [2, { "namedComponents": "arrow-function" }],
|
||||
"import/order": [
|
||||
"error",
|
||||
{
|
||||
"alphabetize": {
|
||||
"order": "asc",
|
||||
"caseInsensitive": true
|
||||
},
|
||||
"newlines-between": "never",
|
||||
"groups": ["builtin", "external", "parent", "sibling", "index"],
|
||||
"pathGroups": [
|
||||
{
|
||||
"pattern": "react",
|
||||
"group": "external",
|
||||
"position": "before"
|
||||
}
|
||||
],
|
||||
"pathGroupsExcludedImportTypes": ["builtin"]
|
||||
}
|
||||
],
|
||||
"max-len": ["error", { "code": 150 }],
|
||||
"@typescript-eslint/ban-ts-comment": ["off"],
|
||||
"import/prefer-default-export": ["off"],
|
||||
"react/prop-types": ["warn"],
|
||||
"react/require-default-props": "off",
|
||||
"react/jsx-props-no-spreading": ["off"],
|
||||
"react/jsx-curly-newline": "off",
|
||||
"no-underscore-dangle": "off"
|
||||
},
|
||||
"settings": {
|
||||
"import/resolver": {
|
||||
@@ -24,11 +82,5 @@
|
||||
"paths": ["src"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"parser": "babel-eslint",
|
||||
"parserOptions": {
|
||||
"sourceType": "module",
|
||||
"allowImportExportEverywhere": false,
|
||||
"codeFrame": false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
53
.github/workflows/build.yml
vendored
@@ -1,53 +0,0 @@
|
||||
name: Build Docker image
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
docker:
|
||||
runs-on: ubuntu-20.04
|
||||
env:
|
||||
DOCKER_REGISTRY_URL: tip-tip-wlan-cloud-ucentral.jfrog.io
|
||||
DOCKER_REGISTRY_USERNAME: ucentral
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Build Docker image
|
||||
run: docker build -t wlan-cloud-ucentralgw-ui:${{ github.sha }} .
|
||||
|
||||
- name: Log into Docker registry
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
registry: ${{ env.DOCKER_REGISTRY_URL }}
|
||||
username: ${{ env.DOCKER_REGISTRY_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }}
|
||||
|
||||
- name: Push Docker image
|
||||
run: |
|
||||
TAGS="${{ github.sha }}"
|
||||
|
||||
if [ ${GITHUB_REF} == "refs/heads/main" ]
|
||||
then
|
||||
TAGS="$TAGS ${GITHUB_REF#refs/heads/}"
|
||||
else # PR build
|
||||
CURRENT_TAG=$(echo ${GITHUB_HEAD_REF#refs/heads/} | tr '/' '-')
|
||||
TAGS="$TAGS $CURRENT_TAG"
|
||||
fi
|
||||
|
||||
echo "Pushing tags $TAGS"
|
||||
|
||||
for tag in $TAGS; do
|
||||
docker tag wlan-cloud-ucentralgw-ui:${{ github.sha }} ${{ env.DOCKER_REGISTRY_URL }}/ucentralgw-ui:$tag
|
||||
docker push ${{ env.DOCKER_REGISTRY_URL }}/ucentralgw-ui:$tag
|
||||
done
|
||||
72
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
name: Build Docker image
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
branches:
|
||||
- main
|
||||
- 'release/*'
|
||||
tags:
|
||||
- 'v*'
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- 'release/*'
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
docker:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
DOCKER_REGISTRY_URL: tip-tip-wlan-cloud-ucentral.jfrog.io
|
||||
DOCKER_REGISTRY_USERNAME: ucentral
|
||||
steps:
|
||||
- name: Checkout actions repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: Telecominfraproject/.github
|
||||
path: github
|
||||
|
||||
- name: Build and push Docker image
|
||||
uses: ./github/composite-actions/docker-image-build
|
||||
with:
|
||||
image_name: owgw-ui
|
||||
registry: tip-tip-wlan-cloud-ucentral.jfrog.io
|
||||
registry_user: ucentral
|
||||
registry_password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }}
|
||||
|
||||
- name: Notify on failure via Slack
|
||||
if: failure() && github.ref == 'refs/heads/main'
|
||||
uses: rtCamp/action-slack-notify@v2
|
||||
env:
|
||||
SLACK_USERNAME: GitHub Actions failure notifier
|
||||
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
||||
SLACK_COLOR: "${{ job.status }}"
|
||||
SLACK_ICON: https://raw.githubusercontent.com/quintessence/slack-icons/master/images/github-logo-slack-icon.png
|
||||
SLACK_TITLE: Docker build failed for OWGW-UI service
|
||||
|
||||
trigger-deploy-to-dev:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref == 'refs/heads/main'
|
||||
needs:
|
||||
- docker
|
||||
steps:
|
||||
- name: Checkout actions repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: Telecominfraproject/.github
|
||||
path: github
|
||||
|
||||
- name: Trigger deployment of the latest version to dev instance and wait for result
|
||||
uses: ./github/composite-actions/trigger-workflow-and-wait
|
||||
with:
|
||||
owner: Telecominfraproject
|
||||
repo: wlan-testing
|
||||
workflow: ucentralgw-dev-deployment.yaml
|
||||
token: ${{ secrets.WLAN_TESTING_PAT }}
|
||||
ref: master
|
||||
inputs: '{"force_latest": "true"}'
|
||||
9
.github/workflows/cleanup.yml
vendored
@@ -4,6 +4,7 @@ on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- 'release/*'
|
||||
types: [ closed ]
|
||||
|
||||
defaults:
|
||||
@@ -16,4 +17,10 @@ jobs:
|
||||
steps:
|
||||
- run: |
|
||||
export PR_BRANCH_TAG=$(echo ${GITHUB_HEAD_REF#refs/heads/} | tr '/' '-')
|
||||
curl -uucentral:${{ secrets.DOCKER_REGISTRY_PASSWORD }} -X DELETE "https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral/ucentralgw-ui/$PR_BRANCH_TAG"
|
||||
|
||||
if [[ ! $PR_BRANCH_TAG =~ (main|master|release-*) ]]; then
|
||||
echo "PR branch is $PR_BRANCH_TAG, deleting Docker image"
|
||||
curl -s -uucentral:${{ secrets.DOCKER_REGISTRY_PASSWORD }} -X DELETE "https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral/owgw-ui/$PR_BRANCH_TAG"
|
||||
else
|
||||
echo "PR branch is $PR_BRANCH_TAG, not deleting Docker image"
|
||||
fi
|
||||
|
||||
24
.github/workflows/enforce-jira-issue-key.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
name: Ensure Jira issue is linked
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, edited, reopened, synchronize]
|
||||
branches:
|
||||
- 'release/*'
|
||||
|
||||
jobs:
|
||||
check_for_issue_key:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout actions repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: Telecominfraproject/.github
|
||||
path: github
|
||||
|
||||
- name: Run JIRA check
|
||||
uses: ./github/composite-actions/enforce-jira-issue-key
|
||||
with:
|
||||
jira_base_url: ${{ secrets.TIP_JIRA_URL }}
|
||||
jira_user_email: ${{ secrets.TIP_JIRA_USER_EMAIL }}
|
||||
jira_api_token: ${{ secrets.TIP_JIRA_API_TOKEN }}
|
||||
46
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
name: Release chart package
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
helm-package:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
HELM_REPO_URL: https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral-helm/
|
||||
HELM_REPO_USERNAME: ucentral
|
||||
steps:
|
||||
- name: Checkout uCentral assembly chart repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: wlan-cloud-ucentralgw-ui
|
||||
|
||||
- name: Build package
|
||||
working-directory: wlan-cloud-ucentralgw-ui/helm
|
||||
run: |
|
||||
helm plugin install https://github.com/aslafy-z/helm-git --version 0.10.0
|
||||
helm repo add bitnami https://charts.bitnami.com/bitnami
|
||||
helm repo update
|
||||
helm dependency update
|
||||
mkdir dist
|
||||
helm package . -d dist
|
||||
|
||||
- name: Generate GitHub release body
|
||||
working-directory: wlan-cloud-ucentralgw-ui/helm
|
||||
run: |
|
||||
pip3 install yq -q
|
||||
echo "Docker image - tip-tip-wlan-cloud-ucentral.jfrog.io/owgw-ui:$GITHUB_REF_NAME" > release.txt
|
||||
echo "Helm charted may be attached to this release" >> release.txt
|
||||
echo "Deployment artifacts may be found in https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy/tree/$GITHUB_REF_NAME" >> release.txt
|
||||
|
||||
- name: Create GitHub release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
body_path: wlan-cloud-ucentralgw-ui/helm/release.txt
|
||||
files: wlan-cloud-ucentralgw-ui/helm/dist/*
|
||||
6
.gitignore
vendored
@@ -1,9 +1,8 @@
|
||||
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.js
|
||||
/dev-dist
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
@@ -19,5 +18,4 @@
|
||||
.env.production.local
|
||||
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
.vscode/settings.json
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
/src/assets
|
||||
build
|
||||
dist
|
||||
node_modules
|
||||
.github
|
||||
/helm
|
||||
|
||||
14
.prettierrc
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"printWidth": 100,
|
||||
"trailingComma": "all",
|
||||
"tabWidth": 2,
|
||||
"semi": true,
|
||||
"singleQuote": true
|
||||
}
|
||||
{
|
||||
"printWidth": 120,
|
||||
"trailingComma": "all",
|
||||
"tabWidth": 2,
|
||||
"semi": true,
|
||||
"singleQuote": true
|
||||
}
|
||||
|
||||
12
Dockerfile
@@ -1,6 +1,8 @@
|
||||
FROM node:16-alpine3.11 AS build
|
||||
FROM node:18.7.0-alpine3.15 AS build
|
||||
|
||||
COPY package.json package-lock.json /
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json package-lock.json /app/
|
||||
|
||||
RUN npm install
|
||||
|
||||
@@ -8,8 +10,8 @@ COPY . .
|
||||
|
||||
RUN npm run build
|
||||
|
||||
FROM nginx:1.20.1-alpine AS runtime
|
||||
FROM nginx:1.22.0-alpine AS runtime
|
||||
|
||||
COPY --from=build /build/ /usr/share/nginx/html/
|
||||
COPY --from=build /app/build/ /usr/share/nginx/html/
|
||||
|
||||
COPY --from=build docker-entrypoint.d/40-generate-config.sh /docker-entrypoint.d/40-generate-config.sh
|
||||
COPY --from=build /app/docker-entrypoint.d/40-generate-config.sh /docker-entrypoint.d/40-generate-config.sh
|
||||
|
||||
24
README.md
@@ -1,6 +1,7 @@
|
||||
# uCentralGW UI
|
||||
|
||||
## What is this?
|
||||
|
||||
The uCentralGW Client is a user interface that lets you monitor and manage devices connected to the [uCentral gateway](https://github.com/Telecominfraproject/wlan-cloud-ucentralgw). To use the interface,
|
||||
you either need to run it on your machine for [development](#development) or build it for [production](#production).
|
||||
|
||||
@@ -9,29 +10,34 @@ NOTE: This UI will be evolving as micro services are added to the uCentral progr
|
||||
## Running the solution
|
||||
|
||||
### Development
|
||||
Here are the instructions to run the solution on your machine for development purposes. You need to run these in the root folder of the project and also have npm installed on your machine. Please install `npm` for the platform you are using.
|
||||
|
||||
You need to run these commands in the root folder of the project and also have npm installed on your machine.
|
||||
|
||||
```
|
||||
git clone https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui
|
||||
cd wlan-cloud-ucentralgw-ui
|
||||
npm install
|
||||
npm start
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### Production
|
||||
Here are the instructions to build the production veresion of the application. You need to run this in the root folder of the project and also have npm installed on your machine.
|
||||
|
||||
You need to run this in the root folder of the project and also have npm installed on your machine.
|
||||
|
||||
```
|
||||
git clone https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui
|
||||
cd wlan-cloud-ucentralgw-ui
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
Once the build is done, you can move the `build` folder on your server.
|
||||
|
||||
### Configuration
|
||||
You must change the `config.json` file in `public` directory to point to your uCentral Security Service URL (uCentralSec). You may also limit the ability for users to change the default uCentralSec. If you do not allow a uCentralSec change, the uCentralSec URL will not appear on the login screen.
|
||||
|
||||
Here are the current default values:
|
||||
You can control the uCentral Security Service URL (uCentralSec) by modifying the ENV variable "VITE_UCENTRALSEC_URL". There is an example .env file located at the root of this repository.
|
||||
Here are the current default values:
|
||||
|
||||
```
|
||||
{
|
||||
"DEFAULT_UCENTRALSEC_URL": "https://ucentral.dpaas.arilia.com:16001",
|
||||
"ALLOW_UCENTRALSEC_CHANGE": false
|
||||
}
|
||||
VITE_UCENTRALSEC_URL="https://ucentral.dpaas.arilia.com:16001"
|
||||
```
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"presets": [
|
||||
"@babel/preset-env",
|
||||
"@babel/preset-react"
|
||||
],
|
||||
"plugins": ["@babel/plugin-proposal-class-properties"]
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
const path = require('path');
|
||||
|
||||
module.exports = {
|
||||
// Source files
|
||||
src: path.resolve(__dirname, '../src'),
|
||||
|
||||
// Production build files
|
||||
build: path.resolve(__dirname, '../build'),
|
||||
|
||||
// Static files that get copied to build folder
|
||||
public: path.resolve(__dirname, '../public'),
|
||||
};
|
||||
@@ -1,76 +0,0 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
/* eslint-disable prefer-template */
|
||||
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
|
||||
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
||||
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
||||
const path = require('path');
|
||||
const paths = require('./paths');
|
||||
|
||||
module.exports = {
|
||||
entry: [paths.src + '/index.js'],
|
||||
output: {
|
||||
path: paths.build,
|
||||
filename: '[name].bundle.js',
|
||||
publicPath: '/',
|
||||
},
|
||||
resolve: {
|
||||
modules: [path.resolve('./node_modules'), path.resolve('./src')],
|
||||
preferRelative: true,
|
||||
},
|
||||
plugins: [
|
||||
new CleanWebpackPlugin(),
|
||||
|
||||
new MiniCssExtractPlugin({
|
||||
filename: 'styles/[name].[contenthash].css',
|
||||
chunkFilename: '[id].[contenthash].css',
|
||||
}),
|
||||
new CopyWebpackPlugin({
|
||||
patterns: [
|
||||
{
|
||||
from: paths.src + '/assets',
|
||||
to: 'assets',
|
||||
globOptions: {
|
||||
ignore: ['*.DS_Store'],
|
||||
},
|
||||
},
|
||||
{
|
||||
from: paths.public + '/locales',
|
||||
to: 'locales',
|
||||
globOptions: {
|
||||
ignore: ['*.DS_Store'],
|
||||
},
|
||||
},
|
||||
{
|
||||
from: paths.public + '/config.json',
|
||||
to: 'config.json',
|
||||
},
|
||||
],
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
title: 'uCentralGW',
|
||||
favicon: paths.public + '/favicon.ico',
|
||||
template: paths.public + '/index.html',
|
||||
filename: 'index.html',
|
||||
}),
|
||||
],
|
||||
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.(js|jsx)$/,
|
||||
exclude: /node_modules/,
|
||||
use: ['babel-loader'],
|
||||
},
|
||||
{
|
||||
test: /\.(css|scss)$/,
|
||||
use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader'],
|
||||
},
|
||||
{
|
||||
test: /\.svg$/,
|
||||
use: ['@svgr/webpack'],
|
||||
},
|
||||
{ test: /\.(?:ico|gif|png|jpg|jpeg)$/i, type: 'asset/resource' },
|
||||
],
|
||||
},
|
||||
};
|
||||
@@ -1,53 +0,0 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
/* eslint-disable prefer-template */
|
||||
const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
|
||||
const { merge } = require('webpack-merge');
|
||||
const path = require('path');
|
||||
const paths = require('./paths');
|
||||
const common = require('./webpack.common');
|
||||
|
||||
module.exports = merge(common, {
|
||||
mode: 'development',
|
||||
|
||||
target: 'web',
|
||||
|
||||
devtool: 'inline-source-map',
|
||||
|
||||
devServer: {
|
||||
historyApiFallback: true,
|
||||
contentBase: paths.build,
|
||||
open: true,
|
||||
compress: false,
|
||||
hot: true,
|
||||
port: 3000,
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.[js]sx?$/,
|
||||
exclude: /node_modules/,
|
||||
use: [
|
||||
{
|
||||
loader: require.resolve('babel-loader'),
|
||||
options: {
|
||||
plugins: [require.resolve('react-refresh/babel')],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
resolve: {
|
||||
modules: [
|
||||
'node_modules',
|
||||
'src',
|
||||
path.resolve(__dirname, '../', 'node_modules', 'ucentral-libs', 'src'),
|
||||
],
|
||||
alias: {
|
||||
react: path.resolve(__dirname, '../', 'node_modules', 'react'),
|
||||
'react-router-dom': path.resolve('./node_modules/react-router-dom'),
|
||||
'ucentral-libs': path.resolve(__dirname, '../', 'node_modules', 'ucentral-libs', 'src'),
|
||||
},
|
||||
},
|
||||
plugins: [new ReactRefreshWebpackPlugin()],
|
||||
});
|
||||
@@ -1,36 +0,0 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
/* eslint-disable prefer-template */
|
||||
const { merge } = require('webpack-merge');
|
||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
||||
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
|
||||
const TerserPlugin = require('terser-webpack-plugin');
|
||||
const paths = require('./paths');
|
||||
const common = require('./webpack.common');
|
||||
|
||||
module.exports = merge(common, {
|
||||
mode: 'production',
|
||||
devtool: false,
|
||||
output: {
|
||||
path: paths.build,
|
||||
publicPath: '/',
|
||||
filename: 'js/[name].[contenthash].bundle.js',
|
||||
},
|
||||
plugins: [
|
||||
new MiniCssExtractPlugin({
|
||||
filename: 'styles/[name].[contenthash].css',
|
||||
chunkFilename: '[contenthash].css',
|
||||
}),
|
||||
],
|
||||
module: {
|
||||
rules: [],
|
||||
},
|
||||
optimization: {
|
||||
minimize: true,
|
||||
minimizer: [`...`, new TerserPlugin(), new CssMinimizerPlugin()],
|
||||
},
|
||||
performance: {
|
||||
hints: false,
|
||||
maxEntrypointSize: 512000,
|
||||
maxAssetSize: 512000,
|
||||
},
|
||||
});
|
||||
@@ -1,6 +1,32 @@
|
||||
#!/bin/ash
|
||||
# Check if variables are set
|
||||
export DEFAULT_UCENTRALSEC_URL="${DEFAULT_UCENTRALSEC_URL:-https://ucentral.dpaas.arilia.com:16001}"
|
||||
export ALLOW_UCENTRALSEC_CHANGE="${ALLOW_UCENTRALSEC_CHANGE:-false}"
|
||||
|
||||
echo '{"DEFAULT_UCENTRALSEC_URL": "'$DEFAULT_UCENTRALSEC_URL'","ALLOW_UCENTRALSEC_CHANGE": '$ALLOW_UCENTRALSEC_CHANGE'}' > /usr/share/nginx/html/config.json
|
||||
ENV_CONFIG_PATH=/usr/share/nginx/html/env-config.js
|
||||
|
||||
# Recreate config file
|
||||
rm -rf $ENV_CONFIG_PATH
|
||||
touch $ENV_CONFIG_PATH
|
||||
|
||||
# Add assignment
|
||||
echo "window._env_ = {" >> $ENV_CONFIG_PATH
|
||||
|
||||
# Read each line in .env file
|
||||
# Each line represents key=value pairs
|
||||
env | grep REACT_ | while read -r line || [[ -n "$line" ]];
|
||||
do
|
||||
echo $line
|
||||
# Split env variables by character `=`
|
||||
if printf '%s\n' "$line" | grep -q -e '='; then
|
||||
varname=$(printf '%s\n' "$line" | sed -e 's/=.*//')
|
||||
varvalue=$(printf '%s\n' "$line" | sed -e 's/^[^=]*=//')
|
||||
fi
|
||||
|
||||
# Read value of current variable if exists as Environment variable
|
||||
value=$(printf '%s\n' "${!varname}")
|
||||
# Otherwise use value from .env file
|
||||
[[ -z $value ]] && value=${varvalue}
|
||||
|
||||
# Append configuration property to JS file
|
||||
echo " $varname: \"$value\"," >> $ENV_CONFIG_PATH
|
||||
done
|
||||
|
||||
echo "}" >> $ENV_CONFIG_PATH
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
apiVersion: v1
|
||||
appVersion: "1.0"
|
||||
description: A Helm chart for Kubernetes
|
||||
name: ucentralgwui
|
||||
name: owgwui
|
||||
version: 0.1.0
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# ucentralgwui
|
||||
# owgwui
|
||||
|
||||
This Helm chart helps to deploy OpenWIFI Web UI (further on refered as __Web UI__) to the Kubernetes clusters. It is mainly used in [assembly chart](https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy/tree/main/chart) as Web UI requires other services as dependencies that are considered in that Helm chart. This chart is purposed to define deployment logic close to the application code itself and define default values that could be overriden during deployment.
|
||||
|
||||
> Application description placeholder
|
||||
|
||||
## TL;DR;
|
||||
|
||||
@@ -10,17 +11,19 @@ $ helm install .
|
||||
|
||||
## Introduction
|
||||
|
||||
This chart bootstraps an ucentralgwui on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
||||
This chart bootstraps the Web UI on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
Currently this chart is not assembled in charts archives, so [helm-git](https://github.com/aslafy-z/helm-git) is required for remote the installation
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```bash
|
||||
$ helm install --name my-release stable/ipfs
|
||||
$ helm install --name my-release git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui@helm/owgwui-0.1.0.tgz?ref=main
|
||||
```
|
||||
|
||||
The command deploys ucentralgwui on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
|
||||
The command deploys the Web UI on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
|
||||
|
||||
> **Tip**: List all releases using `helm list`
|
||||
|
||||
@@ -29,18 +32,36 @@ The command deploys ucentralgwui on the Kubernetes cluster in the default config
|
||||
To uninstall/delete the `my-release` deployment:
|
||||
|
||||
```bash
|
||||
$ helm delete --purge my-release
|
||||
$ helm delete my-release
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
## Configuration
|
||||
|
||||
The following table lists the configurable parameters of the Memcached chart and their default values.
|
||||
The following table lists the configurable parameters of the chart and their default values. If Default value is not listed in the table, please refer to the [Values](values.yaml) files for details.
|
||||
|
||||
| Parameter | Type | Description | Default |
|
||||
|-----------|------|-------------|---------|
|
||||
| replicaCount | number | Amount of replicas to be deployed | `1` |
|
||||
| nameOverride | string | Override to be used for application deployment | |
|
||||
| fullnameOverride | string | Override to be used for application deployment (has priority over nameOverride) | |
|
||||
| images.owgwui.repository | string | Docker image repository | |
|
||||
| images.owgwui.tag | string | Docker image tag | `'master'` |
|
||||
| images.owgwui.pullPolicy | string | Docker image pull policy | `'Always'` |
|
||||
| services.owgwui.type | string | OpenWIFI Web UI service type | `'ClusterIP'` |
|
||||
| services.owgwui.ports.http.servicePort | number | Websocket endpoint port to be exposed on service | `80` |
|
||||
| services.owgwui.ports.http.targetPort | number | Websocket endpoint port to be targeted by service | `80` |
|
||||
| services.owgwui.ports.http.protocol | string | Websocket endpoint protocol | `'TCP'` |
|
||||
| checks.owgwui.liveness.httpGet.path | string | Liveness check path to be used | `'/'` |
|
||||
| checks.owgwui.liveness.httpGet.port | number | Liveness check port to be used (should be pointint to ALB endpoint) | `http` |
|
||||
| checks.owgwui.readiness.httpGet.path | string | Readiness check path to be used | `'/'` |
|
||||
| checks.owgwui.readiness.httpGet.port | number | Readiness check port to be used | `http` |
|
||||
| ingresses.default.enabled | boolean | Defines if the Web UI should be exposed via Ingress controller | `False` |
|
||||
| ingresses.default.hosts | array | List of hosts for the exposed Web UI | |
|
||||
| ingresses.default.paths | array | List of paths to be exposed for the Web UI | |
|
||||
| public_env_variables | hash | Defines list of environment variables to be passed to the Web UI (required for application configuration) | |
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|-----------|-------------|---------|
|
||||
|||
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
@@ -59,4 +80,3 @@ $ helm install --name my-release -f values.yaml .
|
||||
```
|
||||
|
||||
> **Tip**: You can use the default [values.yaml](values.yaml) as a base for customization.
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "ucentralgwui.name" -}}
|
||||
{{- define "owgwui.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -11,7 +11,7 @@ Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "ucentralgwui.fullname" -}}
|
||||
{{- define "owgwui.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
@@ -27,6 +27,16 @@ If release name contains chart name it will be used as a full name.
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "ucentralgwui.chart" -}}
|
||||
{{- define "owgwui.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "owgwui.ingress.apiVersion" -}}
|
||||
{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1" -}}
|
||||
{{- print "networking.k8s.io/v1" -}}
|
||||
{{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" -}}
|
||||
{{- print "networking.k8s.io/v1beta1" -}}
|
||||
{{- else -}}
|
||||
{{- print "extensions/v1beta1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -3,57 +3,66 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "ucentralgwui.fullname" . }}
|
||||
name: {{ include "owgwui.fullname" . }}
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "ucentralgwui.name" . }}
|
||||
helm.sh/chart: {{ include "ucentralgwui.chart" . }}
|
||||
app.kubernetes.io/name: {{ include "owgwui.name" . }}
|
||||
helm.sh/chart: {{ include "owgwui.chart" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: {{ include "ucentralgwui.name" . }}
|
||||
app.kubernetes.io/name: {{ include "owgwui.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- with .Values.services.ucentralgwui.labels }}
|
||||
{{- with .Values.services.owgwui.labels }}
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "ucentralgwui.name" . }}
|
||||
app.kubernetes.io/name: {{ include "owgwui.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- with .Values.services.ucentralgwui.labels }}
|
||||
{{- with .Values.services.owgwui.labels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- with .Values.podAnnotations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
spec:
|
||||
|
||||
containers:
|
||||
|
||||
- name: ucentralgwui
|
||||
image: "{{ .Values.images.ucentralgwui.repository }}:{{ .Values.images.ucentralgwui.tag }}"
|
||||
imagePullPolicy: {{ .Values.images.ucentralgwui.pullPolicy }}
|
||||
- name: owgwui
|
||||
image: "{{ .Values.images.owgwui.repository }}:{{ .Values.images.owgwui.tag }}"
|
||||
imagePullPolicy: {{ .Values.images.owgwui.pullPolicy }}
|
||||
|
||||
env:
|
||||
- name: KUBERNETES_DEPLOYED
|
||||
value: "{{ now }}"
|
||||
{{- range $key, $value := .Values.public_env_variables }}
|
||||
- name: {{ $key }}
|
||||
value: {{ $value | quote }}
|
||||
{{- end }}
|
||||
|
||||
ports:
|
||||
{{- range $key, $value := .Values.services.ucentralgwui.ports }}
|
||||
{{- range $key, $value := .Values.services.owgwui.ports }}
|
||||
- name: {{ $key }}
|
||||
containerPort: {{ $value.targetPort }}
|
||||
protocol: {{ $value.protocol }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.checks.ucentralgwui.liveness }}
|
||||
{{- if .Values.checks.owgwui.liveness }}
|
||||
livenessProbe:
|
||||
{{- toYaml .Values.checks.ucentralgwui.liveness | nindent 12 }}
|
||||
{{- toYaml .Values.checks.owgwui.liveness | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- if .Values.checks.ucentralgwui.readiness }}
|
||||
{{- if .Values.checks.owgwui.readiness }}
|
||||
readinessProbe:
|
||||
{{- toYaml .Values.checks.ucentralgwui.readiness | nindent 12 }}
|
||||
{{- toYaml .Values.checks.owgwui.readiness | nindent 12 }}
|
||||
{{- end }}
|
||||
|
||||
{{- with .Values.resources }}
|
||||
@@ -64,7 +73,7 @@ spec:
|
||||
imagePullSecrets:
|
||||
{{- range $image, $imageValue := .Values.images }}
|
||||
{{- if $imageValue.regcred }}
|
||||
- name: {{ include "ucentralgwui.fullname" $root }}-{{ $image }}-regcred
|
||||
- name: {{ include "owgwui.fullname" $root }}-{{ $image }}-regcred
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
{{- range $ingress, $ingressValue := .Values.ingresses }}
|
||||
{{- if $ingressValue.enabled }}
|
||||
---
|
||||
apiVersion: extensions/v1beta1
|
||||
apiVersion: {{ include "owgwui.ingress.apiVersion" $root }}
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ include "ucentralgwui.fullname" $root }}-{{ $ingress }}
|
||||
name: {{ include "owgwui.fullname" $root }}-{{ $ingress }}
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "ucentralgwui.name" $root }}
|
||||
helm.sh/chart: {{ include "ucentralgwui.chart" $root }}
|
||||
app.kubernetes.io/name: {{ include "owgwui.name" $root }}
|
||||
helm.sh/chart: {{ include "owgwui.chart" $root }}
|
||||
app.kubernetes.io/instance: {{ $root.Release.Name }}
|
||||
app.kubernetes.io/managed-by: {{ $root.Release.Service }}
|
||||
{{- with $ingressValue.annotations }}
|
||||
@@ -17,7 +17,9 @@ metadata:
|
||||
{{- end }}
|
||||
|
||||
spec:
|
||||
|
||||
{{- if $ingressValue.className }}
|
||||
ingressClassName: {{ $ingressValue.className }}
|
||||
{{- end }}
|
||||
{{- if $ingressValue.tls }}
|
||||
tls:
|
||||
{{- range $ingressValue.tls }}
|
||||
@@ -36,9 +38,23 @@ spec:
|
||||
paths:
|
||||
{{- range $ingressValue.paths }}
|
||||
- path: {{ .path }}
|
||||
{{- if $root.Capabilities.APIVersions.Has "networking.k8s.io/v1" }}
|
||||
pathType: {{ .pathType | default "ImplementationSpecific" }}
|
||||
{{- end }}
|
||||
backend:
|
||||
serviceName: {{ include "ucentralgwui.fullname" $root }}-{{ .serviceName }}
|
||||
{{- if $root.Capabilities.APIVersions.Has "networking.k8s.io/v1" }}
|
||||
service:
|
||||
name: {{ include "owgwui.fullname" $root }}-{{ .serviceName }}
|
||||
port:
|
||||
{{- if kindIs "string" .servicePort }}
|
||||
name: {{ .servicePort }}
|
||||
{{- else }}
|
||||
number: {{ .servicePort }}
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
serviceName: {{ include "owgwui.fullname" $root }}-{{ .serviceName }}
|
||||
servicePort: {{ .servicePort }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
@@ -10,11 +10,11 @@ kind: Secret
|
||||
type: kubernetes.io/dockerconfigjson
|
||||
metadata:
|
||||
labels:
|
||||
app.kuberentes.io/name: {{ include "ucentralgwui.name" $root }}
|
||||
helm.sh/chart: {{ include "ucentralgwui.chart" $root }}
|
||||
app.kuberentes.io/name: {{ include "owgwui.name" $root }}
|
||||
helm.sh/chart: {{ include "owgwui.chart" $root }}
|
||||
app.kubernetes.io/instance: {{ $root.Release.Name }}
|
||||
app.kubernetes.io/managed-by: {{ $root.Release.Service }}
|
||||
name: {{ include "ucentralgwui.fullname" $root }}-{{ $image }}-regcred
|
||||
name: {{ include "owgwui.fullname" $root }}-{{ $image }}-regcred
|
||||
data:
|
||||
.dockerconfigjson: {{ template "imagePullSecret" $imageValue.regcred }}
|
||||
{{- end }}
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "ucentralgwui.fullname" $root }}-{{ $service }}
|
||||
name: {{ include "owgwui.fullname" $root }}-{{ $service }}
|
||||
{{- with $serviceValue.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "ucentralgwui.name" $root }}
|
||||
helm.sh/chart: {{ include "ucentralgwui.chart" $root }}
|
||||
app.kubernetes.io/name: {{ include "owgwui.name" $root }}
|
||||
helm.sh/chart: {{ include "owgwui.chart" $root }}
|
||||
app.kubernetes.io/instance: {{ $root.Release.Name }}
|
||||
app.kubernetes.io/managed-by: {{ $root.Release.Service }}
|
||||
|
||||
@@ -39,7 +39,7 @@ spec:
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
selector:
|
||||
app.kubernetes.io/name: {{ include "ucentralgwui.name" $root }}
|
||||
app.kubernetes.io/name: {{ include "owgwui.name" $root }}
|
||||
app.kubernetes.io/instance: {{ $root.Release.Name }}
|
||||
{{- with $serviceValue.labels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
# System
|
||||
replicaCount: 1
|
||||
revisionHistoryLimit: 2
|
||||
|
||||
nameOverride: ""
|
||||
fullnameOverride: ""
|
||||
|
||||
images:
|
||||
ucentralgwui:
|
||||
repository: tip-tip-wlan-cloud-ucentral.jfrog.io/ucentralgw-ui
|
||||
tag: main
|
||||
owgwui:
|
||||
repository: tip-tip-wlan-cloud-ucentral.jfrog.io/owgw-ui
|
||||
tag: v4.0.0
|
||||
pullPolicy: Always
|
||||
|
||||
services:
|
||||
ucentralgwui:
|
||||
owgwui:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
http:
|
||||
@@ -20,7 +21,7 @@ services:
|
||||
protocol: TCP
|
||||
|
||||
checks:
|
||||
ucentralgwui:
|
||||
owgwui:
|
||||
liveness:
|
||||
httpGet:
|
||||
path: /
|
||||
@@ -37,7 +38,7 @@ ingresses:
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# kubernetes.io/tls-acme: "true"
|
||||
# tls:
|
||||
# - secretName: '{{ include "ucentralgwui.fullname" . }}-default-tls' # template may be used
|
||||
# - secretName: '{{ include "owgwui.fullname" . }}-default-tls' # template may be used
|
||||
# cert: |
|
||||
# CERT_HERE_IN_PEM
|
||||
# key: |
|
||||
@@ -48,7 +49,8 @@ ingresses:
|
||||
- chart-example.local
|
||||
paths:
|
||||
- path: /
|
||||
serviceName: ucentralgwui
|
||||
pathType: ImplementationSpecific
|
||||
serviceName: owgwui
|
||||
servicePort: http
|
||||
|
||||
resources: {}
|
||||
@@ -69,7 +71,8 @@ tolerations: []
|
||||
|
||||
affinity: {}
|
||||
|
||||
podAnnotations: {}
|
||||
|
||||
# Application
|
||||
public_env_variables:
|
||||
DEFAULT_UCENTRALSEC_URL: https://ucentral.dpaas.arilia.com:16001
|
||||
ALLOW_UCENTRALSEC_CHANGE: false
|
||||
REACT_APP_UCENTRALSEC_URL: https://ucentral.dpaas.arilia.com:16001
|
||||
|
||||
21
index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Controller</title>
|
||||
<meta name="description" content="OpenWiFi Controller App" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
||||
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5" />
|
||||
<meta name="msapplication-TileColor" content="#da532c" />
|
||||
<script src="/env-config.js"></script>
|
||||
<meta name="theme-color" content="#000000" />
|
||||
</head>
|
||||
<body>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="./src/index.tsx"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"baseUrl": "src",
|
||||
"paths": {
|
||||
"*": ["*"]
|
||||
}
|
||||
},
|
||||
"include": ["src"]
|
||||
}
|
||||
31032
package-lock.json
generated
171
package.json
@@ -1,92 +1,101 @@
|
||||
{
|
||||
"name": "ucentral-client",
|
||||
"version": "0.9.14",
|
||||
"dependencies": {
|
||||
"@coreui/coreui": "^3.4.0",
|
||||
"@coreui/icons": "^2.0.1",
|
||||
"@coreui/icons-react": "^1.1.0",
|
||||
"@coreui/react": "^3.4.6",
|
||||
"apexcharts": "^3.27.1",
|
||||
"axios": "^0.21.1",
|
||||
"axios-retry": "^3.1.9",
|
||||
"i18next": "^20.3.1",
|
||||
"i18next-browser-languagedetector": "^6.1.2",
|
||||
"i18next-http-backend": "^1.2.6",
|
||||
"prop-types": "^15.7.2",
|
||||
"react": "^17.0.2",
|
||||
"react-apexcharts": "^1.3.9",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-i18next": "^11.11.0",
|
||||
"react-paginate": "^7.1.3",
|
||||
"react-router-dom": "^5.2.0",
|
||||
"react-widgets": "^5.1.1",
|
||||
"sass": "^1.35.1",
|
||||
"ucentral-libs": "^0.8.7",
|
||||
"uuid": "^8.3.2"
|
||||
},
|
||||
"main": "index.js",
|
||||
"version": "4.0.0",
|
||||
"description": "",
|
||||
"private": true,
|
||||
"main": "index.tsx",
|
||||
"scripts": {
|
||||
"start": "webpack serve --config config/webpack.dev.js",
|
||||
"build": "webpack --config config/webpack.prod.js",
|
||||
"format": "prettier --write 'src/**/*.js'",
|
||||
"eslint-fix": "eslint --fix 'src/**/*.js'"
|
||||
"dev": "vite",
|
||||
"build": "vite build",
|
||||
"format": "prettier --write \"src/**/*x.{ts,tsx,js,jsx}\"",
|
||||
"analyze": "source-map-explorer 'build/static/js/*.js'",
|
||||
"lint": "TIMING=1 eslint \"src/**/*.{ts,tsx,js,jsx}\" --fix",
|
||||
"clean": "rm -rf node_modules && rm -rf build"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": "react-app"
|
||||
},
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"pre-commit": "lint-staged"
|
||||
}
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{js,jsx}": [
|
||||
"eslint",
|
||||
"prettier --write"
|
||||
]
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@chakra-ui/anatomy": "^2.1.1",
|
||||
"@chakra-ui/icons": "^2.0.18",
|
||||
"@chakra-ui/react": "^2.3.6",
|
||||
"@chakra-ui/styled-system": "^2.9.0",
|
||||
"@chakra-ui/theme-tools": "^2.0.12",
|
||||
"@chakra-ui/utils": "^2.0.14",
|
||||
"@emotion/react": "^11.10.6",
|
||||
"@emotion/styled": "^11.10.6",
|
||||
"@fontsource/inter": "^4.5.15",
|
||||
"@googlemaps/react-wrapper": "^1.1.35",
|
||||
"@googlemaps/typescript-guards": "^2.0.3",
|
||||
"@hello-pangea/dnd": "^16.2.0",
|
||||
"@phosphor-icons/react": "^2.0.8",
|
||||
"@react-spring/web": "^9.7.2",
|
||||
"@tanstack/react-query": "^4.29.3",
|
||||
"@tanstack/react-table": "^8.8.5",
|
||||
"@textea/json-viewer": "^2.16.2",
|
||||
"axios": "^1.3.5",
|
||||
"buffer": "^6.0.3",
|
||||
"chakra-react-select": "^4.6.0",
|
||||
"chart.js": "^3.9.1",
|
||||
"dagre": "^0.8.5",
|
||||
"fast-equals": "^5.0.1",
|
||||
"formik": "^2.2.9",
|
||||
"framer-motion": "^10.12.2",
|
||||
"i18next": "^22.4.14",
|
||||
"i18next-browser-languagedetector": "^7.0.1",
|
||||
"i18next-http-backend": "^2.2.0",
|
||||
"libphonenumber-js": "^1.10.26",
|
||||
"prop-types": "^15.8.1",
|
||||
"react": "^18.2.0",
|
||||
"react-app-polyfill": "^3.0.0",
|
||||
"react-chartjs-2": "^4.3.1",
|
||||
"react-country-flag": "^3.1.0",
|
||||
"react-csv": "^2.2.2",
|
||||
"react-datepicker": "^4.11.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-fast-compare": "^3.2.1",
|
||||
"react-i18next": "^12.2.0",
|
||||
"react-masonry-css": "^1.0.16",
|
||||
"react-router-dom": "^6.10.0",
|
||||
"react-table": "^7.8.0",
|
||||
"react-virtualized-auto-sizer": "^1.0.15",
|
||||
"react-window": "^1.8.9",
|
||||
"source-map-explorer": "^2.5.3",
|
||||
"typescript": "^5.0.4",
|
||||
"uuid": "^9.0.0",
|
||||
"vite": "^4.2.1",
|
||||
"yup": "^0.32.11",
|
||||
"zustand": "^4.3.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.14.6",
|
||||
"@babel/plugin-proposal-class-properties": "^7.14.5",
|
||||
"@babel/plugin-transform-runtime": "^7.14.5",
|
||||
"@babel/polyfill": "^7.12.1",
|
||||
"@babel/preset-env": "^7.14.7",
|
||||
"@babel/preset-react": "^7.14.5",
|
||||
"@pmmmwh/react-refresh-webpack-plugin": "^0.4.3",
|
||||
"@svgr/webpack": "^5.5.0",
|
||||
"autoprefixer": "^10.2.6",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"babel-loader": "^8.2.2",
|
||||
"clean-webpack-plugin": "^3.0.0",
|
||||
"copy-webpack-plugin": "^7.0.0",
|
||||
"css-loader": "^5.2.6",
|
||||
"css-minimizer-webpack-plugin": "^2.0.0",
|
||||
"dotenv-webpack": "^6.0.4",
|
||||
"eslint": "^7.29.0",
|
||||
"eslint-config-airbnb": "^18.2.1",
|
||||
"eslint-config-prettier": "^7.2.0",
|
||||
"@types/google.maps": "^3.52.5",
|
||||
"@types/node": "^18.15.11",
|
||||
"@types/react": "^18.0.37",
|
||||
"@types/react-csv": "^1.1.3",
|
||||
"@types/react-datepicker": "4.10.0",
|
||||
"@types/react-dom": "^18.0.11",
|
||||
"@types/react-table": "^7.7.14",
|
||||
"@types/react-virtualized-auto-sizer": "^1.0.1",
|
||||
"@types/react-window": "^1.8.5",
|
||||
"@types/uuid": "^9.0.1",
|
||||
"@vitejs/plugin-react": "^3.1.0",
|
||||
"eslint": "8.38.0",
|
||||
"eslint-config-airbnb": "^19.0.4",
|
||||
"eslint-config-airbnb-typescript": "^17.0.0",
|
||||
"eslint-config-airbnb-typescript-prettier": "^5.0.0",
|
||||
"eslint-config-prettier": "^8.8.0",
|
||||
"eslint-import-resolver-alias": "^1.1.2",
|
||||
"eslint-loader": "^4.0.2",
|
||||
"eslint-plugin-babel": "^5.3.1",
|
||||
"eslint-plugin-import": "^2.23.4",
|
||||
"eslint-plugin-prettier": "^3.4.0",
|
||||
"eslint-plugin-react": "^7.24.0",
|
||||
"eslint-plugin-react-hooks": "^4.2.0",
|
||||
"html-webpack-plugin": "^5.3.2",
|
||||
"husky": "^4.3.8",
|
||||
"lint-staged": "^11.0.0",
|
||||
"mini-css-extract-plugin": "^1.6.1",
|
||||
"node-sass": "^5.0.0",
|
||||
"path": "^0.12.7",
|
||||
"prettier": "^2.3.2",
|
||||
"react-refresh": "^0.9.0",
|
||||
"sass-loader": "^11.1.1",
|
||||
"style-loader": "^2.0.0",
|
||||
"terser-webpack-plugin": "^5.1.4",
|
||||
"webpack": "^5.40.0",
|
||||
"webpack-cli": "^4.7.2",
|
||||
"webpack-dev-server": "^3.11.2",
|
||||
"webpack-merge": "^5.8.0"
|
||||
"eslint-plugin-import": "^2.27.5",
|
||||
"eslint-plugin-jsx-a11y": "^6.7.1",
|
||||
"eslint-plugin-no-inline-styles": "^1.0.5",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"eslint-plugin-react": "^7.32.2",
|
||||
"eslint-plugin-react-hooks": "^4.6.0",
|
||||
"lint-staged": "^13.2.1",
|
||||
"prettier": "^2.8.7",
|
||||
"vite-plugin-pwa": "^0.14.7",
|
||||
"vite-plugin-svgr": "^4.2.0",
|
||||
"vite-tsconfig-paths": "^4.2.0"
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
|
||||
BIN
public/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/android-chrome-384x384.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
public/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
9
public/browserconfig.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="/mstile-150x150.png"/>
|
||||
<TileColor>#414141</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"DEFAULT_UCENTRALSEC_URL": "https://ucentral.dpaas.arilia.com:16001",
|
||||
"ALLOW_UCENTRALSEC_CHANGE": false
|
||||
}
|
||||
BIN
public/devices/asterfusion_CX204Y-24GT-M-SWP4.png
Normal file
|
After Width: | Height: | Size: 294 KiB |
BIN
public/devices/asterfusion_CX204Y-48GT-M-SWP4.png
Normal file
|
After Width: | Height: | Size: 394 KiB |
BIN
public/devices/cig_wf160d.png
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
public/devices/cig_wf186h.png
Normal file
|
After Width: | Height: | Size: 141 KiB |
BIN
public/devices/cig_wf186w.png
Normal file
|
After Width: | Height: | Size: 138 KiB |
BIN
public/devices/cig_wf188.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
public/devices/cig_wf188n-ca-ath12.png
Normal file
|
After Width: | Height: | Size: 245 KiB |
BIN
public/devices/cig_wf188n-ca.png
Normal file
|
After Width: | Height: | Size: 245 KiB |
BIN
public/devices/cig_wf188n-us.png
Normal file
|
After Width: | Height: | Size: 245 KiB |
BIN
public/devices/cig_wf188n.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
public/devices/cig_wf194c.png
Normal file
|
After Width: | Height: | Size: 75 KiB |
BIN
public/devices/cig_wf194c4.png
Normal file
|
After Width: | Height: | Size: 75 KiB |
BIN
public/devices/cig_wf196-ca-ath12.png
Normal file
|
After Width: | Height: | Size: 239 KiB |
BIN
public/devices/cig_wf196-ca.png
Normal file
|
After Width: | Height: | Size: 239 KiB |
BIN
public/devices/cig_wf196-us.png
Normal file
|
After Width: | Height: | Size: 239 KiB |
BIN
public/devices/cig_wf196.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
public/devices/cig_wf610d.png
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
public/devices/cig_wf660a.png
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
public/devices/cig_wf808.png
Normal file
|
After Width: | Height: | Size: 218 KiB |
BIN
public/devices/cig_wf809.png
Normal file
|
After Width: | Height: | Size: 158 KiB |
BIN
public/devices/cybertan_eww631-a1.png
Normal file
|
After Width: | Height: | Size: 123 KiB |
BIN
public/devices/cybertan_eww631-b1.png
Normal file
|
After Width: | Height: | Size: 79 KiB |
BIN
public/devices/cybertan_skf224-c1.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
public/devices/cybertan_skf424-c1.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
public/devices/edgecore_eap101-ath12.png
Normal file
|
After Width: | Height: | Size: 140 KiB |
BIN
public/devices/edgecore_eap101.png
Normal file
|
After Width: | Height: | Size: 140 KiB |
BIN
public/devices/edgecore_eap102-ath12.png
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
public/devices/edgecore_eap102.png
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
public/devices/edgecore_eap104.png
Normal file
|
After Width: | Height: | Size: 129 KiB |
BIN
public/devices/edgecore_eap104_ath12.png
Normal file
|
After Width: | Height: | Size: 129 KiB |
BIN
public/devices/edgecore_eap111.png
Normal file
|
After Width: | Height: | Size: 286 KiB |
BIN
public/devices/edgecore_ecs2100-10p.png
Normal file
|
After Width: | Height: | Size: 502 KiB |
BIN
public/devices/edgecore_ecs2100-10t.png
Normal file
|
After Width: | Height: | Size: 637 KiB |
BIN
public/devices/edgecore_ecs2100-28p.png
Normal file
|
After Width: | Height: | Size: 324 KiB |
BIN
public/devices/edgecore_ecs2100-28pp.png
Normal file
|
After Width: | Height: | Size: 313 KiB |
BIN
public/devices/edgecore_ecs2100-28t.png
Normal file
|
After Width: | Height: | Size: 314 KiB |
BIN
public/devices/edgecore_ecs2100-52t.png
Normal file
|
After Width: | Height: | Size: 283 KiB |
BIN
public/devices/edgecore_ecs4100-12ph.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
public/devices/edgecore_ecs4125-10p.png
Normal file
|
After Width: | Height: | Size: 374 KiB |
BIN
public/devices/edgecore_ecs4125.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
public/devices/edgecore_ecs4150-28t.png
Normal file
|
After Width: | Height: | Size: 267 KiB |
BIN
public/devices/edgecore_ecs4150-58p.png
Normal file
|
After Width: | Height: | Size: 331 KiB |
BIN
public/devices/edgecore_ecw5211.png
Normal file
|
After Width: | Height: | Size: 192 KiB |
BIN
public/devices/edgecore_ecw5410.png
Normal file
|
After Width: | Height: | Size: 197 KiB |
BIN
public/devices/edgecore_oap100.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
public/devices/edgecore_oap101-6e.png
Normal file
|
After Width: | Height: | Size: 194 KiB |
BIN
public/devices/edgecore_oap101.png
Normal file
|
After Width: | Height: | Size: 194 KiB |
BIN
public/devices/edgecore_oap101e-6e.png
Normal file
|
After Width: | Height: | Size: 133 KiB |
BIN
public/devices/edgecore_oap101e.png
Normal file
|
After Width: | Height: | Size: 133 KiB |
BIN
public/devices/edgecore_oap102.png
Normal file
|
After Width: | Height: | Size: 194 KiB |
BIN
public/devices/edgecore_spw2ac1200-lan-poe.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
public/devices/edgecore_spw2ac1200.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
public/devices/edgecore_ssw2ac2600.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
public/devices/generic_ap.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
public/devices/hfcl_ion4.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
public/devices/hfcl_ion4.yml.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
public/devices/hfcl_ion4x.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
public/devices/hfcl_ion4x_2.png
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
public/devices/hfcl_ion4x_w.png
Normal file
|
After Width: | Height: | Size: 218 KiB |
BIN
public/devices/hfcl_ion4xe.png
Normal file
|
After Width: | Height: | Size: 421 KiB |
BIN
public/devices/hfcl_ion4xi.png
Normal file
|
After Width: | Height: | Size: 817 KiB |
BIN
public/devices/hfcl_ion4xi_HMR.png
Normal file
|
After Width: | Height: | Size: 879 KiB |
BIN
public/devices/hfcl_ion4xi_w.png
Normal file
|
After Width: | Height: | Size: 664 KiB |
BIN
public/devices/hfcl_ion4xi_wp.png
Normal file
|
After Width: | Height: | Size: 304 KiB |