Compare commits
2203 commits
fess-11.2.
...
master
Author | SHA1 | Date | |
---|---|---|---|
![]() |
726f6f989c | ||
![]() |
e7779ba08e | ||
![]() |
568d15a741 | ||
![]() |
1b5e44f87b | ||
![]() |
1bbf6aaa93 | ||
![]() |
cd478515f4 | ||
![]() |
162081c2e2 | ||
![]() |
541319b7ca | ||
![]() |
4726b59f04 | ||
![]() |
e739c8c33f | ||
![]() |
07bd6aa6a5 | ||
![]() |
cfa492eb8e | ||
![]() |
80e9cb0ddf | ||
![]() |
c3514c5b3a | ||
![]() |
69f21a80f1 | ||
![]() |
c34f716b4e | ||
![]() |
4aea9e1c1f | ||
![]() |
9d3f26ac6a | ||
![]() |
8ca11382a2 | ||
![]() |
68ca7e101c | ||
![]() |
036ebd6c3c | ||
![]() |
70ef1c5194 | ||
![]() |
5b5fd1635f | ||
![]() |
d3cd1579ff | ||
![]() |
f4dc8c3f7c | ||
![]() |
053c6909fd | ||
![]() |
6ca8f890fe | ||
![]() |
706d952ad1 | ||
![]() |
5fdafb769c | ||
![]() |
160dd6ed81 | ||
![]() |
0d30f4d17b | ||
![]() |
e8ae04073a | ||
![]() |
6e98cd861a | ||
![]() |
a6f7abf4ec | ||
![]() |
d9ef5f7655 | ||
![]() |
c24fc41cc5 | ||
![]() |
e8944daf68 | ||
![]() |
9f56ad5ccf | ||
![]() |
c26171fe2e | ||
![]() |
3ed9071299 | ||
![]() |
265bbda820 | ||
![]() |
43af75f42d | ||
![]() |
62d89fbf25 | ||
![]() |
f9b16cfc34 | ||
![]() |
063a714370 | ||
![]() |
173a05dd23 | ||
![]() |
54e7cdf9e5 | ||
![]() |
28bd3005cd | ||
![]() |
3cdc706dcb | ||
![]() |
fbcb986acc | ||
![]() |
5ec0acc4e7 | ||
![]() |
b5b6e45200 | ||
![]() |
03196e147c | ||
![]() |
bc80f33195 | ||
![]() |
c25c167ebd | ||
![]() |
e2d663e1e5 | ||
![]() |
3726fbec40 | ||
![]() |
25f7144dac | ||
![]() |
3dec731f9e | ||
![]() |
cf9b73e103 | ||
![]() |
6134353600 | ||
![]() |
9ac9f96948 | ||
![]() |
dd4af0dcf6 | ||
![]() |
e7657528ef | ||
![]() |
e84219b0e3 | ||
![]() |
327d2eb160 | ||
![]() |
17213f370a | ||
![]() |
ec6385766e | ||
![]() |
59dbbd602b | ||
![]() |
cf940e1cb4 | ||
![]() |
01e16e4b12 | ||
![]() |
2fdf2b4913 | ||
![]() |
0a7e9d3bce | ||
![]() |
c3b7629d0e | ||
![]() |
e40edd2008 | ||
![]() |
abe6356a44 | ||
![]() |
0df246ea53 | ||
![]() |
ecba9f365c | ||
![]() |
e55ecd72fe | ||
![]() |
c895e16ce5 | ||
![]() |
8c48ac1f8a | ||
![]() |
906699974c | ||
![]() |
09fb29ef57 | ||
![]() |
9999aad850 | ||
![]() |
6885cbdc91 | ||
![]() |
11beb70eb5 | ||
![]() |
aff1dd0fcd | ||
![]() |
93354ce179 | ||
![]() |
9de34ffd1a | ||
![]() |
bc55977e9d | ||
![]() |
e0f2314c75 | ||
![]() |
fd90007bc1 | ||
![]() |
a7d00092fb | ||
![]() |
7df7b403ed | ||
![]() |
9e78a39cc1 | ||
![]() |
eef39ab1b8 | ||
![]() |
7ee6b77a60 | ||
![]() |
64f7bf0332 | ||
![]() |
a21cea6ffe | ||
![]() |
4a010e703d | ||
![]() |
d0929b5994 | ||
![]() |
5d74bd3c3b | ||
![]() |
89072190b2 | ||
![]() |
b0d02b6777 | ||
![]() |
dd779b64e1 | ||
![]() |
3946c9da59 | ||
![]() |
ca8f4bed9d | ||
![]() |
7261c5359d | ||
![]() |
269449ed89 | ||
![]() |
4212eea7b4 | ||
![]() |
b419ee3f96 | ||
![]() |
a233a847a4 | ||
![]() |
a26cf43943 | ||
![]() |
78070c9e74 | ||
![]() |
a26e133b55 | ||
![]() |
0a9a4f7306 | ||
![]() |
ec33a25495 | ||
![]() |
24d77de5ae | ||
![]() |
4afbb344c7 | ||
![]() |
dfb41630e6 | ||
![]() |
3551d13562 | ||
![]() |
03f1eccee3 | ||
![]() |
af31322593 | ||
![]() |
10c84ab75f | ||
![]() |
8b2adce4eb | ||
![]() |
1f01d21446 | ||
![]() |
e097d9a20b | ||
![]() |
95354c5400 | ||
![]() |
3f23b9bf14 | ||
![]() |
146f52e299 | ||
![]() |
2f4f0d8cd6 | ||
![]() |
020115648f | ||
![]() |
69abd1796f | ||
![]() |
a2e2647313 | ||
![]() |
3fc67c4f1f | ||
![]() |
dc0d651c2c | ||
![]() |
26f61fc207 | ||
![]() |
f3e1e563dc | ||
![]() |
73202e34c1 | ||
![]() |
128bd4f3a9 | ||
![]() |
054c7a0b81 | ||
![]() |
ce0dad7a9a | ||
![]() |
6a2ccd0d3d | ||
![]() |
3b5ce3b4ef | ||
![]() |
8445c432a2 | ||
![]() |
7ae7b81252 | ||
![]() |
f5d0a98ca5 | ||
![]() |
bcbdfc42bb | ||
![]() |
95277d5861 | ||
![]() |
2cc346d957 | ||
![]() |
0650ad1b3e | ||
![]() |
4524243a62 | ||
![]() |
dbf0748548 | ||
![]() |
d0e8a61c7f | ||
![]() |
c52136fc84 | ||
![]() |
aa40cdf5de | ||
![]() |
fa834b4384 | ||
![]() |
f128e4abf2 | ||
![]() |
81b70b4070 | ||
![]() |
1409cc1018 | ||
![]() |
35e45ec4b8 | ||
![]() |
76352cf8dc | ||
![]() |
b774b68242 | ||
![]() |
4243242117 | ||
![]() |
08471c92a6 | ||
![]() |
106900ae91 | ||
![]() |
0494e440b1 | ||
![]() |
8e215f4cbd | ||
![]() |
52ab272f06 | ||
![]() |
7689a71714 | ||
![]() |
03f32cb3c3 | ||
![]() |
f8eda0df53 | ||
![]() |
4a2ef8f45e | ||
![]() |
f1894f70e1 | ||
![]() |
208531ebe2 | ||
![]() |
479eeab409 | ||
![]() |
f6b2ef3b06 | ||
![]() |
0686a8b613 | ||
![]() |
b50b0b93f2 | ||
![]() |
cff8b1ccde | ||
![]() |
d391949adf | ||
![]() |
08efca08a0 | ||
![]() |
b563683818 | ||
![]() |
38108ad810 | ||
![]() |
2a250cc19a | ||
![]() |
0c07a74b92 | ||
![]() |
633789fd78 | ||
![]() |
dfb42791dc | ||
![]() |
b133ef5ca8 | ||
![]() |
bf848c608e | ||
![]() |
938f4a4db2 | ||
![]() |
296368a9fc | ||
![]() |
b68736b95e | ||
![]() |
ed73caf359 | ||
![]() |
849fa39215 | ||
![]() |
491e5a02c1 | ||
![]() |
b7041afb27 | ||
![]() |
ab89d042f7 | ||
![]() |
1b226042b9 | ||
![]() |
7129edae93 | ||
![]() |
4d7e4da36b | ||
![]() |
dedcfbff25 | ||
![]() |
9faf65a974 | ||
![]() |
becc83e9f2 | ||
![]() |
501509d98e | ||
![]() |
129418d44c | ||
![]() |
52187946f7 | ||
![]() |
c1f8467d66 | ||
![]() |
94452297d6 | ||
![]() |
bedf2934b1 | ||
![]() |
90d6af1385 | ||
![]() |
642d96a1a6 | ||
![]() |
613c418631 | ||
![]() |
39bf5f1943 | ||
![]() |
e35c04d8c6 | ||
![]() |
5bbf18084c | ||
![]() |
0f2ef0ce07 | ||
![]() |
6d0530a778 | ||
![]() |
79cd2a60bd | ||
![]() |
0e923eeb53 | ||
![]() |
2bc92694bc | ||
![]() |
2d07323b8c | ||
![]() |
96c3bf0c12 | ||
![]() |
7ab6fd4771 | ||
![]() |
8a36e4aef3 | ||
![]() |
eec6740eba | ||
![]() |
8ecf5055d3 | ||
![]() |
e35c9f68de | ||
![]() |
f5cc59c6d8 | ||
![]() |
618dcb1041 | ||
![]() |
2a473626cd | ||
![]() |
9ff28a173d | ||
![]() |
1d0dc43f00 | ||
![]() |
49cb0dd09c | ||
![]() |
49ed6fa161 | ||
![]() |
a917f66f1b | ||
![]() |
6d89b3447c | ||
![]() |
e121850ff4 | ||
![]() |
798d0f74f4 | ||
![]() |
d03624d195 | ||
![]() |
acc6c04a46 | ||
![]() |
284d4a2347 | ||
![]() |
58f51f8679 | ||
![]() |
95577ce58a | ||
![]() |
87318c70be | ||
![]() |
d066276598 | ||
![]() |
bc2e44e33d | ||
![]() |
62664ac1e1 | ||
![]() |
3bbed94797 | ||
![]() |
ef8b98cd83 | ||
![]() |
a637b7574d | ||
![]() |
dc26e476e9 | ||
![]() |
19d290324d | ||
![]() |
d3a3b3d925 | ||
![]() |
a73b5e0f22 | ||
![]() |
f13e89af3a | ||
![]() |
4a1a9a4320 | ||
![]() |
81e294324f | ||
![]() |
49f7cd03d8 | ||
![]() |
dea1cb29cd | ||
![]() |
06acb81618 | ||
![]() |
5c5c33418d | ||
![]() |
55431a9c8a | ||
![]() |
47c2fc889e | ||
![]() |
bfeec462c4 | ||
![]() |
fc0a5cd699 | ||
![]() |
e123dea93c | ||
![]() |
833449c65a | ||
![]() |
47962a4938 | ||
![]() |
f1ca0c8586 | ||
![]() |
ecfd1ba73e | ||
![]() |
86afcf344c | ||
![]() |
5c1e681095 | ||
![]() |
26d5f0ed8f | ||
![]() |
09c47c206a | ||
![]() |
bc337f84b2 | ||
![]() |
badb62cfc0 | ||
![]() |
18aedb2d02 | ||
![]() |
9edc268a96 | ||
![]() |
57474fbd16 | ||
![]() |
c0217d787b | ||
![]() |
ff674151a3 | ||
![]() |
3afecc7f82 | ||
![]() |
cc04656ee5 | ||
![]() |
7a7217237a | ||
![]() |
2795cc0db3 | ||
![]() |
f0fa6525ba | ||
![]() |
76870b7f4d | ||
![]() |
c5d0601099 | ||
![]() |
2c11859fb1 | ||
![]() |
aa89150ab7 | ||
![]() |
8da5e98072 | ||
![]() |
f78d99328a | ||
![]() |
62325bfbe5 | ||
![]() |
5c3d14409e | ||
![]() |
697d47e483 | ||
![]() |
e9c4a0c0b2 | ||
![]() |
d952b31ee0 | ||
![]() |
51d98eb2e2 | ||
![]() |
6c8fc2779c | ||
![]() |
c5510d7d99 | ||
![]() |
0a69c29545 | ||
![]() |
4d2b938e85 | ||
![]() |
f0cfcaf149 | ||
![]() |
a8c9ed3f41 | ||
![]() |
3d26bbdc64 | ||
![]() |
28f56262b0 | ||
![]() |
d560786c15 | ||
![]() |
4f24845b71 | ||
![]() |
94904fe725 | ||
![]() |
f9a8862181 | ||
![]() |
6a5ad5cea4 | ||
![]() |
5fc859c1aa | ||
![]() |
18c5342482 | ||
![]() |
7edb18d39b | ||
![]() |
1141fdf774 | ||
![]() |
1580556c51 | ||
![]() |
1f52507824 | ||
![]() |
e44f5fc3b1 | ||
![]() |
54b94a93bf | ||
![]() |
692b5650a7 | ||
![]() |
04dcf34ad7 | ||
![]() |
14b9e897cc | ||
![]() |
aca2667e0b | ||
![]() |
7550cf7a6c | ||
![]() |
a8b62a3200 | ||
![]() |
8ae46358b3 | ||
![]() |
fe694cc684 | ||
![]() |
e4783cda52 | ||
![]() |
ee23c5a1f6 | ||
![]() |
ece9ed175a | ||
![]() |
d73b6d4529 | ||
![]() |
684835039d | ||
![]() |
89ca827644 | ||
![]() |
e9c847a2fe | ||
![]() |
8ec83ed4b9 | ||
![]() |
660be2024d | ||
![]() |
b2e2cec129 | ||
![]() |
a14c072ec1 | ||
![]() |
50cf9ec75d | ||
![]() |
875d9ba17e | ||
![]() |
3c40f8df93 | ||
![]() |
5948063883 | ||
![]() |
f2066b6ff0 | ||
![]() |
16f5b072df | ||
![]() |
0916c4094c | ||
![]() |
c71bffa902 | ||
![]() |
15c66e06f5 | ||
![]() |
d3f6645d2e | ||
![]() |
679e106739 | ||
![]() |
352a6c25a7 | ||
![]() |
88c9959a7d | ||
![]() |
9506bd0390 | ||
![]() |
628abed16f | ||
![]() |
75dd7830fa | ||
![]() |
2a6dbaf810 | ||
![]() |
0b19a25983 | ||
![]() |
beac679951 | ||
![]() |
df18b81094 | ||
![]() |
4a1d83c612 | ||
![]() |
c9f00353a4 | ||
![]() |
37edba8802 | ||
![]() |
6f4d8a9f5c | ||
![]() |
b31238d864 | ||
![]() |
1d60865dcd | ||
![]() |
3250e90002 | ||
![]() |
0a006daa5f | ||
![]() |
3a0411428a | ||
![]() |
69f25a56c1 | ||
![]() |
676f621870 | ||
![]() |
ad94847d61 | ||
![]() |
b4b47d6b01 | ||
![]() |
3eeb8cb839 | ||
![]() |
84355e91cb | ||
![]() |
3c61567cba | ||
![]() |
ff3c294537 | ||
![]() |
cee952cb06 | ||
![]() |
9114a5dc69 | ||
![]() |
06d495e11c | ||
![]() |
540210830f | ||
![]() |
197fa76743 | ||
![]() |
0b154758bd | ||
![]() |
34d552f9e9 | ||
![]() |
cc5f91c6dd | ||
![]() |
dd4e800e09 | ||
![]() |
3dc68b1946 | ||
![]() |
b4f5cd262f | ||
![]() |
886cd2cd69 | ||
![]() |
07ae4feee3 | ||
![]() |
9a1fa05f2b | ||
![]() |
076bbde5f7 | ||
![]() |
909f505425 | ||
![]() |
c64e957ce2 | ||
![]() |
ea5d0e97ad | ||
![]() |
e32c69f729 | ||
![]() |
67bfaafd11 | ||
![]() |
492bfec26e | ||
![]() |
33c67b3a2b | ||
![]() |
63da35d257 | ||
![]() |
9fa9e17056 | ||
![]() |
597ca7ede0 | ||
![]() |
5fd09ec733 | ||
![]() |
5a97261ce6 | ||
![]() |
29f1154e2e | ||
![]() |
8e6d35c982 | ||
![]() |
d6df7256c6 | ||
![]() |
344560bdaa | ||
![]() |
eec062f005 | ||
![]() |
55111ddecc | ||
![]() |
cc3f740b38 | ||
![]() |
ac76cfb45e | ||
![]() |
41f6603318 | ||
![]() |
c6b95c53d5 | ||
![]() |
c3d1c6cf45 | ||
![]() |
6974db9ab4 | ||
![]() |
042834fbe3 | ||
![]() |
87daf31d24 | ||
![]() |
39ac90f300 | ||
![]() |
23dd558a16 | ||
![]() |
82c89e34fd | ||
![]() |
3ead78e019 | ||
![]() |
9bc30b336c | ||
![]() |
aeca590d0e | ||
![]() |
b776e427b5 | ||
![]() |
1c25ecf20c | ||
![]() |
cef9c1e2c2 | ||
![]() |
7823aa5e25 | ||
![]() |
78049a28ff | ||
![]() |
a2d3e4af78 | ||
![]() |
4edc9d8610 | ||
![]() |
f0348897ae | ||
![]() |
a5bd61bf1e | ||
![]() |
56203392dd | ||
![]() |
297ce0a6f0 | ||
![]() |
55e19fed8b | ||
![]() |
1c867e8596 | ||
![]() |
77420167bc | ||
![]() |
28d060058d | ||
![]() |
d3a6191f1d | ||
![]() |
27e51af84e | ||
![]() |
029fefa48e | ||
![]() |
4c8b2357de | ||
![]() |
b21b86c37f | ||
![]() |
5f4649e8bc | ||
![]() |
65fe6e6384 | ||
![]() |
5762adcf9c | ||
![]() |
995c26a888 | ||
![]() |
fbf36fd63e | ||
![]() |
6f4c7da186 | ||
![]() |
26433e174e | ||
![]() |
4052edd20a | ||
![]() |
5c648bd000 | ||
![]() |
cafb95491c | ||
![]() |
0e346abecf | ||
![]() |
a66ea592b1 | ||
![]() |
0579b9473c | ||
![]() |
17d9ae7c6e | ||
![]() |
370a2158fd | ||
![]() |
f7af7e6e4e | ||
![]() |
6d2130fef7 | ||
![]() |
3ea04d2971 | ||
![]() |
6fcdd28095 | ||
![]() |
fc448070ee | ||
![]() |
0e3179f731 | ||
![]() |
3cbc765e5d | ||
![]() |
36ce2cdcd2 | ||
![]() |
986a086fe9 | ||
![]() |
072331b927 | ||
![]() |
0bc1848738 | ||
![]() |
45b062c6e4 | ||
![]() |
4126a9dc69 | ||
![]() |
3f5b914b7a | ||
![]() |
38b2c9577b | ||
![]() |
5870c8c8bd | ||
![]() |
7d05a2885b | ||
![]() |
d039878cfb | ||
![]() |
85e2744249 | ||
![]() |
a335c95a5c | ||
![]() |
f92fd3fa9d | ||
![]() |
bf6751dc7c | ||
![]() |
1489257428 | ||
![]() |
3be34b0dae | ||
![]() |
7d19b44aa2 | ||
![]() |
c1b721cfa3 | ||
![]() |
c4917d9d9e | ||
![]() |
a86882e02a | ||
![]() |
6aa35d2a1a | ||
![]() |
1919e8311d | ||
![]() |
da88b7b7c8 | ||
![]() |
6d31369d53 | ||
![]() |
77fe4e7c85 | ||
![]() |
082df3d6fb | ||
![]() |
7495d7e38f | ||
![]() |
a32ededd48 | ||
![]() |
75e63d4640 | ||
![]() |
b4f01b5f81 | ||
![]() |
ce9d129d81 | ||
![]() |
6b853b16d1 | ||
![]() |
64c8280740 | ||
![]() |
5cd6d07de8 | ||
![]() |
436930c764 | ||
![]() |
c3662ff905 | ||
![]() |
ee0cb68c52 | ||
![]() |
01d1200648 | ||
![]() |
aaa1ff133c | ||
![]() |
0a51cfb8fc | ||
![]() |
e75c5b5703 | ||
![]() |
4f541e5b1f | ||
![]() |
4d07249b81 | ||
![]() |
c890543552 | ||
![]() |
09036bb46a | ||
![]() |
a288aa291e | ||
![]() |
e7789ae3e6 | ||
![]() |
82418be2b0 | ||
![]() |
57706e02c1 | ||
![]() |
e693b5f1ba | ||
![]() |
6d017585c8 | ||
![]() |
94451b11e1 | ||
![]() |
0a918d9d4f | ||
![]() |
bcf23768f9 | ||
![]() |
40db4f49b9 | ||
![]() |
eeb0430286 | ||
![]() |
9a9bf591a9 | ||
![]() |
7fc31be080 | ||
![]() |
82890775f2 | ||
![]() |
b10c0bf399 | ||
![]() |
76bd6c6324 | ||
![]() |
c45779232f | ||
![]() |
c662fcd917 | ||
![]() |
0b4d364e1f | ||
![]() |
075a66d7ab | ||
![]() |
9283746c6b | ||
![]() |
40684038f3 | ||
![]() |
1ca0d0a491 | ||
![]() |
7b1dbe0f89 | ||
![]() |
8567d63555 | ||
![]() |
10357d03f0 | ||
![]() |
86e077fe54 | ||
![]() |
7378aba2c3 | ||
![]() |
4e84778116 | ||
![]() |
0a4f2e384a | ||
![]() |
a00ef0a822 | ||
![]() |
3bc99b517e | ||
![]() |
2a2ee01d47 | ||
![]() |
646a2085e9 | ||
![]() |
9c1f092f75 | ||
![]() |
9661028400 | ||
![]() |
23e17bef52 | ||
![]() |
b37408003c | ||
![]() |
d038e4a33f | ||
![]() |
97984950a8 | ||
![]() |
28542f0077 | ||
![]() |
693835ff7b | ||
![]() |
e30c3fe459 | ||
![]() |
bbeebb3a4a | ||
![]() |
1af4c359f1 | ||
![]() |
5acc250de9 | ||
![]() |
1184f1042d | ||
![]() |
53a604547e | ||
![]() |
4528bbb255 | ||
![]() |
0562548d2f | ||
![]() |
852831d08a | ||
![]() |
cbeed6dcae | ||
![]() |
b0d010f962 | ||
![]() |
cffb0d7242 | ||
![]() |
cb14079909 | ||
![]() |
9fac6d2dd4 | ||
![]() |
491055f085 | ||
![]() |
44698db750 | ||
![]() |
0c860aca32 | ||
![]() |
e23829e80e | ||
![]() |
84a7fcbd75 | ||
![]() |
a3cb5bc4b1 | ||
![]() |
fa99193e6f | ||
![]() |
213f6d6041 | ||
![]() |
23f34b56a3 | ||
![]() |
3ac1ab99f7 | ||
![]() |
e13f0a220d | ||
![]() |
259389d7d2 | ||
![]() |
91b2a8c712 | ||
![]() |
92a618477b | ||
![]() |
6375002de0 | ||
![]() |
ed1f47f88d | ||
![]() |
beec3d458e | ||
![]() |
40759cc960 | ||
![]() |
6e71c825d9 | ||
![]() |
a755716a1e | ||
![]() |
7fdc30c785 | ||
![]() |
74dcd6a962 | ||
![]() |
82d771b104 | ||
![]() |
44993a658f | ||
![]() |
04a404d201 | ||
![]() |
d093a74699 | ||
![]() |
bd340420da | ||
![]() |
ac3c2a988c | ||
![]() |
2a5cef9faf | ||
![]() |
0560026542 | ||
![]() |
052fe23464 | ||
![]() |
e8798d8606 | ||
![]() |
931bb2e21a | ||
![]() |
39c0f95fbd | ||
![]() |
73e39aeb20 | ||
![]() |
9c2621fa55 | ||
![]() |
c7f0c4adad | ||
![]() |
7546febab6 | ||
![]() |
647fc5235e | ||
![]() |
9d885118a6 | ||
![]() |
5819374a2a | ||
![]() |
519e4c00d7 | ||
![]() |
54dcf95a7e | ||
![]() |
447f2814fc | ||
![]() |
7f11d87704 | ||
![]() |
c1bacf14a7 | ||
![]() |
fb93dc4ea6 | ||
![]() |
14c5a06bab | ||
![]() |
2aec7b3448 | ||
![]() |
b1ae44b761 | ||
![]() |
bf431d4306 | ||
![]() |
e624a92004 | ||
![]() |
bfcde3f28e | ||
![]() |
0e322bd8a2 | ||
![]() |
08a0d086b0 | ||
![]() |
953b3a79f5 | ||
![]() |
e73205ed2b | ||
![]() |
6af29ff501 | ||
![]() |
4fcfddbea0 | ||
![]() |
eb445677b4 | ||
![]() |
fa172652e0 | ||
![]() |
3e09e5b645 | ||
![]() |
109c012f16 | ||
![]() |
fa9e27a1c3 | ||
![]() |
f8fff4248e | ||
![]() |
b222649d02 | ||
![]() |
9d57960b6c | ||
![]() |
5d232e2db0 | ||
![]() |
999097a7b0 | ||
![]() |
9c82b32e96 | ||
![]() |
4852966aa6 | ||
![]() |
aabc9d365f | ||
![]() |
776ecfdb3b | ||
![]() |
5fce864e60 | ||
![]() |
38a7c3e156 | ||
![]() |
bb797588a6 | ||
![]() |
aa87681a79 | ||
![]() |
e58dbd8080 | ||
![]() |
778d328718 | ||
![]() |
c05bafb5ec | ||
![]() |
1d45fb6a47 | ||
![]() |
12a57af1c6 | ||
![]() |
1a204e1cd4 | ||
![]() |
cb63a203a7 | ||
![]() |
a7ee7e687b | ||
![]() |
3cd8306648 | ||
![]() |
4e5753ed38 | ||
![]() |
1af5dd3b2d | ||
![]() |
3bedf9c201 | ||
![]() |
1e11e13318 | ||
![]() |
db002c47f4 | ||
![]() |
cd41184064 | ||
![]() |
af41d1fdd6 | ||
![]() |
2c8d33bc6b | ||
![]() |
57daea9559 | ||
![]() |
d6b9563ffc | ||
![]() |
eaef76aa24 | ||
![]() |
4290a2967b | ||
![]() |
32e0c3c42c | ||
![]() |
bc38d9d9ca | ||
![]() |
f7b42ef839 | ||
![]() |
baee42eedd | ||
![]() |
57c7e55cc0 | ||
![]() |
649c946ab1 | ||
![]() |
fdf27d658e | ||
![]() |
dfb0e15da6 | ||
![]() |
936028b999 | ||
![]() |
1eec6315ce | ||
![]() |
9a90d5617f | ||
![]() |
3d07c2b782 | ||
![]() |
e020d47c7d | ||
![]() |
605d9cf6d6 | ||
![]() |
b95772bb08 | ||
![]() |
5c0be06298 | ||
![]() |
82e5fbcee9 | ||
![]() |
9b6ec3a8f3 | ||
![]() |
2758ed9d30 | ||
![]() |
14625aa464 | ||
![]() |
2c73609e44 | ||
![]() |
0afd9776dd | ||
![]() |
60ace8e8e5 | ||
![]() |
4d3b222f20 | ||
![]() |
5b9959118e | ||
![]() |
fcbd587bac | ||
![]() |
8294c76cd5 | ||
![]() |
61258008dd | ||
![]() |
81f144c75f | ||
![]() |
695d35aa76 | ||
![]() |
9087e1b09c | ||
![]() |
b07a8cbe9e | ||
![]() |
22260a7c80 | ||
![]() |
2c9fe7492b | ||
![]() |
4ce1d2a834 | ||
![]() |
9eef26164c | ||
![]() |
4b92b855ea | ||
![]() |
7dbaa6f741 | ||
![]() |
9eea4524ad | ||
![]() |
6d19b53299 | ||
![]() |
358e182625 | ||
![]() |
1af6a1c682 | ||
![]() |
e666a1f300 | ||
![]() |
de36272e57 | ||
![]() |
5b28be6fa8 | ||
![]() |
d3aef81996 | ||
![]() |
71da5fd2c6 | ||
![]() |
2aafb213cf | ||
![]() |
fb40f18c9d | ||
![]() |
e2f69f864f | ||
![]() |
144de1202c | ||
![]() |
451352c890 | ||
![]() |
610b144730 | ||
![]() |
e9a376b473 | ||
![]() |
be91848439 | ||
![]() |
34db0d3683 | ||
![]() |
d81adf3b03 | ||
![]() |
8094f1ba08 | ||
![]() |
d67b5f9ca9 | ||
![]() |
2a22a2e3bf | ||
![]() |
e87e4fc6dc | ||
![]() |
55f77427b4 | ||
![]() |
ba32693ff3 | ||
![]() |
d220415a15 | ||
![]() |
cd534c65c4 | ||
![]() |
c18f80a626 | ||
![]() |
b9086a2e93 | ||
![]() |
8f70b5cbd4 | ||
![]() |
86769bf2df | ||
![]() |
a6218b836d | ||
![]() |
85477bfa30 | ||
![]() |
3fd11d223d | ||
![]() |
08866981f2 | ||
![]() |
4d5613cc72 | ||
![]() |
80cd98f0af | ||
![]() |
d5712cc266 | ||
![]() |
ba8848097e | ||
![]() |
ed46ec4b51 | ||
![]() |
b5aff181ff | ||
![]() |
040a95da72 | ||
![]() |
1864a45475 | ||
![]() |
42935874a8 | ||
![]() |
a21dc8b226 | ||
![]() |
59713cddca | ||
![]() |
fbd1c68555 | ||
![]() |
5456e87e39 | ||
![]() |
92685fbfae | ||
![]() |
7b21e0a549 | ||
![]() |
abde5ed1c9 | ||
![]() |
1264b15b78 | ||
![]() |
351b5413df | ||
![]() |
537b7333c7 | ||
![]() |
1b1632bede | ||
![]() |
7d6a3fa159 | ||
![]() |
12f29bf14b | ||
![]() |
0c64103261 | ||
![]() |
d89df0673b | ||
![]() |
cee3d5deef | ||
![]() |
b7d56472a1 | ||
![]() |
46a9aee502 | ||
![]() |
c868eb45a8 | ||
![]() |
5f02aa3f8f | ||
![]() |
ad83edf75f | ||
![]() |
caa36e2830 | ||
![]() |
336986bfed | ||
![]() |
0e7e99310e | ||
![]() |
106368dbed | ||
![]() |
afcee85e6c | ||
![]() |
d3fe1aab13 | ||
![]() |
f12a1c52f4 | ||
![]() |
a72dc0beac | ||
![]() |
8f8003d3b8 | ||
![]() |
d29148d6b8 | ||
![]() |
53828fcb8e | ||
![]() |
d112575f8f | ||
![]() |
3631d2dddf | ||
![]() |
5f6924d6a0 | ||
![]() |
9acee06282 | ||
![]() |
15598707e9 | ||
![]() |
e38d64bef3 | ||
![]() |
5352623e11 | ||
![]() |
8ddc00c634 | ||
![]() |
3d152dcd68 | ||
![]() |
ca92cf2d6b | ||
![]() |
e045e76b35 | ||
![]() |
33fe3e8e5f | ||
![]() |
5b568e4cb9 | ||
![]() |
f5981cd036 | ||
![]() |
0495e65e13 | ||
![]() |
bf6a156e1a | ||
![]() |
4cd0afa3dc | ||
![]() |
49fe8c0cec | ||
![]() |
60f5732278 | ||
![]() |
b397864890 | ||
![]() |
7a0ef92941 | ||
![]() |
cd6c657d96 | ||
![]() |
c5b0193319 | ||
![]() |
bf95d3a7a4 | ||
![]() |
bd8b80bb9e | ||
![]() |
a85ae46f97 | ||
![]() |
9348f6d7fb | ||
![]() |
955b5abb71 | ||
![]() |
faec8fafa3 | ||
![]() |
265138862c | ||
![]() |
d4a16f872e | ||
![]() |
59a80ec2d5 | ||
![]() |
cc3aeefa0b | ||
![]() |
ab23cb913e | ||
![]() |
713325556e | ||
![]() |
c061524a8d | ||
![]() |
21963b078e | ||
![]() |
b810bc8a11 | ||
![]() |
a3b57ff346 | ||
![]() |
f8fca90815 | ||
![]() |
330094b288 | ||
![]() |
30f466e5e2 | ||
![]() |
4d06623731 | ||
![]() |
92897eac7f | ||
![]() |
45c9a56079 | ||
![]() |
e5b07cd57d | ||
![]() |
6cc6b15c0f | ||
![]() |
2ef92570d3 | ||
![]() |
efff31229b | ||
![]() |
a0c17d2e85 | ||
![]() |
c8c58d1a53 | ||
![]() |
9149c4c0ef | ||
![]() |
f97308739a | ||
![]() |
56e4a5a6b8 | ||
![]() |
9263d656a1 | ||
![]() |
2f6168ef3c | ||
![]() |
5f426e4278 | ||
![]() |
e7ebdd1c42 | ||
![]() |
40bf615fbc | ||
![]() |
3c4b80472e | ||
![]() |
4e0d5ffd54 | ||
![]() |
a569803668 | ||
![]() |
989a385819 | ||
![]() |
bb4e2413ba | ||
![]() |
4ea734e638 | ||
![]() |
fc4e149dad | ||
![]() |
92be3988c4 | ||
![]() |
f2024cac62 | ||
![]() |
c986982c69 | ||
![]() |
d11a71c163 | ||
![]() |
1f1e1c8e28 | ||
![]() |
6995f39494 | ||
![]() |
b8a5a822ae | ||
![]() |
93e8f8aeb8 | ||
![]() |
e627ebaf43 | ||
![]() |
2041ab8924 | ||
![]() |
c6886dc419 | ||
![]() |
cb6f4231cf | ||
![]() |
07581b7c28 | ||
![]() |
efa5a42a30 | ||
![]() |
d93d21a874 | ||
![]() |
ec6c43851c | ||
![]() |
dcefde84dd | ||
![]() |
5d44f493a1 | ||
![]() |
10d33140a3 | ||
![]() |
384c5c9772 | ||
![]() |
e745dec9a6 | ||
![]() |
a922448da0 | ||
![]() |
904aa5c647 | ||
![]() |
059f8080cd | ||
![]() |
870c32cbee | ||
![]() |
f7a0988200 | ||
![]() |
265a00f3fd | ||
![]() |
f7e0a081dd | ||
![]() |
855adb6520 | ||
![]() |
b959b48eb8 | ||
![]() |
e344c3cbcc | ||
![]() |
5d639eccdc | ||
![]() |
9a8dcf8d48 | ||
![]() |
407de12129 | ||
![]() |
0e3b39a8de | ||
![]() |
1ea921c461 | ||
![]() |
29ce6dd071 | ||
![]() |
24cb1db9df | ||
![]() |
ab12ec8c2c | ||
![]() |
2dfdd0d58d | ||
![]() |
24bbb8fdf5 | ||
![]() |
bcec04caa3 | ||
![]() |
b626b6e4f9 | ||
![]() |
2792584aff | ||
![]() |
82e39d9c61 | ||
![]() |
c400992054 | ||
![]() |
7e3942aaf5 | ||
![]() |
22e1034b68 | ||
![]() |
3e64fff96e | ||
![]() |
90f6b52b9d | ||
![]() |
26e4ca8bac | ||
![]() |
5607f558f0 | ||
![]() |
895c7e8c97 | ||
![]() |
cac93135b4 | ||
![]() |
3ea66fb446 | ||
![]() |
52b8c9b35b | ||
![]() |
c304092fe7 | ||
![]() |
40f89355f0 | ||
![]() |
58a9531f9d | ||
![]() |
5f8f6df1b0 | ||
![]() |
53bc9a4c65 | ||
![]() |
e3d1028296 | ||
![]() |
49eae71e89 | ||
![]() |
b3dd5a8148 | ||
![]() |
5a6db9abfd | ||
![]() |
708c29802b | ||
![]() |
d4153914a7 | ||
![]() |
7331932907 | ||
![]() |
51dd3dcead | ||
![]() |
e5d9e8f236 | ||
![]() |
45d6afc90d | ||
![]() |
040e459d2f | ||
![]() |
84824f9c83 | ||
![]() |
c9dd65be71 | ||
![]() |
6b62a5cd9f | ||
![]() |
10fd8e0eac | ||
![]() |
867e276a8a | ||
![]() |
262bca2f7a | ||
![]() |
6e118ed02f | ||
![]() |
de79d8f17d | ||
![]() |
2e49c2db49 | ||
![]() |
2bd33d753c | ||
![]() |
1ed2b0cddf | ||
![]() |
ee10c1b2bc | ||
![]() |
63a93a6a0f | ||
![]() |
d5458fa95e | ||
![]() |
59e07f6bb6 | ||
![]() |
91bf1e577c | ||
![]() |
a8bdcfec84 | ||
![]() |
50288d0a4c | ||
![]() |
62d35c8c24 | ||
![]() |
4b89b0b511 | ||
![]() |
13b8b52194 | ||
![]() |
1c9d6566e4 | ||
![]() |
cb47bd59b5 | ||
![]() |
1a09d53951 | ||
![]() |
7c4ff7b00c | ||
![]() |
def8d676d6 | ||
![]() |
b63715a654 | ||
![]() |
300d096002 | ||
![]() |
24e1a0af77 | ||
![]() |
85c7ce59d0 | ||
![]() |
81fd179762 | ||
![]() |
922563e96e | ||
![]() |
31f2e82bd6 | ||
![]() |
aae90a31cb | ||
![]() |
1609b616f0 | ||
![]() |
1b0b3b6571 | ||
![]() |
5b3ebc8235 | ||
![]() |
67672f25b6 | ||
![]() |
0cb3238056 | ||
![]() |
2cef7da0ae | ||
![]() |
42a80d39ed | ||
![]() |
b37847e4e2 | ||
![]() |
8b5d222421 | ||
![]() |
bee88a9f39 | ||
![]() |
34c8d79626 | ||
![]() |
7c05cdc8a4 | ||
![]() |
801dad1c78 | ||
![]() |
820adaa0bb | ||
![]() |
074f0a5e4b | ||
![]() |
3c57d28c5b | ||
![]() |
b35fcc6304 | ||
![]() |
7d3048ca58 | ||
![]() |
23bb7d321a | ||
![]() |
abd382c357 | ||
![]() |
d4f6bb35f8 | ||
![]() |
a124b3baa2 | ||
![]() |
b4b2916058 | ||
![]() |
822b0ea62a | ||
![]() |
3c5e9db973 | ||
![]() |
5a7ff0ef29 | ||
![]() |
26d192a566 | ||
![]() |
f4ac687582 | ||
![]() |
e0d49732e5 | ||
![]() |
ee1985dda2 | ||
![]() |
ad402d7c5c | ||
![]() |
c29d112b76 | ||
![]() |
59cc8f663a | ||
![]() |
39cab43395 | ||
![]() |
daf5583af1 | ||
![]() |
edb5b3970f | ||
![]() |
74fd6db28b | ||
![]() |
d11f66691e | ||
![]() |
f1fbee5d23 | ||
![]() |
ed11c83bb5 | ||
![]() |
179df179fb | ||
![]() |
6c6f9248f4 | ||
![]() |
7448b100f3 | ||
![]() |
30d19c4946 | ||
![]() |
d8eb7d17f6 | ||
![]() |
8783b7252a | ||
![]() |
e4e9e5f188 | ||
![]() |
3bc848bc6f | ||
![]() |
ba9dcebcca | ||
![]() |
bff22b5d90 | ||
![]() |
5764debb9b | ||
![]() |
e2ea11e056 | ||
![]() |
920ab48a58 | ||
![]() |
e2ae388567 | ||
![]() |
84546c7844 | ||
![]() |
9b1ddc1d8c | ||
![]() |
ee61a2b778 | ||
![]() |
ba0ff8b075 | ||
![]() |
00047a1b6c | ||
![]() |
71a18195fb | ||
![]() |
d1c8c55930 | ||
![]() |
c3b1035eaf | ||
![]() |
508518cdf7 | ||
![]() |
954bf470b6 | ||
![]() |
8ab92a2391 | ||
![]() |
43b479ddee | ||
![]() |
0f97cabd78 | ||
![]() |
f2586cc690 | ||
![]() |
7973434a62 | ||
![]() |
2ac3f68413 | ||
![]() |
e1dbb424bd | ||
![]() |
313fbea042 | ||
![]() |
979d32a4df | ||
![]() |
6a33bee6f2 | ||
![]() |
9ab846a517 | ||
![]() |
e61d960fb1 | ||
![]() |
834d63231a | ||
![]() |
2907bf943b | ||
![]() |
234b5697c5 | ||
![]() |
2c6bde9e29 | ||
![]() |
875dcb1418 | ||
![]() |
1c04841097 | ||
![]() |
2c73fc30bc | ||
![]() |
6b88df0e55 | ||
![]() |
f05d1c360e | ||
![]() |
bcb5612f06 | ||
![]() |
32677fffbf | ||
![]() |
04d791665a | ||
![]() |
84c4142c60 | ||
![]() |
f3b811320f | ||
![]() |
40d2e9c284 | ||
![]() |
3d904202d8 | ||
![]() |
33867546bd | ||
![]() |
2f1a072c67 | ||
![]() |
cc27d76819 | ||
![]() |
5cf6593ddc | ||
![]() |
790ee7809b | ||
![]() |
be4f9b131d | ||
![]() |
848171cedb | ||
![]() |
f9dac9a544 | ||
![]() |
4b9b89d970 | ||
![]() |
5a44d0cffc | ||
![]() |
b9848966c4 | ||
![]() |
9a182f4f0b | ||
![]() |
59382c4c9a | ||
![]() |
e633a7ec5b | ||
![]() |
efc4f3dbd7 | ||
![]() |
b1efebf23f | ||
![]() |
eeeb2a6c91 | ||
![]() |
f8e9fa0693 | ||
![]() |
7e7b789004 | ||
![]() |
b15a1e1e7e | ||
![]() |
d9cc2f5a1a | ||
![]() |
06ee2c75b4 | ||
![]() |
e3fe5ed75c | ||
![]() |
88952e3f8e | ||
![]() |
4b651979ac | ||
![]() |
f99218b6fe | ||
![]() |
69a447b06e | ||
![]() |
c062e16059 | ||
![]() |
0862150941 | ||
![]() |
21e8eeb228 | ||
![]() |
c8453513d1 | ||
![]() |
00d5eac7dc | ||
![]() |
0c1b24dc57 | ||
![]() |
0e3e137cf2 | ||
![]() |
25130a3aab | ||
![]() |
0df0220c09 | ||
![]() |
4db8436d7d | ||
![]() |
aa2b552634 | ||
![]() |
c830e7b189 | ||
![]() |
b71fb70c0b | ||
![]() |
621191e64b | ||
![]() |
a4b7514678 | ||
![]() |
c4b323f95a | ||
![]() |
79861dbe06 | ||
![]() |
89ed2c2faf | ||
![]() |
c6b1b57d94 | ||
![]() |
9089a7b170 | ||
![]() |
64adace4d3 | ||
![]() |
c19a7a7111 | ||
![]() |
f3e5858d00 | ||
![]() |
d19f020cca | ||
![]() |
6e2b065d4f | ||
![]() |
79ebd5a1f1 | ||
![]() |
2c6cd62246 | ||
![]() |
8a61562fa6 | ||
![]() |
1f99536a61 | ||
![]() |
c519a1240e | ||
![]() |
8aa94f8600 | ||
![]() |
28524259f1 | ||
![]() |
b88eacf69b | ||
![]() |
69c2f51095 | ||
![]() |
febeaaec26 | ||
![]() |
51e90171e1 | ||
![]() |
18d1fb3e27 | ||
![]() |
12193d6864 | ||
![]() |
8f018ad62d | ||
![]() |
236d2c717d | ||
![]() |
40e226364d | ||
![]() |
458490d00a | ||
![]() |
75e1d6bd0f | ||
![]() |
8ae25210ff | ||
![]() |
6a9d263f0a | ||
![]() |
6bcefd9b63 | ||
![]() |
afcf896695 | ||
![]() |
46da8663be | ||
![]() |
d148e516c0 | ||
![]() |
d8015582df | ||
![]() |
37dc223d4c | ||
![]() |
416476b195 | ||
![]() |
c9be5514db | ||
![]() |
62c0ec92eb | ||
![]() |
62e0dd08ae | ||
![]() |
08bb636532 | ||
![]() |
5cee31ab88 | ||
![]() |
ca4ddb43d9 | ||
![]() |
60b855685a | ||
![]() |
9fb0cd2591 | ||
![]() |
9cf0378587 | ||
![]() |
796c1f6999 | ||
![]() |
e70a2484e9 | ||
![]() |
e17aaf1da7 | ||
![]() |
bbab4f8fce | ||
![]() |
e91e77cc0a | ||
![]() |
b19a7a5312 | ||
![]() |
001bf9b24d | ||
![]() |
996a6d526f | ||
![]() |
8970c56cda | ||
![]() |
a4f7d3ac22 | ||
![]() |
b3c97f9d7d | ||
![]() |
9dd69d5491 | ||
![]() |
8658167ee7 | ||
![]() |
86e31bdf8f | ||
![]() |
b06b1b87c9 | ||
![]() |
eac49fefe8 | ||
![]() |
af6f119d7b | ||
![]() |
bbe3674be5 | ||
![]() |
53883cba30 | ||
![]() |
9422af78fa | ||
![]() |
f00996405d | ||
![]() |
10e2dbef4a | ||
![]() |
d0ec71ccb5 | ||
![]() |
f5cc83de6a | ||
![]() |
5a656fa8c4 | ||
![]() |
c12d370a10 | ||
![]() |
8a44c88af9 | ||
![]() |
fddc7bbd38 | ||
![]() |
79206b82c9 | ||
![]() |
51498cd29a | ||
![]() |
3f1da8a831 | ||
![]() |
28b13a2211 | ||
![]() |
f124be3298 | ||
![]() |
21cf96fcc4 | ||
![]() |
d7c2ebca5f | ||
![]() |
8e9deac09b | ||
![]() |
9c67e4a43d | ||
![]() |
0001a8e909 | ||
![]() |
4a53458a92 | ||
![]() |
ae22ad845a | ||
![]() |
6bca326eaf | ||
![]() |
223bb4f21e | ||
![]() |
23eddea328 | ||
![]() |
50ecb18987 | ||
![]() |
a6387763be | ||
![]() |
c36d96bb4f | ||
![]() |
88339b8001 | ||
![]() |
801b58eeaa | ||
![]() |
5dd69af36f | ||
![]() |
6aa97ae660 | ||
![]() |
dce8cd4507 | ||
![]() |
e1a49c0954 | ||
![]() |
07eb9c3365 | ||
![]() |
3df93447e3 | ||
![]() |
50fcef8827 | ||
![]() |
fff58fded1 | ||
![]() |
e84614f443 | ||
![]() |
1d2b962a1e | ||
![]() |
3382a60f50 | ||
![]() |
ead2ba74fe | ||
![]() |
bfcd282291 | ||
![]() |
2f9ae1412c | ||
![]() |
8c9d9fbc6d | ||
![]() |
97d0ab83ee | ||
![]() |
a1825af32b | ||
![]() |
927aee3828 | ||
![]() |
23ba279574 | ||
![]() |
5192d104fa | ||
![]() |
11e125fd7e | ||
![]() |
df08ecb6da | ||
![]() |
3e15ec9d49 | ||
![]() |
e252247134 | ||
![]() |
6bebe4f91d | ||
![]() |
96a5b16954 | ||
![]() |
cb245658e7 | ||
![]() |
257619959b | ||
![]() |
dd40684477 | ||
![]() |
5f621eaa78 | ||
![]() |
569a9527f6 | ||
![]() |
c24b9b0559 | ||
![]() |
77fbd099a1 | ||
![]() |
d05e4a7fa1 | ||
![]() |
f034e2e94c | ||
![]() |
f09627b7a8 | ||
![]() |
cc70795b9e | ||
![]() |
d505af8ee5 | ||
![]() |
0d8dc7e12e | ||
![]() |
b2b148b0f3 | ||
![]() |
b3be96d194 | ||
![]() |
dd4840b3d5 | ||
![]() |
d00de1f45d | ||
![]() |
13bfba91dc | ||
![]() |
967f151fe3 | ||
![]() |
e3096bf41f | ||
![]() |
d9ce028f09 | ||
![]() |
48b9737669 | ||
![]() |
c88979a369 | ||
![]() |
cfa85338f3 | ||
![]() |
c2916d649a | ||
![]() |
a3c1895aff | ||
![]() |
68690b7782 | ||
![]() |
f6d71f505f | ||
![]() |
19425bc808 | ||
![]() |
9b1d7aac9b | ||
![]() |
1a7162e2eb | ||
![]() |
d404cc248a | ||
![]() |
9ddcff060a | ||
![]() |
aba2947018 | ||
![]() |
e07d0abeb5 | ||
![]() |
4213e479e5 | ||
![]() |
e6008fbcda | ||
![]() |
0a07f92065 | ||
![]() |
e9ec6faa7a | ||
![]() |
33d34bea82 | ||
![]() |
5fdfefb925 | ||
![]() |
2f7a44388c | ||
![]() |
3395afa265 | ||
![]() |
6aad5c1547 | ||
![]() |
eb7467e533 | ||
![]() |
aed6b2bb47 | ||
![]() |
a2eef21f94 | ||
![]() |
d699a7f3ae | ||
![]() |
b9194e5f14 | ||
![]() |
37c1e355a4 | ||
![]() |
fb824aa1b8 | ||
![]() |
d8bb0c3167 | ||
![]() |
5ccadf0ac9 | ||
![]() |
4b03122a50 | ||
![]() |
d1bd33d46d | ||
![]() |
e00423a79f | ||
![]() |
bbe61d8907 | ||
![]() |
6f9a464d09 | ||
![]() |
e5dfec7917 | ||
![]() |
ba90f36819 | ||
![]() |
fe21e68c77 | ||
![]() |
50de56acf9 | ||
![]() |
14381bcdc2 | ||
![]() |
1754e597a1 | ||
![]() |
390ac517c9 | ||
![]() |
848e2ea279 | ||
![]() |
ce3a2fd760 | ||
![]() |
e82771a68b | ||
![]() |
6624c60292 | ||
![]() |
9461ce990c | ||
![]() |
fcde890db5 | ||
![]() |
fcb3f6c191 | ||
![]() |
88d19d98f8 | ||
![]() |
4080b29fc8 | ||
![]() |
a3b34aa560 | ||
![]() |
3f0dc97513 | ||
![]() |
3c90868c42 | ||
![]() |
7bbddffd8e | ||
![]() |
8081d0a03c | ||
![]() |
191c416f6f | ||
![]() |
08d01a493c | ||
![]() |
ed52c2ca7e | ||
![]() |
ec0eec9af2 | ||
![]() |
892bc7d10e | ||
![]() |
d9df67d022 | ||
![]() |
4b337f602c | ||
![]() |
4e79bdf559 | ||
![]() |
9dd1bb3fec | ||
![]() |
a9e8b6e2bb | ||
![]() |
334b1875b2 | ||
![]() |
5dc4d0d729 | ||
![]() |
0b942e0009 | ||
![]() |
16a30ae75e | ||
![]() |
85703017cd | ||
![]() |
0341bab3bb | ||
![]() |
856e2a45e3 | ||
![]() |
1311d54676 | ||
![]() |
5be2e9afb3 | ||
![]() |
47eae9414d | ||
![]() |
63950d63a6 | ||
![]() |
c9d80cd746 | ||
![]() |
ad089592d1 | ||
![]() |
74a03484fd | ||
![]() |
aabbd1fa4c | ||
![]() |
41694db9c9 | ||
![]() |
40fc11e145 | ||
![]() |
e5e4b72254 | ||
![]() |
3e8923fe91 | ||
![]() |
4dc0898248 | ||
![]() |
09b2f7a542 | ||
![]() |
6ed6c399a6 | ||
![]() |
3044f4e30a | ||
![]() |
23952f4554 | ||
![]() |
4d75f78c62 | ||
![]() |
3588eb3dcd | ||
![]() |
0dbeb2c09e | ||
![]() |
a8965739cb | ||
![]() |
e1251fdd76 | ||
![]() |
1a2ba8235a | ||
![]() |
b77e641b4d | ||
![]() |
7821ded808 | ||
![]() |
1e06e1965a | ||
![]() |
1f4466e23a | ||
![]() |
9ca7671812 | ||
![]() |
125720e240 | ||
![]() |
66420017eb | ||
![]() |
b96dfe119d | ||
![]() |
7cfdc3315a | ||
![]() |
3d986b845c | ||
![]() |
446df7ed90 | ||
![]() |
6d7b699252 | ||
![]() |
9cb87d32d6 | ||
![]() |
ac33d349b0 | ||
![]() |
e2f85dd1f1 | ||
![]() |
7dc74f956d | ||
![]() |
1797022bdc | ||
![]() |
6339b97c86 | ||
![]() |
af27fbb50c | ||
![]() |
66314484a2 | ||
![]() |
c7bc3f7ed8 | ||
![]() |
7401e43d4f | ||
![]() |
2c6c41dfd4 | ||
![]() |
f690f47ce9 | ||
![]() |
c4b69934de | ||
![]() |
a736ad7389 | ||
![]() |
a1fb944a29 | ||
![]() |
f9685fe64b | ||
![]() |
a58c09754b | ||
![]() |
4bcf34619b | ||
![]() |
1818811085 | ||
![]() |
a80e66803a | ||
![]() |
bb75b08bb5 | ||
![]() |
da5d7191fd | ||
![]() |
0a6d2f5a2b | ||
![]() |
db2364e238 | ||
![]() |
79bd447c59 | ||
![]() |
34918bfadd | ||
![]() |
617e765460 | ||
![]() |
36c963c224 | ||
![]() |
a3e2c9c5b2 | ||
![]() |
ccdd233d9e | ||
![]() |
b4029ba2ef | ||
![]() |
df3b2598e0 | ||
![]() |
947786fcb8 | ||
![]() |
7d0c262849 | ||
![]() |
1700f16ef9 | ||
![]() |
673331f065 | ||
![]() |
2fc48b83e0 | ||
![]() |
606818f7d3 | ||
![]() |
57ba36a3b2 | ||
![]() |
2b62f62804 | ||
![]() |
c77da29375 | ||
![]() |
9cdabea4b8 | ||
![]() |
c2fcefce71 | ||
![]() |
9dee95e322 | ||
![]() |
91c4143776 | ||
![]() |
a4313f6c00 | ||
![]() |
e4c778d3da | ||
![]() |
b599694571 | ||
![]() |
400f565638 | ||
![]() |
3022ce5235 | ||
![]() |
5683ddf210 | ||
![]() |
5413ec3a9d | ||
![]() |
6e4b74acf7 | ||
![]() |
de890fde6b | ||
![]() |
2af98b1dfd | ||
![]() |
b40e836420 | ||
![]() |
3d38639882 | ||
![]() |
09d269dd45 | ||
![]() |
e593be7adf | ||
![]() |
57fd0bae9e | ||
![]() |
546300a0eb | ||
![]() |
2aaaae11a8 | ||
![]() |
ae365b14c6 | ||
![]() |
0d774a8160 | ||
![]() |
d38ce5982a | ||
![]() |
8eadcbb48b | ||
![]() |
0643349425 | ||
![]() |
3a83511454 | ||
![]() |
91fb70e67f | ||
![]() |
c3bbafb761 | ||
![]() |
07d88fd513 | ||
![]() |
0665940b1d | ||
![]() |
0542685f07 | ||
![]() |
5b0176a2ff | ||
![]() |
625226a9c1 | ||
![]() |
9a691cdcba | ||
![]() |
5334ab5c00 | ||
![]() |
cf020a780c | ||
![]() |
f341a4e2b2 | ||
![]() |
f097a93a8e | ||
![]() |
5da01723e1 | ||
![]() |
b9f9372505 | ||
![]() |
8e1edfc3b2 | ||
![]() |
5d9d52e739 | ||
![]() |
4cf5da5b5b | ||
![]() |
7efbd01096 | ||
![]() |
e85f00d568 | ||
![]() |
197d95b6a6 | ||
![]() |
c010e0aed1 | ||
![]() |
372f9211f4 | ||
![]() |
c8f033eb3c | ||
![]() |
b6d23f4784 | ||
![]() |
914d664ba2 | ||
![]() |
ca7aae1fa9 | ||
![]() |
af88f88889 | ||
![]() |
8c3c76c22a | ||
![]() |
df18a72a4b | ||
![]() |
d78b5a3405 | ||
![]() |
ca48e88b76 | ||
![]() |
72d80e052f | ||
![]() |
b580a5426a | ||
![]() |
ffa3b5b4a0 | ||
![]() |
703dab755e | ||
![]() |
549e9e1fd9 | ||
![]() |
1258d37a51 | ||
![]() |
04976ddb51 | ||
![]() |
4899f49539 | ||
![]() |
8ac1fae109 | ||
![]() |
156524702b | ||
![]() |
ca594865e9 | ||
![]() |
603adb74ed | ||
![]() |
1d9b8bd231 | ||
![]() |
56b928c1ab | ||
![]() |
e94b8a335a | ||
![]() |
1bf3d8d4f2 | ||
![]() |
b21e063532 | ||
![]() |
38064635b8 | ||
![]() |
0e2427b793 | ||
![]() |
bada475d52 | ||
![]() |
18411e819b | ||
![]() |
6ea472b7ef | ||
![]() |
ee3f5af858 | ||
![]() |
38eaea0b2d | ||
![]() |
cb854feadb | ||
![]() |
c33f7c242c | ||
![]() |
95586d98d4 | ||
![]() |
d94192f2ca | ||
![]() |
a7177cfc17 | ||
![]() |
be9fa38367 | ||
![]() |
309a2558c3 | ||
![]() |
0b4688eda9 | ||
![]() |
0cb7fa51d6 | ||
![]() |
d19eb8fce9 | ||
![]() |
3f9aa4f5c7 | ||
![]() |
2e2ca68749 | ||
![]() |
ee8de87fa0 | ||
![]() |
4ca5ba7d03 | ||
![]() |
03166ad7b6 | ||
![]() |
f13b9670d3 | ||
![]() |
25c2c9fbb6 | ||
![]() |
f2bc695949 | ||
![]() |
2d67cd8045 | ||
![]() |
09a9ad4676 | ||
![]() |
ebdbb7b768 | ||
![]() |
189532f9dc | ||
![]() |
19e83d640b | ||
![]() |
bdc7c1fded | ||
![]() |
2bfa58e676 | ||
![]() |
4a4399e29d | ||
![]() |
26e63e37ae | ||
![]() |
41cffb81e1 | ||
![]() |
369bad035f | ||
![]() |
ce6fad38d1 | ||
![]() |
ab884df75d | ||
![]() |
7b07040da9 | ||
![]() |
dfbd28223d | ||
![]() |
72558b219d | ||
![]() |
c1d02a2c98 | ||
![]() |
ca3a1f8ff1 | ||
![]() |
8a2f4e8d7e | ||
![]() |
31f64e09e8 | ||
![]() |
eae48aba61 | ||
![]() |
e5fed112eb | ||
![]() |
4d8f69fa28 | ||
![]() |
8ea50e9a43 | ||
![]() |
a6f23d164c | ||
![]() |
fc915c537d | ||
![]() |
56523da8a3 | ||
![]() |
637ce7cdad | ||
![]() |
7db27d9d23 | ||
![]() |
e1038210eb | ||
![]() |
4795916231 | ||
![]() |
db3accc490 | ||
![]() |
0a95fad3d2 | ||
![]() |
3a53840938 | ||
![]() |
6dfc6e44c2 | ||
![]() |
ffb5bab7fe | ||
![]() |
21f697c08c | ||
![]() |
faa265b8d8 | ||
![]() |
ceaaa4e5e7 | ||
![]() |
fda2f8c1bd | ||
![]() |
15c73f2be4 | ||
![]() |
f618759616 | ||
![]() |
200a967494 | ||
![]() |
f23eda5d1a | ||
![]() |
980cb56f21 | ||
![]() |
20fa65bdad | ||
![]() |
a39048f9c6 | ||
![]() |
9bb159e08e | ||
![]() |
b74765347f | ||
![]() |
5ef9b6b0b7 | ||
![]() |
b8d9152674 | ||
![]() |
058ad1ee3d | ||
![]() |
f4195e13b6 | ||
![]() |
6a9e3988a0 | ||
![]() |
44ab912c54 | ||
![]() |
1eadbaf544 | ||
![]() |
ca14d7b1e3 | ||
![]() |
ef5efb9059 | ||
![]() |
0d52ef5f52 | ||
![]() |
b98a70226c | ||
![]() |
eceeaf8c9f | ||
![]() |
1ed6c7eefb | ||
![]() |
5f9f0acd29 | ||
![]() |
7a48a78bc4 | ||
![]() |
5a0f028da5 | ||
![]() |
e9779993a9 | ||
![]() |
e3e3580991 | ||
![]() |
de795a264d | ||
![]() |
d5b6ee4c6e | ||
![]() |
6ad1244206 | ||
![]() |
d28a79fd29 | ||
![]() |
b7de7d9add | ||
![]() |
68c601c965 | ||
![]() |
7c1d8476fe | ||
![]() |
54a41ad86b | ||
![]() |
f2ed9d02fa | ||
![]() |
50abebb82b | ||
![]() |
7fb409b017 | ||
![]() |
7b99623f74 | ||
![]() |
8c32574bf8 | ||
![]() |
5f57ba491b | ||
![]() |
d79f87b70f | ||
![]() |
2411ee5032 | ||
![]() |
75dcc6184d | ||
![]() |
77ab5727e0 | ||
![]() |
b651318dfc | ||
![]() |
5e6254b176 | ||
![]() |
aa050e49b2 | ||
![]() |
b39cf0846f | ||
![]() |
c43d58690c | ||
![]() |
547fb2384a | ||
![]() |
14292c03a1 | ||
![]() |
aaff38b63c | ||
![]() |
c0c0dd00a8 | ||
![]() |
1d7b4806c9 | ||
![]() |
cbfc0b8281 | ||
![]() |
74a8a7ed5a | ||
![]() |
dd3cc89d0a | ||
![]() |
b952575fdd | ||
![]() |
882865f4f7 | ||
![]() |
cf54d8ec77 | ||
![]() |
af490dadde | ||
![]() |
f014c86aaf | ||
![]() |
b1da0c7d3e | ||
![]() |
919ca25ee0 | ||
![]() |
95ac0be928 | ||
![]() |
93ccbd2a93 | ||
![]() |
29dd942f44 | ||
![]() |
62045e2808 | ||
![]() |
1a6966ad62 | ||
![]() |
3bda3be3db | ||
![]() |
c8f2764120 | ||
![]() |
690789bb85 | ||
![]() |
0b91c12a62 | ||
![]() |
2d3c456293 | ||
![]() |
48ec1cec66 | ||
![]() |
2c837f93c3 | ||
![]() |
1a0cc74bd6 | ||
![]() |
9a3ab45f63 | ||
![]() |
ec8e46de06 | ||
![]() |
357f27fe32 | ||
![]() |
30689f012e | ||
![]() |
da6442f189 | ||
![]() |
ff9683a49a | ||
![]() |
280cd5e415 | ||
![]() |
7e14a8daad | ||
![]() |
e9d97a70e0 | ||
![]() |
f75daa51b0 | ||
![]() |
4f3142ccc6 | ||
![]() |
272ef22274 | ||
![]() |
0b1803c63c | ||
![]() |
8039ea97ae | ||
![]() |
5cd9e3802d | ||
![]() |
957176519c | ||
![]() |
b78de33b2c | ||
![]() |
718c183869 | ||
![]() |
1c7b945422 | ||
![]() |
398efcea66 | ||
![]() |
ca06de4a15 | ||
![]() |
30894b57c8 | ||
![]() |
50ba9b0b1b | ||
![]() |
9dbe3eaaec | ||
![]() |
de3044248b | ||
![]() |
458621efa3 | ||
![]() |
6621548efb | ||
![]() |
c2f8897365 | ||
![]() |
0b98366d92 | ||
![]() |
b9e1a82150 | ||
![]() |
9c967129b5 | ||
![]() |
2170255d36 | ||
![]() |
0bc4c6f306 | ||
![]() |
115bda20d2 | ||
![]() |
4961b13d89 | ||
![]() |
0c0b80732a | ||
![]() |
0c4231a3ce | ||
![]() |
fabaf6c53b | ||
![]() |
c29f5cae3b | ||
![]() |
42e2e19a5b | ||
![]() |
d8fb8b7c39 | ||
![]() |
e17850568b | ||
![]() |
cf8e9c2dc2 | ||
![]() |
f6c5cf0909 | ||
![]() |
4d8bd5aa73 | ||
![]() |
5e7a340f96 | ||
![]() |
f0e2046cc5 | ||
![]() |
1df3c77742 | ||
![]() |
2ba4ee85b5 | ||
![]() |
e28b72f0ab | ||
![]() |
fa55def68a | ||
![]() |
3187fcb776 | ||
![]() |
994af1bcd7 | ||
![]() |
31ae9e58a6 | ||
![]() |
463c53bf2a | ||
![]() |
02cfe80b35 | ||
![]() |
f939c1b7f2 | ||
![]() |
8d815456f1 | ||
![]() |
402316194c | ||
![]() |
e86385d366 | ||
![]() |
e54644ed8a | ||
![]() |
29dcb0df9e | ||
![]() |
a2b1a40033 | ||
![]() |
b8a6807748 | ||
![]() |
5043672d88 | ||
![]() |
de11bbdba9 | ||
![]() |
71a13d8b03 | ||
![]() |
b1d1c31d4b | ||
![]() |
2a86bc6c01 | ||
![]() |
3d68b37391 | ||
![]() |
4f27489092 | ||
![]() |
264979c613 | ||
![]() |
9c0828a6c6 | ||
![]() |
2540ba2c62 | ||
![]() |
abd11117dc | ||
![]() |
81ba675482 | ||
![]() |
69ac692c91 | ||
![]() |
fd030bff32 | ||
![]() |
61671d87f6 | ||
![]() |
7cd6dae776 | ||
![]() |
7587702f3a | ||
![]() |
2839c40822 | ||
![]() |
6b42e1b61e | ||
![]() |
8d52de8e3a | ||
![]() |
5b1652da0a | ||
![]() |
cd16bf831c | ||
![]() |
2d8d0b922c | ||
![]() |
a0105659db | ||
![]() |
d9f78853a4 | ||
![]() |
9234bcc922 | ||
![]() |
57bd6aaa23 | ||
![]() |
d14505c4c6 | ||
![]() |
0c9470cd16 | ||
![]() |
3ec5fafa74 | ||
![]() |
51b9cdc3c3 | ||
![]() |
b5f114b384 | ||
![]() |
a4dc8d6bb0 | ||
![]() |
2b2b019c6e | ||
![]() |
9ef2d6541f | ||
![]() |
8552f33c70 | ||
![]() |
845e8392a2 | ||
![]() |
e9650b004c | ||
![]() |
adf52ffa87 | ||
![]() |
9a3539c806 | ||
![]() |
df3651a380 | ||
![]() |
22fba87225 | ||
![]() |
7fafbebf2a | ||
![]() |
4e6855111c | ||
![]() |
9acf643001 | ||
![]() |
255ca5ff7e | ||
![]() |
15b2b82581 | ||
![]() |
4862e26ffa | ||
![]() |
3776059822 | ||
![]() |
bc6b1beae1 | ||
![]() |
4e5a7b8bee | ||
![]() |
a141b1d720 | ||
![]() |
25498b625a | ||
![]() |
60da70ca83 | ||
![]() |
54af75e45e | ||
![]() |
8ab5b2def5 | ||
![]() |
09d70144c6 | ||
![]() |
ce72889f36 | ||
![]() |
ee4d85d594 | ||
![]() |
bc43831336 | ||
![]() |
ec82017146 | ||
![]() |
068ba488c5 | ||
![]() |
9b8b5a07a1 | ||
![]() |
39144fb83c | ||
![]() |
ce58769519 | ||
![]() |
f0b4a2429e | ||
![]() |
d2a7feedd8 | ||
![]() |
d464945e6e | ||
![]() |
3c6982fece | ||
![]() |
59563bb183 | ||
![]() |
01e026fa54 | ||
![]() |
6ce50ac6a9 | ||
![]() |
6d76620724 | ||
![]() |
ac37f1ed5e | ||
![]() |
98f7518a51 | ||
![]() |
8ffd46b98c | ||
![]() |
d0a40df467 | ||
![]() |
ae68e2175b | ||
![]() |
f11169716a | ||
![]() |
48f13ba981 | ||
![]() |
ee42b1bd55 | ||
![]() |
a29b40f03d | ||
![]() |
d8b6a358a7 | ||
![]() |
2a1f80a089 | ||
![]() |
75e4e0b66b | ||
![]() |
cf20a1a84f | ||
![]() |
12c07bd508 | ||
![]() |
119a3d99bd | ||
![]() |
562b320c00 | ||
![]() |
a0bbf9e0c3 | ||
![]() |
76e381fc12 | ||
![]() |
d1f3bb92b4 | ||
![]() |
7689191077 | ||
![]() |
0cc67e78dd | ||
![]() |
6fbbc9d6b5 | ||
![]() |
e218496af3 | ||
![]() |
3973e86ef5 | ||
![]() |
7ca78e8cb4 | ||
![]() |
575c9aceff | ||
![]() |
aab5457e92 | ||
![]() |
758eaa6ab1 | ||
![]() |
df1c1c7af9 | ||
![]() |
019e757a0e | ||
![]() |
79b8aebdd2 | ||
![]() |
c08bbdcb06 | ||
![]() |
5917a29b73 | ||
![]() |
701bf4116a | ||
![]() |
359d98b080 | ||
![]() |
1cb631adda | ||
![]() |
1691d871c1 | ||
![]() |
d8895c2df8 | ||
![]() |
1aa6da600c | ||
![]() |
b7c3368028 | ||
![]() |
ef234fef50 | ||
![]() |
86d94566f1 | ||
![]() |
18188ff891 | ||
![]() |
da4c6c1a99 | ||
![]() |
7ca7b0f2de | ||
![]() |
adf34e3d83 | ||
![]() |
b2b037d066 | ||
![]() |
41720c755b | ||
![]() |
28bccfdfb0 | ||
![]() |
6502f6da17 | ||
![]() |
6b91569ab6 | ||
![]() |
3bee9d11a2 | ||
![]() |
5aafd1af72 | ||
![]() |
aba9f7f348 | ||
![]() |
b62b5f7ee7 | ||
![]() |
0ea9b16f3d | ||
![]() |
56080ba528 | ||
![]() |
c2c54bbc57 | ||
![]() |
3f13e71159 | ||
![]() |
3b9a6114b1 | ||
![]() |
72b75d809d | ||
![]() |
22a509f8cd | ||
![]() |
711e71ea0d | ||
![]() |
5e00081128 | ||
![]() |
5385f85a2b | ||
![]() |
000eb1b2e5 | ||
![]() |
ff8c99fa31 | ||
![]() |
c038c72675 | ||
![]() |
6284f2e6f7 | ||
![]() |
66fa5776cf | ||
![]() |
7336f53679 | ||
![]() |
c1b46af153 | ||
![]() |
05313622fa | ||
![]() |
00f8e23a06 | ||
![]() |
25b96c5978 | ||
![]() |
b7a8f49c97 | ||
![]() |
833378c5c8 | ||
![]() |
2cd50fb0ad | ||
![]() |
8316ff16e6 | ||
![]() |
46ef923cf5 | ||
![]() |
b4d8ca7385 | ||
![]() |
50034eb3a3 | ||
![]() |
097eb0a496 | ||
![]() |
7b0188ee42 | ||
![]() |
9b2070cf3f | ||
![]() |
db0da5b23d | ||
![]() |
57b7c1ff9f | ||
![]() |
2aa8b6127d | ||
![]() |
f2da89d555 | ||
![]() |
3215666607 | ||
![]() |
b7a5f7cd18 | ||
![]() |
746e69a892 | ||
![]() |
4654e6d49c | ||
![]() |
f2539b2cf9 | ||
![]() |
b6d7cdf8e8 | ||
![]() |
2f2cd32d2b | ||
![]() |
9b9d94543c | ||
![]() |
316df1083a | ||
![]() |
0bc46763a9 | ||
![]() |
b2bab0db82 | ||
![]() |
f361984b0b | ||
![]() |
bdee29c709 | ||
![]() |
e32116e668 | ||
![]() |
ce4ddda567 | ||
![]() |
dd5ed5a4c0 | ||
![]() |
7b6a539b53 | ||
![]() |
bcba98e1ee | ||
![]() |
2815bc49be | ||
![]() |
354e65d6e1 | ||
![]() |
bc09bf5a56 | ||
![]() |
268d4e77ce | ||
![]() |
8a68d25563 | ||
![]() |
4cf2acfd7d | ||
![]() |
3978fe3618 | ||
![]() |
d16873e830 | ||
![]() |
558192a2b8 | ||
![]() |
26b4d202e6 | ||
![]() |
cff518ad60 | ||
![]() |
705ac80ee5 | ||
![]() |
df5c012fe5 | ||
![]() |
aed6b735d6 | ||
![]() |
f59290f336 | ||
![]() |
f1b52dbd53 | ||
![]() |
2ea524da38 | ||
![]() |
eaf3d7e331 | ||
![]() |
33e2c6927d | ||
![]() |
4ed08e60e8 | ||
![]() |
2b41c063a2 | ||
![]() |
2d77a1cd26 | ||
![]() |
ba0abab4bb | ||
![]() |
3b4abf8a87 | ||
![]() |
ff298c5ca7 | ||
![]() |
f426fed20a | ||
![]() |
3abfa0ab2d | ||
![]() |
96d6a8e3a0 | ||
![]() |
f3d60e13cd | ||
![]() |
fb695477a6 | ||
![]() |
bd754fd01a | ||
![]() |
aaba97de74 | ||
![]() |
201c834e5c | ||
![]() |
00989598da | ||
![]() |
34290ec0f9 | ||
![]() |
a27f2dd259 | ||
![]() |
f3a8bba66b | ||
![]() |
3b01d313c8 | ||
![]() |
881beb0110 | ||
![]() |
b48273fda9 | ||
![]() |
8030250614 | ||
![]() |
7054d4a40f | ||
![]() |
9f594b92d4 | ||
![]() |
cee03ceba2 | ||
![]() |
fb979cc2a4 | ||
![]() |
fc4f260758 | ||
![]() |
c9f49f583c | ||
![]() |
43f2fd4009 | ||
![]() |
ce2a95b8fb | ||
![]() |
db97ecba9b | ||
![]() |
6dd9d20e6b | ||
![]() |
786b95df7a | ||
![]() |
c5ba070213 | ||
![]() |
eb1bf60acc | ||
![]() |
13da75fa7d | ||
![]() |
aee4c4e7b5 | ||
![]() |
d37fc283d2 | ||
![]() |
771978871e | ||
![]() |
48740df262 | ||
![]() |
7f1defa8f5 | ||
![]() |
e310aec4ad | ||
![]() |
5a2676d5b0 | ||
![]() |
4ebc114fa4 | ||
![]() |
d3fb17cc02 | ||
![]() |
6e06137ef6 | ||
![]() |
e16eebfc91 | ||
![]() |
cecba1e7cc | ||
![]() |
ab7afc7698 | ||
![]() |
db36211cfa | ||
![]() |
2a9ed0e74d | ||
![]() |
368345a0fb | ||
![]() |
8500477671 | ||
![]() |
15c6b7f1d0 | ||
![]() |
55ffc869a5 | ||
![]() |
76be0c81e2 | ||
![]() |
5829f21696 | ||
![]() |
80e5e4eab5 | ||
![]() |
1430945e79 | ||
![]() |
7e828b7d2b | ||
![]() |
7ea482b255 | ||
![]() |
0bcb37e66f | ||
![]() |
be86e7ed0a | ||
![]() |
b0761d7c82 | ||
![]() |
0bdb3f5101 | ||
![]() |
525080f43a | ||
![]() |
01d2e218e3 | ||
![]() |
ee01e90ff3 | ||
![]() |
ece7193c6c | ||
![]() |
6295ffc8bb | ||
![]() |
a6afe7f2de | ||
![]() |
cee97ebb2e | ||
![]() |
aacf6e2da2 | ||
![]() |
a0ebf773a9 | ||
![]() |
4f6cb59faf | ||
![]() |
b30102d76a | ||
![]() |
5fd296181c | ||
![]() |
dcc8d19072 | ||
![]() |
36c6a118d9 | ||
![]() |
49ff80c104 | ||
![]() |
18b240921c | ||
![]() |
0a5a5a11ff | ||
![]() |
95f2fec866 | ||
![]() |
90a65b4a58 | ||
![]() |
eada090af2 | ||
![]() |
cd906cb3cb | ||
![]() |
2dce710096 | ||
![]() |
219b04aec7 | ||
![]() |
dff03970bb | ||
![]() |
56cb07ffa9 | ||
![]() |
06959b290b | ||
![]() |
2d149166d6 | ||
![]() |
efaf8392df | ||
![]() |
611e1b18a3 | ||
![]() |
a585910b1c | ||
![]() |
e3b4508c18 | ||
![]() |
c2358aa58e | ||
![]() |
09c5d9bb00 | ||
![]() |
39d800de40 | ||
![]() |
28a3dd7422 | ||
![]() |
63c64876a7 | ||
![]() |
4a83ea2051 | ||
![]() |
02fcc1c154 | ||
![]() |
3580ec38d2 | ||
![]() |
a0eb64f142 | ||
![]() |
0136987299 | ||
![]() |
f2b75de3f6 | ||
![]() |
17dbec5453 | ||
![]() |
d7f60db497 | ||
![]() |
e0bbc44097 | ||
![]() |
9a24415a70 | ||
![]() |
c6984cccd1 | ||
![]() |
36ec0daac5 | ||
![]() |
2c219193f7 | ||
![]() |
c059facfe0 | ||
![]() |
b93d739ab2 | ||
![]() |
0421c75de1 | ||
![]() |
94ac746805 | ||
![]() |
f97c8185d3 | ||
![]() |
1d31a5bcf2 | ||
![]() |
685c2de26d | ||
![]() |
1466e9ac4d | ||
![]() |
32d7011886 | ||
![]() |
fd9e822302 | ||
![]() |
c68d8967ad | ||
![]() |
614544bf7a | ||
![]() |
8c1389b2e1 | ||
![]() |
f98f7fc8c6 | ||
![]() |
41757edeab | ||
![]() |
fd3ff665ac | ||
![]() |
f43a30d4c5 | ||
![]() |
a10416816b | ||
![]() |
2ee2160dcc | ||
![]() |
fe895afb19 | ||
![]() |
9bfdebc0bd | ||
![]() |
92d12940e2 | ||
![]() |
09a203fdb9 | ||
![]() |
38bced0a7f | ||
![]() |
12d23a4afe | ||
![]() |
6b7f689c7e | ||
![]() |
6f4558886e | ||
![]() |
2cdb2d518d | ||
![]() |
cf40830d0d | ||
![]() |
1bc2313fd1 | ||
![]() |
c2fc28e50b | ||
![]() |
0b6d7c9e89 | ||
![]() |
2ba17a7bf1 | ||
![]() |
f72e4d7537 | ||
![]() |
0185e7b203 | ||
![]() |
0a7048d229 | ||
![]() |
2fab8644cb | ||
![]() |
07b6471750 | ||
![]() |
015acd8db3 | ||
![]() |
d7d6f795c5 | ||
![]() |
00c8e925e0 | ||
![]() |
def1135b38 | ||
![]() |
0ee0d0717b | ||
![]() |
b3a6de6b62 | ||
![]() |
f3807d5ce0 | ||
![]() |
62fb4b540e | ||
![]() |
0d12b99623 | ||
![]() |
aa5c364245 | ||
![]() |
f575d35f58 | ||
![]() |
20dde2a596 | ||
![]() |
14ad100a6b | ||
![]() |
d1f5a514f1 | ||
![]() |
3ca467ae99 | ||
![]() |
97a19d96b6 | ||
![]() |
cc5dc0b7b5 | ||
![]() |
132be686ec | ||
![]() |
fd8264ee39 | ||
![]() |
d9ae8cfd27 | ||
![]() |
68fbcfc73d | ||
![]() |
8af6039629 | ||
![]() |
b38a9b3258 | ||
![]() |
3fc243dfba | ||
![]() |
c61e12a7d1 | ||
![]() |
e42393d4cd | ||
![]() |
af86a71f6f | ||
![]() |
6b3951c425 | ||
![]() |
c811b54c4e | ||
![]() |
a2a144b744 | ||
![]() |
089fe38132 | ||
![]() |
b552e57fe1 | ||
![]() |
ec5a7de190 | ||
![]() |
3e4ba608ad | ||
![]() |
83a1dd4138 | ||
![]() |
4f1101e339 | ||
![]() |
eed9a25300 | ||
![]() |
6c2a274037 | ||
![]() |
6c625b837a | ||
![]() |
3358e594df | ||
![]() |
09f78fb718 | ||
![]() |
88b90b8ed8 | ||
![]() |
764f7d8a09 | ||
![]() |
d70866cb66 | ||
![]() |
325e2e52d9 | ||
![]() |
54615f18b1 | ||
![]() |
bbfe9f1af5 | ||
![]() |
cf48dd366e | ||
![]() |
c14f477866 | ||
![]() |
8f745f6014 | ||
![]() |
2711ea1682 | ||
![]() |
477f1913ec | ||
![]() |
bd68c3b666 | ||
![]() |
8e987df540 | ||
![]() |
53a59b58fd | ||
![]() |
ad5d393a85 | ||
![]() |
a67e2675d6 | ||
![]() |
7155bcbcab | ||
![]() |
0651a4270a | ||
![]() |
5b859e0cd9 | ||
![]() |
db0d24eaa7 | ||
![]() |
7e252db244 | ||
![]() |
54ac5b701f | ||
![]() |
f419191ab7 | ||
![]() |
c1ba3cb933 | ||
![]() |
a3323eb54d | ||
![]() |
fea8c79b5f | ||
![]() |
cafc73e8b8 | ||
![]() |
2187c930ed | ||
![]() |
4a92032c9f | ||
![]() |
c67bb500f6 | ||
![]() |
01acc3c6a7 | ||
![]() |
923c125eea | ||
![]() |
b84df3d6e1 | ||
![]() |
62af22b2e3 | ||
![]() |
5b8f57dca1 | ||
![]() |
af80887a18 | ||
![]() |
9fd61f252b | ||
![]() |
29c0cf4bfc | ||
![]() |
79ec506333 | ||
![]() |
151eff0370 | ||
![]() |
9caf5e7b4d | ||
![]() |
18cc6e6518 | ||
![]() |
1f1ecb318b | ||
![]() |
709e99094e | ||
![]() |
0063151647 | ||
![]() |
b2b33b250a | ||
![]() |
762a137f6d | ||
![]() |
297d846914 | ||
![]() |
acde55fe09 | ||
![]() |
c079ca8210 | ||
![]() |
f3a253f2b3 | ||
![]() |
f551831d04 | ||
![]() |
c6b6f0bbea | ||
![]() |
bc3727849e | ||
![]() |
2561a5b359 | ||
![]() |
0bb18c60f8 | ||
![]() |
dde402221f | ||
![]() |
90a474f47b | ||
![]() |
16921afaaf | ||
![]() |
0b985e6966 | ||
![]() |
42915c68b9 | ||
![]() |
12b4515d6b | ||
![]() |
460c3f36d9 | ||
![]() |
6c962aabad | ||
![]() |
6d5f5fe77a | ||
![]() |
3e486e531e | ||
![]() |
3c1d58dd90 | ||
![]() |
093521b12e | ||
![]() |
9f1a4b07da | ||
![]() |
9250d4f8c8 | ||
![]() |
e5c2865408 | ||
![]() |
be409c27d0 | ||
![]() |
0087d2de1f | ||
![]() |
958626a037 | ||
![]() |
c874d0290a | ||
![]() |
dedec0b51c | ||
![]() |
8f7879d381 | ||
![]() |
88814fd628 | ||
![]() |
f9d3dfe4f5 | ||
![]() |
2ec13143e7 | ||
![]() |
6f31f6dbb8 | ||
![]() |
1fa5fc6095 | ||
![]() |
b8f81fe94b | ||
![]() |
b981bd70b8 | ||
![]() |
da05d85883 | ||
![]() |
af7a90c1fe | ||
![]() |
c41e4aba52 | ||
![]() |
c2dd9f44f2 | ||
![]() |
b079178fb3 | ||
![]() |
4068f7b568 | ||
![]() |
ba220a46ab | ||
![]() |
38f0c0bb52 | ||
![]() |
a6ed94d64d | ||
![]() |
7b7d031910 | ||
![]() |
74e2928ff2 | ||
![]() |
9978bda21d | ||
![]() |
92183cfdb4 | ||
![]() |
3fba4a0888 | ||
![]() |
497c3a6d29 | ||
![]() |
90a8eed3b3 | ||
![]() |
686c199b1b | ||
![]() |
687adc7002 | ||
![]() |
c8d65caaa2 | ||
![]() |
34c6dcbabc | ||
![]() |
b68f7b0649 | ||
![]() |
bbb435722e | ||
![]() |
7d1a16c962 | ||
![]() |
c24e6d4c52 | ||
![]() |
9200a75df2 | ||
![]() |
7409710bb4 | ||
![]() |
3ef0ceb6e9 | ||
![]() |
783f815b0c | ||
![]() |
49159861ab | ||
![]() |
b508e70efd | ||
![]() |
a49d8e60ac | ||
![]() |
493707b82e | ||
![]() |
a670f28162 | ||
![]() |
179e2041f8 | ||
![]() |
c4bab7b0e2 | ||
![]() |
889b61eaab | ||
![]() |
46e124e1a1 | ||
![]() |
3ff6064c2c | ||
![]() |
50b5295d6d | ||
![]() |
0c5206ec4b | ||
![]() |
e5d1bf4143 | ||
![]() |
ba8ae39fdb | ||
![]() |
8d49f933ec | ||
![]() |
eecb1d49ef | ||
![]() |
56bd7d2518 | ||
![]() |
0fc9a170fe | ||
![]() |
2c26ebec97 | ||
![]() |
2b4151bda2 | ||
![]() |
3896040d05 | ||
![]() |
7d52045889 | ||
![]() |
111e4d0e32 | ||
![]() |
b4a4c5dcee | ||
![]() |
a7ddfc7731 | ||
![]() |
1fd3918663 | ||
![]() |
bbe7fcff34 | ||
![]() |
03afa113a9 | ||
![]() |
ed7d315ba0 | ||
![]() |
84647836e2 | ||
![]() |
9e08b417e8 | ||
![]() |
01d3fa616d | ||
![]() |
456b391404 | ||
![]() |
85d8395299 | ||
![]() |
1e249cdcc5 | ||
![]() |
f0d3c6f40e | ||
![]() |
f805976faa | ||
![]() |
a14e5fb790 | ||
![]() |
9bcd13bb70 | ||
![]() |
5ce9afe2f8 |
2418 changed files with 294151 additions and 234014 deletions
34
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
34
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
|
@ -0,0 +1,34 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
(_Please use [discuss.codelibs.org](https://discuss.codelibs.org/c/FessEN/8) before filing a bug._)
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Environment (please complete the following information):**
|
||||
- OS: [e.g. Windows 10]
|
||||
- Browser [e.g. chrome, safari]
|
||||
- Version [e.g. 13.5.0]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
10
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
10
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Please post it to [discuss.codelibs.org](https://discuss.codelibs.org/c/FessEN/8).
|
10
.github/ISSUE_TEMPLATE/question.md
vendored
Normal file
10
.github/ISSUE_TEMPLATE/question.md
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
name: Questions
|
||||
about: See discuss.codelibs.org
|
||||
title: 'DO NOT CREATE ME'
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
DO NOT CREATE an issue. Please see https://discuss.codelibs.org/c/FessEN/
|
||||
|
96
.github/workflows/codeql.yml
vendored
Normal file
96
.github/workflows/codeql.yml
vendored
Normal file
|
@ -0,0 +1,96 @@
|
|||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "master" ]
|
||||
pull_request:
|
||||
branches: [ "master" ]
|
||||
schedule:
|
||||
- cron: '38 6 * * 1'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze (${{ matrix.language }})
|
||||
# Runner size impacts CodeQL analysis time. To learn more, please see:
|
||||
# - https://gh.io/recommended-hardware-resources-for-running-codeql
|
||||
# - https://gh.io/supported-runners-and-hardware-resources
|
||||
# - https://gh.io/using-larger-runners (GitHub.com only)
|
||||
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
|
||||
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
|
||||
timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
|
||||
permissions:
|
||||
# required for all workflows
|
||||
security-events: write
|
||||
|
||||
# required to fetch internal or private CodeQL packs
|
||||
packages: read
|
||||
|
||||
# only required for workflows in private repositories
|
||||
actions: read
|
||||
contents: read
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- language: java-kotlin
|
||||
build-mode: none # This mode only analyzes Java. Set this to 'autobuild' or 'manual' to analyze Kotlin too.
|
||||
- language: javascript-typescript
|
||||
build-mode: none
|
||||
# CodeQL supports the following values keywords for 'language': 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift'
|
||||
# Use `c-cpp` to analyze code written in C, C++ or both
|
||||
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
|
||||
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
|
||||
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
|
||||
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
|
||||
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
|
||||
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
build-mode: ${{ matrix.build-mode }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
|
||||
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
||||
# queries: security-extended,security-and-quality
|
||||
|
||||
# If the analyze step fails for one of the languages you are analyzing with
|
||||
# "We were unable to automatically build your code", modify the matrix above
|
||||
# to set the build mode to "manual" for that language. Then modify this step
|
||||
# to build your code.
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
||||
- if: matrix.build-mode == 'manual'
|
||||
shell: bash
|
||||
run: |
|
||||
echo 'If you are using a "manual" build mode for one or more of the' \
|
||||
'languages you are analyzing, replace this with the commands to build' \
|
||||
'your code, for example:'
|
||||
echo ' make bootstrap'
|
||||
echo ' make release'
|
||||
exit 1
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
||||
|
42
.github/workflows/maven.yml
vendored
Normal file
42
.github/workflows/maven.yml
vendored
Normal file
|
@ -0,0 +1,42 @@
|
|||
# This workflow will build a Java project with Maven
|
||||
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
|
||||
|
||||
name: Java CI with Maven
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- "*.x"
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- "*.x"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macos-14
|
||||
timeout-minutes: 15
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '21'
|
||||
distribution: 'temurin'
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.m2/repository
|
||||
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-maven-
|
||||
- name: Download Plugins with Maven
|
||||
run: mvn -B antrun:run --file pom.xml
|
||||
- name: Build with Maven
|
||||
run: mvn -B source:jar javadoc:jar package --file pom.xml
|
||||
- name: Run Fess
|
||||
run: bash src/test/resources/before_script.sh
|
||||
- name: Run Integration Test
|
||||
run: bash src/test/resources/run.sh
|
||||
|
14
.gitignore
vendored
14
.gitignore
vendored
|
@ -6,8 +6,14 @@
|
|||
/src/main/webapp/WEB-INF/classes/
|
||||
/src/main/webapp/WEB-INF/lib/
|
||||
/src/main/webapp/WEB-INF/site/
|
||||
/src/main/webapp/WEB-INF/plugin/*
|
||||
!/src/main/webapp/WEB-INF/plugin/.keep
|
||||
/src/main/webapp/WEB-INF/env/crawler/lib/
|
||||
/src/main/webapp/WEB-INF/env/suggest/lib/
|
||||
/src/main/webapp/WEB-INF/env/thumbnail/lib/
|
||||
/src/main/webapp/WEB-INF/thumbnails/
|
||||
/src/main/webapp/jar/
|
||||
/dbflute_fess/extlib/*
|
||||
/dbflute_fess/log/*.log
|
||||
/dbflute_h2/log/*.log
|
||||
/dbflute_mysql/log/*.log
|
||||
|
@ -20,9 +26,15 @@
|
|||
.classpath
|
||||
*.iml
|
||||
.idea
|
||||
.vscode
|
||||
.DS_Store
|
||||
/plugins/
|
||||
/modules/
|
||||
/tomcat.8080/
|
||||
dbflute_fess/output/doc/lastadoc-fess.html
|
||||
dbflute_fess/schema/project-lastadoc-fess.json
|
||||
src/main/resources/fess_indices/.fess_config/access_token.bulk
|
||||
src/main/resources/fess_indices/fess_config.access_token/access_token.bulk
|
||||
src/main/resources/ga_client_secrets.p12
|
||||
src/main/webapp/WEB-INF/project.properties
|
||||
/.apt_generated/
|
||||
/.apt_generated_tests/
|
||||
|
|
229
LICENSE
229
LICENSE
|
@ -1,49 +1,202 @@
|
|||
--------------------------------------------------------------------------------
|
||||
http://fess.codelibs.org/
|
||||
|
||||
Copyright 2016 CodeLibs Project.
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
1. Definitions.
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
--------------------------------------------------------------------------------
|
||||
https://github.com/elastic/elasticsearch
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
Elasticsearch
|
||||
Copyright 2009-2015 Elasticsearch
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
This product includes software developed by The Apache Software
|
||||
Foundation (http://www.apache.org/).
|
||||
--------------------------------------------------------------------------------
|
||||
https://github.com/lmenezes/elasticsearch-kopf
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
The MIT License (MIT)
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
Copyright (c) 2014 Leonardo Menezes
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
|
42
MIGRATION.md
42
MIGRATION.md
|
@ -1,16 +1,38 @@
|
|||
## Migration From Other Enterprise Search
|
||||
## Migration From Other Enterprise Search Systems
|
||||
|
||||
### Google Search Apliance/Google Mini
|
||||
### Google Search Appliance (GSA) / Google Mini
|
||||
|
||||
Fess provides GSA-Compatible API.
|
||||
The endpoint is localhost:8080/gsa.
|
||||
GsaApiManager is [here](https://github.com/codelibs/fess/blob/master/src/main/java/org/codelibs/fess/api/gsa/GsaApiManager.java).
|
||||
Fess provides a [Google Search Appliance](https://enterprise.google.com/search/products/gsa.html) (GSA) compatible API. To enable this API, set `web.api.gsa=true` to system.properties. This will enable an enpoint at `<Fess Server Name>:8080/gsa`. When a search query is sent to `<Fess Server Name>:8080/gsa/?q=QUERY`, a GSA compatible response will be returned
|
||||
|
||||
### Google Site Search/Google Custom Search
|
||||
For the more details, see the implementation code in [GsaApiManager](/src/main/java/org/codelibs/fess/api/gsa/GsaApiManager.java).
|
||||
|
||||
See [JSON API](http://fess.codelibs.org/11.0/user/json-response.html).
|
||||
(We have a plan to provide Compatible API)
|
||||
### Google Site Search (GSS) / Google Custom Search (GSE)
|
||||
|
||||
### Others
|
||||
[Fess Site Search](https://github.com/codelibs/fess-site-search) provides [scripts](https://fss-generator.codelibs.org/docs/manual) (see below) to help you migrate from GSS/CSE.
|
||||
Using the, you can replace existing GSS/CSE JavaScript codes with:
|
||||
|
||||
See [JSON API](http://fess.codelibs.org/11.0/user/json-response.html).
|
||||
```
|
||||
<script>
|
||||
(function() {
|
||||
var fess = document.createElement('script');
|
||||
fess.type = 'text/javascript';
|
||||
fess.async = true;
|
||||
fess.src = '//<Fess Server Name>/js/ss/fess-ss.min.js';
|
||||
fess.charset = 'utf-8';
|
||||
fess.setAttribute('id', 'fess-ss');
|
||||
fess.setAttribute('fess-url', '//<Server Name>/json');
|
||||
var s = document.getElementsByTagName('script')[0];
|
||||
s.parentNode.insertBefore(fess, s);
|
||||
})();
|
||||
</script>
|
||||
<fess:search></fess:search>
|
||||
```
|
||||
|
||||
An example of Fess Site Search in use is below:
|
||||
|
||||

|
||||
|
||||
|
||||
### More Reading
|
||||
|
||||
- [JSON API](https://fess.codelibs.org/12.5/user/json-response.html)
|
||||
|
|
49
NOTICE
Normal file
49
NOTICE
Normal file
|
@ -0,0 +1,49 @@
|
|||
--------------------------------------------------------------------------------
|
||||
https://fess.codelibs.org/
|
||||
|
||||
Copyright 2018 CodeLibs Project.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
--------------------------------------------------------------------------------
|
||||
https://github.com/elastic/elasticsearch
|
||||
|
||||
Elasticsearch
|
||||
Copyright 2009-2015 Elasticsearch
|
||||
|
||||
This product includes software developed by The Apache Software
|
||||
Foundation (https://www.apache.org/).
|
||||
--------------------------------------------------------------------------------
|
||||
https://github.com/lmenezes/elasticsearch-kopf
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Leonardo Menezes
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
--------------------------------------------------------------------------------
|
130
README.md
130
README.md
|
@ -1,87 +1,121 @@
|
|||
Enterprise Search Server: Fess
|
||||
====
|
||||
# Fess: Enterprise Search Server
|
||||
[](https://github.com/codelibs/fess/actions/workflows/maven.yml)
|
||||
[](https://maven-badges.herokuapp.com/maven-central/org.codelibs.fess/fess)
|
||||
[](https://github.com/gitbucket/gitbucket/blob/master/LICENSE)
|
||||
|
||||
## Overview
|
||||
|
||||
Fess is very powerful and easily deployable Enterprise Search Server. You can install and run Fess quickly on any platforms, which have Java runtime environment. Fess is provided under Apache license.
|
||||
Fess is a very powerful and easily deployable Enterprise Search Server. You can quickly install and run Fess on any platform where you can run the Java Runtime Environment. Fess is provided under the [Apache License 2.0](LICENSE).
|
||||
|
||||
Fess is Elasticsearch based search server, but knowledge/experience about Elasticsearch is NOT needed because of All-in-One Enterprise Search Server. Fess provides Administration GUI to configure the system on your browser. Fess also contains a crawler, which can crawl documents on Web/FileSystem/DB and supports many file formats, such as MS Office, pdf and zip.
|
||||
Fess is based on [OpenSearch](https://github.com/opensearch-project/OpenSearch), but knowledge/experience about OpenSearch is _not_ required. Fess provides an easy to use Administration GUI to configure the system via your browser.
|
||||
Fess also contains a Crawler, which can crawl documents on a [web server](https://fess.codelibs.org/14.18/admin/webconfig-guide.html), [file system](https://fess.codelibs.org/14.18/admin/fileconfig-guide.html), or [Data Store](https://fess.codelibs.org/14.18/admin/dataconfig-guide.html) (such as a CSV or database). Many file formats are supported including (but not limited to): Microsoft Office, PDF, and zip.
|
||||
|
||||
## Web Sites
|
||||
*[Fess Site Search](https://github.com/codelibs/fess-site-search)* is a free alternative to [Google Site Search](https://enterprise.google.com/search/products/gss.html). For more details, see the [FSS JS Generator documentation](https://fss-generator.codelibs.org/docs/manual).
|
||||
|
||||
[fess.codelibs.org](http://fess.codelibs.org/)
|
||||
## Website
|
||||
|
||||
[fess.codelibs.org](https://fess.codelibs.org/)
|
||||
|
||||
## Issues/Questions
|
||||
|
||||
Please check filed [questions](https://github.com/codelibs/fess/issues?q=label%3Aquestion), and then file an [issue](https://github.com/codelibs/fess/issues "issue") if not filed.
|
||||
[discuss.codelibs.org](https://discuss.codelibs.org/c/FessEN/)
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Download
|
||||
There are 2 ways to try Fess. The first is to download and install yourself. The second is to use [Docker](https://www.docker.com/products/docker-engine).
|
||||
|
||||
Fess 11.1 is available.
|
||||
The release page is [HERE](https://github.com/codelibs/fess/releases "download").
|
||||
### Download and Install/Run
|
||||
|
||||
### Install/Run Fess
|
||||
Fess 14.18 is now available and can be downloaded on the [Releases page](https://github.com/codelibs/fess/releases "download"). Downloads come in 3 flavors: deb, rpm, zip.
|
||||
|
||||
$ unzip fess-11.1.x.zip
|
||||
$ cd fess-11.1.x
|
||||
The following commands show how to use the zip download:
|
||||
|
||||
$ unzip fess-14.18.x.zip
|
||||
$ cd fess-14.18.x
|
||||
$ ./bin/fess
|
||||
|
||||
For the details, see [Installation Guide](http://fess.codelibs.org/11.1/install/index.html).
|
||||
For more details, see the [Installation Guide](https://fess.codelibs.org/14.18/install/index.html).
|
||||
|
||||
### Access Fess
|
||||
### Docker
|
||||
|
||||
We provide Docker images on [ghcr.io](https://github.com/orgs/codelibs/packages). We also provide a Docker Compose (YAML) file in [this repository](https://github.com/codelibs/docker-fess/tree/master/compose).
|
||||
|
||||
### Browser UI
|
||||
|
||||
- Search UI: http://localhost:8080/
|
||||
|
||||

|
||||

|
||||
|
||||
- Admin UI: http://localhost:8080/admin/ (username/password is admin/admin)
|
||||
- Admin UI: http://localhost:8080/admin/ (default username/password is admin/admin)
|
||||
|
||||

|
||||

|
||||
|
||||
You can register crawling targets on Web/File System/Data Store of admin pages, and then start Crawler on Scheduler page manually.
|
||||
You can register crawling targets in the Admin UI on the (Web, File, Data Store) crawler configuration pages, and then start the Crawler manually on the [Scheduler page](https://fess.codelibs.org/14.18/admin/scheduler-guide.html).
|
||||
|
||||
## Fess on Docker Hub
|
||||
## Migration from another search provider
|
||||
|
||||
We provide Docker image on Docker Hub.
|
||||
For more details, see [Public Repository](https://hub.docker.com/r/codelibs/fess/).
|
||||
Please see [MIGRATION.md](MIGRATION.md).
|
||||
|
||||
## Localization
|
||||
## Data Store
|
||||
|
||||
### Japanese
|
||||
Currently, Fess supports crawling the following [storage locations and APIs](https://fess.codelibs.org/14.18/admin/dataconfig-guide.html):
|
||||
|
||||
- [Web Site](http://fess.codelibs.org/ja/)
|
||||
- [Confluence/Jira](https://github.com/codelibs/fess-ds-atlassian)
|
||||
- [Box](https://github.com/codelibs/fess-ds-box)
|
||||
- [CSV](https://github.com/codelibs/fess-ds-csv)
|
||||
- [Database](https://github.com/codelibs/fess-ds-db)
|
||||
- [Dropbox](https://github.com/codelibs/fess-ds-dropbox)
|
||||
- [Elasticsearch](https://github.com/codelibs/fess-ds-elasticsearch)
|
||||
- [Git](https://github.com/codelibs/fess-ds-git)
|
||||
- [Gitbucket](https://github.com/codelibs/fess-ds-gitbucket)
|
||||
- [G Suite](https://github.com/codelibs/fess-ds-gsuite)
|
||||
- [JSON](https://github.com/codelibs/fess-ds-json)
|
||||
- [Office 365](https://github.com/codelibs/fess-ds-office365)
|
||||
- [S3](https://github.com/codelibs/fess-ds-s3)
|
||||
- [Salesforce](https://github.com/codelibs/fess-ds-salesforce)
|
||||
- [SharePoint](https://github.com/codelibs/fess-ds-sharepoint)
|
||||
- [Slack](https://github.com/codelibs/fess-ds-slack)
|
||||
|
||||
### Korean
|
||||
## Theme
|
||||
|
||||
- [PDF Document](https://github.com/nocode2k/fess/releases/download/fess-ko-10.1.0/FESS-ko_10.1.0_.pdf)
|
||||
- [Forum](https://github.com/nocode2k/fess-kr-forum)
|
||||
- [Simple](https://github.com/codelibs/fess-theme-simple)
|
||||
- [Classic](https://github.com/codelibs/fess-theme-classic)
|
||||
|
||||
## Ingest
|
||||
|
||||
- [Logger](https://github.com/codelibs/fess-ingest-logger)
|
||||
- [NDJSON](https://github.com/codelibs/fess-ingest-ndjson)
|
||||
|
||||
## Script
|
||||
|
||||
- [Groovy](https://github.com/codelibs/fess-script-groovy)
|
||||
- [OGNL](https://github.com/codelibs/fess-script-ognl)
|
||||
|
||||
## Development Information
|
||||
|
||||
### Get Source Code
|
||||
|
||||
First of all, clone Fess's repositories:
|
||||
|
||||
1. Clone Fess's repository:
|
||||
```
|
||||
$ cd ~/workspace
|
||||
$ git clone https://github.com/codelibs/fess.git
|
||||
```
|
||||
|
||||
2. Import the cloned repository as a [Maven](https://maven.apache.org/) project on [Eclipse](https://www.eclipse.org/eclipseide/) or another IDE.
|
||||
|
||||
and then imports it as Maven project on eclipse or ohter IDE.
|
||||
### Setup for OpenSearch Plugins
|
||||
|
||||
### Setup for Elasticsearch Plugins
|
||||
|
||||
Run antrun:run to download plugins into plugins directory:
|
||||
Run antrun:run to download plugins into the plugins directory:
|
||||
|
||||
$ mvn antrun:run
|
||||
|
||||
### Run Fess
|
||||
|
||||
Run or debug org.codelibs.fess.FessBoot on IDE, and then access http://localhost:8080/
|
||||
Run or debug org.codelibs.fess.FessBoot on your IDE, and then access http://localhost:8080/
|
||||
|
||||
### Build Package
|
||||
|
||||
Run package goal and then the release file is created in target/releases.
|
||||
Run the `package` goal and then the release file will be created in target/releases.
|
||||
|
||||
$ mvn package
|
||||
$ mvn rpm:rpm # .rpm package
|
||||
|
@ -95,9 +129,13 @@ Run package goal and then the release file is created in target/releases.
|
|||
|
||||
### Integration Tests
|
||||
|
||||
Lunch Fess Server and run the following command:
|
||||
Launch Fess Server and run the following command:
|
||||
|
||||
mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.es.url="http://localhost:9201"
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201"
|
||||
|
||||
To run a single test case, you can use:
|
||||
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201" -Dtest=SearchApiTests
|
||||
|
||||
### Translate In Your Language
|
||||
|
||||
|
@ -108,9 +146,19 @@ If you want to add labels/messages for your language, please translate propertie
|
|||
* [fess_label_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_label_en.properties)
|
||||
* [fess_message_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_message_en.properties)
|
||||
|
||||
For search/index analyzer, if [doc.json](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_indices/fess/doc.json) contains lang\_[lang] for your language, please modify analyzer for your language. For more details about elasticsearch's analyzer, see [Analyzers](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html).
|
||||
For search/index analyzer, if [doc.json](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_indices/fess/doc.json) contains lang\_[lang] for your language, please modify the analyzer for your language. For more details about Analyzers, see the [OpenSearch documentation](https://opensearch.org/docs/latest/analyzers/search-analyzers/).
|
||||
|
||||
We are waiting for pull requests of your language.
|
||||
We welcome pull requests for your language.
|
||||
|
||||
### Translations
|
||||
|
||||
- [日本語 (Japanese)](docs/ja/README.md)
|
||||
- [简体中文 (Simplified Chinese)](docs/zh-CN/README.md)
|
||||
- [Español (Spanish)](docs/es/README.md)
|
||||
- [Português (Brazilian Portuguese)](docs/pt-BR/README.md)
|
||||
- [Français (French)](docs/fr/README.md)
|
||||
- [Deutsch (German)](docs/de/README.md)
|
||||
- [한국어 (Korean)](docs/ko/README.md)
|
||||
|
||||
## Powered By
|
||||
|
||||
|
@ -118,4 +166,4 @@ We are waiting for pull requests of your language.
|
|||
* [LastaFlute](https://github.com/lastaflute/lastaflute "LastaFlute"): Web Framework
|
||||
* [Lasta Job](https://github.com/lastaflute/lasta-job "Lasta Job"): Job Scheduler
|
||||
* [Fess Crawler](https://github.com/codelibs/fess-crawler "Fess Crawler"): Web Crawler
|
||||
* [Elasticsearch](https://github.com/elastic/elasticsearch "Elasticsearch"): Search Engine
|
||||
* [OpenSearch](https://opensearch.org/ "OpenSearch"): Search Engine
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<project name="dbflute" basedir=".">
|
||||
<property name="mydbflute.dir" value="${basedir}/mydbflute" />
|
||||
<property name="target.dir" value="${basedir}/target" />
|
||||
<property name="branch.name" value="es-5.4" />
|
||||
<property name="branch.name" value="fess-14.17" />
|
||||
<property name="mydbflute.url" value="https://github.com/lastaflute/lastaflute-example-waterfront/archive/${branch.name}.zip" />
|
||||
|
||||
<target name="mydbflute.check">
|
||||
|
|
|
@ -4,7 +4,7 @@ Required (Basic) Properties:
|
|||
o basicInfoMap.dfprop
|
||||
o databaseInfoMap.dfprop
|
||||
|
||||
Properties for additional informations:
|
||||
Properties for additional information:
|
||||
o additionalForeignKeyMap.dfprop
|
||||
o additionalPrimaryKeyMap.dfprop
|
||||
o additionalUniqueKeyMap.dfprop (manual making)
|
||||
|
|
|
@ -1,26 +1,181 @@
|
|||
map:{
|
||||
# base package of generated classes
|
||||
; basePackage = org.codelibs.fess.es
|
||||
; basePackage = org.codelibs.fess.opensearch
|
||||
|
||||
# base path to JSON resource, URL or relative path
|
||||
; basePath = ../src/main/config/es
|
||||
|
||||
# settings for indexes
|
||||
; indexMap = map:{
|
||||
# Index: .fess_user
|
||||
; .fess_user = map:{
|
||||
# Index: fess_user
|
||||
; fess_user.group = map:{
|
||||
; package = user
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_user.xml
|
||||
}
|
||||
# Index: .fess_user
|
||||
; .fess_config = map:{
|
||||
; fess_user.role = map:{
|
||||
; package = user
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_user.xml
|
||||
}
|
||||
; fess_user.user = map:{
|
||||
; package = user
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_user.xml
|
||||
}
|
||||
# Index: fess_user
|
||||
; fess_config.access_token = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
# Index: .fess_user
|
||||
; fess_log = map:{
|
||||
; fess_config.bad_word = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.boost_document_rule = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.crawling_info = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.crawling_info_param = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.data_config = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.duplicate_host = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.elevate_word = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.elevate_word_to_label = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.failure_url = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.file_authentication = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.file_config = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.job_log = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.key_match = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.label_type = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.path_mapping = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.related_content = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.related_query = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.request_header = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.role_type = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.scheduled_job = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.thumbnail_queue = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.web_authentication = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
; fess_config.web_config = map:{
|
||||
; package = config
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_config.xml
|
||||
}
|
||||
# Index: fess_user
|
||||
; fess_log.click_log = map:{
|
||||
; package = log
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_log.xml
|
||||
; mappingMap = map:{
|
||||
; type = map:{
|
||||
; date@dateOptionalTime = LocalDateTime
|
||||
}
|
||||
}
|
||||
}
|
||||
; fess_log.favorite_log = map:{
|
||||
; package = log
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_log.xml
|
||||
; mappingMap = map:{
|
||||
; type = map:{
|
||||
; date@dateOptionalTime = LocalDateTime
|
||||
}
|
||||
}
|
||||
}
|
||||
; fess_log.search_log = map:{
|
||||
; package = log
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_log.xml
|
||||
; mappingMap = map:{
|
||||
; type = map:{
|
||||
; date@dateOptionalTime = LocalDateTime
|
||||
}
|
||||
}
|
||||
}
|
||||
; fess_log.user_info = map:{
|
||||
; package = log
|
||||
; esclientDiFile = esclient.xml
|
||||
; esfluteDiFile = esflute_log.xml
|
||||
|
@ -31,5 +186,5 @@ map:{
|
|||
}
|
||||
}
|
||||
}
|
||||
; elasticsearchVersion = 5.0.2
|
||||
; elasticsearchVersion = 6.0.0
|
||||
}
|
||||
|
|
|
@ -46,9 +46,21 @@ map:{
|
|||
}
|
||||
}
|
||||
|
||||
; isUseDefaultConfigAtGeneration = true
|
||||
# you can override (several) default settings like this:
|
||||
#; overrideMap = map:{
|
||||
# ; fess.freeGen.mail.targetDir = ./playsql/data/mail
|
||||
#}
|
||||
|
||||
# you can adjust LastaDoc contents
|
||||
; lastaDocContentsMap = map:{
|
||||
; headerMap = map:{
|
||||
#; isSuppressSchemaHtmlLink = true
|
||||
}
|
||||
; actionMap = map:{
|
||||
; isSuppressDescriptionInList = true
|
||||
; isSuppressAuthorInList = true
|
||||
}
|
||||
}
|
||||
}
|
||||
# ----------------/
|
||||
|
|
62
deps.xml
Normal file
62
deps.xml
Normal file
|
@ -0,0 +1,62 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name="deps" basedir=".">
|
||||
<property name="target.dir" value="${basedir}/target/deps" />
|
||||
<property name="webinf.dir" value="${basedir}/src/main/webapp/WEB-INF" />
|
||||
<property name="crawler.dir" value="${basedir}/src/main/webapp/WEB-INF/env/crawler" />
|
||||
<property name="suggest.dir" value="${basedir}/src/main/webapp/WEB-INF/env/suggest" />
|
||||
<property name="thumbnail.dir" value="${basedir}/src/main/webapp/WEB-INF/env/thumbnail" />
|
||||
<property name="site.dir" value="${basedir}/src/main/webapp/WEB-INF/site" />
|
||||
<property name="kopf.branch" value="fess-14" />
|
||||
|
||||
<!-- Maven Repository -->
|
||||
<property name="maven.snapshot.repo.url" value="https://oss.sonatype.org/content/repositories/snapshots" />
|
||||
<property name="maven.release.repo.url" value="https://repo1.maven.org/maven2" />
|
||||
|
||||
<target name="install.jars">
|
||||
<mkdir dir="${target.dir}" />
|
||||
<delete dir="${webinf.dir}/lib" />
|
||||
<mkdir dir="${webinf.dir}/lib" />
|
||||
<delete dir="${crawler.dir}/lib" />
|
||||
<mkdir dir="${crawler.dir}/lib" />
|
||||
<delete dir="${suggest.dir}/lib" />
|
||||
<mkdir dir="${suggest.dir}/lib" />
|
||||
<delete dir="${thumbnail.dir}/lib" />
|
||||
<mkdir dir="${thumbnail.dir}/lib" />
|
||||
<!-- annotation-api -->
|
||||
<antcall target="install.env.jar">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="jar.groupId" value="jakarta/annotation" />
|
||||
<param name="jar.artifactId" value="jakarta.annotation-api" />
|
||||
<param name="jar.version" value="2.1.1" />
|
||||
<param name="file.version" value="2.1.1" />
|
||||
</antcall>
|
||||
<!-- kopf -->
|
||||
<get dest="${target.dir}/kopf.zip">
|
||||
<url url="https://github.com/codelibs/elasticsearch-kopf/archive/${kopf.branch}.zip" />
|
||||
</get>
|
||||
<delete dir="${site.dir}/kopf" />
|
||||
<unzip dest="${site.dir}/kopf" src="${target.dir}/kopf.zip">
|
||||
<patternset>
|
||||
<include name="elasticsearch-kopf-${kopf.branch}/_site/**" />
|
||||
</patternset>
|
||||
<cutdirsmapper dirs="2" />
|
||||
</unzip>
|
||||
<delete>
|
||||
<fileset dir="${webinf.dir}/plugin">
|
||||
<include name="**/*.jar" />
|
||||
</fileset>
|
||||
</delete>
|
||||
</target>
|
||||
|
||||
<target name="install.env.jar">
|
||||
<get dest="${target.dir}">
|
||||
<url url="${repo.url}/${jar.groupId}/${jar.artifactId}/${jar.version}/${jar.artifactId}-${file.version}.jar" />
|
||||
</get>
|
||||
<copy file="${target.dir}/${jar.artifactId}-${file.version}.jar"
|
||||
todir="${crawler.dir}/lib"/>
|
||||
<copy file="${target.dir}/${jar.artifactId}-${file.version}.jar"
|
||||
todir="${suggest.dir}/lib"/>
|
||||
<copy file="${target.dir}/${jar.artifactId}-${file.version}.jar"
|
||||
todir="${thumbnail.dir}/lib"/>
|
||||
</target>
|
||||
</project>
|
159
docs/de/README.md
Normal file
159
docs/de/README.md
Normal file
|
@ -0,0 +1,159 @@
|
|||
# Fess: Enterprise-Suchserver
|
||||
[](https://github.com/codelibs/fess/actions/workflows/maven.yml)
|
||||
[](https://maven-badges.herokuapp.com/maven-central/org.codelibs.fess/fess)
|
||||
[](https://github.com/gitbucket/gitbucket/blob/master/LICENSE)
|
||||
|
||||
## Übersicht
|
||||
|
||||
Fess ist ein sehr leistungsstarker und einfach zu implementierender Enterprise-Suchserver. Sie können Fess schnell auf jeder Plattform installieren und ausführen, auf der die Java-Laufzeitumgebung (JRE) läuft. Fess wird unter der [Apache-Lizenz 2.0](LICENSE) bereitgestellt.
|
||||
|
||||
Fess basiert auf [OpenSearch](https://github.com/opensearch-project/OpenSearch), aber es ist kein Wissen oder Erfahrung mit OpenSearch erforderlich. Fess bietet eine einfach zu bedienende Administrations-GUI zur Konfiguration des Systems über Ihren Browser.
|
||||
Fess enthält auch einen Crawler, der Dokumente auf einem [Webserver](https://fess.codelibs.org/14.17/admin/webconfig-guide.html), [Dateisystem](https://fess.codelibs.org/14.17/admin/fileconfig-guide.html) oder [Datenspeicher](https://fess.codelibs.org/14.17/admin/dataconfig-guide.html) (wie CSV oder Datenbank) durchsuchen kann. Viele Dateiformate werden unterstützt, einschließlich (aber nicht beschränkt auf): Microsoft Office, PDF und zip.
|
||||
|
||||
*[Fess Site Search](https://github.com/codelibs/fess-site-search)* ist eine kostenlose Alternative zur [Google Site Search](https://enterprise.google.com/search/products/gss.html). Weitere Details finden Sie in der [Dokumentation des FSS JS Generators](https://fss-generator.codelibs.org/docs/manual).
|
||||
|
||||
## Website
|
||||
|
||||
[fess.codelibs.org](https://fess.codelibs.org/)
|
||||
|
||||
## Probleme/Fragen
|
||||
|
||||
[discuss.codelibs.org](https://discuss.codelibs.org/c/FessEN/)
|
||||
|
||||
## Erste Schritte
|
||||
|
||||
Es gibt zwei Möglichkeiten, Fess auszuprobieren. Die erste besteht darin, es selbst herunterzuladen und zu installieren. Die zweite besteht darin, [Docker](https://www.docker.com/products/docker-engine) zu verwenden.
|
||||
|
||||
### Herunterladen und Installieren/Ausführen
|
||||
|
||||
Fess 14.17 ist jetzt verfügbar und kann auf der [Release-Seite](https://github.com/codelibs/fess/releases "download") heruntergeladen werden. Downloads gibt es in drei Formaten: deb, rpm, zip.
|
||||
|
||||
Die folgenden Befehle zeigen, wie der Zip-Download verwendet wird:
|
||||
|
||||
$ unzip fess-14.17.x.zip
|
||||
$ cd fess-14.17.x
|
||||
$ ./bin/fess
|
||||
|
||||
Weitere Informationen finden Sie im [Installationshandbuch](https://fess.codelibs.org/14.17/install/index.html).
|
||||
|
||||
### Docker
|
||||
|
||||
Wir bieten Docker-Images auf [ghcr.io](https://github.com/orgs/codelibs/packages) an. Wir stellen auch eine Docker Compose (YAML)-Datei in [diesem Repository](https://github.com/codelibs/docker-fess/tree/master/compose) bereit.
|
||||
|
||||
### Browser-Benutzeroberfläche
|
||||
|
||||
- Suchoberfläche: http://localhost:8080/
|
||||
|
||||

|
||||
|
||||
- Administrationsoberfläche: http://localhost:8080/admin/ (Standard-Benutzername/Passwort ist admin/admin)
|
||||
|
||||

|
||||
|
||||
Sie können in der Administrationsoberfläche (Web, Datei, Datenspeicher) Crawling-Ziele in den Crawler-Konfigurationsseiten registrieren und den Crawler manuell auf der [Scheduler-Seite](https://fess.codelibs.org/14.17/admin/scheduler-guide.html) starten.
|
||||
|
||||
## Migration von einem anderen Suchanbieter
|
||||
|
||||
Bitte lesen Sie [MIGRATION.md](MIGRATION.md).
|
||||
|
||||
## Datenspeicher
|
||||
|
||||
Derzeit unterstützt Fess das Crawlen der folgenden [Speicherorte und APIs](https://fess.codelibs.org/14.17/admin/dataconfig-guide.html):
|
||||
|
||||
- [Confluence/Jira](https://github.com/codelibs/fess-ds-atlassian)
|
||||
- [Box](https://github.com/codelibs/fess-ds-box)
|
||||
- [CSV](https://github.com/codelibs/fess-ds-csv)
|
||||
- [Datenbank](https://github.com/codelibs/fess-ds-db)
|
||||
- [Dropbox](https://github.com/codelibs/fess-ds-dropbox)
|
||||
- [Elasticsearch](https://github.com/codelibs/fess-ds-elasticsearch)
|
||||
- [Git](https://github.com/codelibs/fess-ds-git)
|
||||
- [Gitbucket](https://github.com/codelibs/fess-ds-gitbucket)
|
||||
- [G Suite](https://github.com/codelibs/fess-ds-gsuite)
|
||||
- [JSON](https://github.com/codelibs/fess-ds-json)
|
||||
- [Office 365](https://github.com/codelibs/fess-ds-office365)
|
||||
- [S3](https://github.com/codelibs/fess-ds-s3)
|
||||
- [Salesforce](https://github.com/codelibs/fess-ds-salesforce)
|
||||
- [SharePoint](https://github.com/codelibs/fess-ds-sharepoint)
|
||||
- [Slack](https://github.com/codelibs/fess-ds-slack)
|
||||
|
||||
## Themen
|
||||
|
||||
- [Simple](https://github.com/codelibs/fess-theme-simple)
|
||||
- [Classic](https://github.com/codelibs/fess-theme-classic)
|
||||
|
||||
## Ingest
|
||||
|
||||
- [Logger](https://github.com/codelibs/fess-ingest-logger)
|
||||
- [NDJSON](https://github.com/codelibs/fess-ingest-ndjson)
|
||||
|
||||
## Skript
|
||||
|
||||
- [Groovy](https://github.com/codelibs/fess-script-groovy)
|
||||
- [OGNL](https://github.com/codelibs/fess-script-ognl)
|
||||
|
||||
## Entwicklungsinformationen
|
||||
|
||||
### Quellcode abrufen
|
||||
|
||||
1. Klonen Sie das Fess-Repository:
|
||||
```
|
||||
$ cd ~/workspace
|
||||
$ git clone https://github.com/codelibs/fess.git
|
||||
```
|
||||
|
||||
2. Importieren Sie das geklonte Repository als ein [Maven](https://maven.apache.org/) Projekt in [Eclipse](https://www.eclipse.org/eclipseide/) oder einer anderen IDE.
|
||||
|
||||
### Einrichten von OpenSearch-Plugins
|
||||
|
||||
Führen Sie antrun:run aus, um Plugins in das Plugins-Verzeichnis herunterzuladen:
|
||||
|
||||
$ mvn antrun:run
|
||||
|
||||
### Fess ausführen
|
||||
|
||||
Führen Sie `org.codelibs.fess.FessBoot` in Ihrer IDE aus oder debuggen Sie es und greifen Sie dann auf http://localhost:8080/ zu.
|
||||
|
||||
### Paket erstellen
|
||||
|
||||
Führen Sie das `package`-Ziel aus, und dann wird die Release-Datei im Verzeichnis target/releases erstellt.
|
||||
|
||||
$ mvn package
|
||||
$ mvn rpm:rpm # .rpm-Paket
|
||||
$ mvn jdeb:jdeb # .deb-Paket
|
||||
|
||||
### Quellcode generieren
|
||||
|
||||
$ mvn dbflute:download # (einmaliger Befehl)
|
||||
$ mvn dbflute:freegen
|
||||
$ mvn license:format
|
||||
|
||||
### Integrationstests
|
||||
|
||||
Starten Sie den Fess-Server und führen Sie den folgenden Befehl aus:
|
||||
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201"
|
||||
|
||||
Um einen einzelnen Testfall auszuführen, können Sie verwenden:
|
||||
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201" -Dtest=SearchApiTests
|
||||
|
||||
### In Ihre Sprache übersetzen
|
||||
|
||||
Fess ist eine internationalisierte Software.
|
||||
|
||||
Wenn Sie Labels/Nachrichten für Ihre Sprache hinzufügen möchten, übersetzen Sie bitte die Eigenschaftendatei und benennen Sie sie in fess\_\*\_[lang].properties um.
|
||||
|
||||
* [fess_label_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_label_en.properties)
|
||||
* [fess_message_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_message_en.properties)
|
||||
|
||||
Für den Such-/Index-Analyser: Wenn [doc.json](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_indices/fess/doc.json) lang\_[lang] für Ihre Sprache enthält, passen Sie bitte den Analyser für Ihre Sprache an. Weitere Informationen zu Analysatoren finden Sie in der [OpenSearch-Dokumentation](https://opensearch.org/docs/latest/analyzers/search-analyzers/).
|
||||
|
||||
Wir begrüßen Pull-Requests für Ihre Sprache.
|
||||
|
||||
## Unterstützt von
|
||||
|
||||
* [Lasta Di](https://github.com/lastaflute/lasta-di "Lasta Di"): DI-Container
|
||||
* [LastaFlute](https://github.com/lastaflute/lastaflute "LastaFlute"): Web-Framework
|
||||
* [Lasta Job](https://github.com/lastaflute/lasta-job "Lasta Job"): Job-Scheduler
|
||||
* [Fess Crawler](https://github.com/codelibs/fess-crawler "Fess Crawler"): Web-Crawler
|
||||
* [OpenSearch](https://opensearch.org/ "OpenSearch"): Suchmaschine
|
159
docs/es/README.md
Normal file
159
docs/es/README.md
Normal file
|
@ -0,0 +1,159 @@
|
|||
# Fess: Servidor de Búsqueda Empresarial
|
||||
[](https://github.com/codelibs/fess/actions/workflows/maven.yml)
|
||||
[](https://maven-badges.herokuapp.com/maven-central/org.codelibs.fess/fess)
|
||||
[](https://github.com/gitbucket/gitbucket/blob/master/LICENSE)
|
||||
|
||||
## Resumen
|
||||
|
||||
Fess es un servidor de búsqueda empresarial muy potente y fácil de desplegar. Puedes instalar y ejecutar Fess rápidamente en cualquier plataforma que sea capaz de ejecutar el entorno de ejecución de Java (Java Runtime Environment). Fess se distribuye bajo la [Licencia Apache 2.0](LICENSE).
|
||||
|
||||
Fess está basado en [OpenSearch](https://github.com/opensearch-project/OpenSearch), pero no se requiere conocimiento o experiencia en OpenSearch. Fess proporciona una GUI de administración fácil de usar para configurar el sistema a través de tu navegador.
|
||||
Fess también incluye un rastreador (crawler), que puede rastrear documentos en un [servidor web](https://fess.codelibs.org/14.17/admin/webconfig-guide.html), [sistema de archivos](https://fess.codelibs.org/14.17/admin/fileconfig-guide.html), o [almacenamiento de datos](https://fess.codelibs.org/14.17/admin/dataconfig-guide.html) (como un archivo CSV o base de datos). Se admiten muchos formatos de archivos, incluidos (pero no limitados a): Microsoft Office, PDF y zip.
|
||||
|
||||
*[Fess Site Search](https://github.com/codelibs/fess-site-search)* es una alternativa gratuita a [Google Site Search](https://enterprise.google.com/search/products/gss.html). Para más detalles, consulta la [documentación de FSS JS Generator](https://fss-generator.codelibs.org/docs/manual).
|
||||
|
||||
## Sitio web
|
||||
|
||||
[fess.codelibs.org](https://fess.codelibs.org/)
|
||||
|
||||
## Problemas/Preguntas
|
||||
|
||||
[discuss.codelibs.org](https://discuss.codelibs.org/c/FessEN/)
|
||||
|
||||
## Cómo Empezar
|
||||
|
||||
Hay dos maneras de probar Fess. La primera es descargar e instalarlo tú mismo. La segunda es usar [Docker](https://www.docker.com/products/docker-engine).
|
||||
|
||||
### Descargar e Instalar/Ejecutar
|
||||
|
||||
Fess 14.17 ya está disponible y se puede descargar en la [página de lanzamientos](https://github.com/codelibs/fess/releases "download"). Las descargas están disponibles en 3 formatos: deb, rpm y zip.
|
||||
|
||||
Los siguientes comandos muestran cómo usar la descarga en formato zip:
|
||||
|
||||
$ unzip fess-14.17.x.zip
|
||||
$ cd fess-14.17.x
|
||||
$ ./bin/fess
|
||||
|
||||
Para más detalles, consulta la [Guía de Instalación](https://fess.codelibs.org/14.17/install/index.html).
|
||||
|
||||
### Docker
|
||||
|
||||
Proporcionamos imágenes de Docker en [ghcr.io](https://github.com/orgs/codelibs/packages). También proporcionamos un archivo Docker Compose (YAML) en [este repositorio](https://github.com/codelibs/docker-fess/tree/master/compose).
|
||||
|
||||
### Interfaz de Usuario en el Navegador
|
||||
|
||||
- Interfaz de búsqueda: http://localhost:8080/
|
||||
|
||||

|
||||
|
||||
- Interfaz de administración: http://localhost:8080/admin/ (el nombre de usuario/contraseña por defecto es admin/admin)
|
||||
|
||||

|
||||
|
||||
Puedes registrar los objetivos de rastreo en la interfaz de administración en las páginas de configuración del rastreador (Web, Archivo, Almacenamiento de Datos), y luego iniciar el rastreador manualmente en la [página del Programador](https://fess.codelibs.org/14.17/admin/scheduler-guide.html).
|
||||
|
||||
## Migración desde otro proveedor de búsqueda
|
||||
|
||||
Consulta [MIGRATION.md](MIGRATION.md).
|
||||
|
||||
## Almacenamiento de Datos
|
||||
|
||||
Actualmente, Fess admite el rastreo de las siguientes [ubicaciones de almacenamiento y APIs](https://fess.codelibs.org/14.17/admin/dataconfig-guide.html):
|
||||
|
||||
- [Confluence/Jira](https://github.com/codelibs/fess-ds-atlassian)
|
||||
- [Box](https://github.com/codelibs/fess-ds-box)
|
||||
- [CSV](https://github.com/codelibs/fess-ds-csv)
|
||||
- [Database](https://github.com/codelibs/fess-ds-db)
|
||||
- [Dropbox](https://github.com/codelibs/fess-ds-dropbox)
|
||||
- [Elasticsearch](https://github.com/codelibs/fess-ds-elasticsearch)
|
||||
- [Git](https://github.com/codelibs/fess-ds-git)
|
||||
- [Gitbucket](https://github.com/codelibs/fess-ds-gitbucket)
|
||||
- [G Suite](https://github.com/codelibs/fess-ds-gsuite)
|
||||
- [JSON](https://github.com/codelibs/fess-ds-json)
|
||||
- [Office 365](https://github.com/codelibs/fess-ds-office365)
|
||||
- [S3](https://github.com/codelibs/fess-ds-s3)
|
||||
- [Salesforce](https://github.com/codelibs/fess-ds-salesforce)
|
||||
- [SharePoint](https://github.com/codelibs/fess-ds-sharepoint)
|
||||
- [Slack](https://github.com/codelibs/fess-ds-slack)
|
||||
|
||||
## Tema
|
||||
|
||||
- [Simple](https://github.com/codelibs/fess-theme-simple)
|
||||
- [Classic](https://github.com/codelibs/fess-theme-classic)
|
||||
|
||||
## Ingesta
|
||||
|
||||
- [Logger](https://github.com/codelibs/fess-ingest-logger)
|
||||
- [NDJSON](https://github.com/codelibs/fess-ingest-ndjson)
|
||||
|
||||
## Script
|
||||
|
||||
- [Groovy](https://github.com/codelibs/fess-script-groovy)
|
||||
- [OGNL](https://github.com/codelibs/fess-script-ognl)
|
||||
|
||||
## Información de Desarrollo
|
||||
|
||||
### Obtener el Código Fuente
|
||||
|
||||
1. Clona el repositorio de Fess:
|
||||
```
|
||||
$ cd ~/workspace
|
||||
$ git clone https://github.com/codelibs/fess.git
|
||||
```
|
||||
|
||||
2. Importa el repositorio clonado como un proyecto [Maven](https://maven.apache.org/) en [Eclipse](https://www.eclipse.org/eclipseide/) u otro IDE.
|
||||
|
||||
### Configuración de Plugins para OpenSearch
|
||||
|
||||
Ejecuta antrun:run para descargar los plugins en el directorio de plugins:
|
||||
|
||||
$ mvn antrun:run
|
||||
|
||||
### Ejecutar Fess
|
||||
|
||||
Ejecuta o depura `org.codelibs.fess.FessBoot` en tu IDE, y luego accede a http://localhost:8080/
|
||||
|
||||
### Construir el Paquete
|
||||
|
||||
Ejecuta el objetivo `package` y luego se creará el archivo de lanzamiento en target/releases.
|
||||
|
||||
$ mvn package
|
||||
$ mvn rpm:rpm # Paquete .rpm
|
||||
$ mvn jdeb:jdeb # Paquete .deb
|
||||
|
||||
### Generar Código Fuente
|
||||
|
||||
$ mvn dbflute:download # (comando ejecutado una sola vez)
|
||||
$ mvn dbflute:freegen
|
||||
$ mvn license:format
|
||||
|
||||
### Pruebas de Integración
|
||||
|
||||
Inicia el servidor Fess y ejecuta el siguiente comando:
|
||||
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201"
|
||||
|
||||
Para ejecutar un único caso de prueba, puedes usar:
|
||||
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201" -Dtest=SearchApiTests
|
||||
|
||||
### Traducir a Tu Idioma
|
||||
|
||||
Fess es un software internacionalizado.
|
||||
|
||||
Si deseas agregar etiquetas/mensajes para tu idioma, por favor traduce el archivo de propiedades y renómbralo a fess\_\*\_[lang].properties.
|
||||
|
||||
* [fess_label_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_label_en.properties)
|
||||
* [fess_message_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_message_en.properties)
|
||||
|
||||
Para el analizador de búsqueda/índices, si [doc.json](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_indices/fess/doc.json) contiene lang\_[lang] para tu idioma, por favor modifica el analizador para tu idioma. Para más detalles sobre los analizadores, consulta la [documentación de OpenSearch](https://opensearch.org/docs/latest/analyzers/search-analyzers/).
|
||||
|
||||
Damos la bienvenida a pull requests para tu idioma.
|
||||
|
||||
## Impulsado por
|
||||
|
||||
* [Lasta Di](https://github.com/lastaflute/lasta-di "Lasta Di"): Contenedor DI
|
||||
* [LastaFlute](https://github.com/lastaflute/lastaflute "LastaFlute"): Framework Web
|
||||
* [Lasta Job](https://github.com/lastaflute/lasta-job "Lasta Job"): Programador de Tareas
|
||||
* [Fess Crawler](https://github.com/codelibs/fess-crawler "Fess Crawler"): Rastreador Web
|
||||
* [OpenSearch](https://opensearch.org/ "OpenSearch"): Motor de Búsqueda
|
169
docs/fr/README.md
Normal file
169
docs/fr/README.md
Normal file
|
@ -0,0 +1,169 @@
|
|||
# Fess : Serveur de recherche pour entreprises
|
||||
[](https://github.com/codelibs/fess/actions/workflows/maven.yml)
|
||||
[](https://maven-badges.herokuapp.com/maven-central/org.codelibs.fess/fess)
|
||||
[](https://github.com/gitbucket/gitbucket/blob/master/LICENSE)
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
Fess est un serveur de recherche très puissant et facilement déployable pour les entreprises. Vous pouvez rapidement installer et exécuter Fess sur toute plateforme où vous pouvez exécuter l'environnement d'exécution Java. Fess est fourni sous la licence [Apache License 2.0](LICENSE).
|
||||
|
||||
Fess est basé sur [OpenSearch](https://github.com/opensearch-project/OpenSearch), mais aucune connaissance ni expérience d'OpenSearch n'est _nécessaire_. Fess fournit une interface d'administration facile à utiliser pour configurer le système via votre navigateur.
|
||||
Fess comprend également un Crawler, capable d'explorer les documents sur un [serveur web](https://fess.codelibs.org/14.17/admin/webconfig-guide.html), un [système de fichiers](https://fess.codelibs.org/14.17/admin/fileconfig-guide.html), ou un [Data Store](https://fess.codelibs.org/14.17/admin/dataconfig-guide.html) (comme un fichier CSV ou une base de données). De nombreux formats de fichiers sont pris en charge, y compris (mais sans s'y limiter) : Microsoft Office, PDF, et zip.
|
||||
|
||||
*[Fess Site Search](https://github.com/codelibs/fess-site-search)* est une alternative gratuite à [Google Site Search](https://enterprise.google.com/search/products/gss.html). Pour plus de détails, consultez la [documentation FSS JS Generator](https://fss-generator.codelibs.org/docs/manual).
|
||||
|
||||
## Site Web
|
||||
|
||||
[fess.codelibs.org](https://fess.codelibs.org/)
|
||||
|
||||
## Problèmes/Questions
|
||||
|
||||
[discuss.codelibs.org](https://discuss.codelibs.org/c/FessEN/)
|
||||
|
||||
## Démarrage rapide
|
||||
|
||||
Il existe 2 manières d'essayer Fess. La première est de le télécharger et l'installer vous-même. La seconde est d'utiliser [Docker](https://www.docker.com/products/docker-engine).
|
||||
|
||||
### Télécharger et Installer/Exécuter
|
||||
|
||||
Fess 14.17 est désormais disponible et peut être téléchargé sur la [page de Releases](https://github.com/codelibs/fess/releases "download"). Les téléchargements sont disponibles en 3 formats : deb, rpm, zip.
|
||||
|
||||
Les commandes suivantes montrent comment utiliser le téléchargement zip :
|
||||
|
||||
$ unzip fess-14.17.x.zip
|
||||
$ cd fess-14.17.x
|
||||
$ ./bin/fess
|
||||
|
||||
Pour plus de détails, consultez le [guide d'installation](https://fess.codelibs.org/14.17/install/index.html).
|
||||
|
||||
### Docker
|
||||
|
||||
Nous fournissons des images Docker sur [ghcr.io](https://github.com/orgs/codelibs/packages). Nous fournissons également un fichier Docker Compose (YAML) dans [ce dépôt](https://github.com/codelibs/docker-fess/tree/master/compose).
|
||||
|
||||
### Interface Web
|
||||
|
||||
- Interface de recherche : http://localhost:8080/
|
||||
|
||||

|
||||
|
||||
- Interface d'administration : http://localhost:8080/admin/ (nom d'utilisateur/mot de passe par défaut : admin/admin)
|
||||
|
||||

|
||||
|
||||
Vous pouvez enregistrer des cibles à explorer dans l'interface d'administration sur les pages de configuration des crawlers (Web, Fichiers, Data Store), puis démarrer manuellement le Crawler sur la [page du Planificateur](https://fess.codelibs.org/14.17/admin/scheduler-guide.html).
|
||||
|
||||
## Migration depuis un autre fournisseur de recherche
|
||||
|
||||
Veuillez consulter [MIGRATION.md](MIGRATION.md).
|
||||
|
||||
## Data Store
|
||||
|
||||
Actuellement, Fess prend en charge le parcours des [emplacements de stockage et API](https://fess.codelibs.org/14.17/admin/dataconfig-guide.html) suivants :
|
||||
|
||||
- [Confluence/Jira](https://github.com/codelibs/fess-ds-atlassian)
|
||||
- [Box](https://github.com/codelibs/fess-ds-box)
|
||||
- [CSV](https://github.com/codelibs/fess-ds-csv)
|
||||
- [Base de données](https://github.com/codelibs/fess-ds-db)
|
||||
- [Dropbox](https://github.com/codelibs/fess-ds-dropbox)
|
||||
- [Elasticsearch](https://github.com/codelibs/fess-ds-elasticsearch)
|
||||
- [Git](https://github.com/codelibs/fess-ds-git)
|
||||
- [Gitbucket](https://github.com/codelibs/fess-ds-gitbucket)
|
||||
- [G Suite](https://github.com/codelibs/fess-ds-gsuite)
|
||||
- [JSON](https://github.com/codelibs/fess-ds-json)
|
||||
- [Office 365](https://github.com/codelibs/fess-ds-office365)
|
||||
- [S3](https://github.com/codelibs/fess-ds-s3)
|
||||
- [Salesforce](https://github.com/codelibs/fess-ds-salesforce)
|
||||
- [SharePoint](https://github.com/codelibs/fess-ds-sharepoint)
|
||||
- [Slack](https://github.com/codelibs/fess-ds-slack)
|
||||
|
||||
## Thèmes
|
||||
|
||||
- [Simple](https://github.com/codelibs/fess-theme-simple)
|
||||
- [Classique](https://github.com/codelibs/fess-theme-classic)
|
||||
|
||||
## Ingest
|
||||
|
||||
- [Logger](https://github.com/codelibs/fess-ingest-logger)
|
||||
- [NDJSON](https://github.com/codelibs/fess-ingest-ndjson)
|
||||
|
||||
## Scripts
|
||||
|
||||
- [Groovy](https://github.com/codelibs/fess-script-groovy)
|
||||
- [OGNL](https://github.com/codelibs/fess-script-ognl)
|
||||
|
||||
## Localisation
|
||||
|
||||
### Japonais
|
||||
|
||||
- [Site Web](https://fess.codelibs.org/ja/)
|
||||
|
||||
### Coréen
|
||||
|
||||
- [Forum](https://github.com/nocode2k/fess-kr-forum)
|
||||
|
||||
## Informations de Développement
|
||||
|
||||
### Récupérer le Code Source
|
||||
|
||||
1. Clonez le dépôt Fess :
|
||||
```
|
||||
$ cd ~/workspace
|
||||
$ git clone https://github.com/codelibs/fess.git
|
||||
```
|
||||
|
||||
2. Importez le dépôt cloné en tant que projet [Maven](https://maven.apache.org/) sur [Eclipse](https://www.eclipse.org/eclipseide/) ou un autre IDE.
|
||||
|
||||
### Configuration pour les Plugins OpenSearch
|
||||
|
||||
Exécutez antrun:run pour télécharger les plugins dans le répertoire plugins :
|
||||
|
||||
$ mvn antrun:run
|
||||
|
||||
### Exécuter Fess
|
||||
|
||||
Exécutez ou déboguez org.codelibs.fess.FessBoot dans votre IDE, puis accédez à http://localhost:8080/
|
||||
|
||||
### Créer un Package
|
||||
|
||||
Exécutez la commande `package` et le fichier de release sera créé dans target/releases.
|
||||
|
||||
$ mvn package
|
||||
$ mvn rpm:rpm # package .rpm
|
||||
$ mvn jdeb:jdeb # package .deb
|
||||
|
||||
### Générer le Code Source
|
||||
|
||||
$ mvn dbflute:download # (commande unique)
|
||||
$ mvn dbflute:freegen
|
||||
$ mvn license:format
|
||||
|
||||
### Tests d'Intégration
|
||||
|
||||
Lancez le serveur Fess et exécutez la commande suivante :
|
||||
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201"
|
||||
|
||||
Pour exécuter un seul cas de test, vous pouvez utiliser :
|
||||
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201" -Dtest=SearchApiTests
|
||||
|
||||
### Traduire dans Votre Langue
|
||||
|
||||
Fess est un logiciel internationalisé.
|
||||
|
||||
Si vous souhaitez ajouter des libellés/messages pour votre langue, veuillez traduire le fichier de propriétés et le renommer en fess\_\*\_[lang].properties.
|
||||
|
||||
* [fess_label_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_label_en.properties)
|
||||
* [fess_message_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_message_en.properties)
|
||||
|
||||
Pour l'analyseur de recherche/index, si [doc.json](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_indices/fess/doc.json) contient lang\_[lang] pour votre langue, veuillez modifier l'analyseur pour votre langue. Pour plus de détails sur les analyseurs, consultez la [documentation OpenSearch](https://opensearch.org/docs/latest/analyzers/search-analyzers/).
|
||||
|
||||
Nous accueillons les pull requests pour votre langue.
|
||||
|
||||
## Alimenté par
|
||||
|
||||
* [Lasta Di](https://github.com/lastaflute/lasta-di "Lasta Di") : Conteneur DI
|
||||
* [LastaFlute](https://github.com/lastaflute/lastaflute "LastaFlute") : Framework Web
|
||||
* [Lasta Job](https://github.com/lastaflute/lasta-job "Lasta Job") : Planificateur de tâches
|
||||
* [Fess Crawler](https://github.com/codelibs/fess-crawler "Fess Crawler") : Crawler Web
|
||||
* [OpenSearch](https://opensearch.org/ "OpenSearch") : Moteur de recherche
|
158
docs/ja/README.md
Normal file
158
docs/ja/README.md
Normal file
|
@ -0,0 +1,158 @@
|
|||
# Fess: エンタープライズ検索サーバー
|
||||
[](https://github.com/codelibs/fess/actions/workflows/maven.yml)
|
||||
[](https://maven-badges.herokuapp.com/maven-central/org.codelibs.fess/fess)
|
||||
[](https://github.com/gitbucket/gitbucket/blob/master/LICENSE)
|
||||
|
||||
## 概要
|
||||
|
||||
Fessは非常に強力で、簡単に導入できるエンタープライズ検索サーバーです。FessはJavaランタイム環境が動作する任意のプラットフォーム上で簡単にインストールして実行できます。Fessは[Apache License 2.0](LICENSE)の下で提供されています。
|
||||
|
||||
Fessは[OpenSearch](https://github.com/opensearch-project/OpenSearch)をベースにしていますが、OpenSearchに関する知識や経験は**不要**です。Fessは、ブラウザを介してシステムを簡単に設定できる管理者向けのGUIを提供しています。Fessにはクローラも含まれており、[Webサーバー](https://fess.codelibs.org/14.17/admin/webconfig-guide.html)、[ファイルシステム](https://fess.codelibs.org/14.17/admin/fileconfig-guide.html)、または[データストア](https://fess.codelibs.org/14.17/admin/dataconfig-guide.html)(CSVやデータベースなど)のドキュメントをクロールできます。Microsoft Office、PDF、zipなど、多くのファイル形式に対応しています。
|
||||
|
||||
*[Fess Site Search](https://github.com/codelibs/fess-site-search)*は、[Google Site Search](https://enterprise.google.com/search/products/gss.html)の無料代替です。詳細については、[FSS JS Generatorのドキュメント](https://fss-generator.codelibs.org/docs/manual)を参照してください。
|
||||
|
||||
## 公式サイト
|
||||
|
||||
[fess.codelibs.org](https://fess.codelibs.org/)
|
||||
|
||||
## 問題や質問
|
||||
|
||||
[discuss.codelibs.org](https://discuss.codelibs.org/c/FessEN/)
|
||||
|
||||
## はじめに
|
||||
|
||||
Fessを試す方法は2つあります。1つは自分でダウンロードしてインストールする方法、もう1つは[Docker](https://www.docker.com/products/docker-engine)を使用する方法です。
|
||||
|
||||
### ダウンロードおよびインストール/実行
|
||||
|
||||
Fess 14.17が利用可能で、[リリースページ](https://github.com/codelibs/fess/releases "download")からダウンロードできます。ダウンロードには、deb、rpm、zipの3つの形式があります。
|
||||
|
||||
以下のコマンドは、zipファイルを使用する例です:
|
||||
|
||||
$ unzip fess-14.17.x.zip
|
||||
$ cd fess-14.17.x
|
||||
$ ./bin/fess
|
||||
|
||||
詳細については、[インストールガイド](https://fess.codelibs.org/14.17/install/index.html)を参照してください。
|
||||
|
||||
### Docker
|
||||
|
||||
[ghcr.io](https://github.com/orgs/codelibs/packages)にDockerイメージを提供しています。また、このリポジトリにはDocker Compose(YAML)ファイルも用意されています。[こちらのリポジトリ](https://github.com/codelibs/docker-fess/tree/master/compose)で確認できます。
|
||||
|
||||
### ブラウザUI
|
||||
|
||||
- 検索UI: http://localhost:8080/
|
||||
|
||||

|
||||
|
||||
- 管理者UI: http://localhost:8080/admin/ (デフォルトのユーザー名/パスワードはadmin/adminです)
|
||||
|
||||

|
||||
|
||||
管理者UIでは、(Web、ファイル、データストア)クローラの設定ページでクロール対象を登録し、[スケジューラページ](https://fess.codelibs.org/14.17/admin/scheduler-guide.html)から手動でクローラを開始できます。
|
||||
|
||||
## 他の検索プロバイダーからの移行
|
||||
|
||||
[MIGRATION.md](MIGRATION.md)を参照してください。
|
||||
|
||||
## データストア
|
||||
|
||||
現在、Fessは以下の[ストレージロケーションとAPI](https://fess.codelibs.org/14.17/admin/dataconfig-guide.html)のクロールをサポートしています:
|
||||
|
||||
- [Confluence/Jira](https://github.com/codelibs/fess-ds-atlassian)
|
||||
- [Box](https://github.com/codelibs/fess-ds-box)
|
||||
- [CSV](https://github.com/codelibs/fess-ds-csv)
|
||||
- [Database](https://github.com/codelibs/fess-ds-db)
|
||||
- [Dropbox](https://github.com/codelibs/fess-ds-dropbox)
|
||||
- [Elasticsearch](https://github.com/codelibs/fess-ds-elasticsearch)
|
||||
- [Git](https://github.com/codelibs/fess-ds-git)
|
||||
- [Gitbucket](https://github.com/codelibs/fess-ds-gitbucket)
|
||||
- [G Suite](https://github.com/codelibs/fess-ds-gsuite)
|
||||
- [JSON](https://github.com/codelibs/fess-ds-json)
|
||||
- [Office 365](https://github.com/codelibs/fess-ds-office365)
|
||||
- [S3](https://github.com/codelibs/fess-ds-s3)
|
||||
- [Salesforce](https://github.com/codelibs/fess-ds-salesforce)
|
||||
- [SharePoint](https://github.com/codelibs/fess-ds-sharepoint)
|
||||
- [Slack](https://github.com/codelibs/fess-ds-slack)
|
||||
|
||||
## テーマ
|
||||
|
||||
- [Simple](https://github.com/codelibs/fess-theme-simple)
|
||||
- [Classic](https://github.com/codelibs/fess-theme-classic)
|
||||
|
||||
## Ingest
|
||||
|
||||
- [Logger](https://github.com/codelibs/fess-ingest-logger)
|
||||
- [NDJSON](https://github.com/codelibs/fess-ingest-ndjson)
|
||||
|
||||
## スクリプト
|
||||
|
||||
- [Groovy](https://github.com/codelibs/fess-script-groovy)
|
||||
- [OGNL](https://github.com/codelibs/fess-script-ognl)
|
||||
|
||||
## 開発情報
|
||||
|
||||
### ソースコードの取得
|
||||
|
||||
1. Fessのリポジトリをクローンします:
|
||||
```
|
||||
$ cd ~/workspace
|
||||
$ git clone https://github.com/codelibs/fess.git
|
||||
```
|
||||
|
||||
2. クローンしたリポジトリを、[Maven](https://maven.apache.org/)プロジェクトとして[Eclipse](https://www.eclipse.org/eclipseide/)や他のIDEにインポートします。
|
||||
|
||||
### OpenSearchプラグインのセットアップ
|
||||
|
||||
antrun:runを実行して、プラグインをpluginsディレクトリにダウンロードします:
|
||||
|
||||
$ mvn antrun:run
|
||||
|
||||
### Fessの実行
|
||||
|
||||
IDE上で`org.codelibs.fess.FessBoot`を実行またはデバッグし、http://localhost:8080/ にアクセスします。
|
||||
|
||||
### パッケージのビルド
|
||||
|
||||
`package`ゴールを実行すると、releaseファイルがtarget/releasesディレクトリに作成されます。
|
||||
|
||||
$ mvn package
|
||||
$ mvn rpm:rpm # .rpmパッケージ
|
||||
$ mvn jdeb:jdeb # .debパッケージ
|
||||
|
||||
### ソースコードの生成
|
||||
|
||||
$ mvn dbflute:download # (一度だけ実行)
|
||||
$ mvn dbflute:freegen
|
||||
$ mvn license:format
|
||||
|
||||
### 統合テスト
|
||||
|
||||
Fessサーバーを起動し、以下のコマンドを実行します:
|
||||
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201"
|
||||
|
||||
単一のテストケースを実行するには、以下のコマンドを使用できます:
|
||||
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201" -Dtest=SearchApiTests
|
||||
|
||||
### あなたの言語への翻訳
|
||||
|
||||
Fessは国際化対応ソフトウェアです。
|
||||
|
||||
ラベルやメッセージをあなたの言語に追加したい場合、プロパティファイルを翻訳してから`fess\_\*\_[lang].properties`という名前に変更してください。
|
||||
|
||||
* [fess_label_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_label_en.properties)
|
||||
* [fess_message_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_message_en.properties)
|
||||
|
||||
検索/インデックスアナライザーの設定については、[doc.json](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_indices/fess/doc.json)に言語別の`lang\_[lang]`が含まれているか確認し、その言語に合わせてアナライザーを修正してください。アナライザーに関する詳細は、[OpenSearchのドキュメント](https://opensearch.org/docs/latest/analyzers/search-analyzers/)を参照してください。
|
||||
|
||||
私たちは、あなたの言語でのプルリクエストを歓迎します。
|
||||
|
||||
## Powered By
|
||||
|
||||
* [Lasta Di](https://github.com/lastaflute/lasta-di "Lasta Di"): DIコンテナ
|
||||
* [LastaFlute](https://github.com/lastaflute/lastaflute "LastaFlute"): Webフレームワーク
|
||||
* [Lasta Job](https://github.com/lastaflute/lasta-job "Lasta Job"): ジョブスケジューラ
|
||||
* [Fess Crawler](https://github.com/codelibs/fess-crawler "Fess Crawler"): Webクローラ
|
||||
* [OpenSearch](https://opensearch.org/ "OpenSearch"): 検索エンジン
|
158
docs/ko/README.md
Normal file
158
docs/ko/README.md
Normal file
|
@ -0,0 +1,158 @@
|
|||
# Fess: 엔터프라이즈 검색 서버
|
||||
[](https://github.com/codelibs/fess/actions/workflows/maven.yml)
|
||||
[](https://maven-badges.herokuapp.com/maven-central/org.codelibs.fess/fess)
|
||||
[](https://github.com/gitbucket/gitbucket/blob/master/LICENSE)
|
||||
|
||||
## 개요
|
||||
|
||||
Fess는 매우 강력하고 쉽게 배포 가능한 엔터프라이즈 검색 서버입니다. 자바 런타임 환경(Java Runtime Environment)을 실행할 수 있는 모든 플랫폼에서 Fess를 빠르게 설치하고 실행할 수 있습니다. Fess는 [Apache License 2.0](LICENSE)에 따라 제공됩니다.
|
||||
|
||||
Fess는 [OpenSearch](https://github.com/opensearch-project/OpenSearch)를 기반으로 하지만, OpenSearch에 대한 지식이나 경험은 필요하지 않습니다. Fess는 브라우저를 통해 시스템을 구성할 수 있는 사용하기 쉬운 관리 GUI를 제공합니다. 또한 Fess는 [웹 서버](https://fess.codelibs.org/14.17/admin/webconfig-guide.html), [파일 시스템](https://fess.codelibs.org/14.17/admin/fileconfig-guide.html), 또는 [데이터 저장소](https://fess.codelibs.org/14.17/admin/dataconfig-guide.html)에서 문서를 크롤링할 수 있는 크롤러도 포함하고 있습니다(CSV 또는 데이터베이스와 같은). Microsoft Office, PDF, zip을 포함한 다양한 파일 형식을 지원합니다.
|
||||
|
||||
*[Fess 사이트 검색](https://github.com/codelibs/fess-site-search)*은 [Google 사이트 검색](https://enterprise.google.com/search/products/gss.html)의 무료 대안입니다. 자세한 내용은 [FSS JS 생성기 문서](https://fss-generator.codelibs.org/docs/manual)를 참조하십시오.
|
||||
|
||||
## 웹사이트
|
||||
|
||||
[fess.codelibs.org](https://fess.codelibs.org/)
|
||||
|
||||
## 문제/질문
|
||||
|
||||
[discuss.codelibs.org](https://discuss.codelibs.org/c/FessEN/)
|
||||
|
||||
## 시작하기
|
||||
|
||||
Fess를 사용해보는 방법은 두 가지가 있습니다. 첫 번째는 직접 다운로드하여 설치하는 방법이며, 두 번째는 [Docker](https://www.docker.com/products/docker-engine)를 사용하는 방법입니다.
|
||||
|
||||
### 다운로드 및 설치/실행
|
||||
|
||||
Fess 14.17이 현재 사용 가능하며, [릴리스 페이지](https://github.com/codelibs/fess/releases "download")에서 다운로드할 수 있습니다. 다운로드는 deb, rpm, zip의 세 가지 형식으로 제공됩니다.
|
||||
|
||||
다음 명령은 zip 다운로드 사용 방법을 보여줍니다:
|
||||
|
||||
$ unzip fess-14.17.x.zip
|
||||
$ cd fess-14.17.x
|
||||
$ ./bin/fess
|
||||
|
||||
자세한 내용은 [설치 가이드](https://fess.codelibs.org/14.17/install/index.html)를 참조하십시오.
|
||||
|
||||
### Docker
|
||||
|
||||
우리는 [ghcr.io](https://github.com/orgs/codelibs/packages)에서 Docker 이미지를 제공합니다. 또한 [이 리포지토리](https://github.com/codelibs/docker-fess/tree/master/compose)에 Docker Compose (YAML) 파일도 제공합니다.
|
||||
|
||||
### 브라우저 UI
|
||||
|
||||
- 검색 UI: http://localhost:8080/
|
||||
|
||||

|
||||
|
||||
- 관리자 UI: http://localhost:8080/admin/ (기본 사용자 이름/비밀번호는 admin/admin입니다)
|
||||
|
||||

|
||||
|
||||
관리자 UI에서는 (웹, 파일, 데이터 저장소) 크롤러 구성 페이지에서 크롤링 대상을 등록한 다음, [스케줄러 페이지](https://fess.codelibs.org/14.17/admin/scheduler-guide.html)에서 크롤러를 수동으로 시작할 수 있습니다.
|
||||
|
||||
## 다른 검색 제공자에서의 마이그레이션
|
||||
|
||||
[MIGRATION.md](MIGRATION.md)를 참조하십시오.
|
||||
|
||||
## 데이터 저장소
|
||||
|
||||
현재 Fess는 다음 [저장소 위치 및 API](https://fess.codelibs.org/14.17/admin/dataconfig-guide.html)를 크롤링할 수 있습니다:
|
||||
|
||||
- [Confluence/Jira](https://github.com/codelibs/fess-ds-atlassian)
|
||||
- [Box](https://github.com/codelibs/fess-ds-box)
|
||||
- [CSV](https://github.com/codelibs/fess-ds-csv)
|
||||
- [Database](https://github.com/codelibs/fess-ds-db)
|
||||
- [Dropbox](https://github.com/codelibs/fess-ds-dropbox)
|
||||
- [Elasticsearch](https://github.com/codelibs/fess-ds-elasticsearch)
|
||||
- [Git](https://github.com/codelibs/fess-ds-git)
|
||||
- [Gitbucket](https://github.com/codelibs/fess-ds-gitbucket)
|
||||
- [G Suite](https://github.com/codelibs/fess-ds-gsuite)
|
||||
- [JSON](https://github.com/codelibs/fess-ds-json)
|
||||
- [Office 365](https://github.com/codelibs/fess-ds-office365)
|
||||
- [S3](https://github.com/codelibs/fess-ds-s3)
|
||||
- [Salesforce](https://github.com/codelibs/fess-ds-salesforce)
|
||||
- [SharePoint](https://github.com/codelibs/fess-ds-sharepoint)
|
||||
- [Slack](https://github.com/codelibs/fess-ds-slack)
|
||||
|
||||
## 테마
|
||||
|
||||
- [Simple](https://github.com/codelibs/fess-theme-simple)
|
||||
- [Classic](https://github.com/codelibs/fess-theme-classic)
|
||||
|
||||
## 인게스트
|
||||
|
||||
- [Logger](https://github.com/codelibs/fess-ingest-logger)
|
||||
- [NDJSON](https://github.com/codelibs/fess-ingest-ndjson)
|
||||
|
||||
## 스크립트
|
||||
|
||||
- [Groovy](https://github.com/codelibs/fess-script-groovy)
|
||||
- [OGNL](https://github.com/codelibs/fess-script-ognl)
|
||||
|
||||
## 개발 정보
|
||||
|
||||
### 소스 코드 얻기
|
||||
|
||||
1. Fess 리포지토리를 클론합니다:
|
||||
```
|
||||
$ cd ~/workspace
|
||||
$ git clone https://github.com/codelibs/fess.git
|
||||
```
|
||||
|
||||
2. 클론한 리포지토리를 [Maven](https://maven.apache.org/) 프로젝트로 [Eclipse](https://www.eclipse.org/eclipseide/) 또는 다른 IDE에서 가져옵니다.
|
||||
|
||||
### OpenSearch 플러그인 설정
|
||||
|
||||
antrun:run을 실행하여 플러그인을 플러그인 디렉토리에 다운로드합니다:
|
||||
|
||||
$ mvn antrun:run
|
||||
|
||||
### Fess 실행
|
||||
|
||||
IDE에서 `org.codelibs.fess.FessBoot`을 실행하거나 디버그하고 http://localhost:8080/에 접속합니다.
|
||||
|
||||
### 패키지 빌드
|
||||
|
||||
`package` 목표를 실행하면 릴리스 파일이 target/releases 디렉토리에 생성됩니다.
|
||||
|
||||
$ mvn package
|
||||
$ mvn rpm:rpm # .rpm 패키지
|
||||
$ mvn jdeb:jdeb # .deb 패키지
|
||||
|
||||
### 소스 코드 생성
|
||||
|
||||
$ mvn dbflute:download # (한 번만 실행)
|
||||
$ mvn dbflute:freegen
|
||||
$ mvn license:format
|
||||
|
||||
### 통합 테스트
|
||||
|
||||
Fess 서버를 시작하고 다음 명령을 실행합니다:
|
||||
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201"
|
||||
|
||||
단일 테스트 케이스를 실행하려면 다음을 사용할 수 있습니다:
|
||||
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201" -Dtest=SearchApiTests
|
||||
|
||||
### 언어 번역
|
||||
|
||||
Fess는 국제화된 소프트웨어입니다.
|
||||
|
||||
귀하의 언어로 라벨/메시지를 추가하려면 속성 파일을 번역한 후 fess\_\*\_[lang].properties로 이름을 바꾸십시오.
|
||||
|
||||
* [fess_label_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_label_en.properties)
|
||||
* [fess_message_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_message_en.properties)
|
||||
|
||||
검색/인덱스 분석기와 관련해서, [doc.json](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_indices/fess/doc.json)이 귀하의 언어에 대한 lang\_[lang]을 포함하는 경우, 해당 언어에 맞게 분석기를 수정하십시오. 분석기에 대한 자세한 내용은 [OpenSearch 문서](https://opensearch.org/docs/latest/analyzers/search-analyzers/)를 참조하십시오.
|
||||
|
||||
귀하의 언어로 된 풀 리퀘스트를 환영합니다.
|
||||
|
||||
## 제공된 기술
|
||||
|
||||
* [Lasta Di](https://github.com/lastaflute/lasta-di "Lasta Di"): DI 컨테이너
|
||||
* [LastaFlute](https://github.com/lastaflute/lastaflute "LastaFlute"): 웹 프레임워크
|
||||
* [Lasta Job](https://github.com/lastaflute/lasta-job "Lasta Job"): 작업 스케줄러
|
||||
* [Fess Crawler](https://github.com/codelibs/fess-crawler "Fess Crawler"): 웹 크롤러
|
||||
* [OpenSearch](https://opensearch.org/ "OpenSearch"): 검색 엔진
|
159
docs/pt-BR/README.md
Normal file
159
docs/pt-BR/README.md
Normal file
|
@ -0,0 +1,159 @@
|
|||
# Fess: Servidor de Busca Empresarial
|
||||
[](https://github.com/codelibs/fess/actions/workflows/maven.yml)
|
||||
[](https://maven-badges.herokuapp.com/maven-central/org.codelibs.fess/fess)
|
||||
[](https://github.com/gitbucket/gitbucket/blob/master/LICENSE)
|
||||
|
||||
## Visão Geral
|
||||
|
||||
Fess é um servidor de busca empresarial muito poderoso e fácil de implantar. Você pode instalar e executar o Fess rapidamente em qualquer plataforma que suporte o Java Runtime Environment. O Fess é fornecido sob a [Licença Apache 2.0](LICENSE).
|
||||
|
||||
O Fess é baseado no [OpenSearch](https://github.com/opensearch-project/OpenSearch), mas não é necessário ter conhecimento ou experiência com OpenSearch. O Fess fornece uma interface de administração fácil de usar, que permite configurar o sistema através do seu navegador.
|
||||
O Fess também inclui um rastreador (Crawler), que pode rastrear documentos em um [servidor web](https://fess.codelibs.org/14.17/admin/webconfig-guide.html), [sistema de arquivos](https://fess.codelibs.org/14.17/admin/fileconfig-guide.html) ou [Data Store](https://fess.codelibs.org/14.17/admin/dataconfig-guide.html) (como CSV ou banco de dados). Muitos formatos de arquivos são suportados, incluindo (mas não limitado a): Microsoft Office, PDF e zip.
|
||||
|
||||
*[Fess Site Search](https://github.com/codelibs/fess-site-search)* é uma alternativa gratuita ao [Google Site Search](https://enterprise.google.com/search/products/gss.html). Para mais detalhes, veja a [documentação do FSS JS Generator](https://fss-generator.codelibs.org/docs/manual).
|
||||
|
||||
## Site
|
||||
|
||||
[fess.codelibs.org](https://fess.codelibs.org/)
|
||||
|
||||
## Problemas/Perguntas
|
||||
|
||||
[discuss.codelibs.org](https://discuss.codelibs.org/c/FessEN/)
|
||||
|
||||
## Como Começar
|
||||
|
||||
Existem duas maneiras de testar o Fess. A primeira é baixar e instalar você mesmo. A segunda é usar [Docker](https://www.docker.com/products/docker-engine).
|
||||
|
||||
### Baixar e Instalar/Executar
|
||||
|
||||
O Fess 14.17 já está disponível e pode ser baixado na [página de lançamentos](https://github.com/codelibs/fess/releases "download"). As opções de download incluem: deb, rpm, zip.
|
||||
|
||||
Os comandos a seguir mostram como usar o download em formato zip:
|
||||
|
||||
$ unzip fess-14.17.x.zip
|
||||
$ cd fess-14.17.x
|
||||
$ ./bin/fess
|
||||
|
||||
Para mais detalhes, veja o [Guia de Instalação](https://fess.codelibs.org/14.17/install/index.html).
|
||||
|
||||
### Docker
|
||||
|
||||
Nós fornecemos imagens Docker em [ghcr.io](https://github.com/orgs/codelibs/packages). Também fornecemos um arquivo Docker Compose (YAML) neste [repositório](https://github.com/codelibs/docker-fess/tree/master/compose).
|
||||
|
||||
### Interface do Navegador
|
||||
|
||||
- Interface de Busca: http://localhost:8080/
|
||||
|
||||

|
||||
|
||||
- Interface de Administração: http://localhost:8080/admin/ (o nome de usuário/senha padrão é admin/admin)
|
||||
|
||||

|
||||
|
||||
Você pode registrar alvos de rastreamento na interface de administração nas páginas de configuração do rastreador (Web, Arquivo, Data Store), e iniciar manualmente o rastreador na [página do Agendador](https://fess.codelibs.org/14.17/admin/scheduler-guide.html).
|
||||
|
||||
## Migração de Outro Provedor de Busca
|
||||
|
||||
Consulte [MIGRATION.md](MIGRATION.md).
|
||||
|
||||
## Data Store
|
||||
|
||||
Atualmente, o Fess suporta o rastreamento dos seguintes [locais de armazenamento e APIs](https://fess.codelibs.org/14.17/admin/dataconfig-guide.html):
|
||||
|
||||
- [Confluence/Jira](https://github.com/codelibs/fess-ds-atlassian)
|
||||
- [Box](https://github.com/codelibs/fess-ds-box)
|
||||
- [CSV](https://github.com/codelibs/fess-ds-csv)
|
||||
- [Database](https://github.com/codelibs/fess-ds-db)
|
||||
- [Dropbox](https://github.com/codelibs/fess-ds-dropbox)
|
||||
- [Elasticsearch](https://github.com/codelibs/fess-ds-elasticsearch)
|
||||
- [Git](https://github.com/codelibs/fess-ds-git)
|
||||
- [Gitbucket](https://github.com/codelibs/fess-ds-gitbucket)
|
||||
- [G Suite](https://github.com/codelibs/fess-ds-gsuite)
|
||||
- [JSON](https://github.com/codelibs/fess-ds-json)
|
||||
- [Office 365](https://github.com/codelibs/fess-ds-office365)
|
||||
- [S3](https://github.com/codelibs/fess-ds-s3)
|
||||
- [Salesforce](https://github.com/codelibs/fess-ds-salesforce)
|
||||
- [SharePoint](https://github.com/codelibs/fess-ds-sharepoint)
|
||||
- [Slack](https://github.com/codelibs/fess-ds-slack)
|
||||
|
||||
## Temas
|
||||
|
||||
- [Simple](https://github.com/codelibs/fess-theme-simple)
|
||||
- [Classic](https://github.com/codelibs/fess-theme-classic)
|
||||
|
||||
## Ingestão
|
||||
|
||||
- [Logger](https://github.com/codelibs/fess-ingest-logger)
|
||||
- [NDJSON](https://github.com/codelibs/fess-ingest-ndjson)
|
||||
|
||||
## Scripts
|
||||
|
||||
- [Groovy](https://github.com/codelibs/fess-script-groovy)
|
||||
- [OGNL](https://github.com/codelibs/fess-script-ognl)
|
||||
|
||||
## Informações de Desenvolvimento
|
||||
|
||||
### Obter Código Fonte
|
||||
|
||||
1. Clone o repositório do Fess:
|
||||
```
|
||||
$ cd ~/workspace
|
||||
$ git clone https://github.com/codelibs/fess.git
|
||||
```
|
||||
|
||||
2. Importe o repositório clonado como um projeto [Maven](https://maven.apache.org/) no [Eclipse](https://www.eclipse.org/eclipseide/) ou em outro IDE.
|
||||
|
||||
### Configuração de Plugins para OpenSearch
|
||||
|
||||
Execute antrun:run para baixar os plugins no diretório de plugins:
|
||||
|
||||
$ mvn antrun:run
|
||||
|
||||
### Executar o Fess
|
||||
|
||||
Execute ou depure `org.codelibs.fess.FessBoot` no seu IDE, e depois acesse http://localhost:8080/
|
||||
|
||||
### Criar Pacote
|
||||
|
||||
Execute o objetivo `package` e o arquivo de lançamento será criado em target/releases.
|
||||
|
||||
$ mvn package
|
||||
$ mvn rpm:rpm # pacote .rpm
|
||||
$ mvn jdeb:jdeb # pacote .deb
|
||||
|
||||
### Gerar Código Fonte
|
||||
|
||||
$ mvn dbflute:download # (comando executado uma vez)
|
||||
$ mvn dbflute:freegen
|
||||
$ mvn license:format
|
||||
|
||||
### Testes de Integração
|
||||
|
||||
Inicie o servidor Fess e execute o seguinte comando:
|
||||
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201"
|
||||
|
||||
Para executar um único caso de teste, você pode usar:
|
||||
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201" -Dtest=SearchApiTests
|
||||
|
||||
### Traduzir para o Seu Idioma
|
||||
|
||||
Fess é um software internacionalizado.
|
||||
|
||||
Se você quiser adicionar rótulos/mensagens para o seu idioma, por favor, traduza o arquivo de propriedades e renomeie-o para fess\_\*\_[lang].properties.
|
||||
|
||||
* [fess_label_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_label_en.properties)
|
||||
* [fess_message_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_message_en.properties)
|
||||
|
||||
Para o analisador de busca/índice, se [doc.json](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_indices/fess/doc.json) contiver lang\_[lang] para o seu idioma, por favor, modifique o analisador para o seu idioma. Para mais detalhes sobre Analisadores, veja a [documentação do OpenSearch](https://opensearch.org/docs/latest/analyzers/search-analyzers/).
|
||||
|
||||
Aceitamos pull requests para o seu idioma.
|
||||
|
||||
## Desenvolvido por
|
||||
|
||||
* [Lasta Di](https://github.com/lastaflute/lasta-di "Lasta Di"): Contêiner DI
|
||||
* [LastaFlute](https://github.com/lastaflute/lastaflute "LastaFlute"): Framework Web
|
||||
* [Lasta Job](https://github.com/lastaflute/lasta-job "Lasta Job"): Agendador de Tarefas
|
||||
* [Fess Crawler](https://github.com/codelibs/fess-crawler "Fess Crawler"): Rastreador Web
|
||||
* [OpenSearch](https://opensearch.org/ "OpenSearch"): Motor de Busca
|
158
docs/zh-CN/README.md
Normal file
158
docs/zh-CN/README.md
Normal file
|
@ -0,0 +1,158 @@
|
|||
# Fess: 企业搜索服务器
|
||||
[](https://github.com/codelibs/fess/actions/workflows/maven.yml)
|
||||
[](https://maven-badges.herokuapp.com/maven-central/org.codelibs.fess/fess)
|
||||
[](https://github.com/gitbucket/gitbucket/blob/master/LICENSE)
|
||||
|
||||
## 概述
|
||||
|
||||
Fess 是一个功能强大且易于部署的企业搜索服务器。您可以在任何可以运行 Java 运行时环境的平台上快速安装和运行 Fess。Fess 根据 [Apache 许可证 2.0](LICENSE) 提供。
|
||||
|
||||
Fess 基于 [OpenSearch](https://github.com/opensearch-project/OpenSearch),但不需要 OpenSearch 的知识或经验。Fess 提供了一个易于使用的管理 GUI,您可以通过浏览器配置系统。Fess 还包含一个爬虫,能够抓取 [Web 服务器](https://fess.codelibs.org/14.17/admin/webconfig-guide.html)、[文件系统](https://fess.codelibs.org/14.17/admin/fileconfig-guide.html)或[数据存储](https://fess.codelibs.org/14.17/admin/dataconfig-guide.html)(如 CSV 或数据库)中的文档。Fess 支持多种文件格式,包括但不限于:Microsoft Office、PDF 和 zip。
|
||||
|
||||
*[Fess 网站搜索](https://github.com/codelibs/fess-site-search)* 是 [Google 网站搜索](https://enterprise.google.com/search/products/gss.html)的免费替代品。更多详情请参阅 [FSS JS 生成器文档](https://fss-generator.codelibs.org/docs/manual)。
|
||||
|
||||
## 官网
|
||||
|
||||
[fess.codelibs.org](https://fess.codelibs.org/)
|
||||
|
||||
## 问题/疑问
|
||||
|
||||
[discuss.codelibs.org](https://discuss.codelibs.org/c/FessEN/)
|
||||
|
||||
## 入门
|
||||
|
||||
您可以通过两种方式尝试 Fess。第一种是自行下载并安装,第二种是使用 [Docker](https://www.docker.com/products/docker-engine)。
|
||||
|
||||
### 下载并安装/运行
|
||||
|
||||
Fess 14.17 现已发布,可在 [发布页面](https://github.com/codelibs/fess/releases "download") 下载。提供三种下载形式:deb、rpm、zip。
|
||||
|
||||
以下命令展示了如何使用 zip 下载:
|
||||
|
||||
$ unzip fess-14.17.x.zip
|
||||
$ cd fess-14.17.x
|
||||
$ ./bin/fess
|
||||
|
||||
更多详情请参阅 [安装指南](https://fess.codelibs.org/14.17/install/index.html)。
|
||||
|
||||
### Docker
|
||||
|
||||
我们在 [ghcr.io](https://github.com/orgs/codelibs/packages) 上提供了 Docker 镜像。我们还在[此存储库](https://github.com/codelibs/docker-fess/tree/master/compose)中提供了 Docker Compose (YAML) 文件。
|
||||
|
||||
### 浏览器 UI
|
||||
|
||||
- 搜索 UI: http://localhost:8080/
|
||||
|
||||

|
||||
|
||||
- 管理 UI: http://localhost:8080/admin/ (默认用户名/密码为 admin/admin)
|
||||
|
||||

|
||||
|
||||
您可以在管理 UI 的 (Web、文件、数据存储) 爬虫配置页面中注册爬取目标,然后在 [调度器页面](https://fess.codelibs.org/14.17/admin/scheduler-guide.html)手动启动爬虫。
|
||||
|
||||
## 从其他搜索提供商迁移
|
||||
|
||||
请参阅 [MIGRATION.md](MIGRATION.md)。
|
||||
|
||||
## 数据存储
|
||||
|
||||
当前,Fess 支持抓取以下[存储位置和 API](https://fess.codelibs.org/14.17/admin/dataconfig-guide.html):
|
||||
|
||||
- [Confluence/Jira](https://github.com/codelibs/fess-ds-atlassian)
|
||||
- [Box](https://github.com/codelibs/fess-ds-box)
|
||||
- [CSV](https://github.com/codelibs/fess-ds-csv)
|
||||
- [Database](https://github.com/codelibs/fess-ds-db)
|
||||
- [Dropbox](https://github.com/codelibs/fess-ds-dropbox)
|
||||
- [Elasticsearch](https://github.com/codelibs/fess-ds-elasticsearch)
|
||||
- [Git](https://github.com/codelibs/fess-ds-git)
|
||||
- [Gitbucket](https://github.com/codelibs/fess-ds-gitbucket)
|
||||
- [G Suite](https://github.com/codelibs/fess-ds-gsuite)
|
||||
- [JSON](https://github.com/codelibs/fess-ds-json)
|
||||
- [Office 365](https://github.com/codelibs/fess-ds-office365)
|
||||
- [S3](https://github.com/codelibs/fess-ds-s3)
|
||||
- [Salesforce](https://github.com/codelibs/fess-ds-salesforce)
|
||||
- [SharePoint](https://github.com/codelibs/fess-ds-sharepoint)
|
||||
- [Slack](https://github.com/codelibs/fess-ds-slack)
|
||||
|
||||
## 主题
|
||||
|
||||
- [Simple](https://github.com/codelibs/fess-theme-simple)
|
||||
- [Classic](https://github.com/codelibs/fess-theme-classic)
|
||||
|
||||
## 数据处理
|
||||
|
||||
- [Logger](https://github.com/codelibs/fess-ingest-logger)
|
||||
- [NDJSON](https://github.com/codelibs/fess-ingest-ndjson)
|
||||
|
||||
## 脚本
|
||||
|
||||
- [Groovy](https://github.com/codelibs/fess-script-groovy)
|
||||
- [OGNL](https://github.com/codelibs/fess-script-ognl)
|
||||
|
||||
## 开发信息
|
||||
|
||||
### 获取源代码
|
||||
|
||||
1. 克隆 Fess 的存储库:
|
||||
```
|
||||
$ cd ~/workspace
|
||||
$ git clone https://github.com/codelibs/fess.git
|
||||
```
|
||||
|
||||
2. 将克隆的存储库作为 [Maven](https://maven.apache.org/) 项目导入 [Eclipse](https://www.eclipse.org/eclipseide/) 或其他 IDE。
|
||||
|
||||
### 设置 OpenSearch 插件
|
||||
|
||||
运行 antrun:run 将插件下载到插件目录:
|
||||
|
||||
$ mvn antrun:run
|
||||
|
||||
### 运行 Fess
|
||||
|
||||
在您的 IDE 上运行或调试 `org.codelibs.fess.FessBoot`,然后访问 http://localhost:8080/
|
||||
|
||||
### 构建包
|
||||
|
||||
运行 `package` 目标,然后在 target/releases 中创建发布文件。
|
||||
|
||||
$ mvn package
|
||||
$ mvn rpm:rpm # .rpm 包
|
||||
$ mvn jdeb:jdeb # .deb 包
|
||||
|
||||
### 生成源代码
|
||||
|
||||
$ mvn dbflute:download # (仅运行一次)
|
||||
$ mvn dbflute:freegen
|
||||
$ mvn license:format
|
||||
|
||||
### 集成测试
|
||||
|
||||
启动 Fess 服务器并运行以下命令:
|
||||
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201"
|
||||
|
||||
要运行单个测试用例,您可以使用:
|
||||
|
||||
$ mvn test -P integrationTests -Dtest.fess.url="http://localhost:8080" -Dtest.search_engine.url="http://localhost:9201" -Dtest=SearchApiTests
|
||||
|
||||
### 翻译为您的语言
|
||||
|
||||
Fess 是国际化软件。
|
||||
|
||||
如果您想为您的语言添加标签/消息,请翻译属性文件,然后将其重命名为 fess\_\*\_[lang].properties。
|
||||
|
||||
* [fess_label_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_label_en.properties)
|
||||
* [fess_message_en.properties](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_message_en.properties)
|
||||
|
||||
对于搜索/索引分析器,如果 [doc.json](https://github.com/codelibs/fess/blob/master/src/main/resources/fess_indices/fess/doc.json) 包含您语言的 lang\_[lang],请为您的语言修改分析器。有关分析器的更多详细信息,请参阅 [OpenSearch 文档](https://opensearch.org/docs/latest/analyzers/search-analyzers/)。
|
||||
|
||||
我们欢迎您的语言的 Pull Request。
|
||||
|
||||
## 技术支持
|
||||
|
||||
* [Lasta Di](https://github.com/lastaflute/lasta-di "Lasta Di"): DI 容器
|
||||
* [LastaFlute](https://github.com/lastaflute/lastaflute "LastaFlute"): Web 框架
|
||||
* [Lasta Job](https://github.com/lastaflute/lasta-job "Lasta Job"): 任务调度器
|
||||
* [Fess Crawler](https://github.com/codelibs/fess-crawler "Fess Crawler"): Web 爬虫
|
||||
* [OpenSearch](https://opensearch.org/ "OpenSearch"): 搜索引擎
|
107
module.xml
Normal file
107
module.xml
Normal file
|
@ -0,0 +1,107 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name="module" basedir=".">
|
||||
<property name="modules.dir" value="${basedir}/modules" />
|
||||
<property name="target.dir" value="${basedir}/target/modules" />
|
||||
|
||||
<!-- Maven Repository -->
|
||||
<property name="maven.snapshot.repo.url" value="https://maven.codelibs.org/" />
|
||||
<property name="maven.release.repo.url" value="https://maven.codelibs.org/" />
|
||||
<property name="opensearch.version" value="2.18.0" />
|
||||
|
||||
<target name="install.modules">
|
||||
<mkdir dir="${target.dir}" />
|
||||
<delete dir="${modules.dir}" />
|
||||
<mkdir dir="${modules.dir}" />
|
||||
|
||||
<!-- analysis-common -->
|
||||
<antcall target="install.module">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="module.groupId" value="org/codelibs/opensearch/module" />
|
||||
<param name="module.name.prefix" value="" />
|
||||
<param name="module.name" value="analysis-common" />
|
||||
<param name="module.version" value="${opensearch.version}" />
|
||||
<param name="module.zip.version" value="${opensearch.version}" />
|
||||
</antcall>
|
||||
<!-- geo -->
|
||||
<antcall target="install.module">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="module.groupId" value="org/codelibs/opensearch/module" />
|
||||
<param name="module.name.prefix" value="" />
|
||||
<param name="module.name" value="geo" />
|
||||
<param name="module.version" value="${opensearch.version}" />
|
||||
<param name="module.zip.version" value="${opensearch.version}" />
|
||||
</antcall>
|
||||
<!-- lang-expression -->
|
||||
<antcall target="install.module">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="module.groupId" value="org/codelibs/opensearch/module" />
|
||||
<param name="module.name.prefix" value="" />
|
||||
<param name="module.name" value="lang-expression" />
|
||||
<param name="module.version" value="${opensearch.version}" />
|
||||
<param name="module.zip.version" value="${opensearch.version}" />
|
||||
</antcall>
|
||||
<!-- lang-painless -->
|
||||
<antcall target="install.module">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="module.groupId" value="org/codelibs/opensearch/module" />
|
||||
<param name="module.name.prefix" value="" />
|
||||
<param name="module.name" value="lang-painless" />
|
||||
<param name="module.version" value="${opensearch.version}" />
|
||||
<param name="module.zip.version" value="${opensearch.version}" />
|
||||
</antcall>
|
||||
<!-- mapper-extras -->
|
||||
<antcall target="install.module">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="module.groupId" value="org/codelibs/opensearch/module" />
|
||||
<param name="module.name.prefix" value="" />
|
||||
<param name="module.name" value="mapper-extras" />
|
||||
<param name="module.version" value="${opensearch.version}" />
|
||||
<param name="module.zip.version" value="${opensearch.version}" />
|
||||
</antcall>
|
||||
<!-- reindex -->
|
||||
<antcall target="install.module">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="module.groupId" value="org/codelibs/opensearch/module" />
|
||||
<param name="module.name.prefix" value="" />
|
||||
<param name="module.name" value="reindex" />
|
||||
<param name="module.version" value="${opensearch.version}" />
|
||||
<param name="module.zip.version" value="${opensearch.version}" />
|
||||
</antcall>
|
||||
<!-- transport-netty4 -->
|
||||
<antcall target="install.module">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="module.groupId" value="org/codelibs/opensearch/module" />
|
||||
<param name="module.name.prefix" value="" />
|
||||
<param name="module.name" value="transport-netty4" />
|
||||
<param name="module.version" value="${opensearch.version}" />
|
||||
<param name="module.zip.version" value="${opensearch.version}" />
|
||||
</antcall>
|
||||
|
||||
<antcall target="remove.jars" />
|
||||
</target>
|
||||
|
||||
<target name="install.module">
|
||||
<get dest="${target.dir}">
|
||||
<url url="${repo.url}/${module.groupId}/${module.name.prefix}${module.name}/${module.version}/${module.name.prefix}${module.name}-${module.zip.version}.zip" />
|
||||
</get>
|
||||
<unzip dest="${modules.dir}/${module.name}" src="${target.dir}/${module.name.prefix}${module.name}-${module.zip.version}.zip">
|
||||
<patternset>
|
||||
<include name="**" />
|
||||
</patternset>
|
||||
<cutdirsmapper dirs="1" />
|
||||
</unzip>
|
||||
</target>
|
||||
|
||||
<target name="remove.jars" if="with.fess">
|
||||
<delete>
|
||||
<fileset dir="${modules.dir}">
|
||||
<include name="lang-expression/asm-*" />
|
||||
<include name="lang-painless/asm-*" />
|
||||
<include name="reindex/commons-codec-*" />
|
||||
<include name="reindex/commons-logging-*" />
|
||||
<include name="reindex/httpclient-*" />
|
||||
<include name="reindex/httpcore-4*" />
|
||||
</fileset>
|
||||
</delete>
|
||||
</target>
|
||||
</project>
|
92
plugin.xml
92
plugin.xml
|
@ -2,91 +2,51 @@
|
|||
<project name="plugin" basedir=".">
|
||||
<property name="plugins.dir" value="${basedir}/plugins" />
|
||||
<property name="target.dir" value="${basedir}/target/plugins" />
|
||||
<property name="site.dir" value="${basedir}/src/main/webapp/WEB-INF/site" />
|
||||
<property name="kopf.branch" value="fess-5.0" />
|
||||
|
||||
<!-- Maven Repository -->
|
||||
<property name="maven.snapshot.repo.url" value="https://oss.sonatype.org/content/repositories/snapshots" />
|
||||
<property name="maven.release.repo.url" value="http://central.maven.org/maven2" />
|
||||
<property name="maven.release.repo.url" value="https://oss.sonatype.org/content/repositories/releases" />
|
||||
|
||||
<target name="install.plugins">
|
||||
<mkdir dir="${target.dir}" />
|
||||
<delete dir="${plugins.dir}" />
|
||||
<mkdir dir="${plugins.dir}" />
|
||||
<!-- analysis-extension -->
|
||||
<antcall target="install.plugin">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="plugin.groupId" value="org/codelibs/opensearch" />
|
||||
<param name="plugin.name.prefix" value="opensearch-" />
|
||||
<param name="plugin.name" value="analysis-extension" />
|
||||
<param name="plugin.version" value="2.18.0" />
|
||||
<param name="plugin.zip.version" value="2.18.0" />
|
||||
</antcall>
|
||||
<!-- analysis-fess -->
|
||||
<antcall target="install.plugin">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="plugin.groupId" value="org/codelibs" />
|
||||
<param name="plugin.name.prefix" value="elasticsearch-" />
|
||||
<param name="plugin.groupId" value="org/codelibs/opensearch" />
|
||||
<param name="plugin.name.prefix" value="opensearch-" />
|
||||
<param name="plugin.name" value="analysis-fess" />
|
||||
<param name="plugin.version" value="5.4.1" />
|
||||
<param name="plugin.zip.version" value="5.4.1" />
|
||||
</antcall>
|
||||
<!-- analysis-ja -->
|
||||
<antcall target="install.plugin">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="plugin.groupId" value="org/codelibs" />
|
||||
<param name="plugin.name.prefix" value="elasticsearch-" />
|
||||
<param name="plugin.name" value="analysis-ja" />
|
||||
<param name="plugin.version" value="5.4.1" />
|
||||
<param name="plugin.zip.version" value="5.4.1" />
|
||||
</antcall>
|
||||
<!-- analysis-synonym -->
|
||||
<antcall target="install.plugin">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="plugin.groupId" value="org/codelibs" />
|
||||
<param name="plugin.name.prefix" value="elasticsearch-" />
|
||||
<param name="plugin.name" value="analysis-synonym" />
|
||||
<param name="plugin.version" value="5.4.1" />
|
||||
<param name="plugin.zip.version" value="5.4.1" />
|
||||
<param name="plugin.version" value="2.18.0" />
|
||||
<param name="plugin.zip.version" value="2.18.0" />
|
||||
</antcall>
|
||||
<!-- configsync -->
|
||||
<antcall target="install.plugin">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="plugin.groupId" value="org/codelibs" />
|
||||
<param name="plugin.name.prefix" value="elasticsearch-" />
|
||||
<param name="plugin.groupId" value="org/codelibs/opensearch" />
|
||||
<param name="plugin.name.prefix" value="opensearch-" />
|
||||
<param name="plugin.name" value="configsync" />
|
||||
<param name="plugin.version" value="5.4.1" />
|
||||
<param name="plugin.zip.version" value="5.4.1" />
|
||||
</antcall>
|
||||
<!-- dataformat -->
|
||||
<antcall target="install.plugin">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="plugin.groupId" value="org/codelibs" />
|
||||
<param name="plugin.name.prefix" value="elasticsearch-" />
|
||||
<param name="plugin.name" value="dataformat" />
|
||||
<param name="plugin.version" value="5.4.1" />
|
||||
<param name="plugin.zip.version" value="5.4.1" />
|
||||
</antcall>
|
||||
<!-- langfield -->
|
||||
<antcall target="install.plugin">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="plugin.groupId" value="org/codelibs" />
|
||||
<param name="plugin.name.prefix" value="elasticsearch-" />
|
||||
<param name="plugin.name" value="langfield" />
|
||||
<param name="plugin.version" value="5.4.1" />
|
||||
<param name="plugin.zip.version" value="5.4.1" />
|
||||
<param name="plugin.version" value="2.18.0" />
|
||||
<param name="plugin.zip.version" value="2.18.0" />
|
||||
</antcall>
|
||||
<!-- minhash -->
|
||||
<antcall target="install.plugin">
|
||||
<param name="repo.url" value="${maven.release.repo.url}" />
|
||||
<param name="plugin.groupId" value="org/codelibs" />
|
||||
<param name="plugin.name.prefix" value="elasticsearch-" />
|
||||
<param name="plugin.groupId" value="org/codelibs/opensearch" />
|
||||
<param name="plugin.name.prefix" value="opensearch-" />
|
||||
<param name="plugin.name" value="minhash" />
|
||||
<param name="plugin.version" value="5.4.1" />
|
||||
<param name="plugin.zip.version" value="5.4.1" />
|
||||
<param name="plugin.version" value="2.18.0" />
|
||||
<param name="plugin.zip.version" value="2.18.0" />
|
||||
</antcall>
|
||||
<!-- kopf -->
|
||||
<get dest="${target.dir}/kopf.zip">
|
||||
<url url="https://github.com/codelibs/elasticsearch-kopf/archive/${kopf.branch}.zip" />
|
||||
</get>
|
||||
<delete dir="${site.dir}/kopf" />
|
||||
<unzip dest="${site.dir}/kopf" src="${target.dir}/kopf.zip">
|
||||
<patternset>
|
||||
<include name="elasticsearch-kopf-${kopf.branch}/_site/**" />
|
||||
</patternset>
|
||||
<cutdirsmapper dirs="2" />
|
||||
</unzip>
|
||||
|
||||
<antcall target="remove.jars" />
|
||||
</target>
|
||||
|
@ -97,7 +57,7 @@
|
|||
</get>
|
||||
<unzip dest="${plugins.dir}/${plugin.name}" src="${target.dir}/${plugin.name.prefix}${plugin.name}-${plugin.zip.version}.zip">
|
||||
<patternset>
|
||||
<include name="elasticsearch/**" />
|
||||
<include name="**" />
|
||||
</patternset>
|
||||
<cutdirsmapper dirs="1" />
|
||||
</unzip>
|
||||
|
@ -109,13 +69,17 @@
|
|||
<include name="configsync/commons-codec-*" />
|
||||
<include name="dataformat/commons-codec-*" />
|
||||
<include name="dataformat/commons-collections4-*" />
|
||||
<include name="dataformat/commons-compress-*" />
|
||||
<include name="dataformat/commons-math3-*" />
|
||||
<include name="dataformat/curvesapi-*" />
|
||||
<include name="dataformat/orangesignal-csv-*" />
|
||||
<include name="dataformat/poi-*" />
|
||||
<include name="dataformat/SparseBitSet-*" />
|
||||
<include name="dataformat/stax-api-*" />
|
||||
<include name="dataformat/xmlbeans-*" />
|
||||
<include name="langfield/jackson-*" />
|
||||
<include name="minhash/guava-*" />
|
||||
<include name="minhash/failureaccess-*" />
|
||||
<include name="minhash/listenablefuture-*" />
|
||||
</fileset>
|
||||
</delete>
|
||||
</target>
|
||||
|
|
|
@ -1,267 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<profiles version="11">
|
||||
<profile kind="CodeFormatterProfile" name="Google JavaScript Style" version="11">
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_empty_lines" value="false"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_compact_if" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_annotation" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.format_header" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.format_block_comments" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_object_initializer" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_between_type_declarations" value="0"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_assignment" value="0"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.tabulation.size" value="2"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.format_guardian_clause_on_one_line" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.align_type_members_on_columns" value="false"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.continuation_indentation_for_objlit_initializer" value="1"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.compiler.compliance" value="1.5"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_closing_brace_in_objlit_initializer" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.format_source_code" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_switchstatements_compare_to_switch" value="false"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.wrap_before_binary_operator" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_after_package" value="1"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_comma_in_objlit_initializer" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.format_javadoc_comments" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.indentation.size" value="2"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_objlit_initializer" value="end_of_line"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.compiler.source" value="1.5"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.continuation_indentation" value="4"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_conditional_expression" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.indent_parameter_description" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_after_imports" value="1"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.indent_root_tags" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_before_package" value="0"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_before_member_type" value="1"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_enum_constants" value="0"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_before_imports" value="1"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.keep_imple_if_on_one_line" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_binary_expression" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.lineSplit" value="80"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.format_html" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_before_method" value="1"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.compiler.codegen.targetPlatform" value="1.5"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.keep_empty_objlit_initializer_on_one_line" value="false"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_statements_compare_to_block" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.format_line_comments" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.compiler.problem.assertIdentifier" value="error"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_object_initializer" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.line_length" value="80"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_block" value="end_of_line"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_multiple_fields" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.indent_statements_compare_to_body" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.tabulation.char" value="space"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_between_import_groups" value="1"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_before_field" value="0"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_opening_brace_in_objlit_initializer" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.compact_else_if" value="true"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
|
||||
<setting id="org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
|
||||
</profile>
|
||||
</profiles>
|
|
@ -50,6 +50,7 @@
|
|||
<filtered>false</filtered>
|
||||
<outputDirectory>fess-${project.version}/bin</outputDirectory>
|
||||
<includes>
|
||||
<include>module.xml</include>
|
||||
<include>plugin.xml</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
|
@ -63,6 +64,7 @@
|
|||
<directory>${project.build.directory}/fess/WEB-INF/classes/org/codelibs/fess/</directory>
|
||||
<includes>
|
||||
<include>FessBoot**</include>
|
||||
<include>tomcat/**</include>
|
||||
</includes>
|
||||
<outputDirectory>fess-${project.version}/lib/classes/org/codelibs/fess</outputDirectory>
|
||||
</fileSet>
|
||||
|
@ -92,6 +94,11 @@
|
|||
</excludes>
|
||||
<filtered>false</filtered>
|
||||
</fileSet>
|
||||
<!-- es/modules -->
|
||||
<fileSet>
|
||||
<directory>${project.basedir}/modules</directory>
|
||||
<outputDirectory>fess-${project.version}/es/modules</outputDirectory>
|
||||
</fileSet>
|
||||
<!-- es/plugins -->
|
||||
<fileSet>
|
||||
<directory>${project.basedir}/plugins</directory>
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
node_modules
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
npm install --save-dev webpack
|
||||
npm install --save-dev babel-core babel-loader babel-preset-es2015 babel-preset-stage-0 babel-polyfill
|
||||
npm install --save-dev css-loader style-loader sass-loader node-sass extract-text-webpack-plugin
|
||||
npm install --save-dev jquery
|
||||
npm install -–save-dev handlebars handlebars-loader
|
||||
|
||||
webpack
|
||||
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
{
|
||||
"name": "webpack-fess-ss",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"babel-core": "^6.25.0",
|
||||
"babel-loader": "^7.0.0",
|
||||
"babel-polyfill": "^6.23.0",
|
||||
"babel-preset-es2015": "^6.24.1",
|
||||
"babel-preset-stage-0": "^6.24.1",
|
||||
"css-loader": "^0.28.4",
|
||||
"extract-text-webpack-plugin": "^2.1.2",
|
||||
"handlebars": "^4.0.10",
|
||||
"jquery": "^3.2.1",
|
||||
"node-sass": "^4.5.3",
|
||||
"sass-loader": "^6.0.5",
|
||||
"style-loader": "^0.18.2",
|
||||
"webpack": "^2.6.1"
|
||||
}
|
||||
}
|
|
@ -1,85 +0,0 @@
|
|||
import FessJQuery from 'jquery';
|
||||
|
||||
export default class {
|
||||
constructor(FessView, FessModel) {
|
||||
this.FessView = FessView;
|
||||
this.FessModel = FessModel;
|
||||
this.fessUrl = FessJQuery('script#fess-ss').attr('fess-url');
|
||||
}
|
||||
|
||||
start() {
|
||||
this.FessView.init();
|
||||
this.FessView.renderForm();
|
||||
this._bindForm();
|
||||
}
|
||||
|
||||
_bindForm() {
|
||||
var $cls = this;
|
||||
FessJQuery('.fessWrapper form').submit(function(){
|
||||
try {
|
||||
$cls._search({});
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
_bindPagination(response) {
|
||||
var $cls = this;
|
||||
FessJQuery('.fessWrapper .pagination li').click(function(){
|
||||
var $this = FessJQuery(this);
|
||||
if ($this.hasClass('disabled')) {
|
||||
return false;
|
||||
}
|
||||
var page = $this.attr('page');
|
||||
var params = {};
|
||||
params.start = response.page_size * (page - 1);
|
||||
$cls._search(params);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
_search(params) {
|
||||
var $fessResult = FessJQuery('.fessWrapper #fessResult');
|
||||
$fessResult.css('display', 'none');
|
||||
|
||||
if (params.start !== undefined) {
|
||||
var off = FessJQuery('.fessWrapper').offset();
|
||||
FessJQuery(window).scrollTop(off.top);
|
||||
}
|
||||
|
||||
if (params.q === undefined) {
|
||||
var keyword = FessJQuery('.fessWrapper #contentQuery').val();
|
||||
if (keyword.length > 0) {
|
||||
params.q = keyword;
|
||||
} else {
|
||||
params.q = '*:*';
|
||||
}
|
||||
}
|
||||
|
||||
var sort = FessJQuery(".fessWrapper select.sort").val();
|
||||
if (sort !== undefined) {
|
||||
params.sort = sort;
|
||||
} else {
|
||||
params.sort = 'score.desc';
|
||||
}
|
||||
|
||||
var $cls = this;
|
||||
this.FessModel.search(this.fessUrl, params).then(function(data){
|
||||
var response = data.response;
|
||||
if (response.record_count > 0) {
|
||||
$cls.FessView.renderResult(data.response, params);
|
||||
$fessResult.css('display', 'block');
|
||||
$cls._bindPagination(data.response);
|
||||
} else {
|
||||
$cls.FessView.renderNoResult(data.response, params);
|
||||
$fessResult.css('display', 'block');
|
||||
}
|
||||
}, function(data) {
|
||||
console.log("search error: " + JSON.stringify(data));
|
||||
$cls.FessView.renderNoResult(data.response, params);
|
||||
$fessResult.css('display', 'block');
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
|
||||
.fessWrapper {
|
||||
.form-control.sort {
|
||||
display: inline;
|
||||
width: 50%;
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -1,387 +0,0 @@
|
|||
/* Override some defaults */
|
||||
|
||||
.fessWrapper {
|
||||
min-height: 100%;
|
||||
position: relative;
|
||||
padding-top: 70px;
|
||||
margin-bottom: 4em;
|
||||
|
||||
footer {
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
left: 0; height : 4em;
|
||||
position: absolute;
|
||||
border-top: 1px solid;
|
||||
padding-top: 1em;
|
||||
height: 4em;
|
||||
}
|
||||
|
||||
.content {
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
h1, h2, h3 {
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.btn-ghost {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.btn-ghost.btn-default {
|
||||
color: #777;
|
||||
}
|
||||
|
||||
.btn-ghost.btn-primary {
|
||||
color: #337ab7;
|
||||
}
|
||||
|
||||
.btn-ghost.btn-success {
|
||||
color: #5cb85c;
|
||||
}
|
||||
|
||||
.btn-ghost.btn-info {
|
||||
color: #5bc0de;
|
||||
}
|
||||
|
||||
.btn-ghost.btn-warning {
|
||||
color: #f0ad4e;
|
||||
}
|
||||
|
||||
.btn-ghost.btn-danger {
|
||||
color: #d9534f;
|
||||
}
|
||||
|
||||
.btn-ghost.btn-primary:hover, .btn-ghost.btn-success:hover, .btn-ghost.btn-info:hover,
|
||||
.btn-ghost.btn-warning:hover, .btn-ghost.btn-danger:hover {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.btn-ghost.btn-white {
|
||||
color: #fff;
|
||||
border: 1px solid #fff;
|
||||
}
|
||||
|
||||
.btn-ghost.btn-white:hover {
|
||||
color: #333;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.navbar .search-box {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.nav-list li.reset {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.modal-open {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
h1.mainLogo {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
#result ol {
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
#result ol li {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
#result .title a:visited {
|
||||
color: #014c8c;
|
||||
}
|
||||
|
||||
#result .body cite {
|
||||
color: #093;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
#result .body a.cache {
|
||||
color: #093;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
#result .favorited {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.searchFormBox {
|
||||
text-align: center;
|
||||
margin-top: 160px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.form-stacked {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#contentOptionButton {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.searchButtonBox {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
#searchOptions {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.move-to-top {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.ellipsis {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-text-overflow: ellipsis;
|
||||
-o-text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.searchResultForm {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.username {
|
||||
margin-left: 2.0rem;
|
||||
margin-right: 1.0rem;
|
||||
}
|
||||
|
||||
button>i, a>i {
|
||||
margin-right: 0.2em;
|
||||
}
|
||||
|
||||
nav.navbar .form-inline {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
#searchOptionsButton {
|
||||
padding-left: 1.0rem;
|
||||
padding-right: 0.8rem;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
ul.searchOptionLabels {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ul.searchOptionLabels li {
|
||||
display: inline-block;
|
||||
margin-right: 10px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
#searchOptions {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
#searchOptions .container {
|
||||
width: 500px;
|
||||
overflow: hidden;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: -500px;
|
||||
padding-top: 72px;
|
||||
padding-bottom: 20px;
|
||||
color: #fff;
|
||||
background-color: rgba(60, 60, 60, 0.93);
|
||||
transition: all .4s ease 0s;
|
||||
}
|
||||
|
||||
#searchOptions.active .container {
|
||||
height: auto;
|
||||
overflow-y: auto;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.centered {
|
||||
float: none;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#contentQuery {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.navbar-brand img {
|
||||
padding-top: 4px;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
:first-child.list-group-item {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
:last-child.list-group-item {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.thumbnail {
|
||||
width: 160px;
|
||||
height: 160px;
|
||||
background-position: 50% 50%;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
/* Large desktop */
|
||||
@media ( min-width : 74.9em) {
|
||||
.visible-xs {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Large devices (desktops, less than 75em) */
|
||||
@media ( max-width : 74.9em) {
|
||||
.visible-xs {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Medium devices (tablets, less than 62em) */
|
||||
@media ( max-width : 61.9em) {
|
||||
.visible-xs {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Small devices (landscape phones, less than 48em) */
|
||||
@media ( max-width : 47.9em) {
|
||||
.br-xs {
|
||||
display: block;
|
||||
}
|
||||
.hidden-xs {
|
||||
display: none !important;
|
||||
}
|
||||
.mainLogo img {
|
||||
width: 200px;
|
||||
}
|
||||
.navbar-brand img {
|
||||
width: 80px;
|
||||
padding-top: 6.5px;
|
||||
}
|
||||
.searchFormBox {
|
||||
margin-top: 20px;
|
||||
}
|
||||
#result ol {
|
||||
margin-left: 0;
|
||||
}
|
||||
#result .info {
|
||||
display: none;
|
||||
}
|
||||
#searchOptions .container {
|
||||
width: 100%;
|
||||
right: -100%;
|
||||
}
|
||||
#searchOptions.active {
|
||||
right: 0;
|
||||
}
|
||||
.description {
|
||||
-moz-box-orient: vertical;
|
||||
-ms-box-orient: vertical;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 3;
|
||||
display: -webkit-box;
|
||||
overflow: hidden !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Extra small devices (portrait phones, less than 34em) */
|
||||
@media ( max-width : 360px) {
|
||||
.br-xs {
|
||||
display: block;
|
||||
}
|
||||
.hidden-xs {
|
||||
display: none !important;
|
||||
}
|
||||
.mainLogo img {
|
||||
width: 200px;
|
||||
}
|
||||
.navbar-brand img {
|
||||
width: 80px;
|
||||
padding-top: 6.5px;
|
||||
}
|
||||
.searchFormBox {
|
||||
margin-top: 80px;
|
||||
}
|
||||
#result .info {
|
||||
display: none;
|
||||
}
|
||||
#subheader {
|
||||
font-size: 90%;
|
||||
}
|
||||
#searchButton {
|
||||
padding-left: 0.8rem;
|
||||
padding-right: 0.8rem;
|
||||
}
|
||||
#searchOptionsButton {
|
||||
padding-left: 0.7rem;
|
||||
padding-right: 0.6rem;
|
||||
}
|
||||
#footer {
|
||||
font-size: 65%;
|
||||
}
|
||||
.description {
|
||||
-moz-box-orient: vertical;
|
||||
-ms-box-orient: vertical;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 3;
|
||||
display: -webkit-box;
|
||||
overflow: hidden !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media ( max-width : 767px) and (min-width: 481px) {
|
||||
}
|
||||
|
||||
@media ( max-height : 480px) {
|
||||
#searchOptions .container {
|
||||
max-height: 450px;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
}
|
||||
|
||||
@media ( max-height : 390px) {
|
||||
#searchOptions .container {
|
||||
max-height: 300px;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
}
|
||||
|
||||
/***workaround for IE browser***/
|
||||
@media screen and (min-width:0\0) {
|
||||
input#query.form-control {
|
||||
padding-bottom: 0.75rem;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
export default class {
|
||||
constructor() {
|
||||
this.messages = {
|
||||
en: {
|
||||
'form.search.button': 'Search',
|
||||
'form.input.placeholder': 'Fess custom search',
|
||||
'result.number': 'results',
|
||||
'result.second': 'second',
|
||||
'result.order': 'Order',
|
||||
'result.order.score': 'Relevance',
|
||||
'result.order.last_modified': 'Last modified',
|
||||
'result.pagination.prev': 'prev',
|
||||
'result.pagination.next': 'next',
|
||||
'result.did_not_match': 'Your search - <b>{{q}}</b> - did not match any documents.'
|
||||
},
|
||||
ja: {
|
||||
'form.search.button': '検索',
|
||||
'form.input.placeholder': 'Fess カスタム検索',
|
||||
'result.number': '件',
|
||||
'result.second': '秒',
|
||||
'result.order': '表示順',
|
||||
'result.order.score': '関連度',
|
||||
'result.order.last_modified': '更新日時',
|
||||
'result.pagination.prev': '前へ',
|
||||
'result.pagination.next': '次へ',
|
||||
'result.did_not_match': '<b>{{q}}</b>に一致する情報は見つかりませんでした。'
|
||||
}
|
||||
}
|
||||
}
|
||||
getLanguage() {
|
||||
return window.navigator.userLanguage || window.navigator.language || window.navigator.browserLanguage || 'en';
|
||||
}
|
||||
getMessage(key, vars) {
|
||||
var language = this.getLanguage();
|
||||
if (this.messages[language] === undefined) {
|
||||
language = 'en';
|
||||
}
|
||||
var message = this.messages[language][key];
|
||||
if (message === undefined) {
|
||||
console.log('Invalid message key:' + key);
|
||||
return '';
|
||||
}
|
||||
|
||||
for (var key in vars) {
|
||||
if (typeof vars[key] == 'string' || typeof vars == 'string') {
|
||||
var reg = new RegExp('{{' + key + '}}', 'g');
|
||||
message = message.replace(reg, vars[key]);
|
||||
}
|
||||
}
|
||||
//var reg = new RegExp('{{[^{}]*}}', 'g');
|
||||
//message = message.replace(reg, '');
|
||||
return message;
|
||||
}
|
||||
render(html, vars) {
|
||||
var language = this.getLanguage();
|
||||
if (this.messages[language] === undefined) {
|
||||
language = 'en';
|
||||
}
|
||||
var tmpHtml = html;
|
||||
var messages = this.messages[language];
|
||||
for(var key in messages) {
|
||||
var reg = new RegExp('{' + key + '}', 'g');
|
||||
tmpHtml = tmpHtml.replace(reg, this.getMessage(key, vars));
|
||||
}
|
||||
return tmpHtml;
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
import 'babel-polyfill';
|
||||
import '!style-loader!css-loader!sass-loader!./css/style-base.scss';
|
||||
import '!style-loader!css-loader!sass-loader!./css/style.scss';
|
||||
import '!style-loader!css-loader!sass-loader!./css/ss.scss';
|
||||
import FessMessages from './fess-messages.js';
|
||||
import FessView from './view.js';
|
||||
import FessController from './controller.js';
|
||||
import FessModel from './model.js';
|
||||
|
||||
(function() {
|
||||
var fessMessages = new FessMessages();
|
||||
var fessView = new FessView(fessMessages);
|
||||
var fessModel = new FessModel();
|
||||
var fessController = new FessController(fessView, fessModel);
|
||||
fessController.start();
|
||||
})();
|
|
@ -1,21 +0,0 @@
|
|||
import FessJQuery from 'jquery';
|
||||
|
||||
export default class {
|
||||
constructor() {
|
||||
}
|
||||
|
||||
search(url, params) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
FessJQuery.ajax({
|
||||
url: url,
|
||||
type: "GET",
|
||||
dataType: "jsonp",
|
||||
data: params
|
||||
}).done(function(data){
|
||||
resolve(data);
|
||||
}).fail(function(data){
|
||||
reject(data);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
<form>
|
||||
<table style="width:100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<div>
|
||||
<input type="text" name="q" placeholder="{form.input.placeholder}" maxlength="1000" size="50" autocomplete="off" id="contentQuery" class="query form-control center-block">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<button type="submit" name="search" id="searchButton" class="btn btn-primary"><i class="fa fa-search"></i>{form.search.button}</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
|
@ -1,23 +0,0 @@
|
|||
<div id="result">
|
||||
<div style="border-bottom:solid thin #eeeeee;padding-bottom:5px;margin-bottom:10px;">
|
||||
<table width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="50%">
|
||||
{{record_count}} {result.number} ({{exec_time}}{result.second})
|
||||
</td>
|
||||
<td width="20%" align="right">
|
||||
{result.order}:
|
||||
<select class="form-control sort">
|
||||
<option value="score.desc">{result.order.score}</option>
|
||||
<option value="last_modified.desc">{result.order.last_modified}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="alert">
|
||||
{result.did_not_match}
|
||||
</div>
|
||||
</div>
|
|
@ -1,49 +0,0 @@
|
|||
<div id="result">
|
||||
<div style="border-bottom:solid thin #eeeeee;padding-bottom:5px;margin-bottom:10px;">
|
||||
<table width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="50%">
|
||||
{{record_count}} {result.number} ({{exec_time}}{result.second})
|
||||
</td>
|
||||
<td width="20%" align="right">
|
||||
{result.order}:
|
||||
<select class="form-control sort">
|
||||
<option value="score.desc">{result.order.score}</option>
|
||||
<option value="last_modified.desc">{result.order.last_modified}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<ol id="searchResultList">
|
||||
{{#each result}}
|
||||
<li id="result{{@index}}">
|
||||
<div class="media">
|
||||
<div class="media-body">
|
||||
<h3 class="title ellipsis media-heading">
|
||||
<a class="link" href="{{url}}" data-uri="{{url}}" data-order="0">
|
||||
{{title}}
|
||||
</a>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="body">
|
||||
<div class="description">
|
||||
{{{content_description}}}
|
||||
</div>
|
||||
<div class="site ellipsis">
|
||||
<cite>{{site}}</cite>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center">
|
||||
<nav id="subfooter" class='paginationNav'>
|
||||
</nav>
|
||||
</div>
|
|
@ -1,111 +0,0 @@
|
|||
import FessJQuery from 'jquery';
|
||||
import formTemplate from '!handlebars-loader!./templates/fess-form.hbs';
|
||||
import resultTemplate from '!handlebars-loader!./templates/fess-result.hbs';
|
||||
import noResultTemplate from '!handlebars-loader!./templates/fess-no-result.hbs';
|
||||
|
||||
export default class {
|
||||
constructor(FessMessages) {
|
||||
this.FessMessages = FessMessages;
|
||||
}
|
||||
|
||||
init() {
|
||||
var $fessWrapper = FessJQuery('<div/>');
|
||||
$fessWrapper.addClass('fessWrapper');
|
||||
$fessWrapper.css('padding', '10px');
|
||||
FessJQuery('fess\\:search').replaceWith($fessWrapper);
|
||||
|
||||
var $fessForm = FessJQuery('<div/>');
|
||||
$fessForm.attr('id', 'fessForm');
|
||||
$fessWrapper.append($fessForm);
|
||||
|
||||
var $fessResult = FessJQuery('<div/>');
|
||||
$fessResult.attr('id', 'fessResult');
|
||||
$fessResult.css('display', 'none');
|
||||
$fessWrapper.append($fessResult);
|
||||
}
|
||||
|
||||
renderForm() {
|
||||
var $fessForm = FessJQuery('.fessWrapper #fessForm');
|
||||
var html = formTemplate(this.css);
|
||||
$fessForm.html(this.FessMessages.render(html, {}));
|
||||
}
|
||||
|
||||
renderResult(response, params) {
|
||||
var $fessResult = FessJQuery('.fessWrapper #fessResult');
|
||||
var html = resultTemplate(response);
|
||||
$fessResult.html(this.FessMessages.render(html, response));
|
||||
var $pagination = this._createPagination(response.record_count, response.page_size, response.page_number, params);
|
||||
FessJQuery('.fessWrapper .paginationNav').append($pagination);
|
||||
FessJQuery('.fessWrapper select.sort').val(params.sort);
|
||||
}
|
||||
|
||||
renderNoResult(response, params) {
|
||||
var $fessResult = FessJQuery('.fessWrapper #fessResult');
|
||||
var html = noResultTemplate(response);
|
||||
$fessResult.html(this.FessMessages.render(html, response));
|
||||
}
|
||||
|
||||
_createPagination(recordCount, pageSize, currentPage, params) {
|
||||
var $cls = this;
|
||||
|
||||
var $pagination = FessJQuery('<ul/>');
|
||||
$pagination.addClass('pagination');
|
||||
|
||||
var calc_start_pos = function(page, pageSize) {
|
||||
return (pageSize * (page - 1));
|
||||
}
|
||||
|
||||
var paginationInfo = (function(){
|
||||
var allPageNum = Math.floor(recordCount / pageSize) + 1;
|
||||
var info = {};
|
||||
info.current = currentPage;
|
||||
info.min = (currentPage - 5) > 0 ? currentPage - 5 : 1;
|
||||
info.max = (currentPage + 5) < allPageNum ? currentPage + 5 : allPageNum;
|
||||
return info;
|
||||
})();
|
||||
|
||||
var $prev = (function(){
|
||||
var $li = FessJQuery('<li/>');
|
||||
$li.addClass('prev');
|
||||
$li.attr('aria-label', 'Previous');
|
||||
$li.attr('page', paginationInfo.current - 1);
|
||||
$li.html($cls.FessMessages.render('<a><span aria-hidden="true">«</span> <span class="sr-only">{result.pagination.prev}</span></a>', {}));
|
||||
if (currentPage > 1) {
|
||||
$li.css('cursor', 'pointer');
|
||||
} else {
|
||||
$li.addClass('disabled');
|
||||
}
|
||||
return $li;
|
||||
})();
|
||||
$pagination.append($prev);
|
||||
|
||||
for (var i=paginationInfo.min;i<=paginationInfo.max;i++) {
|
||||
var $li = FessJQuery('<li/>');
|
||||
if (i == paginationInfo.current) {
|
||||
$li.addClass('active');
|
||||
}
|
||||
$li.css('cursor', 'pointer');
|
||||
$li.html('<a>' + i + '</a>');
|
||||
$li.attr('page', i);
|
||||
$pagination.append($li);
|
||||
}
|
||||
|
||||
var $next = (function(){
|
||||
var $li = FessJQuery('<li/>');
|
||||
$li.addClass('next');
|
||||
$li.attr('aria-label', 'Next');
|
||||
$li.attr('page', paginationInfo.current + 1);
|
||||
$li.html($cls.FessMessages.render('<a><span class="sr-only">{result.pagination.next}</span><span aria-hidden="true">»</span></a>', {}));
|
||||
if (paginationInfo.current < paginationInfo.max) {
|
||||
$li.css('cursor', 'pointer');
|
||||
} else {
|
||||
$li.addClass('disabled');
|
||||
}
|
||||
return $li;
|
||||
})();
|
||||
$pagination.append($next);
|
||||
|
||||
return $pagination;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
<html>
|
||||
|
||||
<script>
|
||||
(function() {
|
||||
var fess = document.createElement('script');
|
||||
fess.type = 'text/javascript';
|
||||
fess.async = true;
|
||||
fess.src = '//localhost:8080/js/ss/fess-ss.min.js';
|
||||
fess.charset = 'utf-8';
|
||||
fess.setAttribute('id', 'fess-ss');
|
||||
fess.setAttribute('fess-url', '//localhost:8080/json');
|
||||
var s = document.getElementsByTagName('script')[0];
|
||||
s.parentNode.insertBefore(fess, s);
|
||||
})();
|
||||
</script>
|
||||
|
||||
<fess:search></fess:search>
|
||||
</html>
|
|
@ -1,25 +0,0 @@
|
|||
const webpack = require("webpack");
|
||||
|
||||
module.exports = {
|
||||
entry: __dirname + "/src/main.js",
|
||||
output: {
|
||||
path: __dirname +'/../../../webapp/js/ss',
|
||||
filename: 'fess-ss.min.js'
|
||||
},
|
||||
plugins: [
|
||||
new webpack.optimize.UglifyJsPlugin()
|
||||
],
|
||||
module: {
|
||||
loaders: [
|
||||
{
|
||||
test: /\.js$/,
|
||||
loader: 'babel-loader',
|
||||
exclude: /node_modules/,
|
||||
query:
|
||||
{
|
||||
presets: ['es2015','stage-0']
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
|
@ -1,4 +1,4 @@
|
|||
kibana4 settings for fess
|
||||
kibana 7 settings for fess
|
||||
=====
|
||||
|
||||
Providing example of kibana settings file for monitoring search logs of fess.
|
||||
|
@ -6,17 +6,20 @@ Providing example of kibana settings file for monitoring search logs of fess.
|
|||
## Install
|
||||
|
||||
1. Install and launch Fess.
|
||||
1. Install and launch kibana4.
|
||||
1. Install and launch kibana.
|
||||
1. Go to kibana home [http://localhost:5601/](http://localhost:5601/).
|
||||
1. Input "fess_log" to the textbox of **Index name or pattern**.
|
||||
1. Set "requestedAt" to the **Time-field name** and **Create**.
|
||||
1. From the top of page, click **Settings**.
|
||||
1. Click **Objects**.
|
||||
1. Click **Import** and select "fess_log.json" to import example settings.
|
||||
1. Click **Management**.
|
||||
1. Click **Index Patterns**.
|
||||
1. Click **Create index pattern** button
|
||||
1. Input "fess\_log\*" to the textbox of **index pattern**.
|
||||
1. Click **Next step**.
|
||||
1. Set "requestedAt" to the **Time Filter field name**.
|
||||
1. Click **Create index pattern**.
|
||||
1. Click **Saved Objects**.
|
||||
1. Click **Import** and select "fess\_log.ndjson" to import example settings.
|
||||
1. Click **Dashboard**.
|
||||
1. Click **Load Saved Dashboard** and select "fess_log" dashboard.
|
||||
1. Select "fess\_log" dashboard.
|
||||
1. (Change the period from upper right if you want to do.)
|
||||
|
||||
## FAQ
|
||||
|
||||
#### Q. Kibana can't connect Elasticsearch.
|
||||
|
@ -29,6 +32,6 @@ Example:
|
|||
elasticsearch.url: "http://localhost:9201"
|
||||
```
|
||||
|
||||
#### Q. I imported "fess_log.json" but no results found.
|
||||
#### Q. I imported "fess\_log.ndjson" but no results found.
|
||||
|
||||
A. Is there any search logs? If it still does not resolve, it may be caused by TimeZone. Please check **Settings** -> **Advanced** -> **dateFormat:tz**.
|
||||
|
|
|
@ -1,103 +0,0 @@
|
|||
[
|
||||
{
|
||||
"_id": "fess_log",
|
||||
"_type": "dashboard",
|
||||
"_source": {
|
||||
"title": "fess_log",
|
||||
"hits": 0,
|
||||
"description": "",
|
||||
"panelsJSON": "[{\"col\":11,\"id\":\"search-term-rank-of-no-results\",\"panelIndex\":1,\"row\":1,\"size_x\":2,\"size_y\":6,\"type\":\"visualization\"},{\"col\":5,\"id\":\"rank-of-UserAgent\",\"panelIndex\":2,\"row\":7,\"size_x\":8,\"size_y\":4,\"type\":\"visualization\"},{\"col\":1,\"id\":\"average-response-time\",\"panelIndex\":3,\"row\":4,\"size_x\":8,\"size_y\":3,\"type\":\"visualization\"},{\"col\":9,\"id\":\"search-term-rank\",\"panelIndex\":4,\"row\":1,\"size_x\":2,\"size_y\":6,\"type\":\"visualization\"},{\"col\":1,\"id\":\"search-query-counts-per-sec\",\"panelIndex\":5,\"row\":1,\"size_x\":8,\"size_y\":3,\"type\":\"visualization\"},{\"col\":1,\"id\":\"hit-counts\",\"panelIndex\":6,\"row\":7,\"size_x\":4,\"size_y\":4,\"type\":\"visualization\"}]",
|
||||
"optionsJSON": "{\"darkTheme\":false}",
|
||||
"uiStateJSON": "{\"P-1\":{\"spy\":{\"mode\":{\"fill\":false,\"name\":null}}},\"P-2\":{\"spy\":{\"mode\":{\"fill\":false,\"name\":null}}}}",
|
||||
"version": 1,
|
||||
"timeRestore": false,
|
||||
"kibanaSavedObjectMeta": {
|
||||
"searchSourceJSON": "{\"filter\":[{\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}}}]}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "average-response-time",
|
||||
"_type": "visualization",
|
||||
"_source": {
|
||||
"title": "average response time",
|
||||
"visState": "{\n \"type\": \"line\",\n \"params\": {\n \"addLegend\": false,\n \"addTimeMarker\": false,\n \"addTooltip\": true,\n \"defaultYExtents\": false,\n \"drawLinesBetweenPoints\": true,\n \"interpolate\": \"linear\",\n \"radiusRatio\": 9,\n \"scale\": \"linear\",\n \"setYExtents\": false,\n \"shareYAxis\": true,\n \"showCircles\": true,\n \"smoothLines\": false,\n \"times\": [],\n \"yAxis\": {}\n },\n \"aggs\": [\n {\n \"id\": \"1\",\n \"type\": \"avg\",\n \"schema\": \"metric\",\n \"params\": {\n \"field\": \"responseTime\"\n }\n },\n {\n \"id\": \"2\",\n \"type\": \"date_histogram\",\n \"schema\": \"segment\",\n \"params\": {\n \"field\": \"requestedAt\",\n \"interval\": \"h\",\n \"customInterval\": \"2h\",\n \"min_doc_count\": 1,\n \"extended_bounds\": {}\n }\n }\n ],\n \"listeners\": {}\n}",
|
||||
"uiStateJSON": "{}",
|
||||
"description": "",
|
||||
"version": 1,
|
||||
"kibanaSavedObjectMeta": {
|
||||
"searchSourceJSON": "{\n \"index\": \"fess_log\",\n \"query\": {\n \"query_string\": {\n \"query\": \"_type: \\\"search_log\\\"\",\n \"analyze_wildcard\": true\n }\n },\n \"filter\": []\n}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "rank-of-UserAgent",
|
||||
"_type": "visualization",
|
||||
"_source": {
|
||||
"title": "rank of UserAgent",
|
||||
"visState": "{\n \"type\": \"table\",\n \"params\": {\n \"perPage\": 10,\n \"showPartialRows\": false,\n \"showMeticsAtAllLevels\": false\n },\n \"aggs\": [\n {\n \"id\": \"1\",\n \"type\": \"count\",\n \"schema\": \"metric\",\n \"params\": {}\n },\n {\n \"id\": \"2\",\n \"type\": \"terms\",\n \"schema\": \"bucket\",\n \"params\": {\n \"field\": \"userAgent\",\n \"size\": 5,\n \"order\": \"desc\",\n \"orderBy\": \"1\"\n }\n }\n ],\n \"listeners\": {}\n}",
|
||||
"uiStateJSON": "{}",
|
||||
"description": "",
|
||||
"version": 1,
|
||||
"kibanaSavedObjectMeta": {
|
||||
"searchSourceJSON": "{\n \"index\": \"fess_log\",\n \"query\": {\n \"query_string\": {\n \"query\": \"_type: \\\"search_log\\\"\",\n \"analyze_wildcard\": true\n }\n },\n \"filter\": []\n}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "search-term-rank",
|
||||
"_type": "visualization",
|
||||
"_source": {
|
||||
"title": "search term rank",
|
||||
"visState": "{\n \"type\": \"table\",\n \"params\": {\n \"perPage\": 20,\n \"showMeticsAtAllLevels\": false,\n \"showPartialRows\": false\n },\n \"aggs\": [\n {\n \"id\": \"1\",\n \"type\": \"count\",\n \"schema\": \"metric\",\n \"params\": {}\n },\n {\n \"id\": \"2\",\n \"type\": \"terms\",\n \"schema\": \"bucket\",\n \"params\": {\n \"field\": \"searchWord\",\n \"size\": 20,\n \"order\": \"desc\",\n \"orderBy\": \"1\"\n }\n }\n ],\n \"listeners\": {}\n}",
|
||||
"uiStateJSON": "{}",
|
||||
"description": "",
|
||||
"version": 1,
|
||||
"kibanaSavedObjectMeta": {
|
||||
"searchSourceJSON": "{\n \"index\": \"fess_log\",\n \"query\": {\n \"query_string\": {\n \"analyze_wildcard\": true,\n \"query\": \"_type: \\\"search_log\\\"\"\n }\n },\n \"filter\": []\n}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "search-term-rank-of-no-results",
|
||||
"_type": "visualization",
|
||||
"_source": {
|
||||
"title": "search term rank of no results",
|
||||
"visState": "{\n \"type\": \"table\",\n \"params\": {\n \"perPage\": 20,\n \"showPartialRows\": false,\n \"showMeticsAtAllLevels\": false\n },\n \"aggs\": [\n {\n \"id\": \"1\",\n \"type\": \"count\",\n \"schema\": \"metric\",\n \"params\": {}\n },\n {\n \"id\": \"2\",\n \"type\": \"terms\",\n \"schema\": \"bucket\",\n \"params\": {\n \"field\": \"searchWord\",\n \"size\": 20,\n \"order\": \"desc\",\n \"orderBy\": \"1\"\n }\n }\n ],\n \"listeners\": {}\n}",
|
||||
"uiStateJSON": "{}",
|
||||
"description": "",
|
||||
"version": 1,
|
||||
"kibanaSavedObjectMeta": {
|
||||
"searchSourceJSON": "{\n \"index\": \"fess_log\",\n \"query\": {\n \"query_string\": {\n \"query\": \"_type: \\\"search_log\\\" && hitCount: 0\",\n \"analyze_wildcard\": true\n }\n },\n \"filter\": []\n}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "hit-counts",
|
||||
"_type": "visualization",
|
||||
"_source": {
|
||||
"title": "hit counts",
|
||||
"visState": "{\n \"type\": \"histogram\",\n \"params\": {\n \"shareYAxis\": true,\n \"addTooltip\": true,\n \"addLegend\": false,\n \"scale\": \"linear\",\n \"mode\": \"stacked\",\n \"times\": [],\n \"addTimeMarker\": false,\n \"defaultYExtents\": false,\n \"setYExtents\": false,\n \"yAxis\": {}\n },\n \"aggs\": [\n {\n \"id\": \"1\",\n \"type\": \"sum\",\n \"schema\": \"metric\",\n \"params\": {\n \"field\": \"hitCount\"\n }\n },\n {\n \"id\": \"2\",\n \"type\": \"date_histogram\",\n \"schema\": \"segment\",\n \"params\": {\n \"field\": \"requestedAt\",\n \"interval\": \"h\",\n \"customInterval\": \"2h\",\n \"min_doc_count\": 1,\n \"extended_bounds\": {}\n }\n }\n ],\n \"listeners\": {}\n}",
|
||||
"uiStateJSON": "{}",
|
||||
"description": "",
|
||||
"version": 1,
|
||||
"kibanaSavedObjectMeta": {
|
||||
"searchSourceJSON": "{\n \"index\": \"fess_log\",\n \"query\": {\n \"query_string\": {\n \"query\": \"_type: \\\"search_log\\\"\",\n \"analyze_wildcard\": true\n }\n },\n \"filter\": []\n}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "search-query-counts-per-sec",
|
||||
"_type": "visualization",
|
||||
"_source": {
|
||||
"title": "search query counts / sec.",
|
||||
"visState": "{\n \"type\": \"line\",\n \"params\": {\n \"addLegend\": false,\n \"addTimeMarker\": false,\n \"addTooltip\": true,\n \"defaultYExtents\": false,\n \"drawLinesBetweenPoints\": true,\n \"interpolate\": \"linear\",\n \"radiusRatio\": 9,\n \"scale\": \"linear\",\n \"setYExtents\": false,\n \"shareYAxis\": true,\n \"showCircles\": false,\n \"smoothLines\": false,\n \"times\": [],\n \"yAxis\": {}\n },\n \"aggs\": [\n {\n \"id\": \"1\",\n \"type\": \"count\",\n \"schema\": \"metric\",\n \"params\": {\n \"json\": \"\"\n }\n },\n {\n \"id\": \"2\",\n \"type\": \"date_histogram\",\n \"schema\": \"segment\",\n \"params\": {\n \"field\": \"requestedAt\",\n \"interval\": \"s\",\n \"customInterval\": \"10m\",\n \"min_doc_count\": 1,\n \"extended_bounds\": {}\n }\n }\n ],\n \"listeners\": {}\n}",
|
||||
"uiStateJSON": "{}",
|
||||
"description": "",
|
||||
"version": 1,
|
||||
"kibanaSavedObjectMeta": {
|
||||
"searchSourceJSON": "{\n \"index\": \"fess_log\",\n \"query\": {\n \"query_string\": {\n \"query\": \"_type: \\\"search_log\\\"\",\n \"analyze_wildcard\": true\n }\n },\n \"filter\": []\n}"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
8
src/main/assemblies/extension/kibana/fess_log.ndjson
Normal file
8
src/main/assemblies/extension/kibana/fess_log.ndjson
Normal file
File diff suppressed because one or more lines are too long
|
@ -95,8 +95,8 @@ launch_service()
|
|||
fess_parms="$fess_parms -Dfess.pidfile=$pidpath"
|
||||
fi
|
||||
|
||||
# Make sure we dont use any predefined locale, as we check some exception message strings and rely on english language
|
||||
# As those strings are created by the OS, they are dependant on the configured locale
|
||||
# Make sure we don't use any predefined locale, as we check some exception message strings and rely on english language
|
||||
# As those strings are created by the OS, they are dependent on the configured locale
|
||||
LANG=en_US.UTF-8
|
||||
LC_ALL=en_US.UTF-8
|
||||
|
||||
|
@ -106,11 +106,11 @@ launch_service()
|
|||
|
||||
if [ "x$daemonized" = "x" ]; then
|
||||
fess_parms="$fess_parms -Dfess.foreground=yes"
|
||||
exec "$JAVA" $JAVA_OPTS $FESS_JAVA_OPTS $fess_parms -Dfess.es.dir="$ES_HOME" -cp "$FESS_CLASSPATH" $props \
|
||||
org.codelibs.fess.FessBoot $FESS_OPTS > /dev/null 2>&1
|
||||
exec "$JAVA" $FESS_JAVA_OPTS $fess_parms -Dfess.es.dir="$SEARCH_ENGINE_HOME" -cp "$FESS_CLASSPATH" $props \
|
||||
org.codelibs.fess.FessBoot $FESS_OPTS > /dev/null
|
||||
else
|
||||
exec "$JAVA" $JAVA_OPTS $FESS_JAVA_OPTS $fess_parms -Dfess.es.dir="$ES_HOME" -cp "$FESS_CLASSPATH" $props \
|
||||
org.codelibs.fess.FessBoot $FESS_OPTS <&- > /dev/null 2>&1 &
|
||||
exec "$JAVA" $FESS_JAVA_OPTS $fess_parms -Dfess.es.dir="$SEARCH_ENGINE_HOME" -cp "$FESS_CLASSPATH" $props \
|
||||
org.codelibs.fess.FessBoot $FESS_OPTS <&- > /dev/null &
|
||||
if [ x"$pidfile" != "x" ] ; then
|
||||
echo $! > $pidfile
|
||||
fi
|
||||
|
@ -162,7 +162,7 @@ eval set -- "$args"
|
|||
while true; do
|
||||
case $1 in
|
||||
-v)
|
||||
"$JAVA" $JAVA_OPTS $FESS_JAVA_OPTS $fess_parms -cp "$FESS_CLASSPATH" $props \
|
||||
"$JAVA" $FESS_JAVA_OPTS $fess_parms -cp "$FESS_CLASSPATH" $props \
|
||||
org.codelibs.fess.Version
|
||||
exit 0
|
||||
;;
|
||||
|
|
|
@ -43,6 +43,6 @@ IF ERRORLEVEL 1 (
|
|||
EXIT /B %ERRORLEVEL%
|
||||
)
|
||||
|
||||
"%JAVA_HOME%\bin\java" %JAVA_OPTS% %FESS_JAVA_OPTS% !newparams! -cp "%FESS_CLASSPATH%" "org.codelibs.fess.FessBoot"
|
||||
"%JAVA_HOME%\bin\java" %FESS_JAVA_OPTS% !newparams! -cp "%FESS_CLASSPATH%" "org.codelibs.fess.FessBoot"
|
||||
|
||||
ENDLOCAL
|
||||
|
|
|
@ -30,74 +30,72 @@ REM min and max heap sizes should be set to the same value to avoid
|
|||
REM stop-the-world GC pauses during resize, and so that we can lock the
|
||||
REM heap in memory on startup to prevent any of it from being swapped
|
||||
REM out.
|
||||
set JAVA_OPTS=%JAVA_OPTS% -Xms%FESS_MIN_MEM% -Xmx%FESS_MAX_MEM%
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Xms%FESS_MIN_MEM% -Xmx%FESS_MAX_MEM%
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -XX:MaxMetaspaceSize=256m -XX:CompressedClassSpaceSize=32m
|
||||
|
||||
REM new generation
|
||||
if NOT "%FESS_HEAP_NEWSIZE%" == "" (
|
||||
set JAVA_OPTS=%JAVA_OPTS% -Xmn%FESS_HEAP_NEWSIZE%
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Xmn%FESS_HEAP_NEWSIZE%
|
||||
)
|
||||
|
||||
REM max direct memory
|
||||
if NOT "%FESS_DIRECT_SIZE%" == "" (
|
||||
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxDirectMemorySize=%FESS_DIRECT_SIZE%
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -XX:MaxDirectMemorySize=%FESS_DIRECT_SIZE%
|
||||
)
|
||||
|
||||
REM set to headless, just in case
|
||||
set JAVA_OPTS=%JAVA_OPTS% -Djava.awt.headless=true
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Djava.awt.headless=true
|
||||
|
||||
REM maximum # keep-alive connections to maintain at once
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dhttp.maxConnections=20
|
||||
|
||||
REM Force the JVM to use IPv4 stack
|
||||
if NOT "%FESS_USE_IPV4%" == "" (
|
||||
set JAVA_OPTS=%JAVA_OPTS% -Djava.net.preferIPv4Stack=true
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Djava.net.preferIPv4Stack=true
|
||||
)
|
||||
|
||||
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseParNewGC
|
||||
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseConcMarkSweepGC
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Djna.nosys=true
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Djdk.io.permissionsUseCanonicalPath=true
|
||||
|
||||
set JAVA_OPTS=%JAVA_OPTS% -XX:CMSInitiatingOccupancyFraction=75
|
||||
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseCMSInitiatingOccupancyOnly
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -XX:+UseG1GC
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -XX:InitiatingHeapOccupancyPercent=75
|
||||
|
||||
set JAVA_OPTS=%JAVA_OPTS% -Dio.netty.recycler.maxCapacityPerThread=0
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dio.netty.noUnsafe=true
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dio.netty.noKeySetOptimization=true
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dio.netty.recycler.maxCapacityPerThread=0
|
||||
|
||||
set JAVA_OPTS=%JAVA_OPTS% -Dlog4j.shutdownHookEnabled=false
|
||||
set JAVA_OPTS=%JAVA_OPTS% -Dlog4j2.disable.jmx=true
|
||||
set JAVA_OPTS=%JAVA_OPTS% -Dlog4j.skipJansi=true
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dlog4j.shutdownHookEnabled=false
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dlog4j2.disable.jmx=true
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dlog4j2.formatMsgNoLookups=true
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dlog4j.skipJansi=true
|
||||
|
||||
if NOT "%FESS_USE_GC_LOGGING%" == "" set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCDetails
|
||||
if NOT "%FESS_USE_GC_LOGGING%" == "" set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCTimeStamps
|
||||
if NOT "%FESS_USE_GC_LOGGING%" == "" set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCDateStamps
|
||||
if NOT "%FESS_USE_GC_LOGGING%" == "" set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintClassHistogram
|
||||
if NOT "%FESS_USE_GC_LOGGING%" == "" set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintTenuringDistribution
|
||||
if NOT "%FESS_USE_GC_LOGGING%" == "" set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCApplicationStoppedTime
|
||||
if NOT "%FESS_USE_GC_LOGGING%" == "" set JAVA_OPTS=%JAVA_OPTS% -Xloggc:%FESS_HOME%/logs/gc.log
|
||||
REM SSL truststore for certificate validation over https
|
||||
REM FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Djavax.net.ssl.trustStore=/tech/elastic/config/truststore.jks
|
||||
REM FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Djavax.net.ssl.trustStorePassword=changeit
|
||||
|
||||
REM Causes the JVM to dump its heap on OutOfMemory.
|
||||
set JAVA_OPTS=%JAVA_OPTS% -XX:+HeapDumpOnOutOfMemoryError
|
||||
REM set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -XX:+HeapDumpOnOutOfMemoryError
|
||||
REM The path to the heap dump location, note directory must exists and have enough
|
||||
REM space for a full heap dump.
|
||||
REM JAVA_OPTS=%JAVA_OPTS% -XX:HeapDumpPath=%FESS_HOME%/logs/heapdump.hprof
|
||||
REM FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -XX:HeapDumpPath=%FESS_HOME%/logs/heapdump.hprof
|
||||
|
||||
REM Disables explicit GC
|
||||
set JAVA_OPTS=%JAVA_OPTS% -XX:+DisableExplicitGC
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -XX:+DisableExplicitGC
|
||||
|
||||
REM Ensure UTF-8 encoding by default (e.g. filenames)
|
||||
set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8
|
||||
|
||||
REM Use Groovy ClassValue
|
||||
set JAVA_OPTS=%JAVA_OPTS% -Dgroovy.use.classvalue=true
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfile.encoding=UTF-8
|
||||
|
||||
REM Application Configuration
|
||||
set APP_NAME=fess
|
||||
set ES_HOME=%FESS_HOME%/es
|
||||
set SEARCH_ENGINE_HOME=%FESS_HOME%/es
|
||||
|
||||
if NOT "%FESS_USE_GC_LOGGING%" == "" set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Xlog:gc*,gc+age=trace,safepoint:file=%FESS_HOME%/logs/gc-%APP_NAME%.log:utctime,pid,tags:filecount=5,filesize=64m
|
||||
|
||||
set FESS_CLASSPATH=%FESS_HOME%\lib\classes
|
||||
if ""%FESS_JAVA_OPTS%""=="""" (
|
||||
set FESS_JAVA_OPTS=-Dfess
|
||||
) else (
|
||||
set FESS_JAVA_OPTS=-Dfess %FESS_JAVA_OPTS%
|
||||
)
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Des-foreground=yes
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.home="%FESS_HOME%"
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.es.dir="%ES_HOME%"
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.es.dir="%SEARCH_ENGINE_HOME%"
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.context.path=/
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.port=8080
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.webapp.path=%FESS_HOME%\app
|
||||
|
@ -108,7 +106,8 @@ set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.log.level=warn
|
|||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dlasta.env=web
|
||||
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dtomcat.config.path=tomcat_config.properties
|
||||
|
||||
REM External elasticsearch cluster
|
||||
REM set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.es.http_address=http://localhost:9200
|
||||
REM set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.es.transport_addresses=localhost:9300
|
||||
REM set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.dictionary.path=%ES_HOME%/config/
|
||||
REM External opensearch cluster
|
||||
REM set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.search_engine.http_address=http://localhost:9200
|
||||
REM set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.dictionary.path=%SEARCH_ENGINE_HOME%/config/
|
||||
|
||||
set GROOVY_TURN_OFF_JAVA_WARNINGS=true
|
||||
|
|
|
@ -2,6 +2,13 @@
|
|||
|
||||
FESS_CLASSPATH=$FESS_HOME/lib/classes
|
||||
|
||||
# JAVA_OPTS is not a built-in JVM mechanism but some people think it is so we
|
||||
# warn them that we are not observing the value of $JAVA_OPTS
|
||||
if [ ! -z "$JAVA_OPTS" ]; then
|
||||
echo -n "warning: ignoring JAVA_OPTS=$JAVA_OPTS; "
|
||||
echo "pass JVM parameters via FESS_JAVA_OPTS"
|
||||
fi
|
||||
|
||||
if [ "x$FESS_MIN_MEM" = "x" ]; then
|
||||
FESS_MIN_MEM=256m
|
||||
fi
|
||||
|
@ -13,75 +20,71 @@ if [ "x$FESS_HEAP_SIZE" != "x" ]; then
|
|||
FESS_MAX_MEM=$FESS_HEAP_SIZE
|
||||
fi
|
||||
|
||||
# External elasticsearch cluster
|
||||
#ES_HTTP_URL=http://localhost:9200
|
||||
#ES_TRANSPORT_URL=localhost:9300
|
||||
#FESS_DICTIONARY_PATH=/var/lib/elasticsearch/config/
|
||||
# External opensearch cluster
|
||||
#SEARCH_ENGINE_HTTP_URL=http://localhost:9200
|
||||
#FESS_DICTIONARY_PATH=/var/lib/opensearch/config/
|
||||
|
||||
# SSL truststore for certificate validation over https
|
||||
#FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Djavax.net.ssl.trustStore=/tech/elastic/config/truststore.jks"
|
||||
#FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Djavax.net.ssl.trustStorePassword=changeit"
|
||||
|
||||
# min and max heap sizes should be set to the same value to avoid
|
||||
# stop-the-world GC pauses during resize, and so that we can lock the
|
||||
# heap in memory on startup to prevent any of it from being swapped
|
||||
# out.
|
||||
JAVA_OPTS="$JAVA_OPTS -Xms${FESS_MIN_MEM}"
|
||||
JAVA_OPTS="$JAVA_OPTS -Xmx${FESS_MAX_MEM}"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Xms${FESS_MIN_MEM}"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Xmx${FESS_MAX_MEM}"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -XX:MaxMetaspaceSize=256m -XX:CompressedClassSpaceSize=32m"
|
||||
|
||||
# new generation
|
||||
if [ "x$FESS_HEAP_NEWSIZE" != "x" ]; then
|
||||
JAVA_OPTS="$JAVA_OPTS -Xmn${FESS_HEAP_NEWSIZE}"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Xmn${FESS_HEAP_NEWSIZE}"
|
||||
fi
|
||||
|
||||
# set to headless, just in case
|
||||
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Djava.awt.headless=true"
|
||||
|
||||
# maximum # keep-alive connections to maintain at once
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dhttp.maxConnections=20"
|
||||
|
||||
# Force the JVM to use IPv4 stack
|
||||
if [ "x$FESS_USE_IPV4" != "x" ]; then
|
||||
JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Djava.net.preferIPv4Stack=true"
|
||||
fi
|
||||
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC"
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Djna.nosys=true"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Djdk.io.permissionsUseCanonicalPath=true"
|
||||
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=75"
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSInitiatingOccupancyOnly"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -XX:+UseG1GC"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -XX:InitiatingHeapOccupancyPercent=75"
|
||||
|
||||
JAVA_OPTS="$JAVA_OPTS -Dio.netty.recycler.maxCapacityPerThread=0"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dio.netty.noUnsafe=true"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dio.netty.noKeySetOptimization=true"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dio.netty.recycler.maxCapacityPerThread=0"
|
||||
|
||||
JAVA_OPTS="$JAVA_OPTS -Dlog4j.shutdownHookEnabled=false"
|
||||
JAVA_OPTS="$JAVA_OPTS -Dlog4j2.disable.jmx=true"
|
||||
JAVA_OPTS="$JAVA_OPTS -Dlog4j.skipJansi=true"
|
||||
|
||||
# GC logging options
|
||||
if [ "x$FESS_USE_GC_LOGGING" != "x" ]; then
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails"
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCTimeStamps"
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDateStamps"
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+PrintClassHistogram"
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+PrintTenuringDistribution"
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCApplicationStoppedTime"
|
||||
JAVA_OPTS="$JAVA_OPTS -Xloggc:/var/log/elasticsearch/gc.log"
|
||||
fi
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dlog4j.shutdownHookEnabled=false"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dlog4j2.disable.jmx=true"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dlog4j2.formatMsgNoLookups=true"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dlog4j.skipJansi=true"
|
||||
|
||||
# Causes the JVM to dump its heap on OutOfMemory.
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError"
|
||||
#FESS_JAVA_OPTS="$FESS_JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError"
|
||||
# The path to the heap dump location, note directory must exists and have enough
|
||||
# space for a full heap dump.
|
||||
#JAVA_OPTS="$JAVA_OPTS -XX:HeapDumpPath=$FESS_HOME/logs/heapdump.hprof"
|
||||
#FESS_JAVA_OPTS="$FESS_JAVA_OPTS -XX:HeapDumpPath=$FESS_HOME/logs/heapdump.hprof"
|
||||
|
||||
# Disables explicit GC
|
||||
JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -XX:+DisableExplicitGC"
|
||||
|
||||
# Ensure UTF-8 encoding by default (e.g. filenames)
|
||||
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
|
||||
|
||||
# Use Groovy ClassValue
|
||||
JAVA_OPTS="$JAVA_OPTS -Dgroovy.use.classvalue=true"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfile.encoding=UTF-8"
|
||||
|
||||
# Application Configuration
|
||||
if [ "x$APP_NAME" = "x" ]; then
|
||||
APP_NAME=fess
|
||||
fi
|
||||
if [ "x$ES_HOME" = "x" ]; then
|
||||
ES_HOME=$FESS_HOME/es
|
||||
if [ "x$SEARCH_ENGINE_HOME" = "x" ]; then
|
||||
SEARCH_ENGINE_HOME=$FESS_HOME/es
|
||||
fi
|
||||
if [ "x$FESS_TEMP_PATH" = "x" ]; then
|
||||
FESS_TEMP_PATH=$FESS_HOME/temp
|
||||
|
@ -89,14 +92,26 @@ fi
|
|||
if [ "x$FESS_LOG_PATH" = "x" ]; then
|
||||
FESS_LOG_PATH=$FESS_HOME/logs
|
||||
fi
|
||||
if [ "x$FESS_LOG_LEVEL" = "x" ]; then
|
||||
FESS_LOG_LEVEL=warn
|
||||
fi
|
||||
if [ "x$FESS_PORT" = "x" ]; then
|
||||
FESS_PORT=8080
|
||||
fi
|
||||
if [ "x$FESS_CONTEXT_PATH" = "x" ]; then
|
||||
FESS_CONTEXT_PATH=/
|
||||
fi
|
||||
if [ "x$FESS_USE_GC_LOGGING" != "x" ]; then
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Xlog:gc*,gc+age=trace,safepoint:file=$FESS_LOG_PATH/gc-$APP_NAME.log:utctime,pid,tags:filecount=5,filesize=64m"
|
||||
fi
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.home=$FESS_HOME"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.context.path=/"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.port=8080"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.context.path=$FESS_CONTEXT_PATH"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.port=$FESS_PORT"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.webapp.path=$FESS_HOME/app"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.temp.path=$FESS_TEMP_PATH"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.log.name=$APP_NAME"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.log.path=$FESS_LOG_PATH"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.log.level=warn"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.log.level=$FESS_LOG_LEVEL"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dlasta.env=web"
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dtomcat.config.path=tomcat_config.properties"
|
||||
if [ "x$FESS_CONF_PATH" != "x" ]; then
|
||||
|
@ -105,13 +120,11 @@ fi
|
|||
if [ "x$FESS_VAR_PATH" != "x" ]; then
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.var.path=$FESS_VAR_PATH"
|
||||
fi
|
||||
if [ "x$ES_HTTP_URL" != "x" ]; then
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.es.http_address=$ES_HTTP_URL"
|
||||
fi
|
||||
if [ "x$ES_TRANSPORT_URL" != "x" ]; then
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.es.transport_addresses=$ES_TRANSPORT_URL"
|
||||
if [ "x$SEARCH_ENGINE_HTTP_URL" != "x" ]; then
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.search_engine.http_address=$SEARCH_ENGINE_HTTP_URL"
|
||||
fi
|
||||
if [ "x$FESS_DICTIONARY_PATH" != "x" ]; then
|
||||
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dfess.dictionary.path=$FESS_DICTIONARY_PATH"
|
||||
fi
|
||||
|
||||
GROOVY_TURN_OFF_JAVA_WARNINGS=true
|
||||
|
|
|
@ -1,21 +1,91 @@
|
|||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
CMD_TYPE=$1
|
||||
URL=$2
|
||||
OUTPUT_FILE=$3
|
||||
IMAGE_SIZE=100x100!
|
||||
cmd_type=$1
|
||||
url=$2
|
||||
output_file=$3
|
||||
image_size=100x100
|
||||
target_file=$(echo "$url" | sed -e "s#^file:/*#/#g")
|
||||
|
||||
if [ x"$CMD_TYPE" = "xmsoffice" ] ; then
|
||||
TARGET_FILE=`echo $URL | sed -e "s#^file:/*#/#g"`
|
||||
TMP_FILE=/tmp/thumbnail.$$.pdf
|
||||
unoconv -o $TMP_FILE -f pdf $TARGET_FILE
|
||||
convert -thumbnail $IMAGE_SIZE $TMP_FILE $OUTPUT_FILE
|
||||
rm $TMP_FILE
|
||||
elif [ x"$CMD_TYPE" = "xpdf" ] ; then
|
||||
TARGET_FILE=`echo $URL | sed -e "s#^file:/*#/#g"`
|
||||
convert -thumbnail $IMAGE_SIZE $TARGET_FILE $OUTPUT_FILE
|
||||
check_command() {
|
||||
cmd=$1
|
||||
cmd_path=$(command -v "${cmd}")
|
||||
if [[ ! -e "${cmd_path}" ]] ; then
|
||||
echo "${cmd} does not exist."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ x"$HOME" = "x/root" ]] ; then
|
||||
HOME=/var/lib/fess
|
||||
fi
|
||||
|
||||
if [[ x"${cmd_type}" = "xmsoffice" ]] ; then
|
||||
check_command convert
|
||||
check_command pdftoppm
|
||||
check_command unoconv
|
||||
tmp_pdf_file=/tmp/thumbnail.$$.pdf
|
||||
unoconv -e PageRange=1-1 -o ${tmp_pdf_file} -f pdf "${target_file}"
|
||||
if [[ ! -f ${tmp_pdf_file} ]] ; then
|
||||
echo "unoconv does not work."
|
||||
exit 1
|
||||
fi
|
||||
tmp_png_prefix=/tmp/thumbnail.png.$$
|
||||
pdftoppm -png -singlefile ${tmp_pdf_file} ${tmp_png_prefix}
|
||||
tmp_png_file="${tmp_png_prefix}.png"
|
||||
rm -f ${tmp_pdf_file}
|
||||
if [[ ! -f ${tmp_png_file} ]] ; then
|
||||
echo "pdftoppm does not work."
|
||||
exit 1
|
||||
fi
|
||||
convert -thumbnail ${image_size} ${tmp_png_file} "${output_file}"
|
||||
rm -f ${tmp_png_prefix}*png
|
||||
elif [[ x"${cmd_type}" = "xpdf" ]] ; then
|
||||
check_command convert
|
||||
check_command pdftoppm
|
||||
target_file=$(echo "$url" | sed -e "s#^file:/*#/#g")
|
||||
tmp_png_prefix=/tmp/thumbnail.png.$$
|
||||
pdftoppm -png -singlefile "${target_file}" ${tmp_png_prefix}
|
||||
tmp_png_file="${tmp_png_prefix}.png"
|
||||
if [[ ! -f ${tmp_png_file} ]] ; then
|
||||
echo "pdftoppm does not work."
|
||||
exit 1
|
||||
fi
|
||||
convert -thumbnail ${image_size} ${tmp_png_file} "${output_file}"
|
||||
rm -f ${tmp_png_prefix}*png
|
||||
elif [[ x"${cmd_type}" = "xps" ]] ; then
|
||||
check_command convert
|
||||
check_command pdftoppm
|
||||
check_command ps2pdf
|
||||
target_file=$(echo "$url" | sed -e "s#^file:/*#/#g")
|
||||
tmp_pdf_file=/tmp/thumbnail.pdf.$$
|
||||
ps2pdf "${target_file}" ${tmp_pdf_file}
|
||||
if [[ ! -f ${tmp_pdf_file} ]] ; then
|
||||
echo "ps2pdf does not work."
|
||||
exit 1
|
||||
fi
|
||||
tmp_png_prefix=/tmp/thumbnail.png.$$
|
||||
pdftoppm -png -singlefile ${tmp_pdf_file} ${tmp_png_prefix}
|
||||
tmp_png_file="${tmp_png_prefix}.png"
|
||||
rm -f ${tmp_pdf_file}
|
||||
if [[ ! -f ${tmp_png_file} ]] ; then
|
||||
echo "pdftoppm does not work."
|
||||
exit 1
|
||||
fi
|
||||
convert -thumbnail ${image_size} ${tmp_png_file} "${output_file}"
|
||||
rm -f ${tmp_png_prefix}*png
|
||||
elif [[ x"${cmd_type}" = "ximage" ]] ; then
|
||||
check_command convert
|
||||
target_file=$(echo "$url" | sed -e "s#^file:/*#/#g")
|
||||
convert -thumbnail ${image_size} "${target_file}" "${output_file}"
|
||||
elif [[ x"${cmd_type}" = "x" ]] ; then
|
||||
echo "No filetype."
|
||||
exit 1
|
||||
else
|
||||
echo "Unsupported type: $CMD_TYPE"
|
||||
echo "Unsupported type: ${cmd_type}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f ${output_file} ]] ; then
|
||||
echo "Thumbnail is not created."
|
||||
exit 1
|
||||
fi
|
||||
|
|
|
@ -136,20 +136,14 @@ if NOT "%FESS_HEAP_SIZE%" == "" set FESS_MAX_MEM=%FESS_HEAP_SIZE%
|
|||
call:convertxm %FESS_MIN_MEM% JVM_XMS
|
||||
call:convertxm %FESS_MAX_MEM% JVM_XMX
|
||||
|
||||
REM java_opts might be empty - init to avoid tripping commons daemon (if the command starts with ;)
|
||||
if "%JAVA_OPTS%" == "" set JAVA_OPTS=-XX:+UseParNewGC
|
||||
|
||||
CALL "%FESS_HOME%\bin\fess.in.bat"
|
||||
|
||||
rem thread stack size
|
||||
set JVM_SS=256
|
||||
|
||||
set FESS_PARAMS=-Dfess;-Dfess.home="%FESS_HOME%";-Dfess.es.dir="%ES_HOME%";-Dfess.home="%FESS_HOME%";-Dfess.context.path="/";-Dfess.port=8080;-Dfess.webapp.path="%FESS_HOME%\app";-Dfess.temp.path="%FESS_HOME%\temp";-Dfess.log.name="%APP_NAME%";-Dfess.log.path="%FESS_HOME%\logs";-Dfess.log.level=warn;-Dlasta.env=web;-Dtomcat.config.path=tomcat_config.properties
|
||||
set FESS_PARAMS=-Dfess;-Dfess.home="%FESS_HOME%";-Dfess.es.dir="%SEARCH_ENGINE_HOME%";-Dfess.home="%FESS_HOME%";-Dfess.context.path="/";-Dfess.port=8080;-Dfess.webapp.path="%FESS_HOME%\app";-Dfess.temp.path="%FESS_HOME%\temp";-Dfess.log.name="%APP_NAME%";-Dfess.log.path="%FESS_HOME%\logs";-Dfess.log.level=warn;-Dlasta.env=web;-Dtomcat.config.path=tomcat_config.properties
|
||||
|
||||
set JVM_OPTS=%JAVA_OPTS: =;%
|
||||
|
||||
if not "%FESS_JAVA_OPTS%" == "" set JVM_FESS_JAVA_OPTS=%FESS_JAVA_OPTS: =#%
|
||||
if not "%FESS_JAVA_OPTS%" == "" set JVM_OPTS=%JVM_OPTS%;%JVM_FESS_JAVA_OPTS%;
|
||||
set JVM_OPTS=-XX:+UseG1GC%FESS_JAVA_OPTS: =;%
|
||||
|
||||
if "%FESS_START_TYPE%" == "" set FESS_START_TYPE=manual
|
||||
if "%FESS_STOP_TIMEOUT%" == "" set FESS_STOP_TIMEOUT=0
|
||||
|
|
|
@ -6,4 +6,8 @@
|
|||
# ------
|
||||
tomcat.URIEncoding = UTF-8
|
||||
tomcat.useBodyEncodingForURI = true
|
||||
#tomcat.secure=false
|
||||
#tomcat.scheme=http
|
||||
#tomcat.bindAddress=127.0.0.1
|
||||
#tomcat.proxyPort=
|
||||
#tomcat.maxHttpHeaderSize=4096
|
||||
|
|
|
@ -1,920 +0,0 @@
|
|||
{
|
||||
".fess_config" : {
|
||||
"mappings" : {
|
||||
"access_token": {
|
||||
"_all": {
|
||||
"enabled": false
|
||||
},
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"token": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"permissions": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"parameter_name" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"expiredTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"createdBy": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime": {
|
||||
"type": "long"
|
||||
},
|
||||
"updatedBy": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime": {
|
||||
"type": "long"
|
||||
}
|
||||
}
|
||||
},
|
||||
"web_config_to_label" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"labelTypeId" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"webConfigId" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"data_config_to_role" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"dataConfigId" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"roleTypeId" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"path_mapping" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"processType" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"regex" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"replacement" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"userAgent" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
}
|
||||
}
|
||||
},
|
||||
"boost_document_rule" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"boostExpr" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"urlExpr" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"file_config_to_role" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"fileConfigId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"roleTypeId" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"job_log" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"endTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"jobName" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"jobStatus" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"scriptData" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"scriptResult" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"scriptType" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"startTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"target" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"lastUpdated" : {
|
||||
"type" : "long"
|
||||
}
|
||||
}
|
||||
},
|
||||
"role_type" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"name" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"value" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"web_config" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"available" : {
|
||||
"type" : "boolean"
|
||||
},
|
||||
"boost" : {
|
||||
"type" : "float"
|
||||
},
|
||||
"configParameter" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"depth" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"description" : {
|
||||
"type": "text"
|
||||
},
|
||||
"excludedDocUrls" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"excludedUrls" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"includedDocUrls" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"includedUrls" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"intervalTime" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"timeToLive" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"maxAccessCount" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"name" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"numOfThread" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"permissions" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"urls" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"userAgent" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"web_authentication" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"authRealm" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"hostname" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"parameters" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"password" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"port" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"protocolScheme" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"username" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"webConfigId" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"data_config_to_label" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"dataConfigId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"labelTypeId" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"duplicate_host" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"duplicateHostName" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"regularName" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
}
|
||||
}
|
||||
},
|
||||
"request_header" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"name" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"value" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"webConfigId" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"bad_word" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"suggestWord" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"targetLabel" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"targetRole" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
}
|
||||
}
|
||||
},
|
||||
"data_config" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"available" : {
|
||||
"type" : "boolean"
|
||||
},
|
||||
"boost" : {
|
||||
"type" : "float"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"description" : {
|
||||
"type": "text"
|
||||
},
|
||||
"handlerName" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"handlerParameter" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"handlerScript" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"name" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"permissions" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
}
|
||||
}
|
||||
},
|
||||
"crawling_info_param" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"crawlingInfoId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"key" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"value" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"web_config_to_role" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"roleTypeId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"webConfigId" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"file_authentication" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"fileConfigId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"hostname" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"parameters" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"password" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"port" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"protocolScheme" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"username" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"crawling_info" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"expiredTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"name" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"sessionId" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"key_match" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"boost" : {
|
||||
"type" : "float"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"maxSize" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"query" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"term" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
}
|
||||
}
|
||||
},
|
||||
"label_to_role" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"labelTypeId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"roleTypeId" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"elevate_word_to_label" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"elevateWordId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"labelTypeId" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"elevate_word" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"boost" : {
|
||||
"type" : "float"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"reading" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"suggestWord" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"targetLabel" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"targetRole" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"permissions" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
}
|
||||
}
|
||||
},
|
||||
"file_config_to_label" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"fileConfigId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"labelTypeId" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"file_config" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"available" : {
|
||||
"type" : "boolean"
|
||||
},
|
||||
"boost" : {
|
||||
"type" : "float"
|
||||
},
|
||||
"configParameter" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"depth" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"description" : {
|
||||
"type": "text"
|
||||
},
|
||||
"excludedDocPaths" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"excludedPaths" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"includedDocPaths" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"includedPaths" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"intervalTime" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"timeToLive" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"maxAccessCount" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"name" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"numOfThread" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"paths" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"permissions" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
}
|
||||
}
|
||||
},
|
||||
"scheduled_job" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"available" : {
|
||||
"type" : "boolean"
|
||||
},
|
||||
"crawler" : {
|
||||
"type" : "boolean"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"cronExpression" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"jobLogging" : {
|
||||
"type" : "boolean"
|
||||
},
|
||||
"name" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"scriptData" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"scriptType" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"target" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
}
|
||||
}
|
||||
},
|
||||
"failure_url" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"configId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"errorCount" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"errorLog" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"errorName" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"lastAccessTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"threadName" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"url" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"label_type" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"excludedPaths" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"includedPaths" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"name" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"permissions" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"value" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"thumbnail_queue" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"target" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"generator" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"thumbnail_id" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"path" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"url" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"refresh_interval" : "1s",
|
||||
"dbflute" : {
|
||||
"access_token" : {
|
||||
"properties" : {
|
||||
"permissions" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
},
|
||||
"data_config" : {
|
||||
"properties" : {
|
||||
"permissions" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
},
|
||||
"file_config" : {
|
||||
"properties" : {
|
||||
"permissions" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
},
|
||||
"label_type" : {
|
||||
"properties" : {
|
||||
"permissions" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
},
|
||||
"web_config" : {
|
||||
"properties" : {
|
||||
"permissions" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
},
|
||||
"elevate_word" : {
|
||||
"properties" : {
|
||||
"permissions" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"number_of_shards" : "2",
|
||||
"number_of_replicas" : "0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
59
src/main/config/es/fess_config_access_token.json
Normal file
59
src/main/config/es/fess_config_access_token.json
Normal file
|
@ -0,0 +1,59 @@
|
|||
{
|
||||
"fess_config.access_token" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"access_token" : {
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"expiredTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"name" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"parameter_name" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"permissions" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"token" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"dbflute" : {
|
||||
"access_token" : {
|
||||
"properties" : {
|
||||
"permissions" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"creation_date" : "1509021049417",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "s8tK7hldQzWbNtsfzHIZZQ",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.access_token"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
44
src/main/config/es/fess_config_bad_word.json
Normal file
44
src/main/config/es/fess_config_bad_word.json
Normal file
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"fess_config.bad_word" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"bad_word" : {
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"suggestWord" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"targetLabel" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"targetRole" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021049746",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "0xToIxg0R1KjZqA0ynv9PQ",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.bad_word"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
44
src/main/config/es/fess_config_boost_document_rule.json
Normal file
44
src/main/config/es/fess_config_boost_document_rule.json
Normal file
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"fess_config.boost_document_rule" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"boost_document_rule" : {
|
||||
"properties" : {
|
||||
"boostExpr" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"urlExpr" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021050077",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "AHy84s2vSoamP32r62Jy4Q",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.boost_document_rule"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
35
src/main/config/es/fess_config_crawling_info.json
Normal file
35
src/main/config/es/fess_config_crawling_info.json
Normal file
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"fess_config.crawling_info" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"crawling_info" : {
|
||||
"properties" : {
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"expiredTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"name" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"sessionId" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021050413",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "Oh0_KGaLRLGjpIm2zjB83Q",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.crawling_info"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
35
src/main/config/es/fess_config_crawling_info_param.json
Normal file
35
src/main/config/es/fess_config_crawling_info_param.json
Normal file
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"fess_config.crawling_info_param" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"crawling_info_param" : {
|
||||
"properties" : {
|
||||
"crawlingInfoId" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"key" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"value" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021050704",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "X-fixtWRQdGqWMpUEEs_Ag",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.crawling_info_param"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
77
src/main/config/es/fess_config_data_config.json
Normal file
77
src/main/config/es/fess_config_data_config.json
Normal file
|
@ -0,0 +1,77 @@
|
|||
{
|
||||
"fess_config.data_config" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"data_config" : {
|
||||
"properties" : {
|
||||
"available" : {
|
||||
"type" : "boolean"
|
||||
},
|
||||
"boost" : {
|
||||
"type" : "float"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"description" : {
|
||||
"type" : "text"
|
||||
},
|
||||
"handlerName" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"handlerParameter" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"handlerScript" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"name" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"permissions" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"virtualHosts" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"dbflute" : {
|
||||
"data_config" : {
|
||||
"properties" : {
|
||||
"permissions" : {
|
||||
"array" : "true"
|
||||
},
|
||||
"virtualHosts" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"creation_date" : "1509021051038",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "H4zzbuU5SJWFOLRnofoiNw",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.data_config"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
44
src/main/config/es/fess_config_duplicate_host.json
Normal file
44
src/main/config/es/fess_config_duplicate_host.json
Normal file
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"fess_config.duplicate_host" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"duplicate_host" : {
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"duplicateHostName" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"regularName" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021051920",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "fP473Sr-RZO2d36NkKGgKQ",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.duplicate_host"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
56
src/main/config/es/fess_config_elevate_word.json
Normal file
56
src/main/config/es/fess_config_elevate_word.json
Normal file
|
@ -0,0 +1,56 @@
|
|||
{
|
||||
"fess_config.elevate_word" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"elevate_word" : {
|
||||
"properties" : {
|
||||
"boost" : {
|
||||
"type" : "float"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"permissions" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"reading" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"suggestWord" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"dbflute" : {
|
||||
"elevate_word" : {
|
||||
"properties" : {
|
||||
"permissions" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"creation_date" : "1509021052202",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "KVOz6G2oR1S8lU5BvNyQrg",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.elevate_word"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
29
src/main/config/es/fess_config_elevate_word_to_label.json
Normal file
29
src/main/config/es/fess_config_elevate_word_to_label.json
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"fess_config.elevate_word_to_label" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"elevate_word_to_label" : {
|
||||
"properties" : {
|
||||
"elevateWordId" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"labelTypeId" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021052498",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "z3miZa9NSdywfPRNGhrlzg",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.elevate_word_to_label"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
44
src/main/config/es/fess_config_failure_url.json
Normal file
44
src/main/config/es/fess_config_failure_url.json
Normal file
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"fess_config.failure_url" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"failure_url" : {
|
||||
"properties" : {
|
||||
"configId" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"errorCount" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"errorLog" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"errorName" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"lastAccessTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"threadName" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"url" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021052830",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "WskRnE71Qsas-ki_GN3RSg",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.failure_url"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
56
src/main/config/es/fess_config_file_authentication.json
Normal file
56
src/main/config/es/fess_config_file_authentication.json
Normal file
|
@ -0,0 +1,56 @@
|
|||
{
|
||||
"fess_config.file_authentication" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"file_authentication" : {
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"fileConfigId" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"hostname" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"parameters" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"password" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"port" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"protocolScheme" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"username" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021053135",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "-gono3d2R0KP5po-ggBr0A",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.file_authentication"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
101
src/main/config/es/fess_config_file_config.json
Normal file
101
src/main/config/es/fess_config_file_config.json
Normal file
|
@ -0,0 +1,101 @@
|
|||
{
|
||||
"fess_config.file_config" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"file_config" : {
|
||||
"properties" : {
|
||||
"available" : {
|
||||
"type" : "boolean"
|
||||
},
|
||||
"boost" : {
|
||||
"type" : "float"
|
||||
},
|
||||
"configParameter" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"depth" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"description" : {
|
||||
"type" : "text"
|
||||
},
|
||||
"excludedDocPaths" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"excludedPaths" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"includedDocPaths" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"includedPaths" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"intervalTime" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"maxAccessCount" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"name" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"numOfThread" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"paths" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"permissions" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"timeToLive" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"virtualHosts" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"dbflute" : {
|
||||
"file_config" : {
|
||||
"properties" : {
|
||||
"permissions" : {
|
||||
"array" : "true"
|
||||
},
|
||||
"virtualHosts" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"creation_date" : "1509021053464",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "5fluDb3PStuKaHkl-5gdNw",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.file_config"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
50
src/main/config/es/fess_config_job_log.json
Normal file
50
src/main/config/es/fess_config_job_log.json
Normal file
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
"fess_config.job_log" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"job_log" : {
|
||||
"properties" : {
|
||||
"endTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"jobName" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"jobStatus" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"lastUpdated" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"scriptData" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"scriptResult" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"scriptType" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"startTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"target" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021054334",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "vIZ3R-jCRzGKaZvpZHRFPw",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.job_log"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
50
src/main/config/es/fess_config_key_match.json
Normal file
50
src/main/config/es/fess_config_key_match.json
Normal file
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
"fess_config.key_match" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"key_match" : {
|
||||
"properties" : {
|
||||
"boost" : {
|
||||
"type" : "float"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"maxSize" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"query" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"term" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"virtualHost" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021054613",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "tqxL0WgAR665iLtdrY81AA",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.key_match"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
65
src/main/config/es/fess_config_label_type.json
Normal file
65
src/main/config/es/fess_config_label_type.json
Normal file
|
@ -0,0 +1,65 @@
|
|||
{
|
||||
"fess_config.label_type" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"label_type" : {
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"excludedPaths" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"includedPaths" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"name" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"permissions" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"value" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"virtualHost" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"dbflute" : {
|
||||
"label_type" : {
|
||||
"properties" : {
|
||||
"permissions" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"creation_date" : "1509021055215",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "Zylt7BsVRhiOasQfUWBg0w",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.label_type"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
50
src/main/config/es/fess_config_path_mapping.json
Normal file
50
src/main/config/es/fess_config_path_mapping.json
Normal file
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
"fess_config.path_mapping" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"path_mapping" : {
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"processType" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"regex" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"replacement" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"userAgent" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021055516",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "Vn_Ry5JPRSet5M3Cg2D17w",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.path_mapping"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
47
src/main/config/es/fess_config_related_content.json
Normal file
47
src/main/config/es/fess_config_related_content.json
Normal file
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
"fess_config.related_content" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"related_content" : {
|
||||
"properties" : {
|
||||
"content" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"term" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"virtualHost" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021055837",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "34AXOK0ITy6U7fzGItZJsQ",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.related_content"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
53
src/main/config/es/fess_config_related_query.json
Normal file
53
src/main/config/es/fess_config_related_query.json
Normal file
|
@ -0,0 +1,53 @@
|
|||
{
|
||||
"fess_config.related_query" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"related_query" : {
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"queries" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"term" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"virtualHost" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"dbflute" : {
|
||||
"related_query" : {
|
||||
"properties" : {
|
||||
"queries" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"creation_date" : "1509021056135",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "8lLdTVsGQCKFnbgLSkPaUA",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.related_query"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
44
src/main/config/es/fess_config_request_header.json
Normal file
44
src/main/config/es/fess_config_request_header.json
Normal file
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"fess_config.request_header" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"request_header" : {
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"name" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"value" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"webConfigId" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021056434",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "Zrp1Be7PS1ySzKAjlrpICg",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.request_header"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
44
src/main/config/es/fess_config_role_type.json
Normal file
44
src/main/config/es/fess_config_role_type.json
Normal file
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"fess_config.role_type" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"role_type" : {
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"name" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"value" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021056731",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "MnnT8tsrT5GqpB8pYafyWg",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.role_type"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
62
src/main/config/es/fess_config_scheduled_job.json
Normal file
62
src/main/config/es/fess_config_scheduled_job.json
Normal file
|
@ -0,0 +1,62 @@
|
|||
{
|
||||
"fess_config.scheduled_job" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"scheduled_job" : {
|
||||
"properties" : {
|
||||
"available" : {
|
||||
"type" : "boolean"
|
||||
},
|
||||
"crawler" : {
|
||||
"type" : "boolean"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"cronExpression" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"jobLogging" : {
|
||||
"type" : "boolean"
|
||||
},
|
||||
"name" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"scriptData" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"scriptType" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"target" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021057017",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "bhfc7WeARZymc_hr4dF1og",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.scheduled_job"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
41
src/main/config/es/fess_config_thumbnail_queue.json
Normal file
41
src/main/config/es/fess_config_thumbnail_queue.json
Normal file
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"fess_config.thumbnail_queue" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"thumbnail_queue" : {
|
||||
"properties" : {
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"generator" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"path" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"target" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"thumbnail_id" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021057304",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "gofu2g1ATH6L2rVweOWmtg",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.thumbnail_queue"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
59
src/main/config/es/fess_config_web_authentication.json
Normal file
59
src/main/config/es/fess_config_web_authentication.json
Normal file
|
@ -0,0 +1,59 @@
|
|||
{
|
||||
"fess_config.web_authentication" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"web_authentication" : {
|
||||
"properties" : {
|
||||
"authRealm" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"hostname" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"parameters" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"password" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"port" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"protocolScheme" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"username" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"webConfigId" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021057587",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "8lg38XiCSh-kJgbOgYzMFA",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.web_authentication"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
104
src/main/config/es/fess_config_web_config.json
Normal file
104
src/main/config/es/fess_config_web_config.json
Normal file
|
@ -0,0 +1,104 @@
|
|||
{
|
||||
"fess_config.web_config" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"web_config" : {
|
||||
"properties" : {
|
||||
"available" : {
|
||||
"type" : "boolean"
|
||||
},
|
||||
"boost" : {
|
||||
"type" : "float"
|
||||
},
|
||||
"configParameter" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"createdTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"depth" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"description" : {
|
||||
"type" : "text"
|
||||
},
|
||||
"excludedDocUrls" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"excludedUrls" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"includedDocUrls" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"includedUrls" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"intervalTime" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"maxAccessCount" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"name" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"numOfThread" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"permissions" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"sortOrder" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"timeToLive" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"updatedBy" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"updatedTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"urls" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"userAgent" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"virtualHosts" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"dbflute" : {
|
||||
"web_config" : {
|
||||
"properties" : {
|
||||
"permissions" : {
|
||||
"array" : "true"
|
||||
},
|
||||
"virtualHosts" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"creation_date" : "1509021057900",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "OYkqmnvbTJami5vnLYfYNg",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_config.web_config"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,165 +0,0 @@
|
|||
{
|
||||
"fess_log" : {
|
||||
"mappings" : {
|
||||
"search_field_log" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"name" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"searchLogId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"value" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"favorite_log" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"createdAt" : {
|
||||
"type" : "date",
|
||||
"format" : "date_optional_time"
|
||||
},
|
||||
"url" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"docId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"queryId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"userInfoId" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"click_log" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"queryRequestedAt" : {
|
||||
"type" : "date",
|
||||
"format" : "date_optional_time"
|
||||
},
|
||||
"requestedAt" : {
|
||||
"type" : "date",
|
||||
"format" : "date_optional_time"
|
||||
},
|
||||
"queryId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"docId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"userSessionId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"url" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"order" : {
|
||||
"type" : "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"search_log" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"accessType" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"user" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"roles" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"queryId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"clientIp" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"hitCount" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"queryOffset" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"queryPageSize" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"referer" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"requestedAt" : {
|
||||
"type" : "date",
|
||||
"format" : "date_optional_time"
|
||||
},
|
||||
"responseTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"queryTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"searchWord" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"userAgent" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"userInfoId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"userSessionId" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"languages" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"user_info" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"createdAt" : {
|
||||
"type" : "date",
|
||||
"format" : "date_optional_time"
|
||||
},
|
||||
"updatedAt" : {
|
||||
"type" : "date",
|
||||
"format" : "date_optional_time"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"refresh_interval" : "60s",
|
||||
"dbflute" : {
|
||||
"search_log" : {
|
||||
"properties" : {
|
||||
"roles" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"number_of_shards" : "10",
|
||||
"number_of_replicas" : "0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
49
src/main/config/es/fess_log_click_log.json
Normal file
49
src/main/config/es/fess_log_click_log.json
Normal file
|
@ -0,0 +1,49 @@
|
|||
{
|
||||
"fess_log.click_log" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"click_log" : {
|
||||
"properties" : {
|
||||
"urlId" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"docId" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"order" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"queryId" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"queryRequestedAt" : {
|
||||
"type" : "date",
|
||||
"format" : "date_optional_time"
|
||||
},
|
||||
"requestedAt" : {
|
||||
"type" : "date",
|
||||
"format" : "date_optional_time"
|
||||
},
|
||||
"url" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"userSessionId" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021059710",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "zDxbXj7iTiOaGJKWIa5fog",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_log.click_log"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
39
src/main/config/es/fess_log_favorite_log.json
Normal file
39
src/main/config/es/fess_log_favorite_log.json
Normal file
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"fess_log.favorite_log" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"favorite_log" : {
|
||||
"properties" : {
|
||||
"createdAt" : {
|
||||
"type" : "date",
|
||||
"format" : "date_optional_time"
|
||||
},
|
||||
"docId" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"queryId" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"url" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"userInfoId" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021060038",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "LRohRohXTCGxGdsabXPNnQ",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_log.favorite_log"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
90
src/main/config/es/fess_log_search_log.json
Normal file
90
src/main/config/es/fess_log_search_log.json
Normal file
|
@ -0,0 +1,90 @@
|
|||
{
|
||||
"fess_log.search_log" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"search_log" : {
|
||||
"properties" : {
|
||||
"accessType" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"clientIp" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"hitCount" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"hitCountRelation" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"languages" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"queryId" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"queryOffset" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"queryPageSize" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"queryTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"referer" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"requestedAt" : {
|
||||
"type" : "date",
|
||||
"format" : "date_optional_time"
|
||||
},
|
||||
"responseTime" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"roles" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"searchWord" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"user" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"userAgent" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"userInfoId" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"userSessionId" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"virtualHost" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"dbflute" : {
|
||||
"search_log" : {
|
||||
"properties" : {
|
||||
"roles" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"creation_date" : "1509021060319",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "XqUliNMJQy-rvkaOi_k9AQ",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_log.search_log"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
31
src/main/config/es/fess_log_user_info.json
Normal file
31
src/main/config/es/fess_log_user_info.json
Normal file
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"fess_log.user_info" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"user_info" : {
|
||||
"properties" : {
|
||||
"createdAt" : {
|
||||
"type" : "date",
|
||||
"format" : "date_optional_time"
|
||||
},
|
||||
"updatedAt" : {
|
||||
"type" : "date",
|
||||
"format" : "date_optional_time"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021060613",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "AMHq21z_Rw-8aumu04y_wA",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_log.user_info"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,174 +0,0 @@
|
|||
{
|
||||
".fess_user" : {
|
||||
"mappings" : {
|
||||
"role" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"name" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"user" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"name" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"password" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"surname" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"givenName" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"employeeNumber" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"mail" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"telephoneNumber" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"homePhone" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"homePostalAddress" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"labeledURI" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"roomNumber" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"description" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"title" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"pager" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"street" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"postalCode" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"physicalDeliveryOfficeName" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"destinationIndicator" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"internationaliSDNNumber" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"state" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"employeeType" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"facsimileTelephoneNumber" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"postOfficeBox" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"initials" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"carLicense" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"mobile" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"postalAddress" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"city" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"teletexTerminalIdentifier" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"x121Address" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"businessCategory" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"registeredAddress" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"displayName" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"preferredLanguage" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"departmentNumber" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"uidNumber" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"gidNumber" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"homeDirectory" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"groups" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"roles" : {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"group" : {
|
||||
"_all" : {
|
||||
"enabled" : false
|
||||
},
|
||||
"properties" : {
|
||||
"name" : {
|
||||
"type": "keyword"
|
||||
},
|
||||
"gidNumber" : {
|
||||
"type" : "long"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"refresh_interval" : "1s",
|
||||
"dbflute" : {
|
||||
"user" : {
|
||||
"properties" : {
|
||||
"groups" : {
|
||||
"array" : "true"
|
||||
},
|
||||
"roles" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"number_of_replicas" : "0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
29
src/main/config/es/fess_user_group.json
Normal file
29
src/main/config/es/fess_user_group.json
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"fess_user.group" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"group" : {
|
||||
"properties" : {
|
||||
"gidNumber" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"name" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021058796",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "5EWS2-qMT2WwHG0yPrhP3Q",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_user.group"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
26
src/main/config/es/fess_user_role.json
Normal file
26
src/main/config/es/fess_user_role.json
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"fess_user.role" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"role" : {
|
||||
"properties" : {
|
||||
"name" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"creation_date" : "1509021059090",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "ugUWT7UpRCau5xEMgWOBsw",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_user.role"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
155
src/main/config/es/fess_user_user.json
Normal file
155
src/main/config/es/fess_user_user.json
Normal file
|
@ -0,0 +1,155 @@
|
|||
{
|
||||
"fess_user.user" : {
|
||||
"aliases" : { },
|
||||
"mappings" : {
|
||||
"user" : {
|
||||
"properties" : {
|
||||
"businessCategory" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"carLicense" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"city" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"departmentNumber" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"description" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"destinationIndicator" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"displayName" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"employeeNumber" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"employeeType" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"facsimileTelephoneNumber" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"gidNumber" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"givenName" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"groups" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"homeDirectory" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"homePhone" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"homePostalAddress" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"initials" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"internationaliSDNNumber" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"labeledURI" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"mail" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"mobile" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"name" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"pager" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"password" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"physicalDeliveryOfficeName" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"postOfficeBox" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"postalAddress" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"postalCode" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"preferredLanguage" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"registeredAddress" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"roles" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"roomNumber" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"state" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"street" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"surname" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"telephoneNumber" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"teletexTerminalIdentifier" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"title" : {
|
||||
"type" : "keyword"
|
||||
},
|
||||
"uidNumber" : {
|
||||
"type" : "long"
|
||||
},
|
||||
"x121Address" : {
|
||||
"type" : "keyword"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings" : {
|
||||
"index" : {
|
||||
"dbflute" : {
|
||||
"user" : {
|
||||
"properties" : {
|
||||
"groups" : {
|
||||
"array" : "true"
|
||||
},
|
||||
"roles" : {
|
||||
"array" : "true"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"creation_date" : "1509021059384",
|
||||
"number_of_shards" : "5",
|
||||
"number_of_replicas" : "1",
|
||||
"uuid" : "-80Q6PZITfaVdBAm23e91Q",
|
||||
"version" : {
|
||||
"created" : "6000051"
|
||||
},
|
||||
"provided_name" : "fess_user.user"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
730
src/main/config/openapi/openapi-user.yaml
Normal file
730
src/main/config/openapi/openapi-user.yaml
Normal file
|
@ -0,0 +1,730 @@
|
|||
openapi: 3.0.3
|
||||
info:
|
||||
title: Fess - User API
|
||||
description: |-
|
||||
This is a Fess Server based on the OpenAPI 3.0 specification.
|
||||
license:
|
||||
name: Apache 2.0
|
||||
url: http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
version: 14.8.0
|
||||
externalDocs:
|
||||
description: API Documentation
|
||||
url: https://fess.codelibs.org/14.8/api/
|
||||
servers:
|
||||
- url: http://localhost:8080/api/v1
|
||||
tags:
|
||||
- name: search
|
||||
description: Search operations
|
||||
- name: popularword
|
||||
description: Popular word operations
|
||||
- name: monitor
|
||||
description: Monitoring operations
|
||||
- name: suggest
|
||||
description: Suggest operations
|
||||
- name: favorite
|
||||
description: Favorite operations
|
||||
paths:
|
||||
/documents:
|
||||
get:
|
||||
tags:
|
||||
- search
|
||||
summary: Finds documents by query
|
||||
description: Finds documents by search conditions
|
||||
operationId: searchDocuments
|
||||
parameters:
|
||||
- name: q
|
||||
in: query
|
||||
description: Search words
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
example: Fess
|
||||
- name: start
|
||||
in: query
|
||||
description: Start position
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
minimum: 0
|
||||
exclusiveMinimum: false
|
||||
default: 0
|
||||
example: 0
|
||||
- name: offset
|
||||
in: query
|
||||
description: Offset from a start position
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
minimum: 0
|
||||
exclusiveMinimum: false
|
||||
default: 0
|
||||
example: 0
|
||||
- name: num
|
||||
in: query
|
||||
description: The number of returned documents as a search result
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
minimum: 0
|
||||
exclusiveMinimum: false
|
||||
maximum: 100
|
||||
exclusiveMaximum: false
|
||||
default: 20
|
||||
example: 20
|
||||
- name: sort
|
||||
in: query
|
||||
description: Sorted field name
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
example: score
|
||||
- name: fields.label
|
||||
in: query
|
||||
description: Filtered label name
|
||||
required: false
|
||||
style: form
|
||||
explode: true
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: [name]
|
||||
- name: facet.field
|
||||
in: query
|
||||
description: Facet field name
|
||||
required: false
|
||||
style: form
|
||||
explode: true
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: [label]
|
||||
- name: facet.query
|
||||
in: query
|
||||
description: Facet query
|
||||
required: false
|
||||
style: form
|
||||
explode: true
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: ["timestamp:[now/d-1d TO *]"]
|
||||
- name: facet.size
|
||||
in: query
|
||||
description: Item size in facets returned by facet.field
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
minimum: 0
|
||||
exclusiveMinimum: false
|
||||
default: 10
|
||||
example: 10
|
||||
- name: facet.minDocCount
|
||||
in: query
|
||||
description: Minumum document size in facets
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
minimum: 0
|
||||
exclusiveMinimum: false
|
||||
default: 0
|
||||
example: 0
|
||||
- name: geo.location.point
|
||||
in: query
|
||||
description: Latitude and Longitude for Geo search
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
example: 35.0,139.0
|
||||
- name: geo.location.distance
|
||||
in: query
|
||||
description: Distance for Geo search
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
example: 10km
|
||||
- name: lang
|
||||
in: query
|
||||
description: Language
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
example: en
|
||||
- name: preference
|
||||
in: query
|
||||
description: String to specify a shard for searching
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
example: abc
|
||||
- name: callback
|
||||
in: query
|
||||
description: Callback name for using JSONP
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: Successful operation
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
q:
|
||||
type: string
|
||||
example: Fess
|
||||
query_id:
|
||||
type: string
|
||||
example: bd60f9579a494dfd8c03db7c8aa905b0
|
||||
exec_time:
|
||||
type: number
|
||||
example: 0.21
|
||||
query_time:
|
||||
type: integer
|
||||
format: int64
|
||||
example: 0
|
||||
page_size:
|
||||
type: integer
|
||||
example: 20
|
||||
page_number:
|
||||
type: integer
|
||||
example: 1
|
||||
record_count:
|
||||
type: integer
|
||||
format: int64
|
||||
example: 31625
|
||||
page_count:
|
||||
type: integer
|
||||
example: 1
|
||||
highlight_params:
|
||||
type: string
|
||||
example: "&hq=n2sm&hq=Fess"
|
||||
next_page:
|
||||
type: boolean
|
||||
example: true
|
||||
prev_page:
|
||||
type: boolean
|
||||
example: false
|
||||
start_record_number:
|
||||
type: integer
|
||||
example: 1
|
||||
end_record_number:
|
||||
type: integer
|
||||
example: 20
|
||||
page_numbers:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: ["1", "2", "3", "4", "5"]
|
||||
partial:
|
||||
type: boolean
|
||||
example: false
|
||||
search_query:
|
||||
type: string
|
||||
example: "(Fess OR n2sm)"
|
||||
requested_time:
|
||||
type: integer
|
||||
format: int64
|
||||
example: 1507822131845
|
||||
related_query:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: ["aaa"]
|
||||
related_contents:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: []
|
||||
data:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
filetype:
|
||||
type: string
|
||||
example: html
|
||||
title:
|
||||
type: string
|
||||
example: "Open Source Enterprise Search Server: Fess — Fess 11.0 documentation"
|
||||
content_title:
|
||||
type: string
|
||||
example: "Open Source Enterprise Search Server: Fess — Fe..."
|
||||
digest:
|
||||
type: string
|
||||
example: "Docs » Open Source Enterprise Search Server: Fess Commercial Support Open Source Enterprise Search Server: Fess What is Fess ? Fess is very powerful and easily deployable Enterprise Search Server. ..."
|
||||
host:
|
||||
type: string
|
||||
format: hostname
|
||||
example: "fess.codelibs.org"
|
||||
last_modified:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2017-10-09T22:28:56.000Z"
|
||||
content_length:
|
||||
type: string
|
||||
example: "29624"
|
||||
timestamp:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2017-10-09T22:28:56.000Z"
|
||||
url_link:
|
||||
type: string
|
||||
example: "https://fess.codelibs.org/"
|
||||
created:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2017-10-10T15:00:48.609Z"
|
||||
site_path:
|
||||
type: string
|
||||
example: "fess.codelibs.org/"
|
||||
doc_id:
|
||||
type: string
|
||||
example: "e79fbfdfb09d4bffb58ec230c68f6f7e"
|
||||
url:
|
||||
type: string
|
||||
format: uri
|
||||
example: "https://fess.codelibs.org/"
|
||||
content_description:
|
||||
type: string
|
||||
example: "Enterprise Search Server: <strong>Fess</strong> Commercial Support Open...Search Server: <strong>Fess</strong> What is <strong>Fess</strong> ? <strong>Fess</strong> is very powerful...You can install and run <strong>Fess</strong> quickly on any platforms...Java runtime environment. <strong>Fess</strong> is provided under Apache...Apache license. Demo <strong>Fess</strong> is Elasticsearch-based search"
|
||||
site:
|
||||
type: string
|
||||
example: "fess.codelibs.org/"
|
||||
boost:
|
||||
type: string
|
||||
example: "10.0"
|
||||
mimetype:
|
||||
type: string
|
||||
example: "text/html"
|
||||
'400':
|
||||
$ref: '#/components/responses/BadRequest'
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
'404':
|
||||
$ref: '#/components/responses/NotFound'
|
||||
'500':
|
||||
$ref: '#/components/responses/InternalServerError'
|
||||
|
||||
/documents/all:
|
||||
get:
|
||||
tags:
|
||||
- search
|
||||
summary: Finds all documents by query
|
||||
description: Finds all documents by search conditions
|
||||
operationId: searchAllDocuments
|
||||
parameters:
|
||||
- name: q
|
||||
in: query
|
||||
description: Search words
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
example: Fess
|
||||
- name: num
|
||||
in: query
|
||||
description: The number of returned documents as a search result
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
minimum: 0
|
||||
exclusiveMinimum: false
|
||||
maximum: 100
|
||||
exclusiveMaximum: false
|
||||
default: 20
|
||||
example: 20
|
||||
- name: sort
|
||||
in: query
|
||||
description: Sorted field name
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
example: score
|
||||
responses:
|
||||
'200':
|
||||
description: Successful operation
|
||||
content:
|
||||
application/x-ndjson:
|
||||
schema:
|
||||
type: string
|
||||
'400':
|
||||
$ref: '#/components/responses/BadRequest'
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
'404':
|
||||
$ref: '#/components/responses/NotFound'
|
||||
'500':
|
||||
$ref: '#/components/responses/InternalServerError'
|
||||
|
||||
/labels:
|
||||
get:
|
||||
tags:
|
||||
- search
|
||||
summary: List labels
|
||||
description: Returns available labels
|
||||
operationId: listLabels
|
||||
responses:
|
||||
'200':
|
||||
description: Successful operation
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
record_count:
|
||||
type: integer
|
||||
example: 9
|
||||
data:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
label:
|
||||
type: string
|
||||
example: AWS
|
||||
value:
|
||||
type: string
|
||||
example: aws
|
||||
'400':
|
||||
$ref: '#/components/responses/BadRequest'
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
'404':
|
||||
$ref: '#/components/responses/NotFound'
|
||||
'500':
|
||||
$ref: '#/components/responses/InternalServerError'
|
||||
|
||||
/favorites:
|
||||
get:
|
||||
tags:
|
||||
- favorite
|
||||
summary: List favorites
|
||||
description: Returns favorited document IDs
|
||||
operationId: listFavorites
|
||||
parameters:
|
||||
- name: queryId
|
||||
in: query
|
||||
description: Query ID where the document is contained
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
example: queryid
|
||||
responses:
|
||||
'200':
|
||||
description: Successful operation
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
record_count:
|
||||
type: integer
|
||||
example: 9
|
||||
data:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
doc_id:
|
||||
type: string
|
||||
example: "e79fbfdfb09d4bffb58ec230c68f6f7e"
|
||||
'400':
|
||||
$ref: '#/components/responses/BadRequest'
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
'404':
|
||||
$ref: '#/components/responses/NotFound'
|
||||
'500':
|
||||
$ref: '#/components/responses/InternalServerError'
|
||||
|
||||
/documents/{docId}/favorite:
|
||||
post:
|
||||
tags:
|
||||
- favorite
|
||||
summary: Set a favorite mark
|
||||
description: Set a favorite mark to the document
|
||||
operationId: setFavorite
|
||||
parameters:
|
||||
- name: docId
|
||||
in: path
|
||||
description: Document ID to be favorited
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
example: documentid
|
||||
- name: queryId
|
||||
in: query
|
||||
description: Query ID where the document is contained
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
example: queryid
|
||||
responses:
|
||||
'201':
|
||||
description: Successful operation
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
result:
|
||||
type: string
|
||||
example: created
|
||||
'400':
|
||||
$ref: '#/components/responses/BadRequest'
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
'404':
|
||||
$ref: '#/components/responses/NotFound'
|
||||
'500':
|
||||
$ref: '#/components/responses/InternalServerError'
|
||||
|
||||
/popular-words:
|
||||
get:
|
||||
tags:
|
||||
- popularword
|
||||
summary: List popular words
|
||||
description: Returns available labels
|
||||
operationId: listPopularWords
|
||||
parameters:
|
||||
- name: seed
|
||||
in: query
|
||||
description: Random seed to return popular words
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
example: 123
|
||||
- name: label
|
||||
in: query
|
||||
description: Filtered label name
|
||||
required: false
|
||||
style: form
|
||||
explode: true
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: [label]
|
||||
- name: field
|
||||
in: query
|
||||
description: Field name to generate suggest words
|
||||
required: false
|
||||
style: form
|
||||
explode: true
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: [python]
|
||||
responses:
|
||||
'200':
|
||||
description: Successful operation
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
record_count:
|
||||
type: integer
|
||||
example: 9
|
||||
data:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: ["python"]
|
||||
'400':
|
||||
$ref: '#/components/responses/BadRequest'
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
'404':
|
||||
$ref: '#/components/responses/NotFound'
|
||||
'500':
|
||||
$ref: '#/components/responses/InternalServerError'
|
||||
|
||||
/health:
|
||||
get:
|
||||
tags:
|
||||
- monitor
|
||||
summary: Check a server status
|
||||
description: Returns status
|
||||
operationId: ping
|
||||
responses:
|
||||
'200':
|
||||
description: Successful operation
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
data:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
type: string
|
||||
example: green
|
||||
timed_out:
|
||||
type: boolean
|
||||
example: false
|
||||
'400':
|
||||
$ref: '#/components/responses/BadRequest'
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
'404':
|
||||
$ref: '#/components/responses/NotFound'
|
||||
'500':
|
||||
$ref: '#/components/responses/InternalServerError'
|
||||
'503':
|
||||
description: Service unavailable
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
data:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
type: string
|
||||
example: green
|
||||
timed_out:
|
||||
type: boolean
|
||||
example: false
|
||||
|
||||
/suggest-words:
|
||||
get:
|
||||
tags:
|
||||
- suggest
|
||||
summary: Finds suggest words
|
||||
description: Returns words for suggest
|
||||
operationId: findSuggestWords
|
||||
parameters:
|
||||
- name: q
|
||||
in: query
|
||||
description: Inputting characters for search
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
example: fe
|
||||
- name: num
|
||||
in: query
|
||||
description: The number of suggest words
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
minimum: 0
|
||||
exclusiveMinimum: false
|
||||
example: 10
|
||||
default: 10
|
||||
- name: label
|
||||
in: query
|
||||
description: Filtered label name
|
||||
required: false
|
||||
style: form
|
||||
explode: true
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: [label]
|
||||
- name: field
|
||||
in: query
|
||||
description: Field name to generate suggest words
|
||||
required: false
|
||||
style: form
|
||||
explode: true
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: [python]
|
||||
- name: lang
|
||||
in: query
|
||||
description: Target language
|
||||
required: false
|
||||
style: form
|
||||
explode: true
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: [en]
|
||||
responses:
|
||||
'200':
|
||||
description: Successful operation
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
query_time:
|
||||
type: integer
|
||||
format: int64
|
||||
example: 18
|
||||
record_count:
|
||||
type: integer
|
||||
example: 355
|
||||
page_size:
|
||||
type: integer
|
||||
example: 10
|
||||
data:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
text:
|
||||
type: string
|
||||
example: fess
|
||||
labels:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: [java, python]
|
||||
'400':
|
||||
$ref: '#/components/responses/BadRequest'
|
||||
'401':
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
'404':
|
||||
$ref: '#/components/responses/NotFound'
|
||||
'500':
|
||||
$ref: '#/components/responses/InternalServerError'
|
||||
|
||||
components:
|
||||
responses:
|
||||
BadRequest:
|
||||
description: Bad request
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
Unauthorized:
|
||||
description: Unauthorized request
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
NotFound:
|
||||
description: Page not found
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
InternalServerError:
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
schemas:
|
||||
Error:
|
||||
type: object
|
||||
properties:
|
||||
error_code:
|
||||
type: string
|
||||
example: "bd6b0bd6-0144-40bc-9567-c5751dd8eecb"
|
||||
message:
|
||||
type: string
|
||||
example: "This is an error message."
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2017 CodeLibs Project and the Others.
|
||||
* Copyright 2012-2024 CodeLibs Project and the Others.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -22,18 +22,11 @@ import org.codelibs.core.CoreLibConstants;
|
|||
import org.codelibs.core.lang.StringUtil;
|
||||
|
||||
public class Constants extends CoreLibConstants {
|
||||
public static final int MAJOR_VERSION = 11;
|
||||
|
||||
public static final int MINOR_VERSION = 2;
|
||||
|
||||
public static final String FESS_VERSION = String.valueOf(MAJOR_VERSION) + "." + String.valueOf(MINOR_VERSION);
|
||||
|
||||
public static final String LINE_SEPARATOR = System.getProperty("line.separator");
|
||||
public static final String LINE_SEPARATOR = System.lineSeparator();
|
||||
|
||||
public static final int DEFAULT_ADMIN_PAGE_NUMBER = 1;
|
||||
|
||||
public static final String WEB_API_VERSION = FESS_VERSION;
|
||||
|
||||
public static final String TRUE = "true";
|
||||
|
||||
public static final String FALSE = "false";
|
||||
|
@ -42,6 +35,10 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final Boolean F = false;
|
||||
|
||||
public static final String SCORE = "score";
|
||||
|
||||
public static final String SEARCHER = "searcher";
|
||||
|
||||
public static final String ON = "on";
|
||||
|
||||
public static final String READY = "ready";
|
||||
|
@ -56,6 +53,10 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final String STOP = "stop";
|
||||
|
||||
public static final String AUTO = "auto";
|
||||
|
||||
public static final String NONE = "none";
|
||||
|
||||
public static final String ITEM_LABEL = "label";
|
||||
|
||||
public static final String ITEM_VALUE = "value";
|
||||
|
@ -82,6 +83,12 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final long DEFAULT_CRAWLING_EXECUTION_INTERVAL = 5000L;
|
||||
|
||||
public static final String CRAWLING_USER_AGENT_PREFIX = "Mozilla/5.0 (compatible; Fess/";
|
||||
|
||||
public static final String CRAWLING_USER_AGENT_SUFFIX = "; +http://fess.codelibs.org/bot.html)";
|
||||
|
||||
public static final String DOCUMENT_INDEX_SUFFIX_PATTERN = "yyyyMMddHHmmssSSS";
|
||||
|
||||
// fess properties
|
||||
public static final String USER_INFO_PROPERTY = "user.info";
|
||||
|
||||
|
@ -95,6 +102,8 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final String CRAWLING_THREAD_COUNT_PROPERTY = "crawling.thread.count";
|
||||
|
||||
public static final String CRAWLING_USER_AGENT_PROPERTY = "crawling.user.agent";
|
||||
|
||||
public static final String DAY_FOR_CLEANUP_PROPERTY = "day.for.cleanup";
|
||||
|
||||
public static final String WEB_API_JSON_PROPERTY = "web.api.json";
|
||||
|
@ -105,12 +114,14 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final String WEB_API_POPULAR_WORD_PROPERTY = "web.api.popularword";
|
||||
|
||||
public static final String WEB_DESIGN_EDITOR_PROPERTY = "design.editor";
|
||||
public static final String APP_VALUE_PROPERTY = "system.properties";
|
||||
|
||||
public static final String DEFAULT_LABEL_VALUE_PROPERTY = "label.value";
|
||||
|
||||
public static final String DEFAULT_SORT_VALUE_PROPERTY = "sort.value";
|
||||
|
||||
public static final String VIRTUAL_HOST_VALUE_PROPERTY = "virtual.host.value";
|
||||
|
||||
public static final String LOGIN_REQUIRED_PROPERTY = "login.required";
|
||||
|
||||
public static final String RESULT_COLLAPSED_PROPERTY = "result.collapsed";
|
||||
|
@ -137,6 +148,10 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final String NOTIFICATION_TO_PROPERTY = "notification.to";
|
||||
|
||||
public static final String SLACK_WEBHOOK_URLS_PROPERTY = "slack.webhook.urls";
|
||||
|
||||
public static final String GOOGLE_CHAT_WEBHOOK_URLS_PROPERTY = "google.chat.webhook.urls";
|
||||
|
||||
public static final String USE_BROWSER_LOCALE_FOR_SEARCH_PROPERTY = "search.use.browser.locale";
|
||||
|
||||
public static final String SUGGEST_SEARCH_LOG_PROPERTY = "suggest.searchlog";
|
||||
|
@ -145,6 +160,12 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final String PURGE_SUGGEST_SEARCH_LOG_DAY_PROPERTY = "purge.suggest.searchlog.day";
|
||||
|
||||
public static final String LTR_MODEL_NAME_PROPERTY = "ltr.model.name";
|
||||
|
||||
public static final String LTR_WINDOW_SIZE_PROPERTY = "ltr.window.size";
|
||||
|
||||
public static final String SSO_TYPE_PROPERTY = "sso.type";
|
||||
|
||||
public static final String REQUEST_QUERIES = "fess.Queries";
|
||||
|
||||
public static final String HIGHLIGHT_QUERIES = "fess.HighlightQueries";
|
||||
|
@ -155,6 +176,8 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final String ISO_DATETIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
|
||||
|
||||
public static final String DATE_OPTIONAL_TIME = "date_optional_time";
|
||||
|
||||
public static final int DONE_STATUS = 9999;
|
||||
|
||||
public static final String DEFAULT_IGNORE_FAILURE_TYPE = StringUtil.EMPTY;
|
||||
|
@ -165,27 +188,8 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final String DEFAULT_SUGGEST_PURGE_DAY = "30";
|
||||
|
||||
public static final String DEFAULT_PURGE_BY_BOTS = "Crawler"//
|
||||
+ ",crawler"//
|
||||
+ ",Bot"//
|
||||
+ ",bot"//
|
||||
+ ",Slurp"//
|
||||
+ ",Yeti"//
|
||||
+ ",Baidu"//
|
||||
+ ",Steeler"//
|
||||
+ ",ichiro"//
|
||||
+ ",hotpage"//
|
||||
+ ",Feedfetcher"//
|
||||
+ ",ia_archiver"//
|
||||
+ ",Y!J-BRI"//
|
||||
+ ",Google Desktop"//
|
||||
+ ",Seznam"//
|
||||
+ ",Tumblr"//
|
||||
+ ",YandexBot"//
|
||||
+ ",Chilkat"//
|
||||
+ ",CloudFront"//
|
||||
+ ",Mediapartners"//
|
||||
+ ",MSIE 6";
|
||||
public static final String DEFAULT_PURGE_BY_BOTS =
|
||||
"Crawler,crawler,Bot,bot,Slurp,Yeti,Baidu,Steeler,ichiro,hotpage,Feedfetcher,ia_archiver,Y!J-BRI,Google Desktop,Seznam,Tumblr,YandexBot,Chilkat,CloudFront,Mediapartners,MSIE 6";
|
||||
|
||||
public static final String DEFAULT_FROM_EMAIL = "Administrator <root@localhost>";
|
||||
|
||||
|
@ -193,6 +197,8 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final String CRAWLER_STATUS = "CrawlerStatus";
|
||||
|
||||
public static final String CRAWLER_ERRORS = "CrawlerErrors";
|
||||
|
||||
public static final String CRAWLER_START_TIME = "CrawlerStartTime";
|
||||
|
||||
public static final String CRAWLER_END_TIME = "CrawlerEndTime";
|
||||
|
@ -239,21 +245,25 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final String FTP = "FTP";
|
||||
|
||||
public static final String[] RESERVED = { "+", "-", "&&", "||", "!", "(", ")", "{", "}", "[", "]", "^", "~", "*", "?", "\\", ";", ":",
|
||||
"/" };
|
||||
public static final String[] RESERVED =
|
||||
{ "\\", "+", "-", "&&", "||", "!", "(", ")", "{", "}", "[", "]", "^", "~", "*", "?", ";", ":", "/" };
|
||||
|
||||
public static final Pattern LUCENE_FIELD_RESERVED_PATTERN = Pattern.compile("([+\\-!\\(\\){}\\[\\]^\"~\\\\:\\p{Zs}]|(&&)|(\\|\\|))"); // "*", "?",
|
||||
|
||||
public static final Pattern LUCENE_RANGE_FIELD_RESERVED_PATTERN = Pattern.compile("([!\\(\\){}\\[\\]\"~\\\\:\\p{Zs}]|(&&)|(\\|\\|))");
|
||||
|
||||
public static final String DEFAULT_QUERY_OPERATOR = "fess.DefaultQueryOperator";
|
||||
|
||||
public static final String SEARCH_LOG_ACCESS_TYPE = "searchLogAccessType";
|
||||
|
||||
public static final String SEARCH_LOG_ACCESS_TYPE_JSON = "json";
|
||||
|
||||
public static final String SEARCH_LOG_ACCESS_TYPE_XML = "xml";
|
||||
public static final String SEARCH_LOG_ACCESS_TYPE_GSA = "gsa";
|
||||
|
||||
public static final String SEARCH_LOG_ACCESS_TYPE_WEB = "web";
|
||||
|
||||
public static final String SEARCH_LOG_ACCESS_TYPE_ADMIN = "admin";
|
||||
|
||||
public static final String SEARCH_LOG_ACCESS_TYPE_OTHER = "other";
|
||||
|
||||
public static final String RESULTS_PER_PAGE = "resultsPerPage";
|
||||
|
@ -266,8 +276,6 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final String RESULT_DOC_ID_CACHE = "resultDocIds";
|
||||
|
||||
public static final String SCREEN_SHOT_PATH_CACHE = "thumbnailPaths";
|
||||
|
||||
public static final String CRAWLING_INFO_SYSTEM_NAME = "system";
|
||||
|
||||
// view parameters
|
||||
|
@ -314,14 +322,17 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final String MATCHES_ALL_QUERY = "*:*";
|
||||
|
||||
public static final String FESS_ES_TRANSPORT_ADDRESSES = "fess.es.transport_addresses";
|
||||
@Deprecated
|
||||
public static final String FESS_ES_HTTP_ADDRESS = "fess.es.http_address";
|
||||
|
||||
public static final String FESS_ES_CLUSTER_NAME = "fess.es.cluster_name";
|
||||
public static final String FESS_SEARCH_ENGINE_HTTP_ADDRESS = "fess.search_engine.http_address";
|
||||
|
||||
public static final int DEFAULT_PAGE_SIZE = 20;
|
||||
|
||||
public static final int DEFAULT_START_COUNT = 0;
|
||||
|
||||
public static final String PROCESS_TYPE_REPLACE = "R";
|
||||
|
||||
public static final String PROCESS_TYPE_CRAWLING = "C";
|
||||
|
||||
public static final String PROCESS_TYPE_DISPLAYING = "D";
|
||||
|
@ -332,8 +343,8 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final String GUEST_USER = "guest";
|
||||
|
||||
public static final String[] PAGER_CONVERSION_RULE = { "allRecordCount", "pageSize", "currentPageNumber", "allPageCount",
|
||||
"existPrePage", "existNextPage" };
|
||||
public static final String[] PAGER_CONVERSION_RULE =
|
||||
{ "allRecordCount", "pageSize", "currentPageNumber", "allPageCount", "existPrePage", "existNextPage" };
|
||||
|
||||
// crawler types
|
||||
public static final String WEB_CRAWLER_TYPE = "web_crawling";
|
||||
|
@ -342,16 +353,13 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final String DATA_CRAWLER_TYPE = "data_crawling";
|
||||
|
||||
public static final String[] COMMON_CONVERSION_RULE =
|
||||
new String[] { "crudMode", "createdBy", "createdTime", "updatedBy", "updatedTime" };
|
||||
public static final String[] COMMON_CONVERSION_RULE = { "crudMode", "createdBy", "createdTime", "updatedBy", "updatedTime" };
|
||||
|
||||
public static final String[] COMMON_API_CONVERSION_RULE = new String[] { "crudMode" };
|
||||
public static final String[] COMMON_API_CONVERSION_RULE = { "crudMode" };
|
||||
|
||||
public static final String USER_INFO = "LoginInfo";
|
||||
|
||||
public static final String ES_API_ACCESS_TOKEN = "esApiAccessToken";
|
||||
|
||||
public static final String ADMIN_PACKAGE = "org.codelibs.fess.app.web.admin";
|
||||
public static final String SEARCH_ENGINE_API_ACCESS_TOKEN = "searchEngineApiAccessToken";
|
||||
|
||||
public static final String DEFAULT_FIELD = "_default";
|
||||
|
||||
|
@ -377,12 +385,24 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final String LDAP_ACCOUNT_FILTER = "ldap.account.filter";
|
||||
|
||||
public static final String LDAP_GROUP_FILTER = "ldap.group.filter";
|
||||
|
||||
public static final String LDAP_MEMBEROF_ATTRIBUTE = "ldap.memberof.attribute";
|
||||
|
||||
public static final String NOTIFICATION_LOGIN = "notification.login";
|
||||
|
||||
public static final String NOTIFICATION_SEARCH_TOP = "notification.search.top";
|
||||
|
||||
public static final String NOTIFICATION_ADVANCE_SEARCH = "notification.advance.search";
|
||||
|
||||
public static final String STORAGE_ENDPOINT = "storage.endpoint";
|
||||
|
||||
public static final String STORAGE_ACCESS_KEY = "storage.accesskey";
|
||||
|
||||
public static final String STORAGE_SECRET_KEY = "storage.secretkey";
|
||||
|
||||
public static final String STORAGE_BUCKET = "storage.bucket";
|
||||
|
||||
public static final String MAPPING_TYPE_ARRAY = "array";
|
||||
|
||||
public static final String MAPPING_TYPE_STRING = "string";
|
||||
|
@ -391,23 +411,73 @@ public class Constants extends CoreLibConstants {
|
|||
|
||||
public static final String MAPPING_TYPE_DOUBLE = "double";
|
||||
|
||||
public static final String MAPPING_TYPE_DATE = "date";
|
||||
|
||||
public static final String MAPPING_TYPE_PDF_DATE = "pdf_date";
|
||||
|
||||
public static final String PAGING_QUERY_LIST = "pagingQueryList";
|
||||
|
||||
public static final String REQUEST_LANGUAGES = "requestLanguages";
|
||||
|
||||
public static final String SEARCH_PREFERENCE_PRIMARY = "_primary";
|
||||
public static final String REQUEST_PAGE_SIZE = "requestPageSize";
|
||||
|
||||
public static final String CONFIG_CLEANUP_FILTERS = "cleanup.urlFilters";
|
||||
|
||||
public static final String CONFIG_CLEANUP_ALL = "cleanup.all";
|
||||
public static final String SEARCH_PREFERENCE_LOCAL = "_local";
|
||||
|
||||
public static final String GSA_API_VERSION = "3.2";
|
||||
|
||||
public static final String PERMISSIONS = "permissions";
|
||||
|
||||
public static final String QUERIES = "queries";
|
||||
|
||||
public static final String VIRTUAL_HOSTS = "virtualHosts";
|
||||
|
||||
public static final String CIPHER_PREFIX = "{cipher}";
|
||||
|
||||
public static final String SYSTEM_USER = "system";
|
||||
|
||||
public static final String EMPTY_USER_ID = "<empty>";
|
||||
|
||||
public static final String CRAWLER_PROCESS_COMMAND_THREAD_DUMP = "thread_dump";
|
||||
|
||||
public static final String FESS_THUMBNAIL_PATH = "fess.thumbnail.path";
|
||||
|
||||
public static final String FESS_VAR_PATH = "fess.var.path";
|
||||
|
||||
public static final String FESS_LOG_LEVEL = "fess.log.level";
|
||||
|
||||
public static final String TRACK_TOTAL_HITS = "track_total_hits";
|
||||
|
||||
public static final String SYSTEM_PROP_PREFIX = "fess.system.";
|
||||
|
||||
public static final String FESS_CONFIG_PREFIX = "fess.config.";
|
||||
|
||||
public static final String XERCES_FEATURE_PREFIX = "http://apache.org/xml/features/";
|
||||
|
||||
public static final String LOAD_EXTERNAL_DTD_FEATURE = "nonvalidating/load-external-dtd";
|
||||
|
||||
public static final String FESEN_TYPE_CLOUD = "cloud";
|
||||
|
||||
public static final String FESEN_TYPE_AWS = "aws";
|
||||
|
||||
public static final String FESEN_USERNAME = "fesen.username";
|
||||
|
||||
public static final String FESEN_PASSWORD = "fesen.password";
|
||||
|
||||
public static final String EXECUTE_TYPE_CRAWLER = "crawler";
|
||||
|
||||
public static final String EXECUTE_TYPE_THUMBNAIL = "thumbnail";
|
||||
|
||||
public static final String EXECUTE_TYPE_PYTHON = "python";
|
||||
|
||||
public static final String EXECUTE_TYPE_SUGGEST = "suggest";
|
||||
|
||||
public static final String DEFAULT_SCRIPT = "groovy";
|
||||
|
||||
public static final String TEXT_FRAGMENTS = "text_fragments";
|
||||
|
||||
public static final String TEXT_FRAGMENT_TYPE_QUERY = "query";
|
||||
|
||||
public static final String TEXT_FRAGMENT_TYPE_HIGHLIGHT = "highlight";
|
||||
|
||||
public static final String CRAWLER_STATS_KEY = "crawler.stats.key";
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2017 CodeLibs Project and the Others.
|
||||
* Copyright 2012-2024 CodeLibs Project and the Others.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -18,9 +18,25 @@ package org.codelibs.fess;
|
|||
// DO NOT DEPEND OTHER JARs
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.apache.catalina.Container;
|
||||
import org.apache.catalina.Context;
|
||||
import org.apache.catalina.Host;
|
||||
import org.apache.catalina.connector.Connector;
|
||||
import org.apache.catalina.core.StandardHost;
|
||||
import org.apache.catalina.startup.Tomcat;
|
||||
import org.apache.tomcat.util.http.CookieProcessorBase;
|
||||
import org.apache.tomcat.util.http.Rfc6265CookieProcessor;
|
||||
import org.apache.tomcat.util.net.SSLHostConfig;
|
||||
import org.apache.tomcat.util.net.SSLHostConfigCertificate;
|
||||
import org.codelibs.core.lang.StringUtil;
|
||||
import org.codelibs.fess.tomcat.valve.SuppressErrorReportValve;
|
||||
import org.codelibs.fess.tomcat.webresources.FessWebResourceRoot;
|
||||
import org.dbflute.tomcat.TomcatBoot;
|
||||
import org.dbflute.tomcat.logging.BootLogger;
|
||||
import org.dbflute.tomcat.props.BootPropsTranslator;
|
||||
|
||||
public class FessBoot extends TomcatBoot {
|
||||
|
||||
|
@ -32,6 +48,8 @@ public class FessBoot extends TomcatBoot {
|
|||
|
||||
private static final String FESS_TEMP_PATH = "fess.temp.path";
|
||||
|
||||
private static final String FESS_VAR_PATH = "fess.var.path";
|
||||
|
||||
private static final String FESS_WEBAPP_PATH = "fess.webapp.path";
|
||||
|
||||
private static final String JAVA_IO_TMPDIR = "java.io.tmpdir";
|
||||
|
@ -69,7 +87,10 @@ public class FessBoot extends TomcatBoot {
|
|||
|
||||
final TomcatBoot tomcatBoot = new FessBoot(getPort(), getContextPath()) //
|
||||
.useTldDetect(); // for JSP
|
||||
if (tempPath != null) {
|
||||
final String varPath = System.getProperty(FESS_VAR_PATH);
|
||||
if (varPath != null) {
|
||||
tomcatBoot.atBaseDir(new File(varPath, "webapp").getAbsolutePath());
|
||||
} else if (tempPath != null) {
|
||||
tomcatBoot.atBaseDir(new File(tempPath, "webapp").getAbsolutePath());
|
||||
}
|
||||
final String tomcatConfigPath = getTomcatConfigPath();
|
||||
|
@ -83,8 +104,12 @@ public class FessBoot extends TomcatBoot {
|
|||
fessLogPath = "../../logs";
|
||||
}
|
||||
op.replace("fess.log.path", fessLogPath.replace("\\", "/"));
|
||||
}) // uses jdk14logger
|
||||
.asDevelopment(isNoneEnv()).bootAwait();
|
||||
}).asYouLikeIt(resource -> {
|
||||
final Host host = resource.getHost();
|
||||
if (host instanceof final StandardHost standardHost) {
|
||||
standardHost.setErrorReportValveClass(SuppressErrorReportValve.class.getName());
|
||||
}
|
||||
}).useTldDetect(jarName -> (jarName.contains("jstl") || jarName.contains("lasta-taglib"))).asDevelopment(isNoneEnv()).bootAwait();
|
||||
}
|
||||
|
||||
public static void shutdown(final String[] args) {
|
||||
|
@ -105,12 +130,8 @@ public class FessBoot extends TomcatBoot {
|
|||
|
||||
protected static String getContextPath() {
|
||||
final String value = System.getProperty(FESS_CONTEXT_PATH);
|
||||
if (value != null) {
|
||||
if ("/".equals(value)) {
|
||||
return StringUtil.EMPTY;
|
||||
} else {
|
||||
return value;
|
||||
}
|
||||
if (value != null && !"/".equals(value)) {
|
||||
return value;
|
||||
}
|
||||
return StringUtil.EMPTY;
|
||||
}
|
||||
|
@ -118,4 +139,59 @@ public class FessBoot extends TomcatBoot {
|
|||
protected static String getTomcatConfigPath() {
|
||||
return System.getProperty(TOMCAT_CONFIG_PATH);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setupWebappContext() {
|
||||
super.setupWebappContext();
|
||||
String contextPath = getContextPath();
|
||||
if (contextPath.length() > 0 && contextPath.endsWith("/")) {
|
||||
contextPath = contextPath.replaceAll("/+$", StringUtil.EMPTY);
|
||||
}
|
||||
final Context context = (Context) server.getHost().findChild(contextPath);
|
||||
if (context != null) {
|
||||
context.setResources(new FessWebResourceRoot(context));
|
||||
context.setCookieProcessor(new Rfc6265CookieProcessor());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BootPropsTranslator createBootPropsTranslator() {
|
||||
return new FessBootPropsTranslator();
|
||||
}
|
||||
|
||||
static class FessBootPropsTranslator extends BootPropsTranslator {
|
||||
@Override
|
||||
public void setupServerConfigIfNeeds(final BootLogger logger, final Tomcat server, final Connector connector,
|
||||
final Properties props, final List<String> readConfigList) {
|
||||
if (props == null) {
|
||||
return;
|
||||
}
|
||||
super.setupServerConfigIfNeeds(logger, server, connector, props, readConfigList);
|
||||
doSetupServerConfig(logger, props, "SSLEnabled", value -> {
|
||||
if ("true".equalsIgnoreCase(value)) {
|
||||
connector.setProperty("SSLEnabled", "true");
|
||||
final SSLHostConfig sslHostConfig = new SSLHostConfig();
|
||||
sslHostConfig.setHostName("_default_");
|
||||
final SSLHostConfigCertificate certificate =
|
||||
new SSLHostConfigCertificate(sslHostConfig, SSLHostConfigCertificate.Type.UNDEFINED);
|
||||
doSetupServerConfig(logger, props, "certificateKeystoreFile", v -> certificate.setCertificateKeystoreFile(v));
|
||||
doSetupServerConfig(logger, props, "certificateKeystorePassword", v -> certificate.setCertificateKeystorePassword(v));
|
||||
doSetupServerConfig(logger, props, "certificateKeyAlias", v -> certificate.setCertificateKeyAlias(v));
|
||||
doSetupServerConfig(logger, props, "sslProtocol", v -> sslHostConfig.setSslProtocol(v));
|
||||
doSetupServerConfig(logger, props, "enabledProtocols", v -> sslHostConfig.setEnabledProtocols(v.trim().split(",")));
|
||||
sslHostConfig.addCertificate(certificate);
|
||||
connector.addSslHostConfig(sslHostConfig);
|
||||
|
||||
}
|
||||
});
|
||||
doSetupServerConfig(logger, props, "sameSiteCookies", value -> {
|
||||
for (final Container container : server.getHost().findChildren()) {
|
||||
if (container instanceof final Context context
|
||||
&& context.getCookieProcessor() instanceof final CookieProcessorBase cookieProcessor) {
|
||||
cookieProcessor.setSameSiteCookies(value);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
57
src/main/java/org/codelibs/fess/annotation/Secured.java
Normal file
57
src/main/java/org/codelibs/fess/annotation/Secured.java
Normal file
|
@ -0,0 +1,57 @@
|
|||
/*
|
||||
* Copyright 2012-2024 CodeLibs Project and the Others.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
* either express or implied. See the License for the specific language
|
||||
* governing permissions and limitations under the License.
|
||||
*/
|
||||
package org.codelibs.fess.annotation;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Inherited;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* Java 5 annotation for describing service layer security attributes.
|
||||
*
|
||||
* <p>
|
||||
* The <code>Secured</code> annotation is used to define a list of security configuration
|
||||
* attributes for business methods.
|
||||
* <p>
|
||||
* For example:
|
||||
*
|
||||
* <pre>
|
||||
* @Secured({ "ROLE_USER" })
|
||||
* public void create(Contact contact);
|
||||
*
|
||||
* @Secured({ "ROLE_USER", "ROLE_ADMIN" })
|
||||
* public void update(Contact contact);
|
||||
*
|
||||
* @Secured({ "ROLE_ADMIN" })
|
||||
* public void delete(Contact contact);
|
||||
* </pre>
|
||||
* @author Mark St.Godard
|
||||
*/
|
||||
@Target({ ElementType.METHOD, ElementType.TYPE })
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Inherited
|
||||
@Documented
|
||||
public @interface Secured {
|
||||
/**
|
||||
* Returns the list of security configuration attributes (e.g. ROLE_USER, ROLE_ADMIN).
|
||||
*
|
||||
* @return String[] The secure method attributes
|
||||
*/
|
||||
String[] value();
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2017 CodeLibs Project and the Others.
|
||||
* Copyright 2012-2024 CodeLibs Project and the Others.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -20,19 +20,22 @@ import java.io.OutputStreamWriter;
|
|||
import java.io.PrintWriter;
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.codelibs.core.exception.IORuntimeException;
|
||||
import org.codelibs.fess.Constants;
|
||||
import org.lastaflute.web.util.LaRequestUtil;
|
||||
import org.lastaflute.web.util.LaResponseUtil;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
public abstract class BaseApiManager implements WebApiManager {
|
||||
|
||||
private static final String API_FORMAT_TYPE = "apiFormatType";
|
||||
|
||||
protected String pathPrefix;
|
||||
|
||||
protected enum FormatType {
|
||||
SEARCH, LABEL, POPULARWORD, FAVORITE, FAVORITES, OTHER, PING;
|
||||
SEARCH, LABEL, POPULARWORD, FAVORITE, FAVORITES, PING, SCROLL, SUGGEST, OTHER;
|
||||
}
|
||||
|
||||
public String getPathPrefix() {
|
||||
|
@ -43,30 +46,60 @@ public abstract class BaseApiManager implements WebApiManager {
|
|||
this.pathPrefix = pathPrefix;
|
||||
}
|
||||
|
||||
protected FormatType getFormatType(final String formatType) {
|
||||
if (formatType == null) {
|
||||
return FormatType.SEARCH;
|
||||
}
|
||||
final String type = formatType.toUpperCase(Locale.ROOT);
|
||||
if (FormatType.SEARCH.name().equals(type)) {
|
||||
return FormatType.SEARCH;
|
||||
} else if (FormatType.LABEL.name().equals(type)) {
|
||||
return FormatType.LABEL;
|
||||
} else if (FormatType.POPULARWORD.name().equals(type)) {
|
||||
return FormatType.POPULARWORD;
|
||||
} else if (FormatType.FAVORITE.name().equals(type)) {
|
||||
return FormatType.FAVORITE;
|
||||
} else if (FormatType.FAVORITES.name().equals(type)) {
|
||||
return FormatType.FAVORITES;
|
||||
} else if (FormatType.PING.name().equals(type)) {
|
||||
return FormatType.PING;
|
||||
} else {
|
||||
// default
|
||||
return FormatType.OTHER;
|
||||
protected FormatType getFormatType(final HttpServletRequest request) {
|
||||
FormatType formatType = (FormatType) request.getAttribute(API_FORMAT_TYPE);
|
||||
if (formatType != null) {
|
||||
return formatType;
|
||||
}
|
||||
|
||||
formatType = detectFormatType(request);
|
||||
request.setAttribute(API_FORMAT_TYPE, formatType);
|
||||
return formatType;
|
||||
}
|
||||
|
||||
public static void write(final String text, final String contentType, final String encoding) {
|
||||
protected FormatType detectFormatType(final HttpServletRequest request) {
|
||||
String value = request.getParameter("type");
|
||||
if (value == null) {
|
||||
final String servletPath = request.getServletPath();
|
||||
final String[] values = servletPath.replaceAll("/+", "/").split("/");
|
||||
if (values.length > 2) {
|
||||
value = values[2];
|
||||
}
|
||||
}
|
||||
if (value == null) {
|
||||
return FormatType.SEARCH;
|
||||
}
|
||||
final String type = value.toUpperCase(Locale.ROOT);
|
||||
if (FormatType.SEARCH.name().equals(type)) {
|
||||
return FormatType.SEARCH;
|
||||
}
|
||||
if (FormatType.LABEL.name().equals(type)) {
|
||||
return FormatType.LABEL;
|
||||
}
|
||||
if (FormatType.POPULARWORD.name().equals(type)) {
|
||||
return FormatType.POPULARWORD;
|
||||
}
|
||||
if (FormatType.FAVORITE.name().equals(type)) {
|
||||
return FormatType.FAVORITE;
|
||||
}
|
||||
if (FormatType.FAVORITES.name().equals(type)) {
|
||||
return FormatType.FAVORITES;
|
||||
}
|
||||
if (FormatType.PING.name().equals(type)) {
|
||||
return FormatType.PING;
|
||||
}
|
||||
if (FormatType.SCROLL.name().equals(type)) {
|
||||
return FormatType.SCROLL;
|
||||
}
|
||||
if (FormatType.SUGGEST.name().equals(type)) {
|
||||
return FormatType.SUGGEST;
|
||||
}
|
||||
|
||||
// default
|
||||
return FormatType.OTHER;
|
||||
}
|
||||
|
||||
protected void write(final String text, final String contentType, final String encoding) {
|
||||
final StringBuilder buf = new StringBuilder(50);
|
||||
if (contentType == null) {
|
||||
buf.append("text/plain");
|
||||
|
@ -76,17 +109,14 @@ public abstract class BaseApiManager implements WebApiManager {
|
|||
buf.append("; charset=");
|
||||
final String enc;
|
||||
if (encoding == null) {
|
||||
if (LaRequestUtil.getRequest().getCharacterEncoding() == null) {
|
||||
enc = Constants.UTF_8;
|
||||
} else {
|
||||
enc = LaRequestUtil.getRequest().getCharacterEncoding();
|
||||
}
|
||||
enc = LaRequestUtil.getOptionalRequest().map(HttpServletRequest::getCharacterEncoding).orElse(Constants.UTF_8);
|
||||
} else {
|
||||
enc = encoding;
|
||||
}
|
||||
buf.append(enc);
|
||||
final HttpServletResponse response = LaResponseUtil.getResponse();
|
||||
response.setContentType(buf.toString());
|
||||
writeHeaders(response);
|
||||
try (PrintWriter out = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), enc))) {
|
||||
out.print(text);
|
||||
} catch (final IOException e) {
|
||||
|
@ -94,4 +124,5 @@ public abstract class BaseApiManager implements WebApiManager {
|
|||
}
|
||||
}
|
||||
|
||||
protected abstract void writeHeaders(final HttpServletResponse response);
|
||||
}
|
|
@ -1,160 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2017 CodeLibs Project and the Others.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
* either express or implied. See the License for the specific language
|
||||
* governing permissions and limitations under the License.
|
||||
*/
|
||||
package org.codelibs.fess.api;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.commons.lang3.StringEscapeUtils;
|
||||
import org.codelibs.core.CoreLibConstants;
|
||||
import org.codelibs.core.lang.StringUtil;
|
||||
import org.codelibs.fess.Constants;
|
||||
import org.codelibs.fess.exception.InvalidAccessTokenException;
|
||||
import org.lastaflute.web.util.LaRequestUtil;
|
||||
import org.lastaflute.web.util.LaResponseUtil;
|
||||
|
||||
public abstract class BaseJsonApiManager extends BaseApiManager {
|
||||
|
||||
protected void writeJsonResponse(final int status, final String body, final Throwable t) {
|
||||
if (t == null) {
|
||||
writeJsonResponse(status, body, (String) null);
|
||||
return;
|
||||
}
|
||||
|
||||
if (t instanceof InvalidAccessTokenException) {
|
||||
final InvalidAccessTokenException e = (InvalidAccessTokenException) t;
|
||||
final HttpServletResponse response = LaResponseUtil.getResponse();
|
||||
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
|
||||
response.setHeader("WWW-Authenticate", "Bearer error=\"" + e.getType() + "\"");
|
||||
}
|
||||
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
if (StringUtil.isBlank(t.getMessage())) {
|
||||
sb.append(t.getClass().getName());
|
||||
} else {
|
||||
sb.append(t.getMessage());
|
||||
}
|
||||
final StringWriter sw = new StringWriter();
|
||||
t.printStackTrace(new PrintWriter(sw));
|
||||
sb.append(" [ ").append(sw.toString()).append(" ]");
|
||||
try {
|
||||
sw.close();
|
||||
} catch (final IOException ignore) {}
|
||||
writeJsonResponse(status, body, sb.toString());
|
||||
}
|
||||
|
||||
protected void writeJsonResponse(final int status, final String body, final String errMsg) {
|
||||
String content = null;
|
||||
if (status == 0) {
|
||||
if (StringUtil.isNotBlank(body)) {
|
||||
content = body;
|
||||
}
|
||||
} else {
|
||||
content = "\"message\":" + escapeJson(errMsg);
|
||||
}
|
||||
writeJsonResponse(status, content);
|
||||
}
|
||||
|
||||
protected void writeJsonResponse(final int status, final String body) {
|
||||
final String callback = LaRequestUtil.getRequest().getParameter("callback");
|
||||
final boolean isJsonp = StringUtil.isNotBlank(callback);
|
||||
|
||||
final StringBuilder buf = new StringBuilder(1000);
|
||||
if (isJsonp) {
|
||||
buf.append(escapeCallbackName(callback));
|
||||
buf.append('(');
|
||||
}
|
||||
buf.append("{\"response\":");
|
||||
buf.append("{\"version\":");
|
||||
buf.append(Constants.WEB_API_VERSION);
|
||||
buf.append(',');
|
||||
buf.append("\"status\":");
|
||||
buf.append(status);
|
||||
if (StringUtil.isNotBlank(body)) {
|
||||
buf.append(',');
|
||||
buf.append(body);
|
||||
}
|
||||
buf.append('}');
|
||||
buf.append('}');
|
||||
if (isJsonp) {
|
||||
buf.append(')');
|
||||
}
|
||||
write(buf.toString(), "text/javascript+json", Constants.UTF_8);
|
||||
|
||||
}
|
||||
|
||||
protected String escapeCallbackName(final String callbackName) {
|
||||
return "/**/" + callbackName.replaceAll("[^0-9a-zA-Z_\\$\\.]", StringUtil.EMPTY);
|
||||
}
|
||||
|
||||
protected String escapeJson(final Object obj) {
|
||||
if (obj == null) {
|
||||
return "null";
|
||||
}
|
||||
|
||||
final StringBuilder buf = new StringBuilder(255);
|
||||
if (obj instanceof List<?>) {
|
||||
buf.append('[');
|
||||
boolean first = true;
|
||||
for (final Object child : (List<?>) obj) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
buf.append(',');
|
||||
}
|
||||
buf.append(escapeJson(child));
|
||||
}
|
||||
buf.append(']');
|
||||
} else if (obj instanceof Map<?, ?>) {
|
||||
buf.append('{');
|
||||
boolean first = true;
|
||||
for (final Map.Entry<?, ?> entry : ((Map<?, ?>) obj).entrySet()) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
buf.append(',');
|
||||
}
|
||||
buf.append(escapeJson(entry.getKey())).append(':').append(escapeJson(entry.getValue()));
|
||||
}
|
||||
buf.append('}');
|
||||
} else if (obj instanceof Integer) {
|
||||
buf.append(((Integer) obj).intValue());
|
||||
} else if (obj instanceof Long) {
|
||||
buf.append(((Long) obj).longValue());
|
||||
} else if (obj instanceof Float) {
|
||||
buf.append(((Float) obj).floatValue());
|
||||
} else if (obj instanceof Double) {
|
||||
buf.append(((Double) obj).doubleValue());
|
||||
} else if (obj instanceof Boolean) {
|
||||
buf.append(obj.toString());
|
||||
} else if (obj instanceof Date) {
|
||||
final SimpleDateFormat sdf = new SimpleDateFormat(CoreLibConstants.DATE_FORMAT_ISO_8601_EXTEND, Locale.ROOT);
|
||||
buf.append('\"').append(StringEscapeUtils.escapeJson(sdf.format(obj))).append('\"');
|
||||
} else {
|
||||
buf.append('\"').append(StringEscapeUtils.escapeJson(obj.toString())).append('\"');
|
||||
}
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2017 CodeLibs Project and the Others.
|
||||
* Copyright 2012-2024 CodeLibs Project and the Others.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -17,10 +17,10 @@ package org.codelibs.fess.api;
|
|||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import jakarta.servlet.FilterChain;
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
public interface WebApiManager {
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2017 CodeLibs Project and the Others.
|
||||
* Copyright 2012-2024 CodeLibs Project and the Others.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -16,19 +16,18 @@
|
|||
package org.codelibs.fess.api;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
public class WebApiManagerFactory {
|
||||
|
||||
protected WebApiManager[] webApiManagers = new WebApiManager[0];
|
||||
protected WebApiManager[] webApiManagers = {};
|
||||
|
||||
public void add(final WebApiManager webApiManager) {
|
||||
final List<WebApiManager> list = new ArrayList<>();
|
||||
for (final WebApiManager manager : webApiManagers) {
|
||||
list.add(manager);
|
||||
}
|
||||
Collections.addAll(list, webApiManagers);
|
||||
list.add(webApiManager);
|
||||
webApiManagers = list.toArray(new WebApiManager[list.size()]);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2017 CodeLibs Project and the Others.
|
||||
* Copyright 2012-2024 CodeLibs Project and the Others.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -15,8 +15,8 @@
|
|||
*/
|
||||
package org.codelibs.fess.api;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletRequestWrapper;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletRequestWrapper;
|
||||
|
||||
public class WebApiRequest extends HttpServletRequestWrapper {
|
||||
protected String servletPath;
|
||||
|
@ -30,9 +30,8 @@ public class WebApiRequest extends HttpServletRequestWrapper {
|
|||
public String getServletPath() {
|
||||
if (getQueryString() != null && getQueryString().indexOf("SAStruts.method") != -1) {
|
||||
return super.getServletPath();
|
||||
} else {
|
||||
return servletPath;
|
||||
}
|
||||
return servletPath;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2017 CodeLibs Project and the Others.
|
||||
* Copyright 2012-2024 CodeLibs Project and the Others.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -18,11 +18,11 @@ package org.codelibs.fess.api;
|
|||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpServletResponseWrapper;
|
||||
|
||||
import org.apache.commons.io.output.ByteArrayOutputStream;
|
||||
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.servlet.http.HttpServletResponseWrapper;
|
||||
|
||||
public class WebApiResponse extends HttpServletResponseWrapper {
|
||||
|
||||
public WebApiResponse(final HttpServletResponse response) {
|
||||
|
|
|
@ -0,0 +1,252 @@
|
|||
/*
|
||||
* Copyright 2012-2024 CodeLibs Project and the Others.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
* either express or implied. See the License for the specific language
|
||||
* governing permissions and limitations under the License.
|
||||
*/
|
||||
package org.codelibs.fess.api.engine;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Locale;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.apache.catalina.connector.ClientAbortException;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.codelibs.core.io.CopyUtil;
|
||||
import org.codelibs.core.lang.StringUtil;
|
||||
import org.codelibs.curl.Curl.Method;
|
||||
import org.codelibs.curl.CurlRequest;
|
||||
import org.codelibs.curl.CurlResponse;
|
||||
import org.codelibs.fess.Constants;
|
||||
import org.codelibs.fess.api.BaseApiManager;
|
||||
import org.codelibs.fess.exception.FessSystemException;
|
||||
import org.codelibs.fess.exception.WebApiException;
|
||||
import org.codelibs.fess.mylasta.action.FessUserBean;
|
||||
import org.codelibs.fess.util.ComponentUtil;
|
||||
import org.codelibs.fess.util.ResourceUtil;
|
||||
import org.lastaflute.web.servlet.request.RequestManager;
|
||||
import org.lastaflute.web.servlet.session.SessionManager;
|
||||
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import jakarta.servlet.FilterChain;
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.ServletInputStream;
|
||||
import jakarta.servlet.ServletOutputStream;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
public class SearchEngineApiManager extends BaseApiManager {
|
||||
private static final String ADMIN_SERVER = "/admin/server_";
|
||||
|
||||
private static final Logger logger = LogManager.getLogger(SearchEngineApiManager.class);
|
||||
|
||||
protected String[] acceptedRoles = { "admin" };
|
||||
|
||||
public SearchEngineApiManager() {
|
||||
setPathPrefix(ADMIN_SERVER);
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
public void register() {
|
||||
if (logger.isInfoEnabled()) {
|
||||
logger.info("Load {}", this.getClass().getSimpleName());
|
||||
}
|
||||
ComponentUtil.getWebApiManagerFactory().add(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(final HttpServletRequest request) {
|
||||
final String servletPath = request.getServletPath();
|
||||
return servletPath.startsWith(pathPrefix);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain)
|
||||
throws IOException, ServletException {
|
||||
final RequestManager requestManager = ComponentUtil.getRequestManager();
|
||||
if (!requestManager.findUserBean(FessUserBean.class).map(user -> user.hasRoles(acceptedRoles)).orElse(Boolean.FALSE)) {
|
||||
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized access: " + request.getServletPath());
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
getSessionManager().getAttribute(Constants.SEARCH_ENGINE_API_ACCESS_TOKEN, String.class).ifPresent(token -> {
|
||||
final String servletPath = request.getServletPath();
|
||||
final String pathPrefix = ADMIN_SERVER + token;
|
||||
if (!servletPath.startsWith(pathPrefix)) {
|
||||
throw new WebApiException(HttpServletResponse.SC_FORBIDDEN, "Invalid access token.");
|
||||
}
|
||||
final String path;
|
||||
final String value = servletPath.substring(pathPrefix.length());
|
||||
if (!value.startsWith("/")) {
|
||||
path = "/" + value;
|
||||
} else {
|
||||
path = value;
|
||||
}
|
||||
processRequest(request, response, path);
|
||||
}).orElse(() -> {
|
||||
throw new WebApiException(HttpServletResponse.SC_FORBIDDEN, "Invalid session.");
|
||||
});
|
||||
} catch (final WebApiException e) {
|
||||
String message;
|
||||
if (Constants.TRUE.equalsIgnoreCase(ComponentUtil.getFessConfig().getApiJsonResponseExceptionIncluded())) {
|
||||
logger.warn("Failed to access to Web API.", e);
|
||||
message = e.getMessage();
|
||||
} else {
|
||||
final String errorCode = UUID.randomUUID().toString();
|
||||
message = "[" + errorCode + "] Failed to access to Web API.";
|
||||
logger.warn(message, e);
|
||||
}
|
||||
response.sendError(e.getStatusCode(), message);
|
||||
}
|
||||
}
|
||||
|
||||
protected void processRequest(final HttpServletRequest request, final HttpServletResponse response, final String path) {
|
||||
if ("/_plugin".equals(path) || path.startsWith("/_plugin/")) {
|
||||
processPluginRequest(request, response, path.replaceFirst("^/_plugin", StringUtil.EMPTY));
|
||||
return;
|
||||
}
|
||||
|
||||
final Method httpMethod = Method.valueOf(request.getMethod().toUpperCase(Locale.ROOT));
|
||||
final CurlRequest curlRequest = ComponentUtil.getCurlHelper().request(httpMethod, path);
|
||||
|
||||
final String contentType = request.getHeader("Content-Type");
|
||||
if (StringUtil.isNotEmpty(contentType)) {
|
||||
curlRequest.header("Content-Type", contentType);
|
||||
}
|
||||
|
||||
request.getParameterMap().entrySet().stream().forEach(entry -> {
|
||||
if (entry.getValue().length > 1) {
|
||||
curlRequest.param(entry.getKey(), String.join(",", entry.getValue()));
|
||||
} else if (entry.getValue().length == 1) {
|
||||
curlRequest.param(entry.getKey(), entry.getValue()[0]);
|
||||
}
|
||||
});
|
||||
try (final CurlResponse curlResponse = curlRequest.onConnect((req, con) -> {
|
||||
con.setDoOutput(true);
|
||||
if (httpMethod != Method.GET && request.getContentLength() > 2) {
|
||||
try (ServletInputStream in = request.getInputStream(); OutputStream out = con.getOutputStream()) {
|
||||
CopyUtil.copy(in, out);
|
||||
} catch (final IOException e) {
|
||||
throw new WebApiException(HttpServletResponse.SC_BAD_REQUEST, e);
|
||||
}
|
||||
}
|
||||
}).execute()) {
|
||||
|
||||
try (ServletOutputStream out = response.getOutputStream(); InputStream in = curlResponse.getContentAsStream()) {
|
||||
response.setStatus(curlResponse.getHttpStatusCode());
|
||||
writeHeaders(response);
|
||||
final String responseContentType = curlResponse.getHeaderValue("Content-Type");
|
||||
if (StringUtil.isBlank(responseContentType)) {
|
||||
response.setHeader("Content-Type", "application/json");
|
||||
} else {
|
||||
response.setHeader("Content-Type", responseContentType);
|
||||
}
|
||||
CopyUtil.copy(in, out);
|
||||
} catch (final ClientAbortException e) {
|
||||
logger.debug("Client aborts this request.", e);
|
||||
}
|
||||
} catch (final Exception e) {
|
||||
if (!(e.getCause() instanceof ClientAbortException)) {
|
||||
throw new WebApiException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e);
|
||||
}
|
||||
logger.debug("Client aborts this request.", e);
|
||||
}
|
||||
}
|
||||
|
||||
protected void processPluginRequest(final HttpServletRequest request, final HttpServletResponse response, final String path) {
|
||||
if (StringUtil.isNotBlank(path)) {
|
||||
final String lowerPath = path.toLowerCase(Locale.ROOT);
|
||||
if (lowerPath.endsWith(".html")) {
|
||||
response.setContentType("text/html;charset=utf-8");
|
||||
} else if (lowerPath.endsWith(".css")) {
|
||||
response.setContentType("text/css");
|
||||
} else if (lowerPath.endsWith(".eot")) {
|
||||
response.setContentType("application/vnd.ms-fontobject");
|
||||
} else if (lowerPath.endsWith(".ico")) {
|
||||
response.setContentType("image/vnd.microsoft.icon");
|
||||
} else if (lowerPath.endsWith(".js")) {
|
||||
response.setContentType("text/javascript");
|
||||
} else if (lowerPath.endsWith(".json")) {
|
||||
response.setContentType("application/json");
|
||||
} else if (lowerPath.endsWith(".otf")) {
|
||||
response.setContentType("font/otf");
|
||||
} else if (lowerPath.endsWith(".svg")) {
|
||||
response.setContentType("image/svg+xml");
|
||||
} else if (lowerPath.endsWith(".ttf")) {
|
||||
response.setContentType("font/ttf");
|
||||
} else if (lowerPath.endsWith(".txt")) {
|
||||
response.setContentType("text/plain");
|
||||
} else if (lowerPath.endsWith(".woff")) {
|
||||
response.setContentType("font/woff");
|
||||
} else if (lowerPath.endsWith(".woff2")) {
|
||||
response.setContentType("font/woff2");
|
||||
} else if (lowerPath.endsWith("/")) {
|
||||
response.setContentType("text/html;charset=utf-8");
|
||||
}
|
||||
}
|
||||
|
||||
Path filePath = ResourceUtil.getSitePath(path.replaceAll("\\.\\.+", StringUtil.EMPTY).replaceAll("/+", "/").split("/"));
|
||||
if (Files.isDirectory(filePath)) {
|
||||
filePath = filePath.resolve("index.html");
|
||||
}
|
||||
if (Files.exists(filePath)) {
|
||||
try (InputStream in = Files.newInputStream(filePath); ServletOutputStream out = response.getOutputStream()) {
|
||||
response.setStatus(HttpServletResponse.SC_OK);
|
||||
writeHeaders(response);
|
||||
CopyUtil.copy(in, out);
|
||||
} catch (final ClientAbortException e) {
|
||||
logger.debug("Client aborts this request.", e);
|
||||
} catch (final IOException e) {
|
||||
logger.error("Failed to read {} from {}", path, filePath);
|
||||
throw new WebApiException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e);
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
writeHeaders(response);
|
||||
response.sendError(HttpServletResponse.SC_NOT_FOUND, path + " is not found.");
|
||||
} catch (final ClientAbortException e) {
|
||||
logger.debug("Client aborts this request.", e);
|
||||
} catch (final IOException e) {
|
||||
logger.error("Failed to read {} from {}", path, filePath);
|
||||
throw new WebApiException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setAcceptedRoles(final String[] acceptedRoles) {
|
||||
this.acceptedRoles = acceptedRoles;
|
||||
}
|
||||
|
||||
public String getServerPath() {
|
||||
return getSessionManager().getAttribute(Constants.SEARCH_ENGINE_API_ACCESS_TOKEN, String.class).map(token -> ADMIN_SERVER + token)
|
||||
.orElseThrow(() -> new FessSystemException("Cannot create an access token."));
|
||||
}
|
||||
|
||||
public void saveToken() {
|
||||
getSessionManager().setAttribute(Constants.SEARCH_ENGINE_API_ACCESS_TOKEN, UUID.randomUUID().toString().replace("-", ""));
|
||||
}
|
||||
|
||||
private SessionManager getSessionManager() {
|
||||
return ComponentUtil.getComponent(SessionManager.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeHeaders(final HttpServletResponse response) {
|
||||
ComponentUtil.getFessConfig().getApiDashboardResponseHeaderList().forEach(e -> response.setHeader(e.getFirst(), e.getSecond()));
|
||||
}
|
||||
}
|
|
@ -1,200 +0,0 @@
|
|||
/*
|
||||
* Copyright 2012-2017 CodeLibs Project and the Others.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
* either express or implied. See the License for the specific language
|
||||
* governing permissions and limitations under the License.
|
||||
*/
|
||||
package org.codelibs.fess.api.es;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Locale;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletInputStream;
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.catalina.connector.ClientAbortException;
|
||||
import org.codelibs.core.io.CopyUtil;
|
||||
import org.codelibs.core.lang.StringUtil;
|
||||
import org.codelibs.elasticsearch.runner.net.Curl.Method;
|
||||
import org.codelibs.elasticsearch.runner.net.CurlRequest;
|
||||
import org.codelibs.fess.Constants;
|
||||
import org.codelibs.fess.api.BaseApiManager;
|
||||
import org.codelibs.fess.exception.FessSystemException;
|
||||
import org.codelibs.fess.exception.WebApiException;
|
||||
import org.codelibs.fess.mylasta.action.FessUserBean;
|
||||
import org.codelibs.fess.util.ComponentUtil;
|
||||
import org.codelibs.fess.util.ResourceUtil;
|
||||
import org.lastaflute.web.servlet.request.RequestManager;
|
||||
import org.lastaflute.web.servlet.session.SessionManager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class EsApiManager extends BaseApiManager {
|
||||
private static final String ADMIN_SERVER = "/admin/server_";
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(EsApiManager.class);
|
||||
|
||||
protected String[] acceptedRoles = new String[] { "admin" };
|
||||
|
||||
public EsApiManager() {
|
||||
setPathPrefix(ADMIN_SERVER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(final HttpServletRequest request) {
|
||||
final String servletPath = request.getServletPath();
|
||||
if (servletPath.startsWith(pathPrefix)) {
|
||||
final RequestManager requestManager = ComponentUtil.getRequestManager();
|
||||
return requestManager.findUserBean(FessUserBean.class).map(user -> user.hasRoles(acceptedRoles)).orElse(Boolean.FALSE);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) throws IOException,
|
||||
ServletException {
|
||||
try {
|
||||
getSessionManager().getAttribute(Constants.ES_API_ACCESS_TOKEN, String.class).ifPresent(token -> {
|
||||
final String servletPath = request.getServletPath();
|
||||
final String pathPrefix = ADMIN_SERVER + token;
|
||||
if (!servletPath.startsWith(pathPrefix)) {
|
||||
throw new WebApiException(HttpServletResponse.SC_FORBIDDEN, "Invalid access token.");
|
||||
}
|
||||
final String path;
|
||||
final String value = servletPath.substring(pathPrefix.length());
|
||||
if (!value.startsWith("/")) {
|
||||
path = "/" + value;
|
||||
} else {
|
||||
path = value;
|
||||
}
|
||||
processRequest(request, response, path);
|
||||
}).orElse(() -> {
|
||||
throw new WebApiException(HttpServletResponse.SC_FORBIDDEN, "Invalid session.");
|
||||
});
|
||||
} catch (final WebApiException e) {
|
||||
logger.debug("Web API access error. ", e);
|
||||
e.sendError(response);
|
||||
}
|
||||
}
|
||||
|
||||
protected void processRequest(final HttpServletRequest request, final HttpServletResponse response, final String path) {
|
||||
if (StringUtil.isNotBlank(path)) {
|
||||
final String lowerPath = path.toLowerCase(Locale.ROOT);
|
||||
if (lowerPath.endsWith(".html")) {
|
||||
response.setContentType("text/html;charset=utf-8");
|
||||
} else if (lowerPath.endsWith(".txt")) {
|
||||
response.setContentType("text/plain");
|
||||
} else if (lowerPath.endsWith(".css")) {
|
||||
response.setContentType("text/css");
|
||||
}
|
||||
}
|
||||
|
||||
if (path.equals("/_plugin") || path.startsWith("/_plugin/")) {
|
||||
processPluginRequest(request, response, path.replaceFirst("^/_plugin", StringUtil.EMPTY));
|
||||
return;
|
||||
}
|
||||
|
||||
final Method httpMethod = Method.valueOf(request.getMethod().toUpperCase(Locale.ROOT));
|
||||
final CurlRequest curlRequest = new CurlRequest(httpMethod, ResourceUtil.getElasticsearchHttpUrl() + path);
|
||||
|
||||
request.getParameterMap().entrySet().stream().forEach(entry -> {
|
||||
if (entry.getValue().length > 1) {
|
||||
curlRequest.param(entry.getKey(), String.join(",", entry.getValue()));
|
||||
} else if (entry.getValue().length == 1) {
|
||||
curlRequest.param(entry.getKey(), entry.getValue()[0]);
|
||||
}
|
||||
});
|
||||
curlRequest.onConnect((req, con) -> {
|
||||
con.setDoOutput(true);
|
||||
if (httpMethod != Method.GET) {
|
||||
try (ServletInputStream in = request.getInputStream(); OutputStream out = con.getOutputStream()) {
|
||||
CopyUtil.copy(in, out);
|
||||
} catch (final IOException e) {
|
||||
throw new WebApiException(HttpServletResponse.SC_BAD_REQUEST, e);
|
||||
}
|
||||
}
|
||||
}).execute(con -> {
|
||||
try (ServletOutputStream out = response.getOutputStream()) {
|
||||
try (InputStream in = con.getInputStream()) {
|
||||
response.setStatus(con.getResponseCode());
|
||||
CopyUtil.copy(in, out);
|
||||
} catch (final Exception e) {
|
||||
response.setStatus(con.getResponseCode());
|
||||
try (InputStream err = con.getErrorStream()) {
|
||||
CopyUtil.copy(err, out);
|
||||
}
|
||||
}
|
||||
} catch (final ClientAbortException e) {
|
||||
logger.debug("Client aborts this request.", e);
|
||||
} catch (final Exception e) {
|
||||
if (e.getCause() instanceof ClientAbortException) {
|
||||
logger.debug("Client aborts this request.", e);
|
||||
} else {
|
||||
throw new WebApiException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected void processPluginRequest(final HttpServletRequest request, final HttpServletResponse response, final String path) {
|
||||
Path filePath = ResourceUtil.getSitePath(path.replaceAll("\\.\\.+", StringUtil.EMPTY).replaceAll("/+", "/").split("/"));
|
||||
if (Files.isDirectory(filePath)) {
|
||||
filePath = filePath.resolve("index.html");
|
||||
}
|
||||
if (Files.exists(filePath)) {
|
||||
try (InputStream in = Files.newInputStream(filePath); ServletOutputStream out = response.getOutputStream()) {
|
||||
response.setStatus(HttpServletResponse.SC_OK);
|
||||
CopyUtil.copy(in, out);
|
||||
} catch (final ClientAbortException e) {
|
||||
logger.debug("Client aborts this request.", e);
|
||||
} catch (final IOException e) {
|
||||
logger.error("Failed to read " + path + " from " + filePath);
|
||||
throw new WebApiException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e);
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
response.sendError(HttpServletResponse.SC_NOT_FOUND, path + " is not found.");
|
||||
} catch (final ClientAbortException e) {
|
||||
logger.debug("Client aborts this request.", e);
|
||||
} catch (final IOException e) {
|
||||
logger.error("Failed to read " + path + " from " + filePath);
|
||||
throw new WebApiException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setAcceptedRoles(final String[] acceptedRoles) {
|
||||
this.acceptedRoles = acceptedRoles;
|
||||
}
|
||||
|
||||
public String getServerPath() {
|
||||
return getSessionManager().getAttribute(Constants.ES_API_ACCESS_TOKEN, String.class).map(token -> ADMIN_SERVER + token)
|
||||
.orElseThrow(() -> new FessSystemException("Cannot create an access token."));
|
||||
}
|
||||
|
||||
public void saveToken() {
|
||||
getSessionManager().setAttribute(Constants.ES_API_ACCESS_TOKEN, UUID.randomUUID().toString().replace("-", ""));
|
||||
}
|
||||
|
||||
private SessionManager getSessionManager() {
|
||||
return ComponentUtil.getComponent(SessionManager.class);
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue