Compare commits
3997 Commits
v1.0.0
...
test-v2.3.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
db081e6a4c | ||
|
|
6b0a2c9464 | ||
|
|
775aba52bd | ||
|
|
e1770173ef | ||
|
|
c73ce45e9e | ||
|
|
7aefb7fa2b | ||
|
|
baece7eb3a | ||
|
|
1b31a07b40 | ||
|
|
83ba487c61 | ||
|
|
8dc0b639a2 | ||
|
|
9a636a15de | ||
|
|
7b12a8755a | ||
|
|
b67c244bbd | ||
|
|
0bd2c00088 | ||
|
|
cb1487109a | ||
|
|
c9d8625274 | ||
|
|
d0b659ccea | ||
|
|
c182001fcf | ||
|
|
c8038213c7 | ||
|
|
40a7bb9d48 | ||
|
|
7e48d1a00f | ||
|
|
a64e5a776a | ||
|
|
9dc798bc53 | ||
|
|
c6ea841064 | ||
|
|
0e03c5f89e | ||
|
|
70502685ce | ||
|
|
a2fe6ffc7a | ||
|
|
1c724aa89b | ||
|
|
5d307c16b4 | ||
|
|
96c264981e | ||
|
|
60c507ff10 | ||
|
|
33ee58904b | ||
|
|
0938b11f83 | ||
|
|
c0d633bc34 | ||
|
|
7a9506f616 | ||
|
|
36afd67a2c | ||
|
|
59d1090a6d | ||
|
|
f384bb2aff | ||
|
|
4411ba3482 | ||
|
|
379118e481 | ||
|
|
661b1a5e6a | ||
|
|
fd2d5252c5 | ||
|
|
284e89d410 | ||
|
|
d7a649f699 | ||
|
|
c758628701 | ||
|
|
28614e4c13 | ||
|
|
beb9a37649 | ||
|
|
0e9810e9ff | ||
|
|
0c5cec8413 | ||
|
|
6135ce0919 | ||
|
|
fdd765f982 | ||
|
|
529821475e | ||
|
|
f2b21cbce6 | ||
|
|
061ee3abd2 | ||
|
|
e2c53754b5 | ||
|
|
f328ebc300 | ||
|
|
135c2c36aa | ||
|
|
16cf98213c | ||
|
|
094911bab2 | ||
|
|
6ee90b60c3 | ||
|
|
c80b625977 | ||
|
|
cc4ae8648e | ||
|
|
4f7eead38c | ||
|
|
386a99edbd | ||
|
|
982506c2fb | ||
|
|
5767a0fadc | ||
|
|
a01fec538e | ||
|
|
d451c36b2d | ||
|
|
0ae8433436 | ||
|
|
863c90e8bd | ||
|
|
396a87ab71 | ||
|
|
a60b584dca | ||
|
|
3cb3b6ba2d | ||
|
|
16fbf7c63e | ||
|
|
b980c9e751 | ||
|
|
127d45abc9 | ||
|
|
e99f441e50 | ||
|
|
186cfa7226 | ||
|
|
7627ebed5c | ||
|
|
1be159b47c | ||
|
|
4e3ab62f6c | ||
|
|
85cb95602d | ||
|
|
ff917466eb | ||
|
|
1235715c22 | ||
|
|
1393e40eb9 | ||
|
|
442c838bda | ||
|
|
ea5039d2ae | ||
|
|
8f2e9f5261 | ||
|
|
e1147aff9e | ||
|
|
f9b39e91ee | ||
|
|
4bf73b0a47 | ||
|
|
05ee20613b | ||
|
|
286163ce18 | ||
|
|
f0976c9ade | ||
|
|
1ab7660f0d | ||
|
|
84c7b8827e | ||
|
|
5e1aa43793 | ||
|
|
a9b71e5a96 | ||
|
|
08ed131e19 | ||
|
|
85e3a81419 | ||
|
|
818ed107c6 | ||
|
|
4f322254b0 | ||
|
|
decd6a98be | ||
|
|
5ae35bfee1 | ||
|
|
a6ba349cb6 | ||
|
|
3e3818d4b5 | ||
|
|
6661c5baac | ||
|
|
e813016402 | ||
|
|
924aa8ecb5 | ||
|
|
64edd9b7ea | ||
|
|
4400423fca | ||
|
|
0554778c83 | ||
|
|
2bc6d77d10 | ||
|
|
7ac790e4d0 | ||
|
|
0732fe6171 | ||
|
|
d7b3ea0a6e | ||
|
|
0a2b6605d7 | ||
|
|
f559795ba3 | ||
|
|
6b8b5f7896 | ||
|
|
1bf4fa0d87 | ||
|
|
d53507b7b6 | ||
|
|
787bfccc2c | ||
|
|
955bfe3f40 | ||
|
|
78d7588af7 | ||
|
|
bbde362570 | ||
|
|
972dd5f531 | ||
|
|
464320a3ec | ||
|
|
2aa49f080e | ||
|
|
9dac12cf2b | ||
|
|
d1f3266383 | ||
|
|
1e2a60c802 | ||
|
|
ee9c3cbde3 | ||
|
|
235be5da0c | ||
|
|
29adb5de07 | ||
|
|
4618bf990d | ||
|
|
0a57830925 | ||
|
|
71a2090363 | ||
|
|
e420871e1f | ||
|
|
01b2de80ae | ||
|
|
cdd86349d0 | ||
|
|
45293152bb | ||
|
|
7bf7686314 | ||
|
|
5888dc3b5d | ||
|
|
3d9355848b | ||
|
|
7033b603ca | ||
|
|
71ad683614 | ||
|
|
1fdc4d06d1 | ||
|
|
cff9ee39be | ||
|
|
458f872fe3 | ||
|
|
ac99da044a | ||
|
|
a6bd8e5205 | ||
|
|
f9fdd540f9 | ||
|
|
1706f5df07 | ||
|
|
40fc3e6c08 | ||
|
|
2608ae58df | ||
|
|
0e62deed0a | ||
|
|
e588091bf6 | ||
|
|
eb49b27e16 | ||
|
|
4fd31e4367 | ||
|
|
aaad0c03a6 | ||
|
|
1026a6b2b6 | ||
|
|
f5ed0be023 | ||
|
|
a7f44b6ce7 | ||
|
|
481f12af5e | ||
|
|
16a7bc63f2 | ||
|
|
e8dc5ce085 | ||
|
|
98ce12d74e | ||
|
|
edb09f2081 | ||
|
|
86fc0e4101 | ||
|
|
fb72f4b1ae | ||
|
|
6bf0a3a804 | ||
|
|
4bcaa5eaca | ||
|
|
8ca6584299 | ||
|
|
e86e8820f3 | ||
|
|
07c300f35f | ||
|
|
b08936c27e | ||
|
|
0b4b408552 | ||
|
|
36e37052e0 | ||
|
|
9a3373a43d | ||
|
|
428e5a7a4e | ||
|
|
7445b84756 | ||
|
|
fa5be03fc3 | ||
|
|
49b21fb577 | ||
|
|
1f7e788585 | ||
|
|
43ac9de714 | ||
|
|
e80afa610d | ||
|
|
20a2cb3d3c | ||
|
|
26b3f742ce | ||
|
|
2ccbade642 | ||
|
|
fc8523da46 | ||
|
|
b67ad01d97 | ||
|
|
cdf49b2e37 | ||
|
|
920a7cfdac | ||
|
|
023ec9e53e | ||
|
|
7c9b4576f0 | ||
|
|
4f2d543651 | ||
|
|
25aa6a4345 | ||
|
|
0b9d9fa8d7 | ||
|
|
a01781d5b7 | ||
|
|
b15ae542aa | ||
|
|
b68f69dfc7 | ||
|
|
7d1cafc3d3 | ||
|
|
386c837f1a | ||
|
|
be8c544da3 | ||
|
|
a78e43bfe3 | ||
|
|
7b57b924ee | ||
|
|
46ee4e41a1 | ||
|
|
f87eed1336 | ||
|
|
e4964b050b | ||
|
|
83f128ddcc | ||
|
|
13b2aa675f | ||
|
|
a98f89a4e7 | ||
|
|
d42d4308e5 | ||
|
|
0608649961 | ||
|
|
3013af8e62 | ||
|
|
915118140f | ||
|
|
a662414b7f | ||
|
|
112ce9b450 | ||
|
|
0f1208dba9 | ||
|
|
21dcb55c82 | ||
|
|
25871aea49 | ||
|
|
63d75bb68b | ||
|
|
8e95e8c4f8 | ||
|
|
2b0a997573 | ||
|
|
84df956293 | ||
|
|
1acf21371b | ||
|
|
acee47e861 | ||
|
|
2dab70697c | ||
|
|
b3f5c2f185 | ||
|
|
25a848c4e4 | ||
|
|
ad814b6cbb | ||
|
|
ac55951c74 | ||
|
|
a0520ce5d8 | ||
|
|
6f20cdd905 | ||
|
|
6d45f0730c | ||
|
|
24288aa597 | ||
|
|
66f49feebb | ||
|
|
b77bbe6a66 | ||
|
|
084fe0e00f | ||
|
|
7f449aed5b | ||
|
|
9cb30e0ec6 | ||
|
|
1d78b68831 | ||
|
|
0fbf882059 | ||
|
|
4d56dfdfa2 | ||
|
|
53cd4205e8 | ||
|
|
a4e2e23fbe | ||
|
|
0e726a20ba | ||
|
|
be01c4da0c | ||
|
|
f190611bcc | ||
|
|
c0a2abeae9 | ||
|
|
5d4600a080 | ||
|
|
e6136cac08 | ||
|
|
f2a35fb833 | ||
|
|
11342a54c9 | ||
|
|
ab176b5b1d | ||
|
|
189911c77f | ||
|
|
4c9859a1ac | ||
|
|
01b1116017 | ||
|
|
d3af2e6547 | ||
|
|
b5a031be9f | ||
|
|
c24b0e1425 | ||
|
|
4272955097 | ||
|
|
0a267f69e6 | ||
|
|
5d5788e67e | ||
|
|
10ec7e8708 | ||
|
|
233ecf8b5f | ||
|
|
156c6429d3 | ||
|
|
d5e7d3298a | ||
|
|
837efc90b6 | ||
|
|
9394d340a2 | ||
|
|
be820e8401 | ||
|
|
75629ba5ea | ||
|
|
7e428e8f94 | ||
|
|
5a69eb2dd3 | ||
|
|
5b5abd2601 | ||
|
|
7c302cb19c | ||
|
|
71c836ae1a | ||
|
|
b2be663ba6 | ||
|
|
f6533b2ca4 | ||
|
|
a499112ece | ||
|
|
df78d87ec5 | ||
|
|
a9edd036e0 | ||
|
|
b75507396b | ||
|
|
6f69653a8b | ||
|
|
14fd7444e8 | ||
|
|
8d66128009 | ||
|
|
d9ecfddecd | ||
|
|
19da03dfa4 | ||
|
|
271934ef4b | ||
|
|
6f22b37e1d | ||
|
|
ad2df2f36f | ||
|
|
99739810a0 | ||
|
|
d2c1daf4e3 | ||
|
|
a30c8953c8 | ||
|
|
a6d676700d | ||
|
|
66aa690104 | ||
|
|
05b6fb4a7d | ||
|
|
c1c72927c1 | ||
|
|
d78bf6d1e1 | ||
|
|
86512f0dcb | ||
|
|
f738113020 | ||
|
|
1be16380da | ||
|
|
a9bb365760 | ||
|
|
10a0666de9 | ||
|
|
cf8dc4e529 | ||
|
|
ebed875c46 | ||
|
|
8ac36526a8 | ||
|
|
dce0e370cf | ||
|
|
067d23e2bc | ||
|
|
e494d21a57 | ||
|
|
0654ecc9bb | ||
|
|
b235c71c76 | ||
|
|
07842b0fa7 | ||
|
|
e0ad4e6e7b | ||
|
|
9be70d640e | ||
|
|
44a9724827 | ||
|
|
9065e8ed25 | ||
|
|
e1c7c11bdf | ||
|
|
56436adf4d | ||
|
|
1a8197aef1 | ||
|
|
e9f6521c6a | ||
|
|
07cdd8bbab | ||
|
|
53d7f60ebc | ||
|
|
819ebf0ede | ||
|
|
157f858975 | ||
|
|
a1a79ea619 | ||
|
|
672de78c81 | ||
|
|
d446bbb451 | ||
|
|
135973de09 | ||
|
|
9fddf6819b | ||
|
|
7f9812a488 | ||
|
|
f3a16e1ecd | ||
|
|
11405adcf6 | ||
|
|
c0d7f0f5fd | ||
|
|
68ad1e9645 | ||
|
|
4b0a95fc1b | ||
|
|
fdb0ba4349 | ||
|
|
4a3f168720 | ||
|
|
05d83ebe8b | ||
|
|
9aaee04a69 | ||
|
|
3f5dd5bad8 | ||
|
|
e53a895471 | ||
|
|
bfc8314f52 | ||
|
|
199d2e8298 | ||
|
|
4c7d7fad1b | ||
|
|
df58abfcdb | ||
|
|
710d37c640 | ||
|
|
56c63fb1a1 | ||
|
|
3e21c841be | ||
|
|
298763a4a7 | ||
|
|
d6f8f9704c | ||
|
|
f3e5b03af2 | ||
|
|
603f0d289a | ||
|
|
e7f0979c9e | ||
|
|
9b69a5c8f2 | ||
|
|
99b445e7bc | ||
|
|
a85bbc8ce8 | ||
|
|
ea85628389 | ||
|
|
bafd2f3b86 | ||
|
|
bd7009732f | ||
|
|
051f73013c | ||
|
|
6484b796cd | ||
|
|
7a5a308c9b | ||
|
|
4709e536ee | ||
|
|
4eb5df3f28 | ||
|
|
d3751da0e4 | ||
|
|
de90205b66 | ||
|
|
5d54225f9d | ||
|
|
a556cfcd40 | ||
|
|
405a60c4f8 | ||
|
|
de528270a2 | ||
|
|
ea0365b9da | ||
|
|
f8ca38b7e3 | ||
|
|
bfeb434920 | ||
|
|
7101ba472d | ||
|
|
a314f2d1cb | ||
|
|
99e1c53a41 | ||
|
|
b21cc930af | ||
|
|
ccad06b7b6 | ||
|
|
7364dc1989 | ||
|
|
5b816b095d | ||
|
|
08a4b92f3a | ||
|
|
3c8a0bb011 | ||
|
|
d6e14eafef | ||
|
|
15df8e0a08 | ||
|
|
42d9e7175f | ||
|
|
2aa7d6095d | ||
|
|
31aa75d745 | ||
|
|
dfd2847c12 | ||
|
|
db5f9572b1 | ||
|
|
cb9db10052 | ||
|
|
66960b147a | ||
|
|
8ec4f2e814 | ||
|
|
081e34f953 | ||
|
|
2800eef199 | ||
|
|
08f3a79e6e | ||
|
|
1c528b0f04 | ||
|
|
c5d144bcc4 | ||
|
|
9a9d6ac524 | ||
|
|
6ced618c1c | ||
|
|
bb1babad11 | ||
|
|
1a93592253 | ||
|
|
e52be45659 | ||
|
|
e7e08a94a9 | ||
|
|
d22c3867c1 | ||
|
|
e52f65f690 | ||
|
|
dfcfa643f0 | ||
|
|
a986068cbb | ||
|
|
af6915b1b0 | ||
|
|
af46999a16 | ||
|
|
322ec26829 | ||
|
|
935f80cd8a | ||
|
|
8379652ad5 | ||
|
|
decef23751 | ||
|
|
c639cf7162 | ||
|
|
2785ab6913 | ||
|
|
d92aca5b16 | ||
|
|
4cf00a4198 | ||
|
|
f6b549678d | ||
|
|
978a7e209e | ||
|
|
b06b8e4d2b | ||
|
|
3a3412486a | ||
|
|
624014572c | ||
|
|
24d917bb2d | ||
|
|
2a4fae4718 | ||
|
|
9f4a8952a4 | ||
|
|
029c020fe0 | ||
|
|
1f0040ceb6 | ||
|
|
76a3334f9d | ||
|
|
22d0d80bfe | ||
|
|
de13f5edbd | ||
|
|
953e284566 | ||
|
|
1b3fbf56d0 | ||
|
|
83779a684b | ||
|
|
d33e15a2bb | ||
|
|
a9b60b8052 | ||
|
|
329d475106 | ||
|
|
2cbecf439e | ||
|
|
389271c00d | ||
|
|
8839c36917 | ||
|
|
3649846423 | ||
|
|
f3858e8300 | ||
|
|
741cfec1ec | ||
|
|
9326b10d3a | ||
|
|
6d90cd59f2 | ||
|
|
5c503e71ed | ||
|
|
cdf851d196 | ||
|
|
bf09e49164 | ||
|
|
d391a4d023 | ||
|
|
9182f15ee0 | ||
|
|
be6811ddbd | ||
|
|
10d299d1b3 | ||
|
|
4989bb07f6 | ||
|
|
0d46349386 | ||
|
|
267e7c3b08 | ||
|
|
cad689b337 | ||
|
|
e54d5a13e8 | ||
|
|
ac7619de55 | ||
|
|
c75e258f81 | ||
|
|
e4ed6dde0c | ||
|
|
9025d8bd90 | ||
|
|
2433e27eb5 | ||
|
|
2610a27894 | ||
|
|
eba25f1bb8 | ||
|
|
59b625b7c0 | ||
|
|
0eeb2f6752 | ||
|
|
cd7b484fc2 | ||
|
|
16b3ea8b7e | ||
|
|
942afd7fec | ||
|
|
de271d5b76 | ||
|
|
7e826c70df | ||
|
|
162478563c | ||
|
|
8d0ae922b8 | ||
|
|
2200f757dc | ||
|
|
4f65882b5d | ||
|
|
5ba67af0e3 | ||
|
|
efeb394f3e | ||
|
|
9a0ee3516b | ||
|
|
55a873d0ef | ||
|
|
0561f3e398 | ||
|
|
68d587e484 | ||
|
|
c026754a68 | ||
|
|
32561b5616 | ||
|
|
6b30097bde | ||
|
|
7dc1f9b81b | ||
|
|
9964650014 | ||
|
|
a705f6a8b7 | ||
|
|
151cf3daf2 | ||
|
|
5758f1701d | ||
|
|
ac631f7c49 | ||
|
|
e814d9ea63 | ||
|
|
d7e88a3213 | ||
|
|
9b3dee6aa4 | ||
|
|
879ad86e0f | ||
|
|
ed63b9f3cc | ||
|
|
ef3f41bb69 | ||
|
|
4d9ed1a6cb | ||
|
|
4b8f6f1f66 | ||
|
|
cf57f999c5 | ||
|
|
fd9630ea84 | ||
|
|
9fed812872 | ||
|
|
41b7e5f32d | ||
|
|
3345b6e242 | ||
|
|
52a4577b4c | ||
|
|
267d93168d | ||
|
|
78895288d0 | ||
|
|
249d5e2788 | ||
|
|
488346979d | ||
|
|
cadecdb3b8 | ||
|
|
9d9d3db701 | ||
|
|
5b216e6a3a | ||
|
|
c03e26ee5e | ||
|
|
bcc2f05aa5 | ||
|
|
b18813689d | ||
|
|
79999edcea | ||
|
|
764b34d947 | ||
|
|
51fa675e90 | ||
|
|
e000dc18aa | ||
|
|
1f81c7ba2d | ||
|
|
c1811463cb | ||
|
|
7a1dc6da01 | ||
|
|
0a28bcfbe9 | ||
|
|
93f3dd14a5 | ||
|
|
6d82c9c3db | ||
|
|
3714873b7b | ||
|
|
5534c2a8f8 | ||
|
|
cad23f1672 | ||
|
|
2bf50bb8c2 | ||
|
|
6ad50e4e04 | ||
|
|
1c5aae2301 | ||
|
|
aed95ed4fc | ||
|
|
2a97801aae | ||
|
|
c6aefa984d | ||
|
|
5e9f1ac00f | ||
|
|
0a83470019 | ||
|
|
0ed1f6c341 | ||
|
|
e85463c4a1 | ||
|
|
31c18bf856 | ||
|
|
ca1d36556b | ||
|
|
3085bc1443 | ||
|
|
7843d81c18 | ||
|
|
8155551464 | ||
|
|
168dd1d01f | ||
|
|
18e92ccbd3 | ||
|
|
2ad71fc4ac | ||
|
|
29380b93ef | ||
|
|
00d2ff810b | ||
|
|
a99295f594 | ||
|
|
cc8a2e5fce | ||
|
|
7137320f1a | ||
|
|
376c9bbdc7 | ||
|
|
49d57f46ae | ||
|
|
a4fe45d58c | ||
|
|
db8763b610 | ||
|
|
1a61598322 | ||
|
|
d971397c8b | ||
|
|
427a598385 | ||
|
|
4c0b96d81a | ||
|
|
af2baba1e3 | ||
|
|
93cb01e7e6 | ||
|
|
139285c46a | ||
|
|
dc401c784a | ||
|
|
bb0f5e97a2 | ||
|
|
82cd3fd9f1 | ||
|
|
06117c98b1 | ||
|
|
aa41dc3650 | ||
|
|
98fe00a171 | ||
|
|
3bdafc2a11 | ||
|
|
3c4227696c | ||
|
|
5d78fa9519 | ||
|
|
eb2a9d540e | ||
|
|
665e2e3e83 | ||
|
|
c025d0d030 | ||
|
|
1ce0a3b5d3 | ||
|
|
7c79d10f5d | ||
|
|
eeb5ba4c7b | ||
|
|
5d32627553 | ||
|
|
07a038503e | ||
|
|
3a878f8426 | ||
|
|
1cfa55817a | ||
|
|
78ce5c3f69 | ||
|
|
97187af0c7 | ||
|
|
d26076c0e4 | ||
|
|
1f81bd121f | ||
|
|
02fa9142fe | ||
|
|
6759e0c25b | ||
|
|
46e233ccbb | ||
|
|
1b31de18e4 | ||
|
|
ccc65c846f | ||
|
|
9d73fc9932 | ||
|
|
d6abbacbf7 | ||
|
|
979100850c | ||
|
|
a0a2b6c340 | ||
|
|
7f1acb4532 | ||
|
|
9afaba4382 | ||
|
|
355c672ed1 | ||
|
|
144cf279f9 | ||
|
|
c1a94a1b6c | ||
|
|
c091b5f385 | ||
|
|
aa6b439e8c | ||
|
|
07170135e6 | ||
|
|
024ee6e602 | ||
|
|
a1f79f4508 | ||
|
|
6a6009827c | ||
|
|
375fc0c89e | ||
|
|
a110b4c26b | ||
|
|
ebdb875c56 | ||
|
|
266a2b4c76 | ||
|
|
7e5b62377f | ||
|
|
8dce5396b0 | ||
|
|
e78f7a2a37 | ||
|
|
aafbda47d4 | ||
|
|
e1b1af9a48 | ||
|
|
19f725965d | ||
|
|
5ce0cf1aad | ||
|
|
88bcb35a14 | ||
|
|
d534f026b0 | ||
|
|
939eb95cdc | ||
|
|
46d3dd409a | ||
|
|
398be73f5b | ||
|
|
e7ab59a932 | ||
|
|
285cb346b9 | ||
|
|
72d0920458 | ||
|
|
4aaa1a7afa | ||
|
|
f2f35e115c | ||
|
|
7295f39d68 | ||
|
|
685cacf490 | ||
|
|
1f36d970f9 | ||
|
|
60f0c80c36 | ||
|
|
c018d63117 | ||
|
|
88af048e90 | ||
|
|
c0190e21c6 | ||
|
|
2368a8fba3 | ||
|
|
e9ad462f9e | ||
|
|
4ac9d0410c | ||
|
|
1c53c90ab5 | ||
|
|
4d6e05989e | ||
|
|
54a3a755d6 | ||
|
|
e32a3fbfca | ||
|
|
f498f67f1e | ||
|
|
d491c482a5 | ||
|
|
7062676f9a | ||
|
|
0d52759455 | ||
|
|
9a5c0bae50 | ||
|
|
eb30e54dc8 | ||
|
|
4ea97ab23f | ||
|
|
82f2ec24fb | ||
|
|
d487465b2a | ||
|
|
899e88babe | ||
|
|
83f923aa10 | ||
|
|
04a0614319 | ||
|
|
632ff783c6 | ||
|
|
e4f86ee823 | ||
|
|
f7390c757b | ||
|
|
7a9b45d257 | ||
|
|
b699ce3512 | ||
|
|
da9003ec46 | ||
|
|
30a0743c8c | ||
|
|
a4fc493ea5 | ||
|
|
f5f6e9a882 | ||
|
|
21cda37380 | ||
|
|
941670a420 | ||
|
|
15b01a07b5 | ||
|
|
85565dc137 | ||
|
|
d59f699937 | ||
|
|
ef66b10501 | ||
|
|
081c47aba9 | ||
|
|
6cdb64fb8b | ||
|
|
765e8d4f79 | ||
|
|
8e7e496b44 | ||
|
|
cf14b19bf6 | ||
|
|
2131061482 | ||
|
|
692cebe659 | ||
|
|
189d5aed69 | ||
|
|
ea38953b47 | ||
|
|
9130881875 | ||
|
|
46b1803086 | ||
|
|
98dde67f65 | ||
|
|
34eedd7955 | ||
|
|
98d7c7bb86 | ||
|
|
74c2bafc9b | ||
|
|
912da395c9 | ||
|
|
061ad6df2c | ||
|
|
b5deceaa3b | ||
|
|
22099d82be | ||
|
|
07e1de2f62 | ||
|
|
2203638fc5 | ||
|
|
5ef7123f78 | ||
|
|
5ae9b84cce | ||
|
|
f41cebe776 | ||
|
|
dd47dbffe8 | ||
|
|
aebcd1db2e | ||
|
|
4af9d88771 | ||
|
|
6f706d9aaf | ||
|
|
700f1e0001 | ||
|
|
9cc0825185 | ||
|
|
26c65d0da8 | ||
|
|
602ac1ffb8 | ||
|
|
947609a3b3 | ||
|
|
db38a64a30 | ||
|
|
783a4d33b4 | ||
|
|
c80b4c1d32 | ||
|
|
b1f1ec5fbb | ||
|
|
2cad8a879d | ||
|
|
95910f5c17 | ||
|
|
f3a9c47c2a | ||
|
|
3d184c95ba | ||
|
|
6754fdb580 | ||
|
|
9842e5624e | ||
|
|
d00b265347 | ||
|
|
c72f898238 | ||
|
|
4a2a9eb997 | ||
|
|
5b399d0d06 | ||
|
|
8edacbff2f | ||
|
|
156e9e2fc7 | ||
|
|
4682abf4c1 | ||
|
|
6871c7e665 | ||
|
|
a508dd2c0f | ||
|
|
5469bb6508 | ||
|
|
099461dbbf | ||
|
|
5233e4c097 | ||
|
|
70e8811d5c | ||
|
|
7208dd6b2a | ||
|
|
44af6740c7 | ||
|
|
8d1dd92df7 | ||
|
|
a5cacaceda | ||
|
|
821e704b5b | ||
|
|
82c79bd91c | ||
|
|
bde0adfbd0 | ||
|
|
6c8b115479 | ||
|
|
82a8f18e88 | ||
|
|
bdae1f10d4 | ||
|
|
05b5a0ada3 | ||
|
|
3fcc2c2678 | ||
|
|
6af9d3129e | ||
|
|
d7cff79ac7 | ||
|
|
f6137dfc34 | ||
|
|
6dfbb90b80 | ||
|
|
72aff32024 | ||
|
|
9f4c367249 | ||
|
|
3f87958328 | ||
|
|
a0e689c437 | ||
|
|
49f05d334d | ||
|
|
a372ef3faa | ||
|
|
06e48516bb | ||
|
|
a317ebd8e7 | ||
|
|
6774a8594f | ||
|
|
56fb579da2 | ||
|
|
b401917c19 | ||
|
|
e990118475 | ||
|
|
ac2cc154b4 | ||
|
|
99ec0ed8df | ||
|
|
32daea25de | ||
|
|
946dbc5efc | ||
|
|
714dd597f1 | ||
|
|
c36dfd9eea | ||
|
|
67e5e3b56b | ||
|
|
fdc1cd26e7 | ||
|
|
988824f3f1 | ||
|
|
15ef064fc3 | ||
|
|
c7d544685e | ||
|
|
d622f1df3d | ||
|
|
c7e1302377 | ||
|
|
caea072f7d | ||
|
|
04b22c1a76 | ||
|
|
26d9d7630c | ||
|
|
4529047349 | ||
|
|
af110f75d6 | ||
|
|
1da5ad8830 | ||
|
|
8e063f6e59 | ||
|
|
d16ceac149 | ||
|
|
c2831e6676 | ||
|
|
a4b95cb7cf | ||
|
|
e5a7810d6e | ||
|
|
99e913637a | ||
|
|
9ff80466fc | ||
|
|
67319031ea | ||
|
|
5134faeefd | ||
|
|
77327f59b9 | ||
|
|
5b68d86052 | ||
|
|
54c56037e7 | ||
|
|
8f31bd93fa | ||
|
|
87dfdb2ddc | ||
|
|
2c2d3e4641 | ||
|
|
2a8b19d319 | ||
|
|
f43c042223 | ||
|
|
b75b46f415 | ||
|
|
42f7af3d52 | ||
|
|
a4767bc7e3 | ||
|
|
8d4e5ad3f1 | ||
|
|
49a127d97d | ||
|
|
8cfb604a0d | ||
|
|
da9918b655 | ||
|
|
c41464b974 | ||
|
|
5657f617e7 | ||
|
|
12e6cbb9e5 | ||
|
|
bc1cfed389 | ||
|
|
9b5e1465c3 | ||
|
|
7f5b12d4d2 | ||
|
|
c3d3f0986e | ||
|
|
8c21d0360f | ||
|
|
650141a498 | ||
|
|
6ff8fc7f87 | ||
|
|
0f0e99b42e | ||
|
|
96814109dc | ||
|
|
39720d401f | ||
|
|
5e6e30a5b3 | ||
|
|
a92c0ffac3 | ||
|
|
43f7ecc75a | ||
|
|
d598ec1852 | ||
|
|
fad61a0a2a | ||
|
|
3886d49b0a | ||
|
|
93f8ed223e | ||
|
|
96e0851563 | ||
|
|
9d1eb469b5 | ||
|
|
4001897338 | ||
|
|
27dd574c4d | ||
|
|
06a75a0a0e | ||
|
|
8cf7282f46 | ||
|
|
dd8e42ef71 | ||
|
|
221b4587d4 | ||
|
|
4203c4d30c | ||
|
|
059dd1993a | ||
|
|
e172364e86 | ||
|
|
0941a8e016 | ||
|
|
de67b9465a | ||
|
|
a2a71ff8f5 | ||
|
|
0befceef9a | ||
|
|
203bfbe411 | ||
|
|
1f4eeaa269 | ||
|
|
aa2d07ca8d | ||
|
|
3739127044 | ||
|
|
2dab179166 | ||
|
|
9590d2865a | ||
|
|
d542cdd898 | ||
|
|
1d0d063a6c | ||
|
|
9f15f50f9d | ||
|
|
f0ebc151db | ||
|
|
f0a9c63cd3 | ||
|
|
ec0cd9a348 | ||
|
|
b5afd304d0 | ||
|
|
4bd4e0863c | ||
|
|
463a5451e1 | ||
|
|
cb881e81a8 | ||
|
|
92fc43cb3d | ||
|
|
73a73b7bc7 | ||
|
|
3391bd8322 | ||
|
|
3d5876a8c0 | ||
|
|
7d04f06f7d | ||
|
|
24137bffdd | ||
|
|
621051cfb9 | ||
|
|
2c21bf3e0e | ||
|
|
c1a2dee0e9 | ||
|
|
782ad07940 | ||
|
|
d57729d3d7 | ||
|
|
1f8c2ba8c5 | ||
|
|
b176701e51 | ||
|
|
7dd6869cd1 | ||
|
|
33886f106c | ||
|
|
94ed160eee | ||
|
|
066eeb6ba6 | ||
|
|
402b3f5535 | ||
|
|
d4d9e08ae2 | ||
|
|
6553ada66f | ||
|
|
c0b49ff219 | ||
|
|
d20c89ba21 | ||
|
|
ee577cae4c | ||
|
|
ed5b215bbb | ||
|
|
a5f8e833ba | ||
|
|
decd70ff21 | ||
|
|
9f002172db | ||
|
|
5d661f2fc6 | ||
|
|
9a82dd356c | ||
|
|
840e08fc8a | ||
|
|
761b8c40d6 | ||
|
|
40b7314f6d | ||
|
|
5c3a43f602 | ||
|
|
dd001ab0e7 | ||
|
|
30b55ce25e | ||
|
|
943a5b36e3 | ||
|
|
0ebaefb8be | ||
|
|
5a995a8624 | ||
|
|
eee98c5175 | ||
|
|
4614107b2b | ||
|
|
d6dd99bb4a | ||
|
|
d0a200f652 | ||
|
|
9138f90843 | ||
|
|
766a8fa4dd | ||
|
|
6f2451edd3 | ||
|
|
864fccbdb2 | ||
|
|
8956df9599 | ||
|
|
a3daaa55b5 | ||
|
|
85a52f5d6b | ||
|
|
92d7ecdf68 | ||
|
|
cdf09aa1bd | ||
|
|
63a830cc95 | ||
|
|
3b9cc61669 | ||
|
|
b5166acada | ||
|
|
a38291fc17 | ||
|
|
723e304ed8 | ||
|
|
63ac7738bb | ||
|
|
bda96a2175 | ||
|
|
5b06791a6c | ||
|
|
64e1361ef5 | ||
|
|
2f6eb5969e | ||
|
|
125b6fa779 | ||
|
|
5e78871c00 | ||
|
|
487d9a6449 | ||
|
|
97b1a774fb | ||
|
|
12a4c12753 | ||
|
|
e8fdc454db | ||
|
|
69da4410dc | ||
|
|
5fc6f78555 | ||
|
|
15e0a7aa38 | ||
|
|
0d62bfb0c6 | ||
|
|
a37d82e2dd | ||
|
|
0a14c8b3e6 | ||
|
|
e779280428 | ||
|
|
753cd95a18 | ||
|
|
5bd34f19fe | ||
|
|
0e5b17adcc | ||
|
|
b23f10ecde | ||
|
|
08d6e142c3 | ||
|
|
2016a1656b | ||
|
|
5a44618289 | ||
|
|
338d7f0df6 | ||
|
|
fd19dd1a03 | ||
|
|
6d19af02c9 | ||
|
|
1deb7e9f95 | ||
|
|
5a6f96f84b | ||
|
|
3f74022142 | ||
|
|
ccd2ed8ac2 | ||
|
|
a72e422684 | ||
|
|
da8755fcb7 | ||
|
|
3be284c129 | ||
|
|
15e2d172a4 | ||
|
|
4e54cb56e5 | ||
|
|
ad1015c8b0 | ||
|
|
1dbe80afc4 | ||
|
|
0683352c4b | ||
|
|
d666f0245d | ||
|
|
7f252909fc | ||
|
|
7b9d0b4f1f | ||
|
|
37193c48d9 | ||
|
|
1747ae8984 | ||
|
|
dfee8891d3 | ||
|
|
cb10df7c9f | ||
|
|
c6b669eb9d | ||
|
|
919e2543ca | ||
|
|
b705ac24fa | ||
|
|
9aa7ba77f5 | ||
|
|
d5b873b70b | ||
|
|
4ec255917d | ||
|
|
9b86a18752 | ||
|
|
630fef29a2 | ||
|
|
05d45c94d5 | ||
|
|
44e4c59493 | ||
|
|
24e7076423 | ||
|
|
1f8a965b7a | ||
|
|
8b491f4c94 | ||
|
|
8b857f9980 | ||
|
|
7d1707ca7c | ||
|
|
5e3a3c61f3 | ||
|
|
073b6d200a | ||
|
|
652d560a21 | ||
|
|
be69ee8b1d | ||
|
|
fc5aefe435 | ||
|
|
d5239365be | ||
|
|
ac7f905248 | ||
|
|
1a2ea05361 | ||
|
|
39606248a1 | ||
|
|
73118ce447 | ||
|
|
4e5c1606f3 | ||
|
|
b8aa54a159 | ||
|
|
7caccce907 | ||
|
|
82777d641c | ||
|
|
5b248c82f5 | ||
|
|
9c7ae3b0ef | ||
|
|
9b130ae56c | ||
|
|
a48b2e9edb | ||
|
|
e4bbd57c41 | ||
|
|
0dba30977d | ||
|
|
69008e08be | ||
|
|
06236546a8 | ||
|
|
60029fc618 | ||
|
|
f3e71fec91 | ||
|
|
54cdb24cec | ||
|
|
206140c3fa | ||
|
|
c2bd1d0d83 | ||
|
|
5cb3b8cfbf | ||
|
|
f363722779 | ||
|
|
5e09e3e072 | ||
|
|
cc3f53d572 | ||
|
|
a2ddf3567c | ||
|
|
aa7ba6d659 | ||
|
|
c53bcd990d | ||
|
|
78c807a514 | ||
|
|
c4084cbcec | ||
|
|
062c4b53b6 | ||
|
|
c9d7b63ef7 | ||
|
|
06729c4e84 | ||
|
|
5c5f80691a | ||
|
|
5a0340e927 | ||
|
|
eb7e6a566b | ||
|
|
079fe089de | ||
|
|
5f83acf3ad | ||
|
|
0d16fbe4ab | ||
|
|
c1184fd7d2 | ||
|
|
429bee7e6c | ||
|
|
56e2df75b9 | ||
|
|
547ad7a2c7 | ||
|
|
e2c75f6836 | ||
|
|
ce591227ae | ||
|
|
ace424e78a | ||
|
|
10223c944c | ||
|
|
9e190cb5aa | ||
|
|
5d57e93ee1 | ||
|
|
75805e3c69 | ||
|
|
327ae4ac79 | ||
|
|
911614673b | ||
|
|
e80d3e7dac | ||
|
|
7b820ebb94 | ||
|
|
6bfa8643d6 | ||
|
|
25de6b58c3 | ||
|
|
cdc60ef5f0 | ||
|
|
edeb228315 | ||
|
|
f6c6d58045 | ||
|
|
b1d0ca76c9 | ||
|
|
5a058d9b97 | ||
|
|
2892add766 | ||
|
|
281f4b38d2 | ||
|
|
7b590e4bd6 | ||
|
|
923a035e6e | ||
|
|
a2a56980d9 | ||
|
|
2ee0943115 | ||
|
|
cfe218b8a4 | ||
|
|
4c10164970 | ||
|
|
a74168d1e1 | ||
|
|
6c0922a6d8 | ||
|
|
f279b9173e | ||
|
|
706f6c6747 | ||
|
|
dd6c2df5d2 | ||
|
|
bcc0c7c2df | ||
|
|
2c0a2d7877 | ||
|
|
7bd7edfec9 | ||
|
|
db8c4f369c | ||
|
|
569d5d2d89 | ||
|
|
5cbea2cab5 | ||
|
|
57a21ab8e6 | ||
|
|
c52bdce621 | ||
|
|
9358aa1bd8 | ||
|
|
c304de9288 | ||
|
|
52e57cf547 | ||
|
|
e33af2a316 | ||
|
|
ffc4da1589 | ||
|
|
4cfa8d880f | ||
|
|
cd65d42004 | ||
|
|
bba5e7db0c | ||
|
|
eb960f2606 | ||
|
|
92a68108a6 | ||
|
|
ae8acc6eba | ||
|
|
1e1381df8e | ||
|
|
2ba7fcd628 | ||
|
|
12cbb1f6f9 | ||
|
|
1f8e161001 | ||
|
|
b4b215a3f8 | ||
|
|
e2ff7ef113 | ||
|
|
73c998f510 | ||
|
|
11f29280b1 | ||
|
|
de752c69f4 | ||
|
|
2cf10fce38 | ||
|
|
4ba248a101 | ||
|
|
faae01cb8a | ||
|
|
600c5243dd | ||
|
|
00bddd5e57 | ||
|
|
2436ea6ff9 | ||
|
|
403489865c | ||
|
|
c8590b9e9c | ||
|
|
d1ffa9b330 | ||
|
|
37799ca0be | ||
|
|
ba5edabb2c | ||
|
|
1dfe8f866a | ||
|
|
e77b4f334d | ||
|
|
87c64bdb2b | ||
|
|
68eed69221 | ||
|
|
5db5bf17cb | ||
|
|
319631b5c4 | ||
|
|
0489c35417 | ||
|
|
10c0f3075a | ||
|
|
91a767b4fb | ||
|
|
4e69ff196a | ||
|
|
576348b1f2 | ||
|
|
db547d60df | ||
|
|
0f655e9292 | ||
|
|
3d0827a6da | ||
|
|
231d4db71d | ||
|
|
0117e96d5b | ||
|
|
ca7bba33e6 | ||
|
|
b294a8138c | ||
|
|
a99dbf634b | ||
|
|
cda0fb6a10 | ||
|
|
a1392a7677 | ||
|
|
e9da7f28cc | ||
|
|
c4ee293388 | ||
|
|
6417977617 | ||
|
|
f687f2eafb | ||
|
|
7057d7fffb | ||
|
|
d99b0893df | ||
|
|
b32463df53 | ||
|
|
f202d5f54a | ||
|
|
18891c554d | ||
|
|
22a39ed4d3 | ||
|
|
4003befc2a | ||
|
|
c17ca47e7d | ||
|
|
e2e5ab656f | ||
|
|
8e445caf26 | ||
|
|
b4d82579b7 | ||
|
|
6734c714d7 | ||
|
|
526aa15ff6 | ||
|
|
bc0e9eb74e | ||
|
|
a425c62156 | ||
|
|
d99375a536 | ||
|
|
4c610abd44 | ||
|
|
e1a941b998 | ||
|
|
a8a91fe945 | ||
|
|
9136838b63 | ||
|
|
ef9c291d9a | ||
|
|
6f968342dc | ||
|
|
4930906b62 | ||
|
|
c39df537b4 | ||
|
|
cfa9f2d13f | ||
|
|
0a8a248349 | ||
|
|
146cf8750f | ||
|
|
c25352b660 | ||
|
|
e8f7ad6c09 | ||
|
|
7cc9d6707c | ||
|
|
dca2f9323b | ||
|
|
7cf2fec3ea | ||
|
|
ab6b1f0fca | ||
|
|
0b08bfdcba | ||
|
|
4701300ed8 | ||
|
|
9d6d28dcae | ||
|
|
147e8d5f9e | ||
|
|
79a974946e | ||
|
|
151fec445e | ||
|
|
d653e139d3 | ||
|
|
04e826ff09 | ||
|
|
3681bea8b7 | ||
|
|
e09d8fc5f5 | ||
|
|
b29f93dcd2 | ||
|
|
1c85424488 | ||
|
|
b753536437 | ||
|
|
490c94fa95 | ||
|
|
1b92774778 | ||
|
|
34588f9da3 | ||
|
|
0811999081 | ||
|
|
cf7e1c7767 | ||
|
|
ba4988bb9b | ||
|
|
cd3778a620 | ||
|
|
5b065ee68d | ||
|
|
ee79728f9d | ||
|
|
482c502356 | ||
|
|
92cdff3043 | ||
|
|
b01474523e | ||
|
|
9121063ebc | ||
|
|
2c34b11980 | ||
|
|
e1af587040 | ||
|
|
2b54f0a7ae | ||
|
|
6def5bd3cf | ||
|
|
efe727ec71 | ||
|
|
d278dfb996 | ||
|
|
9ed6afd836 | ||
|
|
6a19c8130c | ||
|
|
c43290338d | ||
|
|
da540522ac | ||
|
|
64bfff5690 | ||
|
|
73c5dc159b | ||
|
|
783a982ca8 | ||
|
|
86d652f1eb | ||
|
|
766d9c2641 | ||
|
|
6e826cf369 | ||
|
|
8f12fa52b4 | ||
|
|
6d15e5b5a1 | ||
|
|
51679b47a6 | ||
|
|
1eda0ebea7 | ||
|
|
787cef54f5 | ||
|
|
36885b4f9e | ||
|
|
4b6332dbfa | ||
|
|
bbc62ef907 | ||
|
|
4c53023ebc | ||
|
|
17494b45bd | ||
|
|
90401d4d12 | ||
|
|
9730ada805 | ||
|
|
5a626e9dab | ||
|
|
14d5b3b316 | ||
|
|
0ddf5eadb6 | ||
|
|
803135ae46 | ||
|
|
641ac7c503 | ||
|
|
b1377218b1 | ||
|
|
80d74f6f38 | ||
|
|
5a262880b9 | ||
|
|
192c764c8c | ||
|
|
f84cc0554f | ||
|
|
2d20c4ee4c | ||
|
|
041a35e3c8 | ||
|
|
cf205c2480 | ||
|
|
09b830bcf9 | ||
|
|
8dca55aac8 | ||
|
|
adade8fcf1 | ||
|
|
589ac2863c | ||
|
|
5e7b2fbdcf | ||
|
|
bb9f7bb27b | ||
|
|
7561831624 | ||
|
|
ccf6ef6140 | ||
|
|
a3530be7b4 | ||
|
|
76505bd0e7 | ||
|
|
e61434347e | ||
|
|
84c068783d | ||
|
|
3bd42defaf | ||
|
|
a71b42c335 | ||
|
|
456e2f5693 | ||
|
|
f3ed48e0ac | ||
|
|
55cc8cead1 | ||
|
|
0d24078ee4 | ||
|
|
18db5c500f | ||
|
|
f87806edb4 | ||
|
|
a3f62e2246 | ||
|
|
a5ef78fd1e | ||
|
|
337d01008b | ||
|
|
92dc36f480 | ||
|
|
a937a94e43 | ||
|
|
8bb82be2b9 | ||
|
|
a6cf407a8f | ||
|
|
eec8eb4766 | ||
|
|
52c71e3843 | ||
|
|
b5ea79e3ea | ||
|
|
960e3d34eb | ||
|
|
cbb127ff38 | ||
|
|
db1a043261 | ||
|
|
f9eee19cbe | ||
|
|
eb1aeefc8c | ||
|
|
e64cf47d31 | ||
|
|
3f79409a11 | ||
|
|
dd0d518ecd | ||
|
|
6d236a2dd6 | ||
|
|
663db12594 | ||
|
|
f383d6c636 | ||
|
|
2b3bb92357 | ||
|
|
87a2944837 | ||
|
|
ea32c88d85 | ||
|
|
725f8ce761 | ||
|
|
3f42390f2f | ||
|
|
4d3343d0d0 | ||
|
|
4b22eb946c | ||
|
|
53eebb0638 | ||
|
|
4546e77d5b | ||
|
|
7d2eb31f05 | ||
|
|
7c15a53a62 | ||
|
|
1531db0a35 | ||
|
|
6d91f766e7 | ||
|
|
bf5bce9e64 | ||
|
|
5afa3380a6 | ||
|
|
85f5c59781 | ||
|
|
8ee4ca0357 | ||
|
|
656241c23f | ||
|
|
5936492f76 | ||
|
|
abe06b8753 | ||
|
|
ac536c48cd | ||
|
|
1b4b2b9bb1 | ||
|
|
ad1d759840 | ||
|
|
a55134ae63 | ||
|
|
67b20d073e | ||
|
|
2187f44ed7 | ||
|
|
026f61126a | ||
|
|
8a8fce927e | ||
|
|
99873e2136 | ||
|
|
e904651541 | ||
|
|
d65a0dbbc7 | ||
|
|
2b2ecad437 | ||
|
|
89406f1c57 | ||
|
|
ea93e97e79 | ||
|
|
1e6a93b4b6 | ||
|
|
8ad22f8148 | ||
|
|
e667ec944b | ||
|
|
b064244907 | ||
|
|
a01156feb6 | ||
|
|
af1d8fa834 | ||
|
|
0234795200 | ||
|
|
58f4ebe411 | ||
|
|
d4e575f777 | ||
|
|
2d110deb09 | ||
|
|
2e552e8711 | ||
|
|
fb4cef7ccb | ||
|
|
3b6b88fd62 | ||
|
|
95630c6d61 | ||
|
|
33222d59c2 | ||
|
|
adb7da7aaf | ||
|
|
04eb85d279 | ||
|
|
58847c7fb6 | ||
|
|
504e4cc6a3 | ||
|
|
ec5177342e | ||
|
|
4d982ab816 | ||
|
|
c390617151 | ||
|
|
fff7f30005 | ||
|
|
ca72d4840a | ||
|
|
7ccb1b6a6f | ||
|
|
126e1f44ca | ||
|
|
84a4382532 | ||
|
|
40f7048eee | ||
|
|
c94fb80cb0 | ||
|
|
2db194b9d1 | ||
|
|
34420c1265 | ||
|
|
9e0e2fe124 | ||
|
|
9cfbd8107e | ||
|
|
b70a4070f2 | ||
|
|
d3b302ce66 | ||
|
|
5a423f88dd | ||
|
|
b47877235f | ||
|
|
f89c1edadf | ||
|
|
bc5774c934 | ||
|
|
9e885c2379 | ||
|
|
1380d2c1e9 | ||
|
|
4895323200 | ||
|
|
f737d2e8ce | ||
|
|
3157f97ae6 | ||
|
|
278329b73c | ||
|
|
033ec6bc76 | ||
|
|
1aa106ba4a | ||
|
|
c638072902 | ||
|
|
6eb9041df4 | ||
|
|
4035f037d2 | ||
|
|
2b6f861f3b | ||
|
|
9a813030a3 | ||
|
|
04b7dd719c | ||
|
|
3ad3b30d97 | ||
|
|
d0e7147911 | ||
|
|
b0669b7eea | ||
|
|
a504961e93 | ||
|
|
b14bcf966d | ||
|
|
7ef37a9fa2 | ||
|
|
d7ce455f2f | ||
|
|
7ffe857f52 | ||
|
|
f2b0f54c0b | ||
|
|
a1025d8eee | ||
|
|
047ee6454b | ||
|
|
71dd28eabd | ||
|
|
b8cd9484dc | ||
|
|
2c823e094f | ||
|
|
a1bb9630d0 | ||
|
|
e23d5926dd | ||
|
|
5c4982a3f1 | ||
|
|
7d172d718f | ||
|
|
804b5423e5 | ||
|
|
5a825df6a1 | ||
|
|
50d1646ce0 | ||
|
|
1d01e61148 | ||
|
|
21e9958da9 | ||
|
|
7c18012ef2 | ||
|
|
cbeae74fc0 | ||
|
|
f3144f92c5 | ||
|
|
3dd9d51ca5 | ||
|
|
5f0873221a | ||
|
|
49cbb42d0d | ||
|
|
519a8bee71 | ||
|
|
834b88f68f | ||
|
|
e02150cdb0 | ||
|
|
5b4f94832d | ||
|
|
566d5e832c | ||
|
|
36667b8649 | ||
|
|
088f9dae9b | ||
|
|
813b6a6a68 | ||
|
|
c8d9fc7311 | ||
|
|
e555a047e6 | ||
|
|
ed52ecb259 | ||
|
|
f993ddf876 | ||
|
|
54566997b2 | ||
|
|
4783e3d061 | ||
|
|
658d97ff4e | ||
|
|
3373925acf | ||
|
|
9d84bf8f4c | ||
|
|
1650165f4b | ||
|
|
8849cd46c9 | ||
|
|
0835ecf0ed | ||
|
|
8bedfca646 | ||
|
|
1fa38a24b6 | ||
|
|
1d105dd345 | ||
|
|
7823306045 | ||
|
|
53b0d13342 | ||
|
|
f51fbecfee | ||
|
|
1f968a606b | ||
|
|
a13397bc17 | ||
|
|
323e8e72cc | ||
|
|
80a67d0970 | ||
|
|
4e22970784 | ||
|
|
ddc07ee160 | ||
|
|
e96b9b8bf8 | ||
|
|
013828eb03 | ||
|
|
10132879f2 | ||
|
|
832871d49d | ||
|
|
e5ccc1dd36 | ||
|
|
61951863ad | ||
|
|
64c6a68d34 | ||
|
|
0054c4cc58 | ||
|
|
5bf494ca7d | ||
|
|
da81f70161 | ||
|
|
f3e21ac814 | ||
|
|
2314c99c36 | ||
|
|
2907cac50f | ||
|
|
536c62c137 | ||
|
|
c1b855ebf7 | ||
|
|
84d76f0749 | ||
|
|
3ae0a05422 | ||
|
|
f700c15bc7 | ||
|
|
46e24556ef | ||
|
|
e20f953c7f | ||
|
|
3c24d50bde | ||
|
|
204d80d86f | ||
|
|
4eeef63724 | ||
|
|
0c7f57d55d | ||
|
|
3a55f50723 | ||
|
|
6853c64479 | ||
|
|
3da6597643 | ||
|
|
26bd3bf76d | ||
|
|
d17d7a792a | ||
|
|
dc9f7dc294 | ||
|
|
92b219769d | ||
|
|
3e630a3882 | ||
|
|
de32c46ea4 | ||
|
|
722b5d0726 | ||
|
|
d51af59f85 | ||
|
|
5102f83290 | ||
|
|
9da4da5fd6 | ||
|
|
5213860919 | ||
|
|
20f78d214f | ||
|
|
5207e268de | ||
|
|
226108f558 | ||
|
|
7280ef42a9 | ||
|
|
919eacc0a9 | ||
|
|
ccd7be7276 | ||
|
|
5bdf4e51de | ||
|
|
25704e5ddd | ||
|
|
cf15bd3697 | ||
|
|
14b53276b9 | ||
|
|
a6c63e7968 | ||
|
|
57e11c781b | ||
|
|
1d2da05f66 | ||
|
|
ceb0f778b8 | ||
|
|
d8717bd0b4 | ||
|
|
cfcc5c1095 | ||
|
|
79b1a801b5 | ||
|
|
79907b374a | ||
|
|
278d09e4db | ||
|
|
189a7d09a1 | ||
|
|
99062805ec | ||
|
|
87dbdc07d1 | ||
|
|
db7ef3ac4b | ||
|
|
5b8ef3a17c | ||
|
|
b7f257daf1 | ||
|
|
c27560ed44 | ||
|
|
ddddbf6987 | ||
|
|
2f5d8dfb80 | ||
|
|
218340e138 | ||
|
|
c4ea10d0af | ||
|
|
bb8dcd8b61 | ||
|
|
2372340e0d | ||
|
|
f78f7e97ee | ||
|
|
6b78b75638 | ||
|
|
2f2f72fe4b | ||
|
|
34fe9596a9 | ||
|
|
e4d35c2a86 | ||
|
|
af7dde61d6 | ||
|
|
a62388759a | ||
|
|
9337d150b9 | ||
|
|
910876f323 | ||
|
|
af152aa9b9 | ||
|
|
f34fedd822 | ||
|
|
ac7c0015db | ||
|
|
1a3b5d018a | ||
|
|
86c26793b7 | ||
|
|
d99d7ac63c | ||
|
|
5646db52a9 | ||
|
|
0fe838d588 | ||
|
|
c2686beb9b | ||
|
|
1bfae7627e | ||
|
|
06c523ea81 | ||
|
|
7f4e21d4ba | ||
|
|
c993bb2f5e | ||
|
|
5527f7c78a | ||
|
|
8e9ad57173 | ||
|
|
30ae608863 | ||
|
|
68e611794b | ||
|
|
b5c20f5be9 | ||
|
|
59a53c7c73 | ||
|
|
9b76eb6b55 | ||
|
|
08d9551230 | ||
|
|
c3bdd2f288 | ||
|
|
fae881c080 | ||
|
|
49797ce6ab | ||
|
|
7783e5b7cf | ||
|
|
b242aac7cd | ||
|
|
127ad802ff | ||
|
|
f42a2c9434 | ||
|
|
b80f510de5 | ||
|
|
134087c672 | ||
|
|
91a2406827 | ||
|
|
f82f9567c2 | ||
|
|
0a2951c2eb | ||
|
|
5601212f58 | ||
|
|
3451d22460 | ||
|
|
0d5dc6bdd8 | ||
|
|
87e6aedb74 | ||
|
|
9b5bd47760 | ||
|
|
007065b40e | ||
|
|
2e52867df4 | ||
|
|
c5eb8a3f9b | ||
|
|
cacde08e99 | ||
|
|
9443ed5d49 | ||
|
|
e3c702aca1 | ||
|
|
7fbdff391c | ||
|
|
92cb2e7eab | ||
|
|
04136d5b9d | ||
|
|
fd256a6c28 | ||
|
|
e64b8841c5 | ||
|
|
52ae2c3655 | ||
|
|
f1b5f56294 | ||
|
|
ed3b62480c | ||
|
|
365d282119 | ||
|
|
56d0c574f9 | ||
|
|
573937e1e5 | ||
|
|
3892883470 | ||
|
|
d1049b8022 | ||
|
|
8e3f090ffe | ||
|
|
903c39206f | ||
|
|
29dbb36961 | ||
|
|
20851f2a96 | ||
|
|
7bbf2b200b | ||
|
|
e9ac9faa49 | ||
|
|
a15e644a51 | ||
|
|
479679a1c6 | ||
|
|
a50001364f | ||
|
|
7ea7dffd4a | ||
|
|
5ea620a4cd | ||
|
|
4e11c7a9e2 | ||
|
|
9503766a68 | ||
|
|
6b29d54b50 | ||
|
|
19bbd9b528 | ||
|
|
28721c7d20 | ||
|
|
7dbf0a3594 | ||
|
|
e2f7dd67a2 | ||
|
|
3f455199eb | ||
|
|
24f2ffe82d | ||
|
|
86c5d694e5 | ||
|
|
8c963c669b | ||
|
|
d058cacb38 | ||
|
|
c3cb5f20d9 | ||
|
|
abb9ebaf76 | ||
|
|
167ebd6975 | ||
|
|
66d248ec8e | ||
|
|
966cb24911 | ||
|
|
98821c95b6 | ||
|
|
ceaa0b61eb | ||
|
|
89aef130a5 | ||
|
|
57d96b85f1 | ||
|
|
dd4817a65a | ||
|
|
b3dcff2d76 | ||
|
|
8d3d41831d | ||
|
|
066a7041d8 | ||
|
|
50df9bdf4e | ||
|
|
eab9e4ab92 | ||
|
|
56cf46a3a4 | ||
|
|
90442e3e39 | ||
|
|
02c594d4ec | ||
|
|
8c82f811cb | ||
|
|
dbc2713495 | ||
|
|
89ac29a019 | ||
|
|
96d3ae86cc | ||
|
|
071a7fa629 | ||
|
|
0a44a8e78a | ||
|
|
59743ef071 | ||
|
|
077482d759 | ||
|
|
7e6e214f08 | ||
|
|
b6634d26d1 | ||
|
|
5e51eebe8a | ||
|
|
310997f978 | ||
|
|
b67643ed95 | ||
|
|
1b1f4464ee | ||
|
|
1111cf48f3 | ||
|
|
41833712f0 | ||
|
|
f9a26e9195 | ||
|
|
ea76f20825 | ||
|
|
1a6a0d3592 | ||
|
|
0d2c0e91c8 | ||
|
|
bc2a7b902e | ||
|
|
2e7e278ba4 | ||
|
|
06915f5dc3 | ||
|
|
7cbd840060 | ||
|
|
cc8301cc6e | ||
|
|
a9603f44f4 | ||
|
|
04ee5269fe | ||
|
|
afa93aaf9e | ||
|
|
d74bea25aa | ||
|
|
1af78c9bcb | ||
|
|
9f7cc1ae69 | ||
|
|
f4f6ea681e | ||
|
|
21051900f9 | ||
|
|
f96e12a8b3 | ||
|
|
eef47017a3 | ||
|
|
4315d9dfbb | ||
|
|
d7961bf226 | ||
|
|
7dbc8a4253 | ||
|
|
1aee41e7e7 | ||
|
|
f4cdbe985e | ||
|
|
8a0c112072 | ||
|
|
16641f0494 | ||
|
|
5965dcd029 | ||
|
|
e45ef5c49a | ||
|
|
9a1682ebaf | ||
|
|
9eed6ce197 | ||
|
|
d3279694b7 | ||
|
|
8fe6231ebc | ||
|
|
6f0860d954 | ||
|
|
1e62ddce73 | ||
|
|
956d745034 | ||
|
|
ccc69ac2d0 | ||
|
|
68365aa3b7 | ||
|
|
a0581618a4 | ||
|
|
cfcccd0240 | ||
|
|
926de3fa94 | ||
|
|
38ded2c43d | ||
|
|
f324bb603d | ||
|
|
d190616d34 | ||
|
|
d7884f89f5 | ||
|
|
d8ce122254 | ||
|
|
9c1ca78fed | ||
|
|
31c123a09b | ||
|
|
0e93295cdf | ||
|
|
5e7eda6781 | ||
|
|
f31179bb9a | ||
|
|
805b7705b2 | ||
|
|
ae649a0e31 | ||
|
|
d797d7b47a | ||
|
|
7308d0f9c6 | ||
|
|
2ab1f3749c | ||
|
|
52199fb5d3 | ||
|
|
ad497b7386 | ||
|
|
257e98edb2 | ||
|
|
5be23220e4 | ||
|
|
25310d5e88 | ||
|
|
4bc9da3910 | ||
|
|
6dfba3c7b8 | ||
|
|
034201a45b | ||
|
|
d43b9fc6c1 | ||
|
|
94ec584dc3 | ||
|
|
043188ab5e | ||
|
|
2cbffb96fd | ||
|
|
50f7057f68 | ||
|
|
f3b083cafd | ||
|
|
d881ab5fea | ||
|
|
464200e693 | ||
|
|
9ae84a69be | ||
|
|
47184ca01e | ||
|
|
39d4d01814 | ||
|
|
5419478c48 | ||
|
|
52d8ab5389 | ||
|
|
7d6701780c | ||
|
|
dbc055efb4 | ||
|
|
f9c2b4c28e | ||
|
|
7c90baf7bf | ||
|
|
67807a3aa7 | ||
|
|
dca39d6eae | ||
|
|
768d139789 | ||
|
|
af612e4b92 | ||
|
|
ef23fba147 | ||
|
|
5f813c6f70 | ||
|
|
c171728749 | ||
|
|
85c0e1f330 | ||
|
|
8269e61163 | ||
|
|
ae6c09aae2 | ||
|
|
9619584de5 | ||
|
|
dad40d60b3 | ||
|
|
9216a085cf | ||
|
|
f232ffb5cc | ||
|
|
952033f409 | ||
|
|
dc10c7e3e7 | ||
|
|
a84c8bd273 | ||
|
|
2d3d351e26 | ||
|
|
e375188889 | ||
|
|
5860f1fa7a | ||
|
|
6a149c74d1 | ||
|
|
6ae71dba4f | ||
|
|
659cc7f1c6 | ||
|
|
a6a80a8b93 | ||
|
|
722ada3f0e | ||
|
|
aeb479641f | ||
|
|
8a471a5455 | ||
|
|
c8207b479e | ||
|
|
fdaf4380fa | ||
|
|
89d228e605 | ||
|
|
556ed8413f | ||
|
|
e95f09191a | ||
|
|
fa02c20e1c | ||
|
|
f51a074f86 | ||
|
|
915539ca0f | ||
|
|
26353fd28f | ||
|
|
0aa19ed1b0 | ||
|
|
843a9cedaf | ||
|
|
c9b25f73d3 | ||
|
|
df7d2b54bd | ||
|
|
5cb907b0f1 | ||
|
|
832f9c042d | ||
|
|
eaa416c394 | ||
|
|
16645bc568 | ||
|
|
25f9e28230 | ||
|
|
1687b70bde | ||
|
|
d49ceef637 | ||
|
|
da573ac573 | ||
|
|
743eaab9f6 | ||
|
|
202811f3c6 | ||
|
|
6250603440 | ||
|
|
650c7a3ae0 | ||
|
|
42d75decb0 | ||
|
|
55f6aa9ff8 | ||
|
|
0e77caa329 | ||
|
|
da0e73fe11 | ||
|
|
fc5ab3572e | ||
|
|
891738747a | ||
|
|
1c52e731e1 | ||
|
|
ee615fbadf | ||
|
|
2ede9ef8ed | ||
|
|
dbcfcafdfc | ||
|
|
7d63c82ddd | ||
|
|
1d4dc81e55 | ||
|
|
ceca0f095b | ||
|
|
793996e047 | ||
|
|
ab76d46007 | ||
|
|
ed1e22bac5 | ||
|
|
e57ce28d2b | ||
|
|
2b596e226a | ||
|
|
c46f574aa8 | ||
|
|
9b4890a99f | ||
|
|
3f129513bb | ||
|
|
698490b936 | ||
|
|
c8bf95578c | ||
|
|
064132833c | ||
|
|
60f8f93a02 | ||
|
|
7b08d98647 | ||
|
|
11e619d1b3 | ||
|
|
4f184a6723 | ||
|
|
5fd91e808a | ||
|
|
0dfa224aeb | ||
|
|
32565dd188 | ||
|
|
96f09c45f5 | ||
|
|
d2474c8a72 | ||
|
|
9eb0dd5e70 | ||
|
|
bbdcb34ab6 | ||
|
|
6525d63459 | ||
|
|
0babf89aa5 | ||
|
|
317e6f81bb | ||
|
|
ae684d6d39 | ||
|
|
d9710ac244 | ||
|
|
dff7a28094 | ||
|
|
da18950b3d | ||
|
|
6055ce9b6b | ||
|
|
bd14739a9e | ||
|
|
843cbe4f80 | ||
|
|
f650e73d5c | ||
|
|
d1293dd047 | ||
|
|
715e8a5000 | ||
|
|
a7a69008d8 | ||
|
|
553b56d094 | ||
|
|
fec57c4ed7 | ||
|
|
b46f106a91 | ||
|
|
0214419446 | ||
|
|
d587d14f86 | ||
|
|
a115151616 | ||
|
|
26771ee7d0 | ||
|
|
731263638b | ||
|
|
a4f69351ce | ||
|
|
fa5f234a38 | ||
|
|
5d2c981368 | ||
|
|
4a55842724 | ||
|
|
e9655ed05e | ||
|
|
ed7d2bbdd7 | ||
|
|
276328e0fd | ||
|
|
1bcd091330 | ||
|
|
536d7e2957 | ||
|
|
55e774344a | ||
|
|
7d0c8b0c5f | ||
|
|
88c4cff50c | ||
|
|
cfe01bb820 | ||
|
|
4f1bd4e509 | ||
|
|
88544a89b7 | ||
|
|
a87e41eecd | ||
|
|
e52639d1d4 | ||
|
|
0463f5e83d | ||
|
|
eb90314b38 | ||
|
|
6ce1d60ebb | ||
|
|
5fa62c9fbd | ||
|
|
ef93a1f42e | ||
|
|
5f42748e1b | ||
|
|
269df23851 | ||
|
|
c40dc64bd0 | ||
|
|
2b150e3c1c | ||
|
|
f7c17ac7e7 | ||
|
|
3f2638efaf | ||
|
|
f106664952 | ||
|
|
afe8dcc1ff | ||
|
|
8f1e439381 | ||
|
|
4418d031e1 | ||
|
|
f3fc452904 | ||
|
|
89f40fe3de | ||
|
|
f8962beca6 | ||
|
|
dae1569f0e | ||
|
|
dd76c268c5 | ||
|
|
52c52f23d3 | ||
|
|
3adcb9f164 | ||
|
|
0f1a061afe | ||
|
|
95705cc95a | ||
|
|
07b652c1d4 | ||
|
|
eac137a9a9 | ||
|
|
6ec65965a4 | ||
|
|
290ae774e0 | ||
|
|
31e12f682d | ||
|
|
ae52f85502 | ||
|
|
fcda79eb3c | ||
|
|
385f371c06 | ||
|
|
6efb1a6705 | ||
|
|
4695ef3208 | ||
|
|
34e8b79e7e | ||
|
|
3639f943bf | ||
|
|
d373369649 | ||
|
|
9106e70b37 | ||
|
|
4678189ed4 | ||
|
|
78298e1284 | ||
|
|
34c091f232 | ||
|
|
064b650fac | ||
|
|
f8b4cbcc13 | ||
|
|
2f9c8dbb33 | ||
|
|
8bd5db431b | ||
|
|
5754510d7a | ||
|
|
797e2fea1e | ||
|
|
538656fcc7 | ||
|
|
0f66fa528d | ||
|
|
1a42f6dded | ||
|
|
4efdd342d6 | ||
|
|
f15684a562 | ||
|
|
78dfba8771 | ||
|
|
e428e186f0 | ||
|
|
ebf07eddfb | ||
|
|
d3abc44976 | ||
|
|
dc7c10014d | ||
|
|
5e2e8f91c7 | ||
|
|
e5a314bb3a | ||
|
|
9d3882d5b9 | ||
|
|
a647007a0f | ||
|
|
e04a4908cf | ||
|
|
cfe0272022 | ||
|
|
2e3b55d9e8 | ||
|
|
6b8ebe11de | ||
|
|
1fffd36054 | ||
|
|
2b25fea86c | ||
|
|
409a8311b1 | ||
|
|
6996c008d0 | ||
|
|
64fa52452c | ||
|
|
16d33b1c1f | ||
|
|
0a260a67d5 | ||
|
|
1aacd3cb23 | ||
|
|
5af3ba9db6 | ||
|
|
14bfd78f63 | ||
|
|
febc672e6e | ||
|
|
a18dcfce9e | ||
|
|
48410c428a | ||
|
|
da1df91f49 | ||
|
|
b2df6e6d41 | ||
|
|
8315c61240 | ||
|
|
1ff7ebb04a | ||
|
|
ab914f4621 | ||
|
|
51ef00e0f2 | ||
|
|
2b4df5be16 | ||
|
|
f98da25fda | ||
|
|
4c305b7cc0 | ||
|
|
5c979a532f | ||
|
|
fcf2427878 | ||
|
|
31e923fc67 | ||
|
|
1c2ebb8c5d | ||
|
|
29e75a4851 | ||
|
|
3765661a4e | ||
|
|
628984c09d | ||
|
|
a630653d88 | ||
|
|
e693b908be | ||
|
|
f36b2433a0 | ||
|
|
47af0d0356 | ||
|
|
d4c587c668 | ||
|
|
dda453975b | ||
|
|
c28801ff27 | ||
|
|
4e609ebc33 | ||
|
|
1257e96d5e | ||
|
|
122a3ab4ce | ||
|
|
136cb43cd1 | ||
|
|
ad8086d2b6 | ||
|
|
d00641a73c | ||
|
|
197be51047 | ||
|
|
53c40a87b2 | ||
|
|
b304c13034 | ||
|
|
cb895d17ff | ||
|
|
f0dd3aada3 | ||
|
|
2d055c8d8d | ||
|
|
aad4482a78 | ||
|
|
d71536ab86 | ||
|
|
fe25d52082 | ||
|
|
0441662e0c | ||
|
|
0f40bc4cce | ||
|
|
13e9c20be0 | ||
|
|
17bab31b18 | ||
|
|
26f11fabb7 | ||
|
|
b892749c75 | ||
|
|
810b08c50d | ||
|
|
fc71a757dd | ||
|
|
6c324414b1 | ||
|
|
d7283b92ac | ||
|
|
d67fdbc24e | ||
|
|
1edaf15220 | ||
|
|
38bd2bd011 | ||
|
|
da4ac6d709 | ||
|
|
9e16629d69 | ||
|
|
0aefab34f1 | ||
|
|
05b4ddfd46 | ||
|
|
74f2d6bea6 | ||
|
|
5392c9fd38 | ||
|
|
cd8e12c747 | ||
|
|
591b292fbf | ||
|
|
3610525c88 | ||
|
|
1db3ecca22 | ||
|
|
0168ef4014 | ||
|
|
25450a4182 | ||
|
|
8cc6b048fd | ||
|
|
cf094a2048 | ||
|
|
10881c8f5b | ||
|
|
23c6c8b331 | ||
|
|
cf8a437361 | ||
|
|
653c0faa18 | ||
|
|
b108e5bf45 | ||
|
|
5e5597ef19 | ||
|
|
edb5cb4ee5 | ||
|
|
3b81108738 | ||
|
|
110f5e02f4 | ||
|
|
a4a7ce51ad | ||
|
|
08a7dbe319 | ||
|
|
0b9e6d52b4 | ||
|
|
ecf0a4f299 | ||
|
|
d3fe5cdf34 | ||
|
|
d3d5c11675 | ||
|
|
ae30b4359f | ||
|
|
bda1b0a304 | ||
|
|
839f3e52ef | ||
|
|
a85f6b8287 | ||
|
|
fe9f86b432 | ||
|
|
c0a3bdcf99 | ||
|
|
94125fa5dd | ||
|
|
a77971ae13 | ||
|
|
e7f153a5e5 | ||
|
|
8cd39861f8 | ||
|
|
dcff407670 | ||
|
|
3b453dea13 | ||
|
|
9981b8f16c | ||
|
|
da4663aa83 | ||
|
|
3895bbc801 | ||
|
|
7285e2b2c9 | ||
|
|
e9bf26e0ca | ||
|
|
ec0319d256 | ||
|
|
1bfefbd083 | ||
|
|
8967343079 | ||
|
|
b3ba06aecb | ||
|
|
8cdcd7105a | ||
|
|
cc6d8d28b5 | ||
|
|
b55e13dbeb | ||
|
|
bbe8c46df9 | ||
|
|
16a56457ed | ||
|
|
a4c0728e28 | ||
|
|
d6907f3f3a | ||
|
|
3f126be081 | ||
|
|
cbf0b3c05e | ||
|
|
0f0470b93c | ||
|
|
d104c6dbf4 | ||
|
|
a8705be6ee | ||
|
|
f54ba4b018 | ||
|
|
884b410dce | ||
|
|
e5945fa720 | ||
|
|
b155a9908b | ||
|
|
d67e4a3491 | ||
|
|
97d0ab1b75 | ||
|
|
f5befcc95f | ||
|
|
ab047944b6 | ||
|
|
ce5f927a8d | ||
|
|
dcb777d6ea | ||
|
|
decf728d91 | ||
|
|
098f8a52f7 | ||
|
|
1eeb7f8303 | ||
|
|
4b7177101a | ||
|
|
73cf3eb869 | ||
|
|
b4da35a0ab | ||
|
|
e3d92c27e8 | ||
|
|
8addb49012 | ||
|
|
ac1e557c46 | ||
|
|
d1651b54ec | ||
|
|
f61dbdccec | ||
|
|
9beff11125 | ||
|
|
d8c0a82411 | ||
|
|
2add9a02f9 | ||
|
|
2910a6effd | ||
|
|
5621a651a1 | ||
|
|
c83e816bda | ||
|
|
948e5a2dde | ||
|
|
94cd17909d | ||
|
|
bcfa3efef7 | ||
|
|
bf87eb68e2 | ||
|
|
a84298de86 | ||
|
|
ee47c6d727 | ||
|
|
ef5bd95620 | ||
|
|
b36703fc47 | ||
|
|
b2112ca8b9 | ||
|
|
7952545f0d | ||
|
|
c997fbafb0 | ||
|
|
60c8d3b832 | ||
|
|
778c1852b8 | ||
|
|
08cc287dff | ||
|
|
17b7ef80ba | ||
|
|
a4532cb834 | ||
|
|
dc2bc7fbf7 | ||
|
|
d37dd66ec5 | ||
|
|
79bbeea7f0 | ||
|
|
5b56de784d | ||
|
|
620dd0be78 | ||
|
|
7267fd080e | ||
|
|
2d8e03cc69 | ||
|
|
b797492dbd | ||
|
|
eb41d8b16d | ||
|
|
d791aa2e4f | ||
|
|
f969841464 | ||
|
|
93d63508dc | ||
|
|
84e7935971 | ||
|
|
730bedf0a5 | ||
|
|
0ed223ef01 | ||
|
|
fc677ca0e9 | ||
|
|
c02f95c2fc | ||
|
|
76b5affaaa | ||
|
|
72c7cc2c67 | ||
|
|
13b9749e8f | ||
|
|
3f76521bfe | ||
|
|
837cf10e36 | ||
|
|
e8fe7cc853 | ||
|
|
5db96847fc | ||
|
|
746b01f8ca | ||
|
|
eb2218c220 | ||
|
|
657ec411c3 | ||
|
|
9895806d23 | ||
|
|
5957e4b264 | ||
|
|
c544c4d6b5 | ||
|
|
061af3f827 | ||
|
|
4d8708a5ee | ||
|
|
9eb1870196 | ||
|
|
e961a44511 | ||
|
|
c16a35ec8c | ||
|
|
841566a5d1 | ||
|
|
4a822c5920 | ||
|
|
ce554fc442 | ||
|
|
e9a515ac34 | ||
|
|
b14b53329c | ||
|
|
b8641258d6 | ||
|
|
6022aff965 | ||
|
|
18eaae80ec | ||
|
|
a4e41462c7 | ||
|
|
f8bed154ce | ||
|
|
8ee3f7ab66 | ||
|
|
77c7efbe89 | ||
|
|
8d78ef5946 | ||
|
|
4571a3b50b | ||
|
|
b48197c8aa | ||
|
|
bb45c0c34b | ||
|
|
25c316165e | ||
|
|
1246f3aa21 | ||
|
|
49cd31fd41 | ||
|
|
94e6380485 | ||
|
|
36b5315075 | ||
|
|
c66ccfeda2 | ||
|
|
ae0cfe1575 | ||
|
|
79ff36d49a | ||
|
|
d6742812c8 | ||
|
|
13dc721cb0 | ||
|
|
57967835bd | ||
|
|
db9913c725 | ||
|
|
c3e3f4e947 | ||
|
|
f33937bc5d | ||
|
|
c176a5b80a | ||
|
|
e2db8c07af | ||
|
|
c224892609 | ||
|
|
f5ed9d93c3 | ||
|
|
88145694ce | ||
|
|
d58f7fd089 | ||
|
|
c32b53b3c0 | ||
|
|
9dfef527a3 | ||
|
|
df51c8b9a4 | ||
|
|
499c4a27d3 | ||
|
|
bfe08acfec | ||
|
|
ffae976e11 | ||
|
|
ced8eb419f | ||
|
|
0ab2eaa630 | ||
|
|
d385f555dd | ||
|
|
268e5cbdb1 | ||
|
|
247649ec34 | ||
|
|
2ada6d969d | ||
|
|
a4d2740f24 | ||
|
|
df7266cc75 | ||
|
|
3255b73a44 | ||
|
|
305e81bef1 | ||
|
|
84cc6e9140 | ||
|
|
b8d95f4b31 | ||
|
|
c0f7d02f44 | ||
|
|
7fc6b61f21 | ||
|
|
ed3a1296d8 | ||
|
|
66c62d8875 | ||
|
|
7d1b06471f | ||
|
|
b7309cdda8 | ||
|
|
6ffc12ef97 | ||
|
|
79b2d39305 | ||
|
|
b3525ea6a5 | ||
|
|
b5ceec4883 | ||
|
|
4287082f4b | ||
|
|
e3a8d12d4b | ||
|
|
ce15c26b59 | ||
|
|
48940272ae | ||
|
|
8c64538207 | ||
|
|
0460033281 | ||
|
|
8240cb9c0f | ||
|
|
e385f054df | ||
|
|
03ae935756 | ||
|
|
d196f455cb | ||
|
|
50bb13b7cd | ||
|
|
652afd6b57 | ||
|
|
d1cb176b31 | ||
|
|
767131a117 | ||
|
|
f0dadcef70 | ||
|
|
1f20024b91 | ||
|
|
f5c7197dda | ||
|
|
cb497fe720 | ||
|
|
bef0e40db8 | ||
|
|
24073b20ab | ||
|
|
64d83d9048 | ||
|
|
5c0b06f27d | ||
|
|
b09e2c11eb | ||
|
|
8c119a76d1 | ||
|
|
04a9788bc0 | ||
|
|
883e7f96ee | ||
|
|
d276be9594 | ||
|
|
2fc6b0a8cb | ||
|
|
9f295d8399 | ||
|
|
024f454702 | ||
|
|
821ad4de2e | ||
|
|
b864f9c6a9 | ||
|
|
31e0a8a88b | ||
|
|
be3d2b6552 | ||
|
|
e2eb546069 | ||
|
|
b2ae3b4fee | ||
|
|
5b9e5f904b | ||
|
|
7d1843f485 | ||
|
|
f1e2704407 | ||
|
|
17b4a0525d | ||
|
|
5cdba3c00a | ||
|
|
79b5551ec1 | ||
|
|
ac840323be | ||
|
|
c2e7863ca0 | ||
|
|
01b065b3c2 | ||
|
|
55907a9a05 | ||
|
|
6e9dcdbb50 | ||
|
|
0265ea45b2 | ||
|
|
ccb7e41434 | ||
|
|
38317c5497 | ||
|
|
9f62de0420 | ||
|
|
e8e4af7286 | ||
|
|
2c5d30a0ff | ||
|
|
eb27db2232 | ||
|
|
adb6337a27 | ||
|
|
624bb0a7e5 | ||
|
|
757829d286 | ||
|
|
c5f055718a | ||
|
|
a12c8f4dbc | ||
|
|
f072afa6ef | ||
|
|
686d77dcc1 | ||
|
|
7da227cdfa | ||
|
|
abcfaa05e2 | ||
|
|
aa144b0439 | ||
|
|
15329a97fe | ||
|
|
223b2678b4 | ||
|
|
930923e330 | ||
|
|
8fe929d8ab | ||
|
|
e12207fc73 | ||
|
|
ef05949e5a | ||
|
|
a2f7edcbcd | ||
|
|
7f80638928 | ||
|
|
222d6cdca1 | ||
|
|
aa733542e3 | ||
|
|
2b142baf19 | ||
|
|
78bfd1ff64 | ||
|
|
7ea1309146 | ||
|
|
a7be7a3e7a | ||
|
|
a14fd303fc | ||
|
|
b632a991b9 | ||
|
|
06aae24dad | ||
|
|
3bf04802e4 | ||
|
|
6f79e63b3f | ||
|
|
67cfdedcc4 | ||
|
|
f0c6295cff | ||
|
|
6c5629a0d7 | ||
|
|
06726758d2 | ||
|
|
866c7d4f2f | ||
|
|
17695927d5 | ||
|
|
ea8638c843 | ||
|
|
0fbc1095be | ||
|
|
b914e8388d | ||
|
|
31911a40c0 | ||
|
|
00a2a23190 | ||
|
|
5f25e605d3 | ||
|
|
d4f81f086c | ||
|
|
e048813c43 | ||
|
|
1186f2fb14 | ||
|
|
a2cdf6559d | ||
|
|
9d6d74ce98 | ||
|
|
dbc7023c00 | ||
|
|
6fd84dba8f | ||
|
|
e444a52b6a | ||
|
|
d431a81cf0 | ||
|
|
dcb03a2250 | ||
|
|
8d6e016e48 | ||
|
|
f067af664e | ||
|
|
6355e4e3bc | ||
|
|
e2f9c18a27 | ||
|
|
cc93dba508 | ||
|
|
b1f270c082 | ||
|
|
d086de8103 | ||
|
|
523ca2f7fc | ||
|
|
a2888b009d | ||
|
|
143e2908ad | ||
|
|
98542bd5d5 | ||
|
|
ee0a71de1b | ||
|
|
9f8cb6ca34 | ||
|
|
759fb8a802 | ||
|
|
ab06eaeca8 | ||
|
|
267b3a9547 | ||
|
|
0b49ecfc12 | ||
|
|
23b03919e6 | ||
|
|
4f165f3b27 | ||
|
|
967a4c7748 | ||
|
|
03c23f0fda | ||
|
|
44bad0146c | ||
|
|
d92d6e84d0 | ||
|
|
355b64fda4 | ||
|
|
c1632f8e65 | ||
|
|
1fa16bd8dd | ||
|
|
0ac531674c | ||
|
|
18a61061e1 | ||
|
|
b0e349212d | ||
|
|
9913e67928 | ||
|
|
888c837cdd | ||
|
|
0e03fb6393 | ||
|
|
317fed304c | ||
|
|
681cf349e6 | ||
|
|
313cf858f0 | ||
|
|
fa94fd075f | ||
|
|
3433d211a5 | ||
|
|
dcda3c7329 | ||
|
|
d2563063d1 | ||
|
|
9557baf22a | ||
|
|
c7b1d4514f | ||
|
|
09cd8bcb99 | ||
|
|
3046d63ad4 | ||
|
|
de9c2d3d85 | ||
|
|
2454c50380 | ||
|
|
e2f8156a4d | ||
|
|
6ea6a61e90 | ||
|
|
b978b6756e | ||
|
|
cbae83106b | ||
|
|
424f854145 | ||
|
|
faf72705cb | ||
|
|
381e72f1ef | ||
|
|
91fe549c25 | ||
|
|
a472da9ea6 | ||
|
|
20c7fe81dc | ||
|
|
3ef445eb2e | ||
|
|
4afc38523d | ||
|
|
15616e8d07 | ||
|
|
2534921af9 | ||
|
|
0206198f55 | ||
|
|
3c8c402f10 | ||
|
|
098dae9640 | ||
|
|
42c38de3e2 | ||
|
|
be10e6a9de | ||
|
|
6b5fb81e01 | ||
|
|
bb5991b111 | ||
|
|
8f261970e9 | ||
|
|
093a8f18ef | ||
|
|
9c19b5b785 | ||
|
|
35958ca3a2 | ||
|
|
3bc2e97e8b | ||
|
|
eb7ff77461 | ||
|
|
d36f4cf6f8 | ||
|
|
f373669f02 | ||
|
|
37596589a7 | ||
|
|
3e90426d8e | ||
|
|
35a184827a | ||
|
|
2edd3c5614 | ||
|
|
cec5a6ceeb | ||
|
|
dc6b0b4dde | ||
|
|
3ecc1816be | ||
|
|
9a90c2e568 | ||
|
|
ab747d0338 | ||
|
|
8753f91a4a | ||
|
|
f8af109821 | ||
|
|
a1a7900254 | ||
|
|
804eb6c076 | ||
|
|
f4f3ff0eda | ||
|
|
03c0b1ea91 | ||
|
|
38535bde84 | ||
|
|
17e1fa54cf | ||
|
|
a4f5dd9d89 | ||
|
|
6269902140 | ||
|
|
b964e424b2 | ||
|
|
73665f62b3 | ||
|
|
3fca780132 | ||
|
|
b5e01dcb5e | ||
|
|
f180b89a9c | ||
|
|
98a903e60c | ||
|
|
c20cc8fb18 | ||
|
|
99f5c4e12f | ||
|
|
17759f9a98 | ||
|
|
6c0e96213f | ||
|
|
2c89d80a27 | ||
|
|
e314fd4a0a | ||
|
|
affbe9f5a9 | ||
|
|
7a423eb6e1 | ||
|
|
7137924baa | ||
|
|
c998bce34f | ||
|
|
f5d4397f0b | ||
|
|
608b166b32 | ||
|
|
472cda8315 | ||
|
|
7a78e5d869 | ||
|
|
8effca3a7c | ||
|
|
fab52b6a56 | ||
|
|
e98ef5f5f2 | ||
|
|
7aa84607c8 | ||
|
|
928fc374c7 | ||
|
|
4ea8cb5903 | ||
|
|
db6acacf2e | ||
|
|
59aa71b3b8 | ||
|
|
ccfa487493 | ||
|
|
9fcc41aeff | ||
|
|
d9a4fa3f49 | ||
|
|
6c821dc42a | ||
|
|
d58e34ed3d | ||
|
|
ff37d1cb02 | ||
|
|
dcf119ae59 | ||
|
|
1338cf875a | ||
|
|
ed3e299e0b | ||
|
|
f85645a78a | ||
|
|
e412abd017 | ||
|
|
1efa654e7d | ||
|
|
00b58068dc | ||
|
|
7be5208daf | ||
|
|
7ad555a41b | ||
|
|
872f70a418 | ||
|
|
c37d2e78d2 | ||
|
|
b606d066fc | ||
|
|
d4608eec26 | ||
|
|
0bc8e231ad | ||
|
|
2dab5e4a78 | ||
|
|
c6aa37851d | ||
|
|
31bd106ffd | ||
|
|
74cea2b41c | ||
|
|
46f9a00b75 | ||
|
|
450d8c21cf | ||
|
|
2073bc77c8 | ||
|
|
b6a5501f71 | ||
|
|
e27b98cdc1 | ||
|
|
8af500462f | ||
|
|
30fc4c28b7 | ||
|
|
74b582369a | ||
|
|
c9ab2b507b | ||
|
|
2b479319c1 | ||
|
|
3a3ac012bb | ||
|
|
00265a7e8e | ||
|
|
0dafb50223 | ||
|
|
ac9620c253 | ||
|
|
6e226b165c | ||
|
|
6226f65e20 | ||
|
|
7de29c29e9 | ||
|
|
deed6c7bbe | ||
|
|
c234e2ca3d | ||
|
|
19bffa288d | ||
|
|
9303096430 | ||
|
|
98d5f5ee3e | ||
|
|
ba16fceeb8 | ||
|
|
c49b5f78bf | ||
|
|
446688d5b2 | ||
|
|
e2cacd9c4b | ||
|
|
d5c9e08888 | ||
|
|
ab0ead4e05 | ||
|
|
9a267db583 | ||
|
|
fb15cbef90 | ||
|
|
97e5d9f610 | ||
|
|
305ee394b1 | ||
|
|
a251d521a1 | ||
|
|
b5065cb52f | ||
|
|
dca16e83d3 | ||
|
|
c5256fe2cb | ||
|
|
1b93ba5355 | ||
|
|
fd7171f5a4 | ||
|
|
685fc1a37b | ||
|
|
a738c93163 | ||
|
|
4ac863fa6a | ||
|
|
fed369ad5d | ||
|
|
f2c91d015e | ||
|
|
e122349f9e | ||
|
|
bb07c3ab45 | ||
|
|
65a4b38ee5 | ||
|
|
bbc3f5c19a | ||
|
|
0b4ba548a5 | ||
|
|
747b963bd4 | ||
|
|
32b9820725 | ||
|
|
b217fede87 | ||
|
|
a9ce8a3b2e | ||
|
|
7914e7bc14 | ||
|
|
ed8716510b | ||
|
|
efd2ae59f5 | ||
|
|
1923d0b809 | ||
|
|
99f6752590 | ||
|
|
131746f94e | ||
|
|
f0ed6973c8 | ||
|
|
2cf070a26c | ||
|
|
3c68ecb7f1 | ||
|
|
243f5fcda4 | ||
|
|
e22b7f36ce | ||
|
|
308ea15763 | ||
|
|
e26f9c58fa | ||
|
|
4ca758174e | ||
|
|
bf8e35e168 | ||
|
|
2a3265ed71 | ||
|
|
3a06617a7d | ||
|
|
d75eb456dc | ||
|
|
8ed0f8ec73 | ||
|
|
185e0dce6e | ||
|
|
d9e74a78f0 | ||
|
|
700483dd48 | ||
|
|
1c80b820cb | ||
|
|
59e5cfb04d | ||
|
|
b06550e2cb | ||
|
|
ca4bf13569 | ||
|
|
eae3a50435 | ||
|
|
de2956ec3c | ||
|
|
a2e62c9fb5 | ||
|
|
e7fdc318f1 | ||
|
|
62dd559b7c | ||
|
|
4a631753a0 | ||
|
|
b696984655 | ||
|
|
f1dbec122a | ||
|
|
47cb54461f | ||
|
|
91e03f7cfd | ||
|
|
c0314d95c9 | ||
|
|
8e17b3ff51 | ||
|
|
b932a659b6 | ||
|
|
80b2ed19e0 | ||
|
|
88000926f4 | ||
|
|
12245fefed | ||
|
|
8eebd5fb9a | ||
|
|
c5b0e31d36 | ||
|
|
5c5e828cc6 | ||
|
|
ecb11cf927 | ||
|
|
485241d080 | ||
|
|
8701f8868c | ||
|
|
e68086e149 | ||
|
|
16a2d80801 | ||
|
|
d5e5659a2c | ||
|
|
3c2e8dcf87 | ||
|
|
03320e8644 | ||
|
|
40ae6ccf2f | ||
|
|
bcbade3729 | ||
|
|
58a6f9cae3 | ||
|
|
bf154eb8c3 | ||
|
|
766b6e9fef | ||
|
|
d89a41d4c7 | ||
|
|
d24a7d7b22 | ||
|
|
57a746fc21 | ||
|
|
2c1bd41fba | ||
|
|
6260cf24cc | ||
|
|
88d4a670d4 | ||
|
|
ea0b6c5ee5 | ||
|
|
20f61042fc | ||
|
|
2751a967e8 | ||
|
|
93057870a7 | ||
|
|
6b98c3fed5 | ||
|
|
eb63ed926d | ||
|
|
b72787f5bb | ||
|
|
0793b2ab38 | ||
|
|
604ed3e3e1 | ||
|
|
0aefbc2c7d | ||
|
|
eb1fa90788 | ||
|
|
65f02e5139 | ||
|
|
bbfe65a905 | ||
|
|
59468eb162 | ||
|
|
1889a283ee | ||
|
|
0655b2021d | ||
|
|
a1b8c9b6fd | ||
|
|
c4a60bc6f6 | ||
|
|
eb7037eea8 | ||
|
|
7546083cd5 | ||
|
|
74ee36f43a | ||
|
|
f8c3e4d66f | ||
|
|
6db8d9a38a | ||
|
|
61145a2d03 | ||
|
|
4a9410742a | ||
|
|
db78e4ef03 | ||
|
|
7b0eb4e79d | ||
|
|
17f6b8eb2a | ||
|
|
37c40d7dda | ||
|
|
1a2aa876e3 | ||
|
|
39822f323f | ||
|
|
338acfba75 | ||
|
|
490f4f36f1 | ||
|
|
69c46f684f | ||
|
|
1626406557 | ||
|
|
f662defcf9 | ||
|
|
8f07f8e9e1 | ||
|
|
7e44f7f110 | ||
|
|
b211a66e99 | ||
|
|
0bdb066820 | ||
|
|
4ee84e10fd | ||
|
|
ab706f4076 | ||
|
|
bd7266653f | ||
|
|
08f968dced | ||
|
|
9f9ebd838a | ||
|
|
a03f89fb68 | ||
|
|
51146a4ed5 | ||
|
|
80301f2cb2 | ||
|
|
9a9f26c435 | ||
|
|
eebe9cbd5f | ||
|
|
503d43b552 | ||
|
|
b3077fc15d | ||
|
|
fdc462d071 | ||
|
|
f44a26da3c | ||
|
|
d12d03fd5e | ||
|
|
51ee2df755 | ||
|
|
a89bb33015 | ||
|
|
7659cca8ba | ||
|
|
f754e951f7 | ||
|
|
e2905d01ac | ||
|
|
9d691f2452 | ||
|
|
a426c8bb26 | ||
|
|
bc8b1722b0 | ||
|
|
ac31c612b3 | ||
|
|
03c3eea54e | ||
|
|
bccaf16343 | ||
|
|
30df45ef2e | ||
|
|
6500ba48a7 | ||
|
|
03b35721a2 | ||
|
|
14327d4462 | ||
|
|
1b968903e2 | ||
|
|
b719e95e6e | ||
|
|
318eb2f47d | ||
|
|
010f24e5c3 | ||
|
|
db9762c5b2 | ||
|
|
d1ebcde725 | ||
|
|
545f9cad2d | ||
|
|
3247d84b6b | ||
|
|
e73f0a916a | ||
|
|
150af5ff8b | ||
|
|
1659ab146d | ||
|
|
86e17d38d4 | ||
|
|
1809c59f25 | ||
|
|
4eb9661730 | ||
|
|
4acbe4b31a | ||
|
|
df17dd749f | ||
|
|
20e5a88e56 | ||
|
|
0a939a5b91 | ||
|
|
6ad7c30a18 | ||
|
|
e6bfc60139 | ||
|
|
c866baa4eb | ||
|
|
91303acdbe | ||
|
|
1273af4b1b | ||
|
|
e682b408f3 | ||
|
|
0a0c206998 | ||
|
|
44ffd98d0c | ||
|
|
53ec93c8f8 | ||
|
|
f779ed7628 | ||
|
|
f2fdb74f23 | ||
|
|
4ba87e3349 | ||
|
|
7abee90992 | ||
|
|
159a9e00c8 | ||
|
|
9c62f38345 | ||
|
|
1443f5f997 | ||
|
|
17d8a124cd | ||
|
|
5cd565306e | ||
|
|
67010e20d7 | ||
|
|
704604f6fe | ||
|
|
e687f56c7f | ||
|
|
ff85575e98 | ||
|
|
26be25c218 | ||
|
|
d3d5e0cbfb | ||
|
|
4796bf632c | ||
|
|
5eef365baf | ||
|
|
937ff63af9 | ||
|
|
33211bfb27 | ||
|
|
a243da8b1e | ||
|
|
62e605a443 | ||
|
|
2bdaaa5a33 | ||
|
|
bcad3c1ced | ||
|
|
b865f5d6e7 | ||
|
|
00664822ec | ||
|
|
4594c15de7 | ||
|
|
2b6ec1672c | ||
|
|
d44d5711cb | ||
|
|
54cb13ba62 | ||
|
|
c32f5dd951 | ||
|
|
2e6c42c8ac | ||
|
|
5757b86d39 | ||
|
|
9df4a79827 | ||
|
|
071dd46a4c | ||
|
|
030d619910 | ||
|
|
c56fd399c1 | ||
|
|
31c954db0e | ||
|
|
cb6a040c4d | ||
|
|
51c3a753a9 | ||
|
|
c28c592c80 | ||
|
|
fc07f851f7 | ||
|
|
ab4a5e6719 | ||
|
|
88e9dd54b2 | ||
|
|
f53f34559a | ||
|
|
3e5d9a394f | ||
|
|
3f287eb148 | ||
|
|
dfe854a236 | ||
|
|
3854c7bba2 | ||
|
|
01c066419d | ||
|
|
040b1d9bc8 | ||
|
|
6c4acbad68 | ||
|
|
b5c11ece57 | ||
|
|
50696d2e88 | ||
|
|
e7661fd4be | ||
|
|
957e11eff0 | ||
|
|
bd6e8d093a | ||
|
|
f7b5a86a09 | ||
|
|
97fd107f47 | ||
|
|
fc688dca99 | ||
|
|
fe3bd2a1f1 | ||
|
|
3625befc0b | ||
|
|
6e6508aafd | ||
|
|
3a8a0a541e | ||
|
|
650495306f | ||
|
|
5664c34790 | ||
|
|
b1c66997ca | ||
|
|
114ffd4667 | ||
|
|
ad1770ec95 | ||
|
|
5f22402761 | ||
|
|
c11094a11e | ||
|
|
6873bf384e | ||
|
|
42242daf9b | ||
|
|
1f96b960ab | ||
|
|
f6b30ed0c6 | ||
|
|
c59dc129a8 | ||
|
|
472c1a9e3e | ||
|
|
24fe8ab4a4 | ||
|
|
453c6f05bd | ||
|
|
248de7f1f2 | ||
|
|
3bbf84861e | ||
|
|
0dac9044a5 | ||
|
|
a981d1082a | ||
|
|
803d0c2ae2 | ||
|
|
06e44cc649 | ||
|
|
fd01e5c263 | ||
|
|
ecc47dcfbb | ||
|
|
b6e06dfdc2 | ||
|
|
eb630b23ae | ||
|
|
eae7a48991 | ||
|
|
9436c836e6 | ||
|
|
7c64239b36 | ||
|
|
80ba371296 | ||
|
|
6787563efe | ||
|
|
9def85f9ba | ||
|
|
6d55f35404 | ||
|
|
1902c37924 | ||
|
|
02b5ff38a4 | ||
|
|
f076a927c9 | ||
|
|
6184eaa30e | ||
|
|
a42b72e9ce | ||
|
|
f4dcae722c | ||
|
|
bbcb3e9403 | ||
|
|
3d690b7c72 | ||
|
|
b4ab2c69ae | ||
|
|
4a7f406edb | ||
|
|
9e18bcaeb8 | ||
|
|
9abfe233bc | ||
|
|
3267958541 | ||
|
|
af5ee45206 | ||
|
|
300b72b9b8 | ||
|
|
42af55a740 | ||
|
|
3c1e6d0e5c | ||
|
|
edf7df368e | ||
|
|
cde38e012f | ||
|
|
bef4f0c4e2 | ||
|
|
bf081dce32 | ||
|
|
0bb3cb4aab | ||
|
|
0d5132f710 | ||
|
|
cad147faf8 | ||
|
|
cc405b83e2 | ||
|
|
c65f5b7279 | ||
|
|
c216340120 | ||
|
|
ff5cbc490e | ||
|
|
27cba5ba31 | ||
|
|
9976b8132f | ||
|
|
dbc5bd96f3 | ||
|
|
9489ab862b | ||
|
|
1bb634bc6f | ||
|
|
07b5c7fef4 | ||
|
|
4a7cfab543 | ||
|
|
426ef5cb88 | ||
|
|
5b86412407 | ||
|
|
4f8fcd2d3d | ||
|
|
16c40aa51c | ||
|
|
6449c4a53d | ||
|
|
d670356388 | ||
|
|
fb4c8549dc | ||
|
|
42dc5c1f0f | ||
|
|
659c3bc1cf | ||
|
|
f5684f2c45 | ||
|
|
1d2d2b1c9c | ||
|
|
bc06ba54b9 | ||
|
|
1b6e223456 | ||
|
|
9e4a2168c0 | ||
|
|
46aa26a444 | ||
|
|
4d01aa3006 | ||
|
|
2c308af615 | ||
|
|
caf4ab60cd | ||
|
|
4a8d37bde1 | ||
|
|
3289dd8419 | ||
|
|
13473eeb4d | ||
|
|
4264cd8830 | ||
|
|
edcc215774 | ||
|
|
3085fffb49 | ||
|
|
81a6e4b46c | ||
|
|
e0d612c92f | ||
|
|
fadbb91287 | ||
|
|
72146c08ae | ||
|
|
0c7cb274b4 | ||
|
|
a08c499c95 | ||
|
|
a879bbce59 | ||
|
|
f11f8b3e0e | ||
|
|
7842545627 | ||
|
|
2a0f8f5ce3 | ||
|
|
4ae3ad7abd | ||
|
|
a16025ca95 | ||
|
|
fdefe09187 | ||
|
|
06370a763c | ||
|
|
691e2580e5 | ||
|
|
f40369d061 | ||
|
|
046c523880 | ||
|
|
b3b7ae26cf | ||
|
|
49424b8b56 | ||
|
|
68ff4a52dc | ||
|
|
07c932e9e6 | ||
|
|
cbe3abeab0 | ||
|
|
3d5e3ce6cf | ||
|
|
4efdabc1ff | ||
|
|
8ca495ec50 | ||
|
|
69aba02c9a | ||
|
|
42225dd35e | ||
|
|
ad4c9fcc83 | ||
|
|
ef4d0c3c42 | ||
|
|
59cc45eaab | ||
|
|
f64c40e91f | ||
|
|
46d7d30089 | ||
|
|
48f15bb71c | ||
|
|
ac70b1d11b | ||
|
|
d720082644 | ||
|
|
1f45b642e9 | ||
|
|
83228d8aa6 | ||
|
|
34f1e50f90 | ||
|
|
b0c518a0d6 | ||
|
|
aa673a3a5c | ||
|
|
40d58f6bc2 | ||
|
|
7604b24ffc | ||
|
|
a47c0c91a3 | ||
|
|
0232f52281 | ||
|
|
08eba71c8a | ||
|
|
577a9249d1 | ||
|
|
ea6461bd0a | ||
|
|
f58c94146a | ||
|
|
6efe13d142 | ||
|
|
0a8fdc6cc8 | ||
|
|
b91b298174 | ||
|
|
f87038622b | ||
|
|
8b077848bb | ||
|
|
2945e6f8bf | ||
|
|
0f760dc388 | ||
|
|
5a9b5db99b | ||
|
|
6ba51fb338 | ||
|
|
146aa497f9 | ||
|
|
e7bc82d152 | ||
|
|
26f8172b1a | ||
|
|
634584400a | ||
|
|
7d6be79ba8 | ||
|
|
cef208f6ef | ||
|
|
f4921d1317 | ||
|
|
7f1a74b576 | ||
|
|
3dc11777c6 | ||
|
|
b536165910 | ||
|
|
7c7aa9e7a7 | ||
|
|
2b03b57b5c | ||
|
|
77c6120014 | ||
|
|
b82ff7b88d | ||
|
|
a16a75230c | ||
|
|
0e27b302bc | ||
|
|
c369ab9b1c | ||
|
|
bb267ccae7 | ||
|
|
efe24658a4 | ||
|
|
5cdf9e7551 | ||
|
|
4390302384 | ||
|
|
dab00e7fb2 | ||
|
|
929c5e7a5b | ||
|
|
d600042110 | ||
|
|
0a58e7433e | ||
|
|
5639c985df | ||
|
|
9fbfbfb23b | ||
|
|
ecd2f0e2bf | ||
|
|
60418276bd | ||
|
|
170392f0bc | ||
|
|
6744745152 | ||
|
|
009ae6a235 | ||
|
|
bf5f72c00b | ||
|
|
84aca5b9e1 | ||
|
|
6164266870 | ||
|
|
cc9df9c586 | ||
|
|
29a268d476 | ||
|
|
18d7aab703 | ||
|
|
373e6b6c8e | ||
|
|
71fab4f6be | ||
|
|
de55c14a16 | ||
|
|
e8517e954d | ||
|
|
78281fc82c | ||
|
|
bc260fffde | ||
|
|
db00a08bdc | ||
|
|
85cf7f26ce | ||
|
|
acca147ff2 | ||
|
|
d53da0e422 | ||
|
|
11eaaab72d | ||
|
|
475e64fc5b | ||
|
|
1bd8154ac4 | ||
|
|
d2fa0e7852 | ||
|
|
f2b324abc2 | ||
|
|
d2225dd841 | ||
|
|
8d26aa86b9 | ||
|
|
7e937d7d29 | ||
|
|
fe4b534b78 | ||
|
|
d0a65c7c68 | ||
|
|
416f87f4bb | ||
|
|
7eeb67be28 | ||
|
|
7ed6ee5075 | ||
|
|
d3c8215e15 | ||
|
|
30bc6c274e | ||
|
|
ecb1068f0b | ||
|
|
f6eef21b45 | ||
|
|
1aeff25316 | ||
|
|
6de569537f | ||
|
|
764bc3fead | ||
|
|
a89d617532 | ||
|
|
fef33795d0 | ||
|
|
d2c04b761d | ||
|
|
c5828aba91 | ||
|
|
1286f9dcb6 | ||
|
|
391e525fc5 | ||
|
|
afc32b1cfa | ||
|
|
0797181967 | ||
|
|
14c5e631ff | ||
|
|
5cdb039c33 | ||
|
|
a11c4fcb58 | ||
|
|
c67a937d40 | ||
|
|
03fa7137b9 | ||
|
|
e95400988e | ||
|
|
942c9c6a63 | ||
|
|
6c45665fde | ||
|
|
d92ac8f588 | ||
|
|
169665da32 | ||
|
|
c4d80b4844 | ||
|
|
7827749453 | ||
|
|
5e78697a69 | ||
|
|
a0e6a78496 | ||
|
|
af99a93536 | ||
|
|
e9ea117985 | ||
|
|
b9ddb0140f | ||
|
|
dae70371d1 | ||
|
|
228cbb4082 | ||
|
|
679c913f3a | ||
|
|
03fb7947c3 | ||
|
|
c39f5a27b2 | ||
|
|
dbdb516f3c | ||
|
|
c1a97b7356 | ||
|
|
a6d8f7ea24 | ||
|
|
574c7600e0 | ||
|
|
d1c0205d77 | ||
|
|
13c29d2c1e | ||
|
|
dc1a0f050e | ||
|
|
e252a00d55 | ||
|
|
5bedbb7c7d | ||
|
|
e510418152 | ||
|
|
8197ae6aa7 | ||
|
|
9d619d520d | ||
|
|
46605479e9 | ||
|
|
6d20eddd43 | ||
|
|
c1ee2a0adb | ||
|
|
9d29d49ada | ||
|
|
e7b95892ff | ||
|
|
4bf5c77374 | ||
|
|
df4a75f4b0 | ||
|
|
4bdb4cbbb5 | ||
|
|
4cdcdee8e4 | ||
|
|
e6c36411cb | ||
|
|
a4788a95af | ||
|
|
b5de638c0b | ||
|
|
c1a210313e | ||
|
|
ab0ed67f81 | ||
|
|
5d54d5b7d6 | ||
|
|
1d09ffa529 | ||
|
|
eef9d15aaa | ||
|
|
8034ddc413 | ||
|
|
e75adb165a | ||
|
|
09ce0d5285 | ||
|
|
cc1ad41e94 | ||
|
|
8a38646bc5 | ||
|
|
a2b65f52f6 | ||
|
|
c16d8da784 | ||
|
|
a55582a018 | ||
|
|
ea6d472002 | ||
|
|
3dc4290f2a | ||
|
|
6c43f75f9f | ||
|
|
e0c6972bed | ||
|
|
1ab3e04cba | ||
|
|
1b8f664c8a | ||
|
|
25adfe5b28 | ||
|
|
7637b2bec2 | ||
|
|
6b3d984ca6 | ||
|
|
da5bfe32af | ||
|
|
cfab49a7dd | ||
|
|
f93d22ae22 | ||
|
|
91b9e50fd0 | ||
|
|
1b457b0be6 | ||
|
|
d77894c8fe | ||
|
|
366f7621fa | ||
|
|
984bc37e29 | ||
|
|
604de144b9 | ||
|
|
5dddaeb6e5 | ||
|
|
7790686a84 | ||
|
|
60950f056b | ||
|
|
ef07634e09 | ||
|
|
f70a20f740 | ||
|
|
c1cda2d536 | ||
|
|
2b03e7aea8 | ||
|
|
58cea3e947 | ||
|
|
f02fb7ba15 | ||
|
|
fbafcd0cbc | ||
|
|
bf09c88e6e | ||
|
|
cb8f7e0ddb | ||
|
|
f63aa33082 | ||
|
|
7bdf6717e1 | ||
|
|
2fc2801ad4 | ||
|
|
2bb6061a44 | ||
|
|
a0e3488af0 | ||
|
|
8fef1f975a | ||
|
|
17fad47ca1 | ||
|
|
b0aa168c9a | ||
|
|
367888968b | ||
|
|
11c65e6b90 | ||
|
|
e9699ed8cc | ||
|
|
812362338e | ||
|
|
b7ff0cf2a2 | ||
|
|
fa21ae6161 | ||
|
|
fb815c0be0 | ||
|
|
27c6a187a2 | ||
|
|
852d3b9f48 | ||
|
|
10884b8175 | ||
|
|
5f37414fee | ||
|
|
e95644ada2 | ||
|
|
ab4aee93c1 | ||
|
|
5df94a03fe | ||
|
|
ab9f3a1635 | ||
|
|
110c43b97a | ||
|
|
e0a86a8016 | ||
|
|
9e7f3b83c4 | ||
|
|
011960b159 | ||
|
|
d23a3cedef | ||
|
|
b782b539a5 | ||
|
|
2930e49d61 | ||
|
|
45777e6047 | ||
|
|
204b27ca5d | ||
|
|
dde8f427af | ||
|
|
1db0966675 | ||
|
|
b4c16002ff | ||
|
|
ca23c76426 | ||
|
|
0c50815944 | ||
|
|
185f3c05fb | ||
|
|
bde88ecc79 | ||
|
|
38e5b1f853 | ||
|
|
83fffe717e | ||
|
|
8757faf965 | ||
|
|
9b61fb1f85 | ||
|
|
16a6465453 | ||
|
|
1d3f05c22b | ||
|
|
470bdb6efb | ||
|
|
fa53530055 | ||
|
|
02d0b4c99b | ||
|
|
ca9ac35eb5 | ||
|
|
cb68f83451 | ||
|
|
972675d4da | ||
|
|
347b1dd31c | ||
|
|
d34e729e32 | ||
|
|
4954dcead8 | ||
|
|
a2f3677784 | ||
|
|
fb22b8bba5 | ||
|
|
c0ca3569fd | ||
|
|
bae5042eea | ||
|
|
a5f831e81e | ||
|
|
6cb6c60eba | ||
|
|
d4098180b6 | ||
|
|
9bec4b2713 | ||
|
|
82b899f883 | ||
|
|
69daec4f86 | ||
|
|
e5d348140c | ||
|
|
8ba136e0a3 | ||
|
|
63f48a3c4c | ||
|
|
e9d10bc012 | ||
|
|
96be2e6262 | ||
|
|
91fa230016 | ||
|
|
d4b33a1342 | ||
|
|
8d08bc7fd1 | ||
|
|
7c08249e08 | ||
|
|
4f5fff96e0 | ||
|
|
cf6379283b | ||
|
|
9659638f0c | ||
|
|
433fef9992 | ||
|
|
d60039454a | ||
|
|
d90b31c5df | ||
|
|
965dac5ff9 | ||
|
|
564f77bcdc | ||
|
|
6136ac4116 | ||
|
|
bba84b4d11 | ||
|
|
b52317f56b | ||
|
|
98f2806be6 | ||
|
|
ebf7a1d40d | ||
|
|
0ce164079e | ||
|
|
3693d2e93d | ||
|
|
d3a38963ae | ||
|
|
9ab9ae0408 | ||
|
|
0abb4a82b1 | ||
|
|
94a579e7d3 | ||
|
|
9d132d7f92 | ||
|
|
0315abc0df | ||
|
|
24e04f1303 | ||
|
|
51c2f845d8 | ||
|
|
edc81534c4 | ||
|
|
b10ba999cd | ||
|
|
12d10ce8b5 | ||
|
|
c4554cb4e9 | ||
|
|
0e575a9366 | ||
|
|
13efbf5f98 | ||
|
|
c8be20e9f2 | ||
|
|
15aabb3859 | ||
|
|
b2a9867297 | ||
|
|
e734b000de | ||
|
|
127e5af6f3 | ||
|
|
319f46406c | ||
|
|
ddf79d06d0 | ||
|
|
fafad9217d | ||
|
|
08022497e6 | ||
|
|
29f849c184 | ||
|
|
1572d9df89 | ||
|
|
4c297164a5 | ||
|
|
a7c8eda290 | ||
|
|
1bcd2d4531 | ||
|
|
eb1e596cde | ||
|
|
9bbcf0c5d7 | ||
|
|
341ec6e9a0 | ||
|
|
7e9234e712 | ||
|
|
fec33c0b96 | ||
|
|
af2917adb9 | ||
|
|
2e1459e29c | ||
|
|
95f6035aa8 | ||
|
|
d6e7cfb044 | ||
|
|
8dc04667b0 | ||
|
|
c108115c83 | ||
|
|
bcae7720e1 | ||
|
|
399d0b94d5 | ||
|
|
a5712e1216 | ||
|
|
3805db1263 | ||
|
|
88b8a5323a | ||
|
|
02510528d1 | ||
|
|
7deffeffd8 | ||
|
|
4d4520226d | ||
|
|
9f80e0a0e6 | ||
|
|
2ed3fd3cba | ||
|
|
3698f1dab8 | ||
|
|
fb4c02ca9b | ||
|
|
9cec4b0c8e | ||
|
|
6cef26f893 | ||
|
|
e2b5b7016c | ||
|
|
2d55e2edd5 | ||
|
|
85dbf4f98f | ||
|
|
d13a6b0c36 | ||
|
|
48f03f306a | ||
|
|
f1c11ac114 | ||
|
|
97ec9602f7 | ||
|
|
53cdf884ef | ||
|
|
d8a729c961 | ||
|
|
25f24801d6 | ||
|
|
e6b302abf9 | ||
|
|
c0c08fe373 | ||
|
|
60e29cc894 | ||
|
|
dcfd802757 | ||
|
|
84a01569d6 | ||
|
|
72ed38156a | ||
|
|
0e9e02de0b | ||
|
|
58163cefa0 | ||
|
|
c4ec54f6e4 | ||
|
|
de7dae4455 | ||
|
|
6362500741 | ||
|
|
9b3d1f5734 | ||
|
|
123aad2707 | ||
|
|
0bed7ee669 | ||
|
|
7d8d314962 | ||
|
|
f01a6e82dc | ||
|
|
67d7ee2751 | ||
|
|
04f8a7247d | ||
|
|
7b6ef76d54 | ||
|
|
ed65ad842f | ||
|
|
a33fe330f7 | ||
|
|
b30da3eea4 | ||
|
|
05fbbfcf39 | ||
|
|
09aec06790 | ||
|
|
00a52475de | ||
|
|
6c03211ac4 | ||
|
|
ca18958669 | ||
|
|
e1f58f07fe | ||
|
|
9d28736849 | ||
|
|
739096a9c0 | ||
|
|
2775d9b78a | ||
|
|
4f01b0b2ad | ||
|
|
2427671093 | ||
|
|
8c9d1b7dec | ||
|
|
55c8399084 | ||
|
|
a1067492b7 | ||
|
|
961beb3e85 | ||
|
|
23e86f1067 | ||
|
|
a1333dcace | ||
|
|
82690b5f2f | ||
|
|
70b97aa856 | ||
|
|
05210e2a8b | ||
|
|
751c278052 | ||
|
|
9a1620d51f | ||
|
|
157cd9a035 | ||
|
|
010736839a | ||
|
|
2c26efb5a9 | ||
|
|
fe9e2aa287 | ||
|
|
2585014ace | ||
|
|
0410003ceb | ||
|
|
e1a0c2fc48 | ||
|
|
b0a8c0a35a | ||
|
|
0fca91ca37 | ||
|
|
65ba2d2e27 | ||
|
|
188ca8fc58 | ||
|
|
3b80b74730 | ||
|
|
d9f5f960a5 | ||
|
|
e31da8bbd0 | ||
|
|
1e602975f3 | ||
|
|
541ccda754 | ||
|
|
1b68363b80 | ||
|
|
fc11b3c463 | ||
|
|
f9f36cd1d6 | ||
|
|
566c05bcef | ||
|
|
effb21bc6c | ||
|
|
4c92ee4a8a | ||
|
|
8f5b5ab0f9 | ||
|
|
5dacbfc17e | ||
|
|
5defc18a64 | ||
|
|
d2ba299f42 | ||
|
|
e78e5d6f32 | ||
|
|
ebbdcbe5a5 | ||
|
|
1d0ca5f11e | ||
|
|
d22935703d | ||
|
|
d66a567b8f | ||
|
|
34695f2aa3 | ||
|
|
dcacd88f11 | ||
|
|
2bbf794501 | ||
|
|
e3937c5ef2 | ||
|
|
a93775bb64 | ||
|
|
eddcac2343 | ||
|
|
95c125a5af | ||
|
|
927380741c | ||
|
|
861dfc43a8 | ||
|
|
a1cbf8724f | ||
|
|
cae88e7946 | ||
|
|
952ad0e162 | ||
|
|
b751156b5c | ||
|
|
aad27f40cf | ||
|
|
55d7c6e672 | ||
|
|
75590eb765 | ||
|
|
dfdb952e2b | ||
|
|
c09ebc146b | ||
|
|
139ef08af3 | ||
|
|
2d13a5fd35 | ||
|
|
a3fb32dfc6 | ||
|
|
079efe5de6 | ||
|
|
4d28ccebad | ||
|
|
2171acc909 | ||
|
|
1e05811c13 | ||
|
|
ec023ec13e | ||
|
|
996570cc57 | ||
|
|
7cf712daff | ||
|
|
9a35af9fb2 | ||
|
|
ede3b07963 | ||
|
|
53a4b90d96 | ||
|
|
bf948789ea | ||
|
|
db116f39fd | ||
|
|
c962a19eb7 | ||
|
|
571c83314a | ||
|
|
d906d49930 | ||
|
|
344bafff45 | ||
|
|
4858390346 | ||
|
|
f16f0e3069 | ||
|
|
3ee12221a4 | ||
|
|
8915848a52 | ||
|
|
a2cd7c8007 | ||
|
|
6e9b9341d4 | ||
|
|
e90d8a87ee | ||
|
|
45c43888e7 | ||
|
|
68e7dfb1cc | ||
|
|
f086f33097 | ||
|
|
737ce2c2e7 | ||
|
|
3c7c7cde3c | ||
|
|
3913d9e48e | ||
|
|
84d4645efa | ||
|
|
8a7442648c | ||
|
|
f1616461f7 | ||
|
|
ed2a5af5ed | ||
|
|
3b73a4c69a | ||
|
|
17954dfdc9 | ||
|
|
3aadf61fde | ||
|
|
5e65e394a6 | ||
|
|
8c357ec213 | ||
|
|
a599a334a3 | ||
|
|
36d39669e4 | ||
|
|
028171a91a | ||
|
|
2647e1cdac | ||
|
|
994cebea82 | ||
|
|
a533a3e0ef | ||
|
|
caa915b31d | ||
|
|
2996d8537d | ||
|
|
65be1263b9 | ||
|
|
d81ae835aa | ||
|
|
c405cedc41 | ||
|
|
2a7f366cbf | ||
|
|
ea580e4c64 | ||
|
|
445100f32d | ||
|
|
648a852ba7 | ||
|
|
9f136fb150 | ||
|
|
6d5b38fc8a | ||
|
|
2e7fd5fe93 | ||
|
|
626895166a | ||
|
|
1ca8d2b2db | ||
|
|
aa57f25b2c | ||
|
|
a321676b99 | ||
|
|
5b49b105f6 | ||
|
|
d610b19f4e | ||
|
|
b9241288c4 | ||
|
|
a7470dc284 | ||
|
|
154624a767 | ||
|
|
6f1a5eb79c | ||
|
|
a8334a22f8 | ||
|
|
8cdea2bfeb | ||
|
|
c413eda330 | ||
|
|
22bfb6be4b | ||
|
|
6bfbf37749 | ||
|
|
7797e47561 | ||
|
|
52579c5fab | ||
|
|
a5ed6d897c | ||
|
|
439605bafc | ||
|
|
9f6fd3ee6a | ||
|
|
1539c0b2f2 | ||
|
|
109e8b53a1 | ||
|
|
216697d4b5 | ||
|
|
77bb88ed59 | ||
|
|
7e52477908 | ||
|
|
45816fa84f | ||
|
|
18babef78b | ||
|
|
df8970f59b | ||
|
|
3103c33dda | ||
|
|
a9fa7ee26a | ||
|
|
e605560e5c | ||
|
|
af330d7f8a | ||
|
|
563d466374 | ||
|
|
fd59cc6226 | ||
|
|
6a8a0f2249 | ||
|
|
8c43b0953b | ||
|
|
a885d7f003 | ||
|
|
63af591938 | ||
|
|
bf6efc3530 | ||
|
|
609ec24c6a | ||
|
|
c99cbec3df | ||
|
|
6eb44cb9d8 | ||
|
|
f67f2a31ee | ||
|
|
3d5b8287ce | ||
|
|
548a27fe48 | ||
|
|
7970a0b3b4 | ||
|
|
2c67845dd6 | ||
|
|
e02ca2f7e3 | ||
|
|
84a2197027 | ||
|
|
41dd808c9a | ||
|
|
6a7a76dce3 | ||
|
|
b7a8f6c2a1 | ||
|
|
f574017b66 | ||
|
|
b35d5ded77 | ||
|
|
a3f712306e | ||
|
|
e455b3ff00 | ||
|
|
17dd73834f | ||
|
|
189020298e | ||
|
|
375b400b1e | ||
|
|
192ac0e013 | ||
|
|
b80c8013c0 | ||
|
|
0606428cd9 | ||
|
|
8cd7b85711 | ||
|
|
e91f2b89df | ||
|
|
93706c94af | ||
|
|
6de61cb214 | ||
|
|
a21e7adeb5 | ||
|
|
11aecf43ba | ||
|
|
ee3490a520 | ||
|
|
178c1afdea | ||
|
|
3a2cd0276a | ||
|
|
a81e5aa6e4 | ||
|
|
927cde3777 | ||
|
|
bed2bfb6db | ||
|
|
72f87b449b | ||
|
|
02b95b16f9 | ||
|
|
3e16519793 | ||
|
|
a4b6cb3232 | ||
|
|
8883701297 | ||
|
|
225c0a9b03 | ||
|
|
43a9bba96f | ||
|
|
2c670b3b21 | ||
|
|
02aad295f9 | ||
|
|
163da78bc6 | ||
|
|
a549f86624 | ||
|
|
27262436d1 | ||
|
|
fa2b691dc1 | ||
|
|
03a010406f | ||
|
|
1e5245efd0 | ||
|
|
abd8369dd9 | ||
|
|
d0dbffebe1 | ||
|
|
c202cee81f | ||
|
|
95153a6609 | ||
|
|
e157bc195b | ||
|
|
ac09da9efc | ||
|
|
dc1ad8fb2d | ||
|
|
ba5d178ba0 | ||
|
|
9ceebacfb1 | ||
|
|
2a872eb995 | ||
|
|
9077b56df1 | ||
|
|
3380cab2c3 | ||
|
|
1355fa0636 | ||
|
|
70fb869852 | ||
|
|
73da15586b | ||
|
|
b3024a6f7c | ||
|
|
4c42f5a2f5 | ||
|
|
14cf30cd98 | ||
|
|
e94dbe4965 | ||
|
|
a7f9faf868 | ||
|
|
6cbdc958cd | ||
|
|
fb396d9cf0 | ||
|
|
fca092d392 | ||
|
|
0ed393b1a5 | ||
|
|
b992faa468 | ||
|
|
3f911ab437 | ||
|
|
84586b675a | ||
|
|
f952f715c8 | ||
|
|
79d097c903 | ||
|
|
cdc2428aca | ||
|
|
82c8ace8df | ||
|
|
8525dcb376 | ||
|
|
1607853393 | ||
|
|
27d402104e | ||
|
|
d58bcd136a | ||
|
|
1944b24fba | ||
|
|
8e10533681 | ||
|
|
5a9f3f1f5e | ||
|
|
64f2fb9e73 | ||
|
|
cbed698a1c | ||
|
|
cd7efee49c | ||
|
|
f7ab90724e | ||
|
|
aa7b891150 | ||
|
|
911100923f | ||
|
|
3c64d84980 | ||
|
|
e4f87b53b4 | ||
|
|
ff779fcc7c | ||
|
|
e7c7784fec | ||
|
|
184f0900fb | ||
|
|
9ca83b7349 | ||
|
|
8b3df83e7e | ||
|
|
da24249850 | ||
|
|
04e509fc49 | ||
|
|
99a8eaea91 | ||
|
|
4c3474a9f7 | ||
|
|
14ccbf335d | ||
|
|
14841a44ad | ||
|
|
d2b411ecbb | ||
|
|
544e60eb6d | ||
|
|
db80d8f56f | ||
|
|
ae09d73257 | ||
|
|
ca0f095d6b | ||
|
|
1a0f626a80 | ||
|
|
c23426425e | ||
|
|
de52439276 | ||
|
|
757b296fd0 | ||
|
|
83e842d121 | ||
|
|
7f00a3075f | ||
|
|
1c362e4871 | ||
|
|
0dc5c9dbac | ||
|
|
28d9304ec6 | ||
|
|
d132e53c06 | ||
|
|
e28a8db3b4 | ||
|
|
b6380a17ce | ||
|
|
f4ceef485b | ||
|
|
f3507569b5 | ||
|
|
da5e60a009 | ||
|
|
896a69086b | ||
|
|
b375877a6d | ||
|
|
0ed5f8081a | ||
|
|
7416fa3a4c | ||
|
|
b90bb10a3f | ||
|
|
69643c37c1 | ||
|
|
bf208485f8 | ||
|
|
d12d571c2b | ||
|
|
a456936853 | ||
|
|
655f7ff7d0 | ||
|
|
5d8e972ac7 | ||
|
|
31a6797fc3 | ||
|
|
b9b0e9cf43 | ||
|
|
7f4eb5624b | ||
|
|
766a05236a | ||
|
|
92a6c7b89e | ||
|
|
a583a31220 | ||
|
|
87f14be30c | ||
|
|
7e13cc84c8 | ||
|
|
a2440a2e80 | ||
|
|
17b96dd7c1 | ||
|
|
b2c2c1247b | ||
|
|
e4b6b18712 | ||
|
|
4601633605 | ||
|
|
839123408b | ||
|
|
2a3cf5f002 | ||
|
|
4d172ec4f5 | ||
|
|
6f411e96ed | ||
|
|
7f7664eb4f | ||
|
|
3d994cc2cf | ||
|
|
6bc69d5a75 | ||
|
|
0db2c271a0 | ||
|
|
02b09c58a1 | ||
|
|
b0a8ad1ac1 | ||
|
|
3e6302e44a | ||
|
|
1f493c427a | ||
|
|
89eb39ca3e | ||
|
|
b495761283 | ||
|
|
29e92015d5 | ||
|
|
c71f2f7fae | ||
|
|
548c92dc0d | ||
|
|
59a5f675f6 | ||
|
|
d80a669515 | ||
|
|
bc0c5d4fcb | ||
|
|
1a69fdf1e0 | ||
|
|
df6643f1c5 | ||
|
|
03fc008dfc | ||
|
|
fa330c766f | ||
|
|
cb80742eaa | ||
|
|
0ae46455af | ||
|
|
d6133c325a | ||
|
|
edfb89a8d9 | ||
|
|
aafbee2a28 | ||
|
|
5c9dc62015 | ||
|
|
5fef41e132 | ||
|
|
a677d4da5f | ||
|
|
136e0cde06 | ||
|
|
06af2b6aa3 | ||
|
|
29e2a00109 | ||
|
|
d5b5929e9b | ||
|
|
fea89ad451 | ||
|
|
3d6f1e42d2 | ||
|
|
1ad80e1870 | ||
|
|
ea0b8df5d4 | ||
|
|
0e39aac5cd | ||
|
|
7e88621aa1 | ||
|
|
9b76407193 | ||
|
|
b6bd2687d2 | ||
|
|
82c0f8a863 | ||
|
|
9782802bd8 | ||
|
|
87659b56a4 | ||
|
|
cd62d7f0d9 | ||
|
|
1290bc8cc9 | ||
|
|
fe285ecd6b | ||
|
|
da7d187612 | ||
|
|
9b2fde6ea2 | ||
|
|
da1a563a3c | ||
|
|
9bee5c79c8 | ||
|
|
aab6ad96eb | ||
|
|
c8d803b559 | ||
|
|
ab5faec68c | ||
|
|
dcba4fef48 | ||
|
|
a654073c71 | ||
|
|
eb417c7e22 | ||
|
|
0fce4c6177 | ||
|
|
e964ff0b70 | ||
|
|
a5765fc25a | ||
|
|
18600bcd11 | ||
|
|
7a3bb59d3e | ||
|
|
29e1535c64 | ||
|
|
7b41ce1f24 | ||
|
|
1e6a170c3c | ||
|
|
887028a1b4 | ||
|
|
816ceab057 | ||
|
|
324152e363 | ||
|
|
1b11cd571e | ||
|
|
627419aa5f | ||
|
|
aa99e710d1 | ||
|
|
f3a9857747 | ||
|
|
fdf1c0448b | ||
|
|
a09b39dd69 | ||
|
|
e4989d8b9f | ||
|
|
b135de80c0 | ||
|
|
79a39b39d9 | ||
|
|
0c02afa54e | ||
|
|
1e9ef321f0 | ||
|
|
7301bc30b1 | ||
|
|
ccecd8f4f0 | ||
|
|
93e669d7d3 | ||
|
|
a0f28c07f2 | ||
|
|
bd14e5019f | ||
|
|
6d0f454e6a | ||
|
|
a031311ab5 | ||
|
|
492915567b | ||
|
|
8b1a7def38 | ||
|
|
2f62339f0c | ||
|
|
288f25c827 | ||
|
|
1392a8ecf1 | ||
|
|
1eee8f439b | ||
|
|
0db7aca1cd | ||
|
|
89d69a8fb6 | ||
|
|
7574d06718 | ||
|
|
4336a1a13e | ||
|
|
9409d6e05e | ||
|
|
0971445289 | ||
|
|
32fe763c0c | ||
|
|
6790d2be44 | ||
|
|
f579c6b56d | ||
|
|
81aaa95170 | ||
|
|
e0c91f7fda | ||
|
|
bd0596dd86 | ||
|
|
cc5125d51d | ||
|
|
e90be1bb88 | ||
|
|
b32567681f | ||
|
|
9f5897e06c | ||
|
|
e8ffcb0630 | ||
|
|
88aaa38676 | ||
|
|
6692867db5 | ||
|
|
42c898d5aa | ||
|
|
2936f886a9 | ||
|
|
f582967711 | ||
|
|
68985e9eda | ||
|
|
7c3e429f22 | ||
|
|
cb79b1aea5 | ||
|
|
b687eb09b4 | ||
|
|
83874ad466 | ||
|
|
c0172b0a49 | ||
|
|
f59208b9cf | ||
|
|
6d9ee74360 | ||
|
|
5ae6e98572 | ||
|
|
3f639e2ffe | ||
|
|
43a690c8cf | ||
|
|
2725a1cd8d | ||
|
|
ac3159193f | ||
|
|
f2c0a3994a | ||
|
|
d7dbe986f1 | ||
|
|
f93090596a | ||
|
|
8b7e62e819 | ||
|
|
28ef79f371 | ||
|
|
e39312828c | ||
|
|
3bbf9d2e0f | ||
|
|
be4ba6cc69 | ||
|
|
51126ca941 | ||
|
|
faae2d7a1e | ||
|
|
ca92bc899b | ||
|
|
ace5fd61bd | ||
|
|
31fabb4624 | ||
|
|
b4935fef76 | ||
|
|
d1fba4c125 | ||
|
|
de8ac68466 | ||
|
|
0392eab129 | ||
|
|
479ce592fa | ||
|
|
9eaa180c10 | ||
|
|
4b38f0bc6b | ||
|
|
40ed7258d4 | ||
|
|
b0c05fd80d | ||
|
|
1537330b61 | ||
|
|
abd91260ab | ||
|
|
5dcb321a6f | ||
|
|
38cc72a3f9 | ||
|
|
6f03c470ae | ||
|
|
4cb02bd3a5 | ||
|
|
9f55418bfb | ||
|
|
8faf1140fb | ||
|
|
6e14375b86 | ||
|
|
7138d7ac59 | ||
|
|
a02b810412 | ||
|
|
bd5480b264 | ||
|
|
7c04bcae26 | ||
|
|
efa61dcb39 | ||
|
|
6c137d9098 | ||
|
|
3ca92c7a03 | ||
|
|
bb2d5e570a | ||
|
|
1ce2a86f37 | ||
|
|
c6ee7c5082 | ||
|
|
a52d674a14 | ||
|
|
69b1ee2ec7 | ||
|
|
95a771c2fb | ||
|
|
cf59f57ab8 | ||
|
|
8cd38693dd | ||
|
|
ef67aa9e48 | ||
|
|
4623b5d5db | ||
|
|
65456d331b | ||
|
|
20f51092ad | ||
|
|
0b0173f155 | ||
|
|
4e4bab2bf0 | ||
|
|
679c907b78 | ||
|
|
cd6bb1b98f | ||
|
|
667ceb2115 | ||
|
|
03f491ab5a | ||
|
|
fb7c4114c1 | ||
|
|
669ea69357 | ||
|
|
5b32e0db6f | ||
|
|
20aa2bdc6e | ||
|
|
c7b7847a82 | ||
|
|
d99f3e1522 | ||
|
|
903b53033d | ||
|
|
f2fa08ea82 | ||
|
|
c049cde8cf | ||
|
|
d58dc29550 | ||
|
|
e75e36e999 | ||
|
|
7903dc7c2e | ||
|
|
a8e13d86e2 | ||
|
|
8e173d8273 | ||
|
|
7b67dc03f7 | ||
|
|
c4fca3b23d | ||
|
|
c42e70686d | ||
|
|
df861b59c1 | ||
|
|
447ccdf042 | ||
|
|
db37d0197a | ||
|
|
e6f21d166a | ||
|
|
2e0923a26a | ||
|
|
bd1af2223d | ||
|
|
ec395acae0 | ||
|
|
5ff69b86db | ||
|
|
ce6cd8070f | ||
|
|
ddf985b445 | ||
|
|
6a37072b9a | ||
|
|
d2ea06ef4a | ||
|
|
943f58f2c0 | ||
|
|
0891e2d432 | ||
|
|
740dd0e0a6 | ||
|
|
2fcd21ae94 | ||
|
|
c312f079fb | ||
|
|
a480dfe59e | ||
|
|
453eddc089 | ||
|
|
51cb558317 | ||
|
|
f0c5b1e544 | ||
|
|
348ce56776 | ||
|
|
d8ab13e249 | ||
|
|
376f61e213 | ||
|
|
b30cb5254e | ||
|
|
3737e889ea | ||
|
|
ec144da8ce | ||
|
|
e61b37b6bf | ||
|
|
47a3c3c253 | ||
|
|
23c5f4040e | ||
|
|
39ceb20332 | ||
|
|
e80c5c89e0 | ||
|
|
8cfc5925da | ||
|
|
da73347231 | ||
|
|
e26c3d9462 | ||
|
|
f4c3c86dd1 | ||
|
|
5c509ee85a | ||
|
|
12ebf232d5 | ||
|
|
05ee76b0a9 | ||
|
|
12df670681 | ||
|
|
6d589a1204 | ||
|
|
1e50556f64 | ||
|
|
7ee703f077 | ||
|
|
141936e609 | ||
|
|
188a90f97d | ||
|
|
ec95f0a7af | ||
|
|
848510d4ca | ||
|
|
16e276d08e | ||
|
|
62d0a7e6ff | ||
|
|
eeee9a54d7 | ||
|
|
3ec1d1a965 | ||
|
|
2b60430c55 | ||
|
|
dbd3ed49ed | ||
|
|
eb640157f2 | ||
|
|
166ec71a28 | ||
|
|
8e4f3b4f06 | ||
|
|
f43e1a1018 | ||
|
|
508ccf4f9c | ||
|
|
6f92fa0069 | ||
|
|
2293253d52 | ||
|
|
1cb7b6a67e | ||
|
|
817a5e4b64 | ||
|
|
8286c10406 | ||
|
|
12c2d18325 | ||
|
|
28cfc2a9c1 | ||
|
|
1e3cad4b20 | ||
|
|
b6944c4308 | ||
|
|
38542f9888 | ||
|
|
4223b2d0f0 | ||
|
|
c0db257e9b | ||
|
|
6b1f4e1686 | ||
|
|
6e8080b87d | ||
|
|
292a8620e0 | ||
|
|
f0f1c54244 | ||
|
|
30024c9814 | ||
|
|
3446442eca | ||
|
|
e439ef4ddd | ||
|
|
774e348f95 | ||
|
|
3d4e0a0479 | ||
|
|
30b9ca7f37 | ||
|
|
04e064e86e | ||
|
|
6a88d64a90 | ||
|
|
e64bc40ca9 | ||
|
|
33ae9dae0a | ||
|
|
ba249d294e | ||
|
|
d40e1e47fd | ||
|
|
1be993801f | ||
|
|
b76aa03d3a | ||
|
|
743715fa73 | ||
|
|
5f09d6a26f | ||
|
|
27fd4f444b | ||
|
|
2d56dacd0e | ||
|
|
333453df79 | ||
|
|
cfddc75ccb | ||
|
|
3a01ee9973 | ||
|
|
1efe753a04 | ||
|
|
a8e80a44e6 | ||
|
|
cf94122406 | ||
|
|
a5518eb492 | ||
|
|
6bdfc570a8 | ||
|
|
26640b3b07 | ||
|
|
777805fc1a | ||
|
|
57e08e282c | ||
|
|
fb5ea3be84 | ||
|
|
05c15a104f | ||
|
|
5f18723e2c | ||
|
|
7db98e55c5 | ||
|
|
75e1e2e678 | ||
|
|
2876e77a08 | ||
|
|
3ba881f641 | ||
|
|
264451d923 | ||
|
|
e63b3ab0e3 | ||
|
|
8987005e60 | ||
|
|
d6614decd1 | ||
|
|
42726cf2b6 | ||
|
|
ff1ac3387b | ||
|
|
f933abe48e | ||
|
|
be94674507 | ||
|
|
c8b1e5bafc | ||
|
|
7403619cbc | ||
|
|
7a6df3abd3 | ||
|
|
b84dbbc3b8 | ||
|
|
7adde6a0a9 | ||
|
|
a328080ba4 | ||
|
|
525889e366 | ||
|
|
88d181f9fe | ||
|
|
2dc773ebe6 | ||
|
|
043ce653a9 | ||
|
|
8b4da90497 | ||
|
|
59fffc6fbe | ||
|
|
8b81d60dce | ||
|
|
0ed9aa5372 | ||
|
|
2ace964573 | ||
|
|
a8201aaa58 | ||
|
|
776fa2f4f6 | ||
|
|
eabef540cf | ||
|
|
d6ec8f4930 | ||
|
|
aaf834a33b | ||
|
|
043f9bde59 | ||
|
|
170310e23c | ||
|
|
31a558cfea | ||
|
|
adc4fec19b | ||
|
|
74beec2b85 | ||
|
|
d7cd8ba780 | ||
|
|
a69ebf4299 | ||
|
|
8085c62774 | ||
|
|
3e51e781a6 | ||
|
|
fa028fdafd | ||
|
|
d2ce4192cc | ||
|
|
822f689c48 | ||
|
|
c6ade8d9bc | ||
|
|
0e99fb27b5 | ||
|
|
058a191e61 | ||
|
|
ebd867a6d5 | ||
|
|
687933a63e | ||
|
|
1f40c87dd9 | ||
|
|
93ffbe2a79 | ||
|
|
a090e602b3 | ||
|
|
c9a48081fd | ||
|
|
5b026e13f6 | ||
|
|
f1aab5ad3b | ||
|
|
d7028f22e2 | ||
|
|
570c0cb9a1 | ||
|
|
053792e89d | ||
|
|
31212d4f4b | ||
|
|
19489afefc | ||
|
|
5dd494d9a2 | ||
|
|
2adbf9f686 | ||
|
|
9dbad9ce53 | ||
|
|
52498bf05e | ||
|
|
e4e5608c8c | ||
|
|
d629874468 | ||
|
|
7da98935b9 | ||
|
|
d50a0abd2a | ||
|
|
33b9685985 | ||
|
|
cd14f3e649 | ||
|
|
70eaa7d968 | ||
|
|
f1b51f9c97 | ||
|
|
65398fb147 | ||
|
|
a8575b4fc7 | ||
|
|
67ede12fd8 | ||
|
|
e6b5819099 | ||
|
|
5cd1af5b48 | ||
|
|
6d1c70b8d3 | ||
|
|
cda28cb2ee | ||
|
|
aac7a0f5af | ||
|
|
0501cbcf4c | ||
|
|
f08941c0bd | ||
|
|
c1ed2f14c8 | ||
|
|
3ae5c9dca1 | ||
|
|
ace6ef0029 | ||
|
|
140724d665 | ||
|
|
c476c255b8 | ||
|
|
cf069970bd | ||
|
|
a8341ec86d | ||
|
|
23b965a20a | ||
|
|
2104ba787a | ||
|
|
15660663f6 | ||
|
|
4d3e79281d | ||
|
|
21ff7a36b8 | ||
|
|
42e2957bee | ||
|
|
bd62da8e1a | ||
|
|
df592d99dd | ||
|
|
39f5e13463 | ||
|
|
58785e9470 | ||
|
|
3495d75a6f | ||
|
|
bee12423b0 | ||
|
|
a705e595ee | ||
|
|
45f29c4c6f | ||
|
|
5f90851458 | ||
|
|
01515f919d | ||
|
|
a2292b1177 | ||
|
|
b2f5f56fa0 | ||
|
|
2be1e1a70d | ||
|
|
b416cd380a | ||
|
|
f18f54afc6 | ||
|
|
b02830c891 | ||
|
|
aff733bbd9 | ||
|
|
4a66911a61 | ||
|
|
c9b3a017a4 | ||
|
|
6712d65de4 | ||
|
|
c2a45cdbeb | ||
|
|
0f20e58a46 | ||
|
|
2f37767899 | ||
|
|
f4c7272305 | ||
|
|
8a8e33763c | ||
|
|
d55eda0bb3 | ||
|
|
6c7483733f | ||
|
|
c7590c120d | ||
|
|
b3dec3653a | ||
|
|
7cb42c49de | ||
|
|
32dffb0375 | ||
|
|
c3d13c73ce | ||
|
|
0ea48af892 | ||
|
|
72b09864ce | ||
|
|
d8e5fe367b | ||
|
|
b1244c0a1b | ||
|
|
7a3b56955c | ||
|
|
5dcb7f2a80 | ||
|
|
64e71440e2 | ||
|
|
e7e3b6dd15 | ||
|
|
06551575b1 | ||
|
|
912ec51315 | ||
|
|
1363c98cd8 | ||
|
|
b9e49e37ea | ||
|
|
4bb64e301e | ||
|
|
1c9c911373 | ||
|
|
75a638f728 | ||
|
|
09fd45346e | ||
|
|
3329068bcc | ||
|
|
aae6874928 | ||
|
|
6dacf23312 | ||
|
|
bcc0cd33f1 | ||
|
|
0daa840eaa | ||
|
|
ea5e69e26d | ||
|
|
26f0234e3d | ||
|
|
95ac2c62e8 | ||
|
|
f65e4aad63 | ||
|
|
d7f82196dc | ||
|
|
e88f41323f | ||
|
|
8f483b498b | ||
|
|
85a75be30e | ||
|
|
4b13874d44 | ||
|
|
ace77e6fd0 | ||
|
|
46deb5a099 | ||
|
|
6158ea436d | ||
|
|
7accffd7cd | ||
|
|
f337b8d7cc | ||
|
|
aeaab0a8d9 | ||
|
|
d81b95d5a6 | ||
|
|
34e8961601 | ||
|
|
b729cac998 | ||
|
|
a08aeee0c2 | ||
|
|
90a466ef01 | ||
|
|
ad14e259ba | ||
|
|
8a92326241 | ||
|
|
3e45d489b8 | ||
|
|
04ad424efa | ||
|
|
7f2270844e | ||
|
|
c97e39fc09 | ||
|
|
515d7bb318 | ||
|
|
cdf928d64e | ||
|
|
2440575093 | ||
|
|
817d2b11a5 | ||
|
|
4b4dce80cf | ||
|
|
52e15fc9d4 | ||
|
|
7dbaa1b8c1 | ||
|
|
4215d65aa7 | ||
|
|
62a6195a4f | ||
|
|
51622e77d4 | ||
|
|
2e14e0f767 | ||
|
|
b219f8542b | ||
|
|
6d67bb9d65 | ||
|
|
af37abb394 | ||
|
|
dfd028625d | ||
|
|
a87c16de0d | ||
|
|
e77a156f29 | ||
|
|
082de2b6b7 | ||
|
|
7f19f2f046 | ||
|
|
0cc641d1f8 | ||
|
|
51cef0bc53 | ||
|
|
d6168cbad9 | ||
|
|
76f2ea01bf | ||
|
|
37a8ddbae6 | ||
|
|
71873f7f0e | ||
|
|
e124a26c52 | ||
|
|
09b501f7df | ||
|
|
a86980657c | ||
|
|
7c3aa7ee0b | ||
|
|
65157ede23 | ||
|
|
8913ca161f | ||
|
|
3d7fd2c192 | ||
|
|
b2cc597755 | ||
|
|
d6ba0a803d | ||
|
|
0e6432f95a | ||
|
|
0dfaa49c97 | ||
|
|
efeba3432c | ||
|
|
f16cd5b8db | ||
|
|
72b23ca235 | ||
|
|
1871b616ba | ||
|
|
f21623e1b8 | ||
|
|
a2e204667f | ||
|
|
1ec9486452 | ||
|
|
2b66aafdba | ||
|
|
3169900f80 | ||
|
|
737edb985b | ||
|
|
bc94d4e0b3 | ||
|
|
585715adbf | ||
|
|
1a12eb9703 | ||
|
|
b4195bd81c | ||
|
|
5fb4ea2aa3 | ||
|
|
9367ad901d | ||
|
|
c956add8b0 | ||
|
|
432a91cc64 | ||
|
|
629a322d1d |
4
.env
Normal file
4
.env
Normal file
@@ -0,0 +1,4 @@
|
||||
USER=root
|
||||
PASSWORD=openIM123
|
||||
MINIO_ENDPOINT=http://127.0.0.1:10005
|
||||
DATA_DIR=./
|
||||
37
.github/ISSUE_TEMPLATE/ISSUE_TEMPLATE.md
vendored
Normal file
37
.github/ISSUE_TEMPLATE/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
name: "\U0001F41E Bug"
|
||||
about: File a bug/issue
|
||||
title: "[BUG] <title>"
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
Note: Please search to see if an issue already exists for the bug you encountered.
|
||||
-->
|
||||
|
||||
### Environment:
|
||||
<!-- linux? windows? or Mac?
|
||||
Example:
|
||||
- OS: Ubuntu 20.04 -->
|
||||
|
||||
### Physical Memory Capacity:
|
||||
<!-- 8G or above is better -->
|
||||
|
||||
### Docker Image:
|
||||
<!-- Did you pull the docker image before execute docker images -->
|
||||
|
||||
### Code Version:
|
||||
<!-- Did you pull code from github? Make sure the code is up to date-->
|
||||
|
||||
### Component installation:
|
||||
<!-- Has etcd, mysql, mongodb, redis or Kafka been installed on the server before Open-IM-Server deployment-->
|
||||
|
||||
|
||||
### Log File:
|
||||
<!-- view log file(logs/openIM.log) content. -->
|
||||
|
||||
|
||||
### screenshot:
|
||||
<!---->
|
||||
36
.github/ISSUE_TEMPLATE/deployment-issues.md
vendored
Normal file
36
.github/ISSUE_TEMPLATE/deployment-issues.md
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: Deployment issues
|
||||
about: Deployment issues
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
If you are deploying OpenIM for the first time
|
||||
|
||||
|
||||
|
||||
```
|
||||
git clone https://github.com/OpenIMSDK/Open-IM-Server.git --recursive
|
||||
```
|
||||
|
||||
screenshot here
|
||||
|
||||
```
|
||||
cd Open-IM-Server/script ; chmod +x *.sh ; ./env_check.sh
|
||||
```
|
||||
|
||||
screenshot here
|
||||
|
||||
```
|
||||
cd .. ; docker-compose up -d
|
||||
```
|
||||
|
||||
screenshot here
|
||||
|
||||
```
|
||||
cd script ; ./docker_check_service.sh
|
||||
```
|
||||
|
||||
screenshot here
|
||||
38
.github/ISSUE_TEMPLATE/update-.md
vendored
Normal file
38
.github/ISSUE_TEMPLATE/update-.md
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
name: 'update '
|
||||
about: update docker image
|
||||
title: update docker image
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
```
|
||||
cd Open-IM-Server ; docker-compose down
|
||||
```
|
||||
|
||||
screenshot here
|
||||
|
||||
```
|
||||
git pull
|
||||
```
|
||||
|
||||
screenshot here
|
||||
|
||||
```
|
||||
docker-compose pull
|
||||
```
|
||||
|
||||
screenshot here
|
||||
|
||||
```
|
||||
chmod +x script/*.sh ; docker-compose up -d
|
||||
```
|
||||
|
||||
screenshot here
|
||||
|
||||
```
|
||||
cd script ; ./docker_check_service.sh
|
||||
```
|
||||
|
||||
screenshot here
|
||||
71
.github/workflows/codeql-analysis.yml
vendored
Normal file
71
.github/workflows/codeql-analysis.yml
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
# 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: [ main ]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ main ]
|
||||
schedule:
|
||||
- cron: '23 2 * * 2'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'go' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||
# Learn more:
|
||||
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# 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.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
||||
403
.gitignore
vendored
403
.gitignore
vendored
@@ -1,2 +1,403 @@
|
||||
# Copyright © 2023 OpenIMSDK.
|
||||
#
|
||||
# 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.
|
||||
|
||||
# ==============================================================================
|
||||
# For the entire design of.gitignore, ignore git commits and ignore files
|
||||
#===============================================================================
|
||||
#
|
||||
|
||||
### OpenIM developer supplement ###
|
||||
logs
|
||||
.devcontainer
|
||||
components
|
||||
logs
|
||||
out-test
|
||||
Dockerfile.cross
|
||||
|
||||
### Makefile ###
|
||||
tmp/
|
||||
bin/
|
||||
output/
|
||||
_output/
|
||||
|
||||
### OpenIM Config ###
|
||||
config/config.yaml
|
||||
./config/config.yaml
|
||||
.env
|
||||
./.env
|
||||
|
||||
### OpenIM deploy ###
|
||||
deploy/openim_demo
|
||||
deploy/openim-api
|
||||
deploy/openim-rpc-msg_gateway
|
||||
deploy/openim-msgtransfer
|
||||
deploy/openim-push
|
||||
deploy/openim_timer_task
|
||||
deploy/openim-rpc-user
|
||||
deploy/openim-rpc-friend
|
||||
deploy/openim-rpc-group
|
||||
deploy/openim-rpc-msg
|
||||
deploy/openim-rpc-auth
|
||||
deploy/Open-IM-SDK-Core
|
||||
|
||||
# files used by the developer
|
||||
.idea.md
|
||||
.todo.md
|
||||
.note.md
|
||||
|
||||
# ==============================================================================
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/go,git,vim,tags,test,emacs,backup,jetbrains
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=go,git,vim,tags,test,emacs,backup,jetbrains
|
||||
|
||||
### Backup ###
|
||||
*.bak
|
||||
*.gho
|
||||
*.ori
|
||||
*.orig
|
||||
*.tmp
|
||||
|
||||
### Emacs ###
|
||||
# -*- mode: gitignore; -*-
|
||||
*~
|
||||
\#*\#
|
||||
/.emacs.desktop
|
||||
/.emacs.desktop.lock
|
||||
*.elc
|
||||
auto-save-list
|
||||
tramp
|
||||
.\#*
|
||||
|
||||
# Org-mode
|
||||
.org-id-locations
|
||||
*_archive
|
||||
|
||||
# flymake-mode
|
||||
*_flymake.*
|
||||
|
||||
# eshell files
|
||||
/eshell/history
|
||||
/eshell/lastdir
|
||||
|
||||
# elpa packages
|
||||
/elpa/
|
||||
|
||||
# reftex files
|
||||
*.rel
|
||||
|
||||
# AUCTeX auto folder
|
||||
/auto/
|
||||
|
||||
# cask packages
|
||||
.cask/
|
||||
dist/
|
||||
|
||||
# Flycheck
|
||||
flycheck_*.el
|
||||
|
||||
# server auth directory
|
||||
/server/
|
||||
|
||||
# projectiles files
|
||||
.projectile
|
||||
|
||||
# directory configuration
|
||||
.dir-locals.el
|
||||
|
||||
# network security
|
||||
/network-security.data
|
||||
|
||||
### vscode ###
|
||||
.vscode
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
*.code-workspace
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/vim,jetbrains,vscode,git,go,tags,backup,test
|
||||
|
||||
### Git ###
|
||||
# Created by git for backups. To disable backups in Git:
|
||||
# $ git config --global mergetool.keepBackup false
|
||||
|
||||
# Created by git when using merge tools for conflicts
|
||||
*.BACKUP.*
|
||||
*.BASE.*
|
||||
*.LOCAL.*
|
||||
*.REMOTE.*
|
||||
*_BACKUP_*.txt
|
||||
*_BASE_*.txt
|
||||
*_LOCAL_*.txt
|
||||
*_REMOTE_*.txt
|
||||
|
||||
### Go ###
|
||||
# If you prefer the allow list template instead of the deny list, see community template:
|
||||
# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
|
||||
#
|
||||
# Binaries for programs and plugins
|
||||
*.exe
|
||||
*.exe~
|
||||
*.dll
|
||||
*.so
|
||||
*.dylib
|
||||
|
||||
# Test binary, built with `go test -c`
|
||||
*.test
|
||||
|
||||
# Output of the go coverage tool, specifically when used with LiteIDE
|
||||
*.out
|
||||
|
||||
# Dependency directories (remove the comment below to include it)
|
||||
vendor/
|
||||
|
||||
# Go workspace file
|
||||
# go.work
|
||||
go.work.sum
|
||||
|
||||
### JetBrains ###
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff
|
||||
.idea/
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
|
||||
# AWS User-specific
|
||||
.idea/**/aws.xml
|
||||
|
||||
# Generated files
|
||||
.idea/**/contentModel.xml
|
||||
|
||||
# Sensitive or high-churn files
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# Gradle and Maven with auto-import
|
||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||
# since they will be recreated, and may cause churn. Uncomment if using
|
||||
# auto-import.
|
||||
# .idea/artifacts
|
||||
# .idea/compiler.xml
|
||||
# .idea/jarRepositories.xml
|
||||
# .idea/modules.xml
|
||||
# .idea/*.iml
|
||||
# .idea/modules
|
||||
# *.iml
|
||||
# *.ipr
|
||||
|
||||
# CMake
|
||||
cmake-build-*/
|
||||
|
||||
# Mongo Explorer plugin
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
# File-based project format
|
||||
*.iws
|
||||
|
||||
# IntelliJ
|
||||
out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# SonarLint plugin
|
||||
.idea/sonarlint/
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
||||
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
### JetBrains Patch ###
|
||||
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
||||
|
||||
# *.iml
|
||||
# modules.xml
|
||||
# .idea/misc.xml
|
||||
# *.ipr
|
||||
|
||||
# Sonarlint plugin
|
||||
# https://plugins.jetbrains.com/plugin/7973-sonarlint
|
||||
.idea/**/sonarlint/
|
||||
|
||||
# SonarQube Plugin
|
||||
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
|
||||
.idea/**/sonarIssues.xml
|
||||
|
||||
# Markdown Navigator plugin
|
||||
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
|
||||
.idea/**/markdown-navigator.xml
|
||||
.idea/**/markdown-navigator-enh.xml
|
||||
.idea/**/markdown-navigator/
|
||||
|
||||
# Cache file creation bug
|
||||
# See https://youtrack.jetbrains.com/issue/JBR-2257
|
||||
.idea/$CACHE_FILE$
|
||||
|
||||
# CodeStream plugin
|
||||
# https://plugins.jetbrains.com/plugin/12206-codestream
|
||||
.idea/codestream.xml
|
||||
|
||||
# Azure Toolkit for IntelliJ plugin
|
||||
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
|
||||
.idea/**/azureSettings.xml
|
||||
|
||||
### Tags ###
|
||||
# Ignore tags created by etags, ctags, gtags (GNU global) and cscope
|
||||
TAGS
|
||||
.TAGS
|
||||
!TAGS/
|
||||
tags
|
||||
.tags
|
||||
!tags/
|
||||
gtags.files
|
||||
GTAGS
|
||||
GRTAGS
|
||||
GPATH
|
||||
GSYMS
|
||||
cscope.files
|
||||
cscope.out
|
||||
cscope.in.out
|
||||
cscope.po.out
|
||||
|
||||
|
||||
### Test ###
|
||||
### Ignore all files that could be used to test your code and
|
||||
### you wouldn't want to push
|
||||
|
||||
# Reference https://en.wikipedia.org/wiki/Metasyntactic_variable
|
||||
|
||||
# Most common
|
||||
*foo
|
||||
*bar
|
||||
*fubar
|
||||
*foobar
|
||||
*baz
|
||||
|
||||
# Less common
|
||||
*qux
|
||||
*quux
|
||||
*bongo
|
||||
*bazola
|
||||
*ztesch
|
||||
|
||||
# UK, Australia
|
||||
*wibble
|
||||
*wobble
|
||||
*wubble
|
||||
*flob
|
||||
*blep
|
||||
*blah
|
||||
*boop
|
||||
*beep
|
||||
|
||||
# Japanese
|
||||
*hoge
|
||||
*piyo
|
||||
*fuga
|
||||
*hogera
|
||||
*hogehoge
|
||||
|
||||
# Portugal, Spain
|
||||
*fulano
|
||||
*sicrano
|
||||
*beltrano
|
||||
*mengano
|
||||
*perengano
|
||||
*zutano
|
||||
|
||||
# France, Italy, the Netherlands
|
||||
*toto
|
||||
*titi
|
||||
*tata
|
||||
*tutu
|
||||
*pipppo
|
||||
*pluto
|
||||
*paperino
|
||||
*aap
|
||||
*noot
|
||||
*mies
|
||||
|
||||
# Other names that would make sense
|
||||
*tests
|
||||
*testsdir
|
||||
*testsfile
|
||||
*testsfiles
|
||||
*testdir
|
||||
*testfile
|
||||
*testfiles
|
||||
*testing
|
||||
*testingdir
|
||||
*testingfile
|
||||
*testingfiles
|
||||
*temp
|
||||
*tempdir
|
||||
*tempfile
|
||||
*tempfiles
|
||||
*tmp
|
||||
*tmpdir
|
||||
*tmpfile
|
||||
*tmpfiles
|
||||
*lol
|
||||
|
||||
### Vim ###
|
||||
# Swap
|
||||
[._]*.s[a-v][a-z]
|
||||
!*.svg # comment out if you don't need vector files
|
||||
[._]*.sw[a-p]
|
||||
[._]s[a-rt-v][a-z]
|
||||
[._]ss[a-gi-z]
|
||||
[._]sw[a-p]
|
||||
|
||||
# Session
|
||||
Session.vim
|
||||
Sessionx.vim
|
||||
|
||||
# Temporary
|
||||
.netrwhist
|
||||
# Auto-generated tag files
|
||||
# Persistent undo
|
||||
[._]*.un~
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/go,git,vim,tags,test,emacs,backup,jetbrains
|
||||
.idea
|
||||
dist/
|
||||
.env
|
||||
config/config.yaml
|
||||
|
||||
4
.gitmodules
vendored
4
.gitmodules
vendored
@@ -1,4 +1,4 @@
|
||||
|
||||
[submodule "src/Open-IM-SDK-Core"]
|
||||
path = src/Open-IM-SDK-Core
|
||||
[submodule "cmd/Open-IM-SDK-Core"]
|
||||
path = cmd/Open-IM-SDK-Core
|
||||
url = https://github.com/OpenIMSDK/Open-IM-SDK-Core.git
|
||||
|
||||
85
README.md
85
README.md
@@ -1,4 +1,5 @@
|
||||
# Open-IM-Server
|
||||
# Open-IM-Server
|
||||

|
||||
|
||||

|
||||
|
||||
@@ -25,8 +26,6 @@ By deployment of the Open-IM-Server on the customer's server, developers can int
|
||||
- Supports multiple protocols
|
||||
|
||||
## Community
|
||||
|
||||
- Join the Telegram-OpenIM group: https://t.me/joinchat/zSJLPaHBNLZmODI1
|
||||
- 中文官网访问这里:[Open-IM中文开发文档](https://doc.rentsoft.cn/)
|
||||
|
||||
## Quick start
|
||||
@@ -35,73 +34,69 @@ By deployment of the Open-IM-Server on the customer's server, developers can int
|
||||
|
||||
> Open-IM relies on five open source high-performance components: ETCD, MySQL, MongoDB, Redis, and Kafka. Privatization deployment Before Open-IM-Server, please make sure that the above five components have been installed. If your server does not have the above components, you must first install Missing components. If you have the above components, it is recommended to use them directly. If not, it is recommended to use Docker-compose, no To install dependencies, one-click deployment, faster and more convenient.
|
||||
|
||||
#### Source code deployment
|
||||
#### Deploy using Docker
|
||||
|
||||
1. Install [Go environment](https://golang.org/doc/install). Make sure Go version is at least 1.15.
|
||||
1. Install [Go environment](https://golang.org/doc/install). Make sure Go version is at least 1.17
|
||||
|
||||
2. Clone the Open-IM project to your server.
|
||||
2. Clone the Open-IM project to your server
|
||||
|
||||
```
|
||||
git clone https://github.com/OpenIMSDK/Open-IM-Server.git --recursive
|
||||
```
|
||||
|
||||
3. Build and start Service.
|
||||
3. Deploy
|
||||
|
||||
1. Shell authorization
|
||||
1. Modify env
|
||||
|
||||
```
|
||||
#cd Open-IM-server/script
|
||||
|
||||
chmod +x *.sh
|
||||
#cd Open-IM-server
|
||||
USER=root
|
||||
PASSWORD=openIM123 #Password with more than 8 digits, excluding special characters
|
||||
ENDPOINT=http://127.0.0.1:10005 #Replace 127.0.0.1 with Internet IP
|
||||
DATA_DIR=./
|
||||
```
|
||||
|
||||
2. Execute the build shell
|
||||
|
||||
2. Deploy && Start
|
||||
|
||||
```
|
||||
./build_all_service.sh
|
||||
chmod +x install_im_server.sh;
|
||||
./install_im_server.sh;
|
||||
```
|
||||
|
||||
3. Start service
|
||||
|
||||
```
|
||||
./start_all.sh
|
||||
```
|
||||
|
||||
|
||||
4. Check service
|
||||
|
||||
|
||||
```
|
||||
./check_all.sh
|
||||
cd script;
|
||||
./docker_check_service.sh./check_all.sh
|
||||
```
|
||||
|
||||
|
||||

|
||||
|
||||
#### Docker deployment
|
||||
#### Deploy using source code
|
||||
|
||||
All images are available at https://hub.docker.com/r/lyt1123/open_im_server
|
||||
1. Go 1.17 or above。
|
||||
2. Clone
|
||||
|
||||
1. [Install Docker](https://docs.docker.com/install/) 1.13 or above.
|
||||
```shell
|
||||
git clone https://github.com/OpenIMSDK/Open-IM-Server.git --recursive
|
||||
cd cmd/Open-IM-SDK-Core
|
||||
git checkout main
|
||||
```
|
||||
|
||||
2. [Install Docker Compose](https://docs.docker.com/compose/install/) 1.22 or above.
|
||||
1. Set executable permissions
|
||||
|
||||
3. Clone the Open-IM project to your server.
|
||||
```shell
|
||||
cd ../../script/
|
||||
chmod +x *.sh
|
||||
```
|
||||
|
||||
```
|
||||
git clone https://github.com/OpenIMSDK/Open-IM-Server.git --recursive
|
||||
```
|
||||
1. build
|
||||
|
||||
4. Start docker-compose with one click(Docker automatically pulls all images)
|
||||
```shell
|
||||
./batch_build_all_service.sh
|
||||
```
|
||||
|
||||
```
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
5. Check service
|
||||
|
||||
```
|
||||
./docker_check_service.sh
|
||||
```
|
||||
|
||||

|
||||
all services build success
|
||||
|
||||
### CONFIGURATION INSTRUCTIONS
|
||||
|
||||
@@ -154,4 +149,4 @@ All images are available at https://hub.docker.com/r/lyt1123/open_im_server
|
||||
|
||||
## License
|
||||
|
||||
Open-IM-Server is under the Apache 2.0 license. See the [LICENSE](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/LICENSE) file for details.
|
||||
Open-IM-Server is under the Apache 2.0 license. See the [LICENSE](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/LICENSE) file for details
|
||||
|
||||
1
cmd/Open-IM-SDK-Core
Submodule
1
cmd/Open-IM-SDK-Core
Submodule
Submodule cmd/Open-IM-SDK-Core added at e731cb86ec
@@ -1,14 +1,24 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_push
|
||||
NAME=open_im_api
|
||||
BIN_DIR=../../bin/
|
||||
LAN_FILE=.go
|
||||
GO_FILE:=${BINARY_NAME}${LAN_FILE}
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o ${BINARY_NAME} ${GO_FILE}
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
@@ -17,11 +27,9 @@ gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
|
||||
8568
cmd/open_im_api/docs/docs.go
Normal file
8568
cmd/open_im_api/docs/docs.go
Normal file
File diff suppressed because it is too large
Load Diff
8544
cmd/open_im_api/docs/swagger.json
Normal file
8544
cmd/open_im_api/docs/swagger.json
Normal file
File diff suppressed because it is too large
Load Diff
5624
cmd/open_im_api/docs/swagger.yaml
Normal file
5624
cmd/open_im_api/docs/swagger.yaml
Normal file
File diff suppressed because it is too large
Load Diff
250
cmd/open_im_api/main.go
Normal file
250
cmd/open_im_api/main.go
Normal file
@@ -0,0 +1,250 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
_ "Open_IM/cmd/open_im_api/docs"
|
||||
apiAuth "Open_IM/internal/api/auth"
|
||||
clientInit "Open_IM/internal/api/client_init"
|
||||
"Open_IM/internal/api/conversation"
|
||||
"Open_IM/internal/api/friend"
|
||||
"Open_IM/internal/api/group"
|
||||
"Open_IM/internal/api/manage"
|
||||
apiChat "Open_IM/internal/api/msg"
|
||||
"Open_IM/internal/api/office"
|
||||
"Open_IM/internal/api/organization"
|
||||
apiThird "Open_IM/internal/api/third"
|
||||
"Open_IM/internal/api/user"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/log"
|
||||
"Open_IM/pkg/grpc-etcdv3/getcdv3"
|
||||
"Open_IM/pkg/utils"
|
||||
"flag"
|
||||
"fmt"
|
||||
|
||||
//_ "github.com/razeencheng/demo-go/swaggo-gin/docs"
|
||||
"io"
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
swaggerFiles "github.com/swaggo/files"
|
||||
ginSwagger "github.com/swaggo/gin-swagger"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
//"syscall"
|
||||
"Open_IM/pkg/common/constant"
|
||||
promePkg "Open_IM/pkg/common/prometheus"
|
||||
)
|
||||
|
||||
// @title open-IM-Server API
|
||||
// @version 1.0
|
||||
// @description open-IM-Server 的API服务器文档, 文档中所有请求都有一个operationID字段用于链路追踪
|
||||
|
||||
// @license.name Apache 2.0
|
||||
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
// @BasePath /
|
||||
func main() {
|
||||
log.NewPrivateLog(constant.LogFileName)
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
f, _ := os.Create("../logs/api.log")
|
||||
gin.DefaultWriter = io.MultiWriter(f)
|
||||
// gin.SetMode(gin.DebugMode)
|
||||
r := gin.New()
|
||||
r.Use(gin.Recovery())
|
||||
r.Use(utils.CorsHandler())
|
||||
log.Info("load config: ", config.Config)
|
||||
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
if config.Config.Prometheus.Enable {
|
||||
promePkg.NewApiRequestCounter()
|
||||
promePkg.NewApiRequestFailedCounter()
|
||||
promePkg.NewApiRequestSuccessCounter()
|
||||
r.Use(promePkg.PromeTheusMiddleware)
|
||||
r.GET("/metrics", promePkg.PrometheusHandler())
|
||||
}
|
||||
// user routing group, which handles user registration and login services
|
||||
userRouterGroup := r.Group("/user")
|
||||
{
|
||||
userRouterGroup.POST("/update_user_info", user.UpdateUserInfo) //1
|
||||
userRouterGroup.POST("/set_global_msg_recv_opt", user.SetGlobalRecvMessageOpt)
|
||||
userRouterGroup.POST("/get_users_info", user.GetUsersPublicInfo) //1
|
||||
userRouterGroup.POST("/get_self_user_info", user.GetSelfUserInfo) //1
|
||||
userRouterGroup.POST("/get_users_online_status", user.GetUsersOnlineStatus) //1
|
||||
userRouterGroup.POST("/get_users_info_from_cache", user.GetUsersInfoFromCache)
|
||||
userRouterGroup.POST("/get_user_friend_from_cache", user.GetFriendIDListFromCache)
|
||||
userRouterGroup.POST("/get_black_list_from_cache", user.GetBlackIDListFromCache)
|
||||
userRouterGroup.POST("/get_all_users_uid", manage.GetAllUsersUid) //1
|
||||
userRouterGroup.POST("/account_check", manage.AccountCheck) //1
|
||||
// userRouterGroup.POST("/get_users_online_status", manage.GetUsersOnlineStatus) //1
|
||||
userRouterGroup.POST("/get_users", user.GetUsers)
|
||||
}
|
||||
//friend routing group
|
||||
friendRouterGroup := r.Group("/friend")
|
||||
{
|
||||
// friendRouterGroup.POST("/get_friends_info", friend.GetFriendsInfo)
|
||||
friendRouterGroup.POST("/add_friend", friend.AddFriend) //1
|
||||
friendRouterGroup.POST("/delete_friend", friend.DeleteFriend) //1
|
||||
friendRouterGroup.POST("/get_friend_apply_list", friend.GetFriendApplyList) //1
|
||||
friendRouterGroup.POST("/get_self_friend_apply_list", friend.GetSelfFriendApplyList) //1
|
||||
friendRouterGroup.POST("/get_friend_list", friend.GetFriendList) //1
|
||||
friendRouterGroup.POST("/add_friend_response", friend.AddFriendResponse) //1
|
||||
friendRouterGroup.POST("/set_friend_remark", friend.SetFriendRemark) //1
|
||||
|
||||
friendRouterGroup.POST("/add_black", friend.AddBlack) //1
|
||||
friendRouterGroup.POST("/get_black_list", friend.GetBlacklist) //1
|
||||
friendRouterGroup.POST("/remove_black", friend.RemoveBlack) //1
|
||||
|
||||
friendRouterGroup.POST("/import_friend", friend.ImportFriend) //1
|
||||
friendRouterGroup.POST("/is_friend", friend.IsFriend) //1
|
||||
}
|
||||
//group related routing group
|
||||
groupRouterGroup := r.Group("/group")
|
||||
{
|
||||
groupRouterGroup.POST("/create_group", group.CreateGroup) //1
|
||||
groupRouterGroup.POST("/set_group_info", group.SetGroupInfo) //1
|
||||
groupRouterGroup.POST("/join_group", group.JoinGroup) //1
|
||||
groupRouterGroup.POST("/quit_group", group.QuitGroup) //1
|
||||
groupRouterGroup.POST("/group_application_response", group.ApplicationGroupResponse) //1
|
||||
groupRouterGroup.POST("/transfer_group", group.TransferGroupOwner) //1
|
||||
groupRouterGroup.POST("/get_recv_group_applicationList", group.GetRecvGroupApplicationList) //1
|
||||
groupRouterGroup.POST("/get_user_req_group_applicationList", group.GetUserReqGroupApplicationList)
|
||||
groupRouterGroup.POST("/get_groups_info", group.GetGroupsInfo) //1
|
||||
groupRouterGroup.POST("/kick_group", group.KickGroupMember) //1
|
||||
// groupRouterGroup.POST("/get_group_member_list", group.GetGroupMemberList) //no use
|
||||
groupRouterGroup.POST("/get_group_all_member_list", group.GetGroupAllMemberList) //1
|
||||
groupRouterGroup.POST("/get_group_members_info", group.GetGroupMembersInfo) //1
|
||||
groupRouterGroup.POST("/invite_user_to_group", group.InviteUserToGroup) //1
|
||||
//only for supergroup
|
||||
groupRouterGroup.POST("/invite_user_to_groups", group.InviteUserToGroups)
|
||||
groupRouterGroup.POST("/get_joined_group_list", group.GetJoinedGroupList)
|
||||
groupRouterGroup.POST("/dismiss_group", group.DismissGroup) //
|
||||
groupRouterGroup.POST("/mute_group_member", group.MuteGroupMember)
|
||||
groupRouterGroup.POST("/cancel_mute_group_member", group.CancelMuteGroupMember) //MuteGroup
|
||||
groupRouterGroup.POST("/mute_group", group.MuteGroup)
|
||||
groupRouterGroup.POST("/cancel_mute_group", group.CancelMuteGroup)
|
||||
groupRouterGroup.POST("/set_group_member_nickname", group.SetGroupMemberNickname)
|
||||
groupRouterGroup.POST("/set_group_member_info", group.SetGroupMemberInfo)
|
||||
groupRouterGroup.POST("/get_group_abstract_info", group.GetGroupAbstractInfo)
|
||||
//groupRouterGroup.POST("/get_group_all_member_list_by_split", group.GetGroupAllMemberListBySplit)
|
||||
}
|
||||
superGroupRouterGroup := r.Group("/super_group")
|
||||
{
|
||||
superGroupRouterGroup.POST("/get_joined_group_list", group.GetJoinedSuperGroupList)
|
||||
superGroupRouterGroup.POST("/get_groups_info", group.GetSuperGroupsInfo)
|
||||
}
|
||||
//certificate
|
||||
authRouterGroup := r.Group("/auth")
|
||||
{
|
||||
authRouterGroup.POST("/user_register", apiAuth.UserRegister) //1
|
||||
authRouterGroup.POST("/user_token", apiAuth.UserToken) //1
|
||||
authRouterGroup.POST("/parse_token", apiAuth.ParseToken) //1
|
||||
authRouterGroup.POST("/force_logout", apiAuth.ForceLogout) //1
|
||||
}
|
||||
//Third service
|
||||
thirdGroup := r.Group("/third")
|
||||
{
|
||||
thirdGroup.POST("/tencent_cloud_storage_credential", apiThird.TencentCloudStorageCredential)
|
||||
thirdGroup.POST("/ali_oss_credential", apiThird.AliOSSCredential)
|
||||
thirdGroup.POST("/minio_storage_credential", apiThird.MinioStorageCredential)
|
||||
thirdGroup.POST("/minio_upload", apiThird.MinioUploadFile)
|
||||
thirdGroup.POST("/upload_update_app", apiThird.UploadUpdateApp)
|
||||
thirdGroup.POST("/get_download_url", apiThird.GetDownloadURL)
|
||||
thirdGroup.POST("/get_rtc_invitation_info", apiThird.GetRTCInvitationInfo)
|
||||
thirdGroup.POST("/get_rtc_invitation_start_app", apiThird.GetRTCInvitationInfoStartApp)
|
||||
thirdGroup.POST("/fcm_update_token", apiThird.FcmUpdateToken)
|
||||
thirdGroup.POST("/aws_storage_credential", apiThird.AwsStorageCredential)
|
||||
thirdGroup.POST("/set_app_badge", apiThird.SetAppBadge)
|
||||
}
|
||||
//Message
|
||||
chatGroup := r.Group("/msg")
|
||||
{
|
||||
chatGroup.POST("/newest_seq", apiChat.GetSeq)
|
||||
chatGroup.POST("/send_msg", apiChat.SendMsg)
|
||||
chatGroup.POST("/pull_msg_by_seq", apiChat.PullMsgBySeqList)
|
||||
chatGroup.POST("/del_msg", apiChat.DelMsg)
|
||||
chatGroup.POST("/del_super_group_msg", apiChat.DelSuperGroupMsg)
|
||||
chatGroup.POST("/clear_msg", apiChat.ClearMsg)
|
||||
chatGroup.POST("/manage_send_msg", manage.ManagementSendMsg)
|
||||
chatGroup.POST("/batch_send_msg", manage.ManagementBatchSendMsg)
|
||||
chatGroup.POST("/check_msg_is_send_success", manage.CheckMsgIsSendSuccess)
|
||||
chatGroup.POST("/set_msg_min_seq", apiChat.SetMsgMinSeq)
|
||||
|
||||
chatGroup.POST("/set_message_reaction_extensions", apiChat.SetMessageReactionExtensions)
|
||||
chatGroup.POST("/get_message_list_reaction_extensions", apiChat.GetMessageListReactionExtensions)
|
||||
chatGroup.POST("/add_message_reaction_extensions", apiChat.AddMessageReactionExtensions)
|
||||
chatGroup.POST("/delete_message_reaction_extensions", apiChat.DeleteMessageReactionExtensions)
|
||||
}
|
||||
//Conversation
|
||||
conversationGroup := r.Group("/conversation")
|
||||
{ //1
|
||||
conversationGroup.POST("/get_all_conversations", conversation.GetAllConversations)
|
||||
conversationGroup.POST("/get_conversation", conversation.GetConversation)
|
||||
conversationGroup.POST("/get_conversations", conversation.GetConversations)
|
||||
//deprecated
|
||||
conversationGroup.POST("/set_conversation", conversation.SetConversation)
|
||||
conversationGroup.POST("/batch_set_conversation", conversation.BatchSetConversations)
|
||||
//deprecated
|
||||
conversationGroup.POST("/set_recv_msg_opt", conversation.SetRecvMsgOpt)
|
||||
conversationGroup.POST("/modify_conversation_field", conversation.ModifyConversationField)
|
||||
}
|
||||
// office
|
||||
officeGroup := r.Group("/office")
|
||||
{
|
||||
officeGroup.POST("/get_user_tags", office.GetUserTags)
|
||||
officeGroup.POST("/get_user_tag_by_id", office.GetUserTagByID)
|
||||
officeGroup.POST("/create_tag", office.CreateTag)
|
||||
officeGroup.POST("/delete_tag", office.DeleteTag)
|
||||
officeGroup.POST("/set_tag", office.SetTag)
|
||||
officeGroup.POST("/send_msg_to_tag", office.SendMsg2Tag)
|
||||
officeGroup.POST("/get_send_tag_log", office.GetTagSendLogs)
|
||||
|
||||
officeGroup.POST("/create_one_work_moment", office.CreateOneWorkMoment)
|
||||
officeGroup.POST("/delete_one_work_moment", office.DeleteOneWorkMoment)
|
||||
officeGroup.POST("/like_one_work_moment", office.LikeOneWorkMoment)
|
||||
officeGroup.POST("/comment_one_work_moment", office.CommentOneWorkMoment)
|
||||
officeGroup.POST("/get_work_moment_by_id", office.GetWorkMomentByID)
|
||||
officeGroup.POST("/get_user_work_moments", office.GetUserWorkMoments)
|
||||
officeGroup.POST("/get_user_friend_work_moments", office.GetUserFriendWorkMoments)
|
||||
officeGroup.POST("/set_user_work_moments_level", office.SetUserWorkMomentsLevel)
|
||||
officeGroup.POST("/delete_comment", office.DeleteComment)
|
||||
}
|
||||
|
||||
organizationGroup := r.Group("/organization")
|
||||
{
|
||||
organizationGroup.POST("/create_department", organization.CreateDepartment)
|
||||
organizationGroup.POST("/update_department", organization.UpdateDepartment)
|
||||
organizationGroup.POST("/get_sub_department", organization.GetSubDepartment)
|
||||
organizationGroup.POST("/delete_department", organization.DeleteDepartment)
|
||||
organizationGroup.POST("/get_all_department", organization.GetAllDepartment)
|
||||
|
||||
organizationGroup.POST("/create_organization_user", organization.CreateOrganizationUser)
|
||||
organizationGroup.POST("/update_organization_user", organization.UpdateOrganizationUser)
|
||||
organizationGroup.POST("/delete_organization_user", organization.DeleteOrganizationUser)
|
||||
|
||||
organizationGroup.POST("/create_department_member", organization.CreateDepartmentMember)
|
||||
organizationGroup.POST("/get_user_in_department", organization.GetUserInDepartment)
|
||||
organizationGroup.POST("/update_user_in_department", organization.UpdateUserInDepartment)
|
||||
|
||||
organizationGroup.POST("/get_department_member", organization.GetDepartmentMember)
|
||||
organizationGroup.POST("/delete_user_in_department", organization.DeleteUserInDepartment)
|
||||
organizationGroup.POST("/get_user_in_organization", organization.GetUserInOrganization)
|
||||
}
|
||||
|
||||
initGroup := r.Group("/init")
|
||||
{
|
||||
initGroup.POST("/set_client_config", clientInit.SetClientInitConfig)
|
||||
initGroup.POST("/get_client_config", clientInit.GetClientInitConfig)
|
||||
}
|
||||
go getcdv3.RegisterConf()
|
||||
go apiThird.MinioInit()
|
||||
defaultPorts := config.Config.Api.GinPort
|
||||
ginPort := flag.Int("port", defaultPorts[0], "get ginServerPort from cmd,default 10002 as port")
|
||||
flag.Parse()
|
||||
address := "0.0.0.0:" + strconv.Itoa(*ginPort)
|
||||
if config.Config.Api.ListenIP != "" {
|
||||
address = config.Config.Api.ListenIP + ":" + strconv.Itoa(*ginPort)
|
||||
}
|
||||
fmt.Println("start api server, address: ", address, ", OpenIM version: ", constant.CurrentVersion)
|
||||
err := r.Run(address)
|
||||
if err != nil {
|
||||
log.Error("", "api run failed ", address, err.Error())
|
||||
panic("api start failed " + err.Error())
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,25 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_msg_transfer
|
||||
NAME=open_im_cms_api
|
||||
BIN_DIR=../../bin/
|
||||
LAN_FILE=.go
|
||||
GO_FILE:=${BINARY_NAME}${LAN_FILE}
|
||||
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o ${BINARY_NAME} ${GO_FILE}
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
@@ -17,8 +28,7 @@ gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
30
cmd/open_im_cms_api/main.go
Normal file
30
cmd/open_im_cms_api/main.go
Normal file
@@ -0,0 +1,30 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/cms_api"
|
||||
"Open_IM/pkg/common/constant"
|
||||
"Open_IM/pkg/utils"
|
||||
"flag"
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
"Open_IM/pkg/common/config"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func main() {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
router := cms_api.NewGinRouter()
|
||||
router.Use(utils.CorsHandler())
|
||||
defaultPorts := config.Config.CmsApi.GinPort
|
||||
ginPort := flag.Int("port", defaultPorts[0], "get ginServerPort from cmd,default 10006 as port")
|
||||
flag.Parse()
|
||||
address := "0.0.0.0:" + strconv.Itoa(*ginPort)
|
||||
if config.Config.Api.ListenIP != "" {
|
||||
address = config.Config.Api.ListenIP + ":" + strconv.Itoa(*ginPort)
|
||||
}
|
||||
address = config.Config.CmsApi.ListenIP + ":" + strconv.Itoa(*ginPort)
|
||||
fmt.Println("start cms api server, address: ", address, ", OpenIM version: ", constant.CurrentVersion, "\n")
|
||||
router.Run(address)
|
||||
}
|
||||
34
cmd/open_im_cron_task/Makefile
Normal file
34
cmd/open_im_cron_task/Makefile
Normal file
@@ -0,0 +1,34 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
NAME=open_im_cron_task
|
||||
BIN_DIR=../../bin/
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
16
cmd/open_im_cron_task/main.go
Normal file
16
cmd/open_im_cron_task/main.go
Normal file
@@ -0,0 +1,16 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/cron_task"
|
||||
"flag"
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var userID = flag.String("userID", "", "userID to clear msg and reset seq")
|
||||
var workingGroupID = flag.String("workingGroupID", "", "workingGroupID to clear msg and reset seq")
|
||||
flag.Parse()
|
||||
fmt.Println(time.Now(), "start cronTask", *userID, *workingGroupID)
|
||||
cronTask.StartCronTask(*userID, *workingGroupID)
|
||||
}
|
||||
@@ -1,14 +1,25 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_msg_gateway
|
||||
NAME=open_im_demo
|
||||
BIN_DIR=../../bin/
|
||||
LAN_FILE=.go
|
||||
GO_FILE:=${BINARY_NAME}${LAN_FILE}
|
||||
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o ${BINARY_NAME} ${GO_FILE}
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
@@ -17,8 +28,7 @@ gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
80
cmd/open_im_demo/main.go
Normal file
80
cmd/open_im_demo/main.go
Normal file
@@ -0,0 +1,80 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/demo/register"
|
||||
"Open_IM/pkg/utils"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
"Open_IM/pkg/common/log"
|
||||
|
||||
promePkg "Open_IM/pkg/common/prometheus"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func main() {
|
||||
log.NewPrivateLog(constant.LogFileName)
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
f, _ := os.Create("../logs/api.log")
|
||||
gin.DefaultWriter = io.MultiWriter(f)
|
||||
r := gin.Default()
|
||||
r.Use(utils.CorsHandler())
|
||||
if config.Config.Prometheus.Enable {
|
||||
r.GET("/metrics", promePkg.PrometheusHandler())
|
||||
}
|
||||
authRouterGroup := r.Group("/demo")
|
||||
{
|
||||
authRouterGroup.POST("/code", register.SendVerificationCode)
|
||||
authRouterGroup.POST("/verify", register.Verify)
|
||||
authRouterGroup.POST("/password", register.SetPassword)
|
||||
authRouterGroup.POST("/login", register.Login)
|
||||
authRouterGroup.POST("/reset_password", register.ResetPassword)
|
||||
authRouterGroup.POST("/check_login", register.CheckLoginLimit)
|
||||
}
|
||||
demoRouterGroup := r.Group("/auth")
|
||||
{
|
||||
demoRouterGroup.POST("/code", register.SendVerificationCode)
|
||||
demoRouterGroup.POST("/verify", register.Verify)
|
||||
demoRouterGroup.POST("/password", register.SetPassword)
|
||||
demoRouterGroup.POST("/login", register.Login)
|
||||
demoRouterGroup.POST("/reset_password", register.ResetPassword)
|
||||
demoRouterGroup.POST("/check_login", register.CheckLoginLimit)
|
||||
}
|
||||
|
||||
//deprecated
|
||||
cmsRouterGroup := r.Group("/cms_admin")
|
||||
{
|
||||
cmsRouterGroup.POST("/generate_invitation_code", register.GenerateInvitationCode)
|
||||
cmsRouterGroup.POST("/query_invitation_code", register.QueryInvitationCode)
|
||||
cmsRouterGroup.POST("/get_invitation_codes", register.GetInvitationCodes)
|
||||
|
||||
cmsRouterGroup.POST("/query_user_ip_limit_login", register.QueryUserIDLimitLogin)
|
||||
cmsRouterGroup.POST("/add_user_ip_limit_login", register.AddUserIPLimitLogin)
|
||||
cmsRouterGroup.POST("/remove_user_ip_limit_login", register.RemoveUserIPLimitLogin)
|
||||
|
||||
cmsRouterGroup.POST("/query_ip_register", register.QueryIPRegister)
|
||||
cmsRouterGroup.POST("/add_ip_limit", register.AddIPLimit)
|
||||
cmsRouterGroup.POST("/remove_ip_Limit", register.RemoveIPLimit)
|
||||
}
|
||||
defaultPorts := config.Config.Demo.Port
|
||||
ginPort := flag.Int("port", defaultPorts[0], "get ginServerPort from cmd,default 10004 as port")
|
||||
flag.Parse()
|
||||
address := "0.0.0.0:" + strconv.Itoa(*ginPort)
|
||||
if config.Config.Api.ListenIP != "" {
|
||||
address = config.Config.Api.ListenIP + ":" + strconv.Itoa(*ginPort)
|
||||
}
|
||||
address = config.Config.CmsApi.ListenIP + ":" + strconv.Itoa(*ginPort)
|
||||
fmt.Println("start demo api server address: ", address, ", OpenIM version: ", constant.CurrentVersion, "\n")
|
||||
go register.OnboardingProcessRoutine()
|
||||
go register.ImportFriendRoutine()
|
||||
err := r.Run(address)
|
||||
if err != nil {
|
||||
log.Error("", "run failed ", *ginPort, err.Error())
|
||||
}
|
||||
}
|
||||
35
cmd/open_im_msg_gateway/Makefile
Normal file
35
cmd/open_im_msg_gateway/Makefile
Normal file
@@ -0,0 +1,35 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
NAME=open_im_msg_gateway
|
||||
BIN_DIR=../../bin/
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
28
cmd/open_im_msg_gateway/main.go
Normal file
28
cmd/open_im_msg_gateway/main.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/msg_gateway/gate"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
"Open_IM/pkg/common/log"
|
||||
"flag"
|
||||
"fmt"
|
||||
"sync"
|
||||
)
|
||||
|
||||
func main() {
|
||||
log.NewPrivateLog(constant.LogFileName)
|
||||
defaultRpcPorts := config.Config.RpcPort.OpenImMessageGatewayPort
|
||||
defaultWsPorts := config.Config.LongConnSvr.WebsocketPort
|
||||
defaultPromePorts := config.Config.Prometheus.MessageGatewayPrometheusPort
|
||||
rpcPort := flag.Int("rpc_port", defaultRpcPorts[0], "rpc listening port")
|
||||
wsPort := flag.Int("ws_port", defaultWsPorts[0], "ws listening port")
|
||||
prometheusPort := flag.Int("prometheus_port", defaultPromePorts[0], "PushrometheusPort default listen port")
|
||||
flag.Parse()
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(1)
|
||||
fmt.Println("start rpc/msg_gateway server, port: ", *rpcPort, *wsPort, *prometheusPort, ", OpenIM version: ", constant.CurrentVersion, "\n")
|
||||
gate.Init(*rpcPort, *wsPort)
|
||||
gate.Run(*prometheusPort)
|
||||
wg.Wait()
|
||||
}
|
||||
36
cmd/open_im_msg_transfer/Makefile
Normal file
36
cmd/open_im_msg_transfer/Makefile
Normal file
@@ -0,0 +1,36 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
NAME=open_im_msg_transfer
|
||||
BIN_DIR=../../bin/
|
||||
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
23
cmd/open_im_msg_transfer/main.go
Normal file
23
cmd/open_im_msg_transfer/main.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/msg_transfer/logic"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
"Open_IM/pkg/common/log"
|
||||
"flag"
|
||||
"fmt"
|
||||
"sync"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(1)
|
||||
prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.MessageTransferPrometheusPort[0], "MessageTransferPrometheusPort default listen port")
|
||||
flag.Parse()
|
||||
log.NewPrivateLog(constant.LogFileName)
|
||||
logic.Init()
|
||||
fmt.Println("start msg_transfer server ", ", OpenIM version: ", constant.CurrentVersion, "\n")
|
||||
logic.Run(*prometheusPort)
|
||||
wg.Wait()
|
||||
}
|
||||
@@ -1,14 +1,24 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_api
|
||||
NAME=open_im_push
|
||||
BIN_DIR=../../bin/
|
||||
LAN_FILE=.go
|
||||
GO_FILE:=${BINARY_NAME}${LAN_FILE}
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ${BINARY_NAME} ${GO_FILE}
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
@@ -17,10 +27,10 @@ gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
|
||||
25
cmd/open_im_push/main.go
Normal file
25
cmd/open_im_push/main.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/push/logic"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
"Open_IM/pkg/common/log"
|
||||
"flag"
|
||||
"fmt"
|
||||
"sync"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImPushPort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "rpc listening port")
|
||||
prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.MessageTransferPrometheusPort[0], "PushrometheusPort default listen port")
|
||||
flag.Parse()
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(1)
|
||||
log.NewPrivateLog(constant.LogFileName)
|
||||
fmt.Println("start push rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n")
|
||||
logic.Init(*rpcPort)
|
||||
logic.Run(*prometheusPort)
|
||||
wg.Wait()
|
||||
}
|
||||
34
cmd/rpc/open_im_admin_cms/Makefile
Normal file
34
cmd/rpc/open_im_admin_cms/Makefile
Normal file
@@ -0,0 +1,34 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
NAME=open_im_admin_cms
|
||||
BIN_DIR=../../../bin/
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
26
cmd/rpc/open_im_admin_cms/main.go
Normal file
26
cmd/rpc/open_im_admin_cms/main.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
rpcMessageCMS "Open_IM/internal/rpc/admin_cms"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
promePkg "Open_IM/pkg/common/prometheus"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImAdminCmsPort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "rpc listening port")
|
||||
prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.AdminCmsPrometheusPort[0], "adminCMSPrometheusPort default listen port")
|
||||
flag.Parse()
|
||||
fmt.Println("start cms rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n")
|
||||
rpcServer := rpcMessageCMS.NewAdminCMSServer(*rpcPort)
|
||||
go func() {
|
||||
err := promePkg.StartPromeSrv(*prometheusPort)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
rpcServer.Run()
|
||||
}
|
||||
@@ -1,14 +1,24 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_user
|
||||
NAME=open_im_auth
|
||||
BIN_DIR=../../../bin/
|
||||
LAN_FILE=.go
|
||||
GO_FILE:=${BINARY_NAME}${LAN_FILE}
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ${BINARY_NAME} ${GO_FILE}
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
@@ -17,11 +27,9 @@ gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
|
||||
26
cmd/rpc/open_im_auth/main.go
Normal file
26
cmd/rpc/open_im_auth/main.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
rpcAuth "Open_IM/internal/rpc/auth"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
promePkg "Open_IM/pkg/common/prometheus"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImAuthPort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "RpcToken default listen port 10800")
|
||||
prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.AuthPrometheusPort[0], "authPrometheusPort default listen port")
|
||||
flag.Parse()
|
||||
fmt.Println("start auth rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n")
|
||||
rpcServer := rpcAuth.NewRpcAuthServer(*rpcPort)
|
||||
go func() {
|
||||
err := promePkg.StartPromeSrv(*prometheusPort)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
rpcServer.Run()
|
||||
}
|
||||
@@ -1,14 +1,24 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_friend
|
||||
NAME=open_im_cache
|
||||
BIN_DIR=../../../bin/
|
||||
LAN_FILE=.go
|
||||
GO_FILE:=${BINARY_NAME}${LAN_FILE}
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ${BINARY_NAME} ${GO_FILE}
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
@@ -17,11 +27,9 @@ gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
|
||||
27
cmd/rpc/open_im_cache/main.go
Normal file
27
cmd/rpc/open_im_cache/main.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
rpcCache "Open_IM/internal/rpc/cache"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
promePkg "Open_IM/pkg/common/prometheus"
|
||||
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImCachePort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "RpcToken default listen port 10800")
|
||||
prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.CachePrometheusPort[0], "cachePrometheusPort default listen port")
|
||||
flag.Parse()
|
||||
fmt.Println("start cache rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n")
|
||||
rpcServer := rpcCache.NewCacheServer(*rpcPort)
|
||||
go func() {
|
||||
err := promePkg.StartPromeSrv(*prometheusPort)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
rpcServer.Run()
|
||||
}
|
||||
35
cmd/rpc/open_im_conversation/Makefile
Normal file
35
cmd/rpc/open_im_conversation/Makefile
Normal file
@@ -0,0 +1,35 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
NAME=open_im_conversation
|
||||
BIN_DIR=../../../bin/
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
27
cmd/rpc/open_im_conversation/main.go
Normal file
27
cmd/rpc/open_im_conversation/main.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
rpcConversation "Open_IM/internal/rpc/conversation"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
promePkg "Open_IM/pkg/common/prometheus"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImConversationPort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "RpcConversation default listen port 11300")
|
||||
prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.ConversationPrometheusPort[0], "conversationPrometheusPort default listen port")
|
||||
flag.Parse()
|
||||
fmt.Println("start conversation rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion)
|
||||
rpcServer := rpcConversation.NewRpcConversationServer(*rpcPort)
|
||||
go func() {
|
||||
err := promePkg.StartPromeSrv(*prometheusPort)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
rpcServer.Run()
|
||||
|
||||
}
|
||||
37
cmd/rpc/open_im_friend/Makefile
Normal file
37
cmd/rpc/open_im_friend/Makefile
Normal file
@@ -0,0 +1,37 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
NAME=open_im_friend
|
||||
BIN_DIR=../../../bin/
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
|
||||
26
cmd/rpc/open_im_friend/main.go
Normal file
26
cmd/rpc/open_im_friend/main.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/rpc/friend"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
promePkg "Open_IM/pkg/common/prometheus"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImFriendPort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "get RpcFriendPort from cmd,default 12000 as port")
|
||||
prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.FriendPrometheusPort[0], "friendPrometheusPort default listen port")
|
||||
flag.Parse()
|
||||
fmt.Println("start friend rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n")
|
||||
rpcServer := friend.NewFriendServer(*rpcPort)
|
||||
go func() {
|
||||
err := promePkg.StartPromeSrv(*prometheusPort)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
rpcServer.Run()
|
||||
}
|
||||
37
cmd/rpc/open_im_group/Makefile
Normal file
37
cmd/rpc/open_im_group/Makefile
Normal file
@@ -0,0 +1,37 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
NAME=open_im_group
|
||||
BIN_DIR=../../../bin/
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
|
||||
26
cmd/rpc/open_im_group/main.go
Normal file
26
cmd/rpc/open_im_group/main.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/rpc/group"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
promePkg "Open_IM/pkg/common/prometheus"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImGroupPort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "get RpcGroupPort from cmd,default 16000 as port")
|
||||
prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.GroupPrometheusPort[0], "groupPrometheusPort default listen port")
|
||||
flag.Parse()
|
||||
fmt.Println("start group rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n")
|
||||
rpcServer := group.NewGroupServer(*rpcPort)
|
||||
go func() {
|
||||
err := promePkg.StartPromeSrv(*prometheusPort)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
rpcServer.Run()
|
||||
}
|
||||
@@ -1,14 +1,24 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_group
|
||||
NAME=open_im_msg
|
||||
BIN_DIR=../../../bin/
|
||||
LAN_FILE=.go
|
||||
GO_FILE:=${BINARY_NAME}${LAN_FILE}
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ${BINARY_NAME} ${GO_FILE}
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
@@ -17,11 +27,8 @@ gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
|
||||
26
cmd/rpc/open_im_msg/main.go
Normal file
26
cmd/rpc/open_im_msg/main.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/rpc/msg"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
promePkg "Open_IM/pkg/common/prometheus"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImMessagePort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "rpc listening port")
|
||||
prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.MessagePrometheusPort[0], "msgPrometheusPort default listen port")
|
||||
flag.Parse()
|
||||
fmt.Println("start msg rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n")
|
||||
rpcServer := msg.NewRpcChatServer(*rpcPort)
|
||||
go func() {
|
||||
err := promePkg.StartPromeSrv(*prometheusPort)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
rpcServer.Run()
|
||||
}
|
||||
@@ -1,14 +1,24 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_auth
|
||||
NAME=open_im_office
|
||||
BIN_DIR=../../../bin/
|
||||
LAN_FILE=.go
|
||||
GO_FILE:=${BINARY_NAME}${LAN_FILE}
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ${BINARY_NAME} ${GO_FILE}
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
@@ -17,10 +27,8 @@ gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
26
cmd/rpc/open_im_office/main.go
Normal file
26
cmd/rpc/open_im_office/main.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
rpc "Open_IM/internal/rpc/office"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
promePkg "Open_IM/pkg/common/prometheus"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImOfficePort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "rpc listening port")
|
||||
prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.OfficePrometheusPort[0], "officePrometheusPort default listen port")
|
||||
flag.Parse()
|
||||
fmt.Println("start office rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n")
|
||||
rpcServer := rpc.NewOfficeServer(*rpcPort)
|
||||
go func() {
|
||||
err := promePkg.StartPromeSrv(*prometheusPort)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
rpcServer.Run()
|
||||
}
|
||||
36
cmd/rpc/open_im_organization/Makefile
Normal file
36
cmd/rpc/open_im_organization/Makefile
Normal file
@@ -0,0 +1,36 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
NAME=open_im_organization
|
||||
BIN_DIR=../../../bin/
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
|
||||
26
cmd/rpc/open_im_organization/main.go
Normal file
26
cmd/rpc/open_im_organization/main.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/rpc/organization"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
promePkg "Open_IM/pkg/common/prometheus"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImOrganizationPort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "get RpcOrganizationPort from cmd,default 11200 as port")
|
||||
prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.OrganizationPrometheusPort[0], "organizationPrometheusPort default listen port")
|
||||
flag.Parse()
|
||||
fmt.Println("start organization rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n")
|
||||
rpcServer := organization.NewServer(*rpcPort)
|
||||
go func() {
|
||||
err := promePkg.StartPromeSrv(*prometheusPort)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
rpcServer.Run()
|
||||
}
|
||||
36
cmd/rpc/open_im_user/Makefile
Normal file
36
cmd/rpc/open_im_user/Makefile
Normal file
@@ -0,0 +1,36 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
NAME=open_im_user
|
||||
BIN_DIR=../../../bin/
|
||||
|
||||
OS:= $(or $(os),linux)
|
||||
ARCH:=$(or $(arch),amd64)
|
||||
all: gotool build
|
||||
|
||||
ifeq ($(OS),windows)
|
||||
|
||||
BINARY_NAME=${NAME}.exe
|
||||
|
||||
else
|
||||
|
||||
BINARY_NAME=${NAME}
|
||||
|
||||
endif
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
|
||||
26
cmd/rpc/open_im_user/main.go
Normal file
26
cmd/rpc/open_im_user/main.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/rpc/user"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
promePkg "Open_IM/pkg/common/prometheus"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImUserPort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "rpc listening port")
|
||||
prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.UserPrometheusPort[0], "userPrometheusPort default listen port")
|
||||
flag.Parse()
|
||||
fmt.Println("start user rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n")
|
||||
rpcServer := user.NewUserServer(*rpcPort)
|
||||
go func() {
|
||||
err := promePkg.StartPromeSrv(*prometheusPort)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
rpcServer.Run()
|
||||
}
|
||||
69
cmd/test/main.go
Normal file
69
cmd/test/main.go
Normal file
@@ -0,0 +1,69 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/pkg/utils"
|
||||
"context"
|
||||
"fmt"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
"time"
|
||||
)
|
||||
|
||||
type MongoMsg struct {
|
||||
UID string
|
||||
Msg []string
|
||||
}
|
||||
|
||||
|
||||
func main() {
|
||||
//"mongodb://%s:%s@%s/%s/?maxPoolSize=%d"
|
||||
uri := "mongodb://user:pass@sample.host:27017/?maxPoolSize=20&w=majority"
|
||||
DBAddress := "127.0.0.1:37017"
|
||||
DBDatabase := "new-test-db"
|
||||
Collection := "new-test-collection"
|
||||
DBMaxPoolSize := 100
|
||||
uri = fmt.Sprintf("mongodb://%s/%s/?maxPoolSize=%d",
|
||||
DBAddress,DBDatabase,
|
||||
DBMaxPoolSize)
|
||||
|
||||
mongoClient, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
filter := bson.M{"uid":"my_uid"}
|
||||
ctx, _ := context.WithTimeout(context.Background(), 30*time.Second)
|
||||
for i:=0; i < 2; i++{
|
||||
|
||||
if err = mongoClient.Database(DBDatabase).Collection(Collection).FindOneAndUpdate(ctx, filter,
|
||||
bson.M{"$push": bson.M{"msg": utils.Int32ToString(int32(i))}}).Err(); err != nil{
|
||||
fmt.Println("FindOneAndUpdate failed ", i, )
|
||||
var mmsg MongoMsg
|
||||
mmsg.UID = "my_uid"
|
||||
mmsg.Msg = append(mmsg.Msg, utils.Int32ToString(int32(i)))
|
||||
_, err := mongoClient.Database(DBDatabase).Collection(Collection).InsertOne(ctx, &mmsg)
|
||||
if err != nil {
|
||||
fmt.Println("insertone failed ", err.Error(), i)
|
||||
} else{
|
||||
fmt.Println("insertone ok ", i)
|
||||
}
|
||||
|
||||
}else {
|
||||
fmt.Println("FindOneAndUpdate ok ", i)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var mmsg MongoMsg
|
||||
|
||||
if err = mongoClient.Database(DBDatabase).Collection(Collection).FindOne(ctx, filter).Decode(&mmsg); err != nil {
|
||||
fmt.Println("findone failed ", err.Error())
|
||||
}else{
|
||||
fmt.Println("findone ok ", mmsg.UID)
|
||||
for i, v:=range mmsg.Msg{
|
||||
fmt.Println("find value: ", i, v)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,53 +1,76 @@
|
||||
# The class cannot be named by Pascal or camel case.
|
||||
# The class cannot be named by Pascal or camel case.
|
||||
# If it is not used, the corresponding structure will not be set,
|
||||
# and it will not be read naturally.
|
||||
serverversion: 1.0.0
|
||||
serverversion: 2.3.1
|
||||
#---------------Infrastructure configuration---------------------#
|
||||
etcd:
|
||||
etcdSchema: openIM
|
||||
etcdAddr: [ 127.0.0.1:2379 ]
|
||||
etcdSchema: openim #默认即可
|
||||
etcdAddr: [ 127.0.0.1:2379 ] #单机部署时,默认即可
|
||||
userName:
|
||||
password:
|
||||
secret:
|
||||
|
||||
mysql:
|
||||
dbMysqlAddress: [ 127.0.0.1:3306 ]
|
||||
dbMysqlUserName: root
|
||||
dbMysqlPassword: openIM
|
||||
dbMysqlDatabaseName: openIM
|
||||
dbTableName: eMsg
|
||||
dbMysqlAddress: [ 127.0.0.1:13306 ] #mysql地址 目前仅支持单机,默认即可
|
||||
dbMysqlUserName: #mysql用户名,建议修改
|
||||
dbMysqlPassword: # mysql密码,建议修改
|
||||
dbMysqlDatabaseName: openIM_v2 #默认即可
|
||||
dbTableName: eMsg #默认即可
|
||||
dbMsgTableNum: 1
|
||||
dbMaxOpenConns: 20
|
||||
dbMaxOpenConns: 100
|
||||
dbMaxIdleConns: 10
|
||||
dbMaxLifeTime: 120
|
||||
dbMaxLifeTime: 5
|
||||
logLevel: 1 #1=slient 2=error 3=warn 4=info
|
||||
slowThreshold: 500
|
||||
|
||||
mongo:
|
||||
dbAddress: [ 127.0.0.1:27017 ]
|
||||
dbUri: ""#当dbUri值不为空则直接使用该值
|
||||
#dbAddress: 127.0.0.1:37017 #单机时为mongo地址,使用分片集群时,为mongos地址 默认即可
|
||||
dbAddress: [ 127.0.0.1:37017 ] #单机时为mongo地址,使用分片集群时,为mongos地址 默认即可
|
||||
dbDirect: false
|
||||
dbTimeout: 10
|
||||
dbDatabase: openIM
|
||||
dbTimeout: 60
|
||||
dbDatabase: openIM #mongo db 默认即可
|
||||
dbSource: admin
|
||||
dbUserName:
|
||||
dbPassword:
|
||||
dbMaxPoolSize: 20
|
||||
dbRetainChatRecords: 7
|
||||
dbUserName: #mongo用户名,建议先不设置
|
||||
dbPassword: #mongo密码,建议先不设置
|
||||
dbMaxPoolSize: 100
|
||||
dbRetainChatRecords: 3650 #mongo保存离线消息时间(天),根据需求修改
|
||||
chatRecordsClearTime: "0 3 * * *" # 每天凌晨3点清除消息,该配置和linux定时任务一样, 清理操作建议设置在用户活跃少的时候 # 0 3 * * *
|
||||
|
||||
redis:
|
||||
dbAddress: 127.0.0.1:6379
|
||||
dbAddress: [ 127.0.0.1:16379 ] #redis地址 单机时,填写一个地址即可,使用redis集群时候,填写集群中多个节点地址(主从地址都可以填写,增加容灾能力),默认即可
|
||||
dbMaxIdle: 128
|
||||
dbMaxActive: 0
|
||||
dbIdleTimeout: 120
|
||||
dbPassWord: openIM
|
||||
dbUserName: #only redis version 6.0+ need username
|
||||
dbPassWord: #redis密码 建议修改
|
||||
enableCluster: false #如果外部redis以集群方式启动,需要打开此开关
|
||||
|
||||
kafka:
|
||||
SASLUserName:
|
||||
SASLPassword:
|
||||
ws2mschat:
|
||||
addr: [ 127.0.0.1:9092 ]
|
||||
topic: "ws2ms_chat"
|
||||
addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可
|
||||
topic: "ws2ms_chat" #用于mongo和mysql保存消息
|
||||
# ws2mschatoffline:
|
||||
# addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可
|
||||
# topic: "ws2ms_chat_offline" #原为离线用户消息处理,目前暂时弃用
|
||||
msgtomongo:
|
||||
addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可
|
||||
topic: "msg_to_mongo"
|
||||
ms2pschat:
|
||||
addr: [ 127.0.0.1:9092 ]
|
||||
topic: "ms2ps_chat"
|
||||
addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可
|
||||
topic: "ms2ps_chat" #消息push
|
||||
msgtomodify:
|
||||
addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可
|
||||
topic: "msg_to_modify"
|
||||
consumergroupid:
|
||||
msgToMongo: mongo
|
||||
msgToTransfer: mongo
|
||||
msgToMongo: mongo_ex
|
||||
msgToMySql: mysql
|
||||
msgToPush: push
|
||||
|
||||
msgToModify: modify
|
||||
|
||||
|
||||
#---------------Internal service configuration---------------------#
|
||||
@@ -55,92 +78,756 @@ kafka:
|
||||
# The service ip default is empty,
|
||||
# automatically obtain the machine's valid network card ip as the service ip,
|
||||
# otherwise the configuration ip is preferred
|
||||
serverip:
|
||||
#如果是单机模式,用0.0.0.0或者不填,默认即可
|
||||
serverip: 0.0.0.0
|
||||
|
||||
#作为rpc时,注册到etcd的地址,单机默认即可,如果是集群部署,需要修改(具体使用内网地址还是外网地址,要依情况而定,目的是api/gateway能访问到)
|
||||
rpcRegisterIP:
|
||||
#默认即可
|
||||
listenIP: 0.0.0.0
|
||||
|
||||
# endpoints 内部组件间访问的端点host名称,访问时,可以内部直接访问 host:port 来访问
|
||||
endpoints:
|
||||
api: openim_api
|
||||
cmsapi: openim_cms_api
|
||||
push: openim_push
|
||||
msg_gateway: openim_msg_gateway
|
||||
rpc_auth: openim_rpc_auth
|
||||
rpc_friend: openim_rpc_friend
|
||||
rpc_group: openim_rpc_group
|
||||
rpc_msg: openim_rpc_msg
|
||||
rpc_user: openim_rpc_user
|
||||
rpc_admin_cms: openim_rpc_admin_cms
|
||||
rpc_office: openim_rpc_office
|
||||
|
||||
api:
|
||||
openImApiPort: [ 10000 ]
|
||||
openImApiPort: [ 10002 ] #api服务端口,默认即可,需要开放此端口或做nginx转发
|
||||
listenIP: 0.0.0.0
|
||||
cmsapi:
|
||||
openImCmsApiPort: [ 10006 ] #管理后台api服务端口,默认即可,需要开放此端口或做nginx转发
|
||||
listenIP: 0.0.0.0
|
||||
sdk:
|
||||
openImSdkWsPort: [ 30000 ]
|
||||
openImSdkWsPort: [ 10003 ] #jssdk服务端口,默认即可,项目中使用jssdk才需开放此端口或做nginx转发
|
||||
dataDir: [ ../db/sdk/ ]
|
||||
openImWsAddress: ws://127.0.0.1:10001
|
||||
openImApiAddress: http://127.0.0.1:10002
|
||||
|
||||
credential:
|
||||
#对象存储服务,以下配置二选一,目前支持两种,腾讯云和minio,二者配置好其中一种即可(如果使用minio参考https://doc.rentsoft.cn/#/qa/minio搭建minio服务器)
|
||||
credential: #腾讯cos,发送图片、视频、文件时需要,请自行申请后替换,必须修改
|
||||
tencent:
|
||||
appID: 1302656840
|
||||
region: ap-chengdu
|
||||
bucket: echat-1302656840
|
||||
secretID: AKIDGNYVChzIQinu7QEgtNp0hnNgqcV8vZTC
|
||||
secretKey: kz15vW83qM6dBUWIq681eBZA0c0vlIbe
|
||||
appID:
|
||||
region:
|
||||
bucket:
|
||||
secretID:
|
||||
secretKey:
|
||||
minio: #MinIO 发送图片、视频、文件时需要,请自行申请后替换,必须修改。 客户端初始化InitSDK,中 object_storage参数为minio
|
||||
bucket: openim # 存储内容桶
|
||||
appBucket: app # 存储app的桶
|
||||
location: us-east-1
|
||||
endpoint: #minio外网ip 这个ip是给客户端访问的
|
||||
endpointInner: http://127.0.0.1:10005 #minio内网地址 如果im server 可以通过内网访问到 minio就可以
|
||||
endpointInnerEnable: true #是否启用minio内网地址 启用可以让桶初始化,IM server连接minio走内网地址访问
|
||||
accessKeyID:
|
||||
secretAccessKey:
|
||||
storageTime: 50 #文件在minio中保存的时间
|
||||
isDistributedMod: false # 是否分布式多硬盘部署 默认docker-compose中为false
|
||||
ali: # ali oss
|
||||
regionID:
|
||||
accessKeyID:
|
||||
accessKeySecret:
|
||||
stsEndpoint:
|
||||
ossEndpoint:
|
||||
bucket:
|
||||
finalHost:
|
||||
stsDurationSeconds:
|
||||
OssRoleArn:
|
||||
aws:
|
||||
accessKeyID: #AssumeRole用户关联的accessKeyID
|
||||
accessKeySecret: #AssumeRole用户关联的accessKeySecrect
|
||||
region: #分区
|
||||
bucket: #桶
|
||||
finalHost: #对外Host
|
||||
roleArn: #RoleArn
|
||||
externalId: #角色扩展Id
|
||||
roleSessionName: #角色SESSION名称
|
||||
|
||||
|
||||
rpcport:
|
||||
openImUserPort: [ 10100 ]
|
||||
openImFriendPort: [ 10200 ]
|
||||
openImOfflineMessagePort: [ 10300 ]
|
||||
openImOnlineRelayPort: [ 10400 ]
|
||||
openImGroupPort: [ 10500 ]
|
||||
openImAuthPort: [ 10600 ]
|
||||
openImPushPort: [ 10700 ]
|
||||
rpcport: #rpc服务端口 默认即可
|
||||
openImUserPort: [ 10110 ]
|
||||
openImFriendPort: [ 10120 ]
|
||||
openImMessagePort: [ 10130 ]
|
||||
openImMessageGatewayPort: [ 10140 ]
|
||||
openImGroupPort: [ 10150 ]
|
||||
openImAuthPort: [ 10160 ]
|
||||
openImPushPort: [ 10170 ]
|
||||
openImAdminCmsPort: [ 10200 ]
|
||||
openImOfficePort: [ 10210 ]
|
||||
openImOrganizationPort: [ 10220 ]
|
||||
openImConversationPort: [ 10230 ]
|
||||
openImCachePort: [ 10240 ]
|
||||
openImRealTimeCommPort: [ 11300 ]
|
||||
c2c:
|
||||
callbackBeforeSendMsg:
|
||||
switch: false
|
||||
timeoutStrategy: 1 #1:send
|
||||
callbackAfterSendMsg:
|
||||
switch: false
|
||||
state:
|
||||
stateChange:
|
||||
switch: false
|
||||
|
||||
|
||||
rpcregistername:
|
||||
rpcregistername: #rpc注册服务名,默认即可
|
||||
openImUserName: User
|
||||
openImFriendName: Friend
|
||||
openImOfflineMessageName: OfflineMessage
|
||||
openImMsgName: Msg
|
||||
openImPushName: Push
|
||||
openImOnlineMessageRelayName: OnlineMessageRelay
|
||||
openImRelayName: Relay
|
||||
openImGroupName: Group
|
||||
openImAuthName: Auth
|
||||
|
||||
openImAdminCMSName: AdminCMS
|
||||
openImOfficeName: Office
|
||||
openImOrganizationName: Organization
|
||||
openImConversationName: Conversation
|
||||
openImCacheName: Cache
|
||||
openImRealTimeCommName: RealTimeComm
|
||||
log:
|
||||
storageLocation: ../logs/
|
||||
rotationTime: 24
|
||||
remainRotationCount: 5
|
||||
remainRotationCount: 2 #日志数量
|
||||
#日志级别 6表示全都打印,测试阶段建议设置为6
|
||||
remainLogLevel: 6
|
||||
elasticSearchSwitch: false
|
||||
elasticSearchAddr: [ 127.0.0.1:9201 ]
|
||||
elasticSearchUser: ""
|
||||
elasticSearchPassword: ""
|
||||
|
||||
modulename:
|
||||
modulename: #日志文件按模块命名,默认即可
|
||||
longConnSvrName: msg_gateway
|
||||
msgTransferName: msg_transfer
|
||||
pushName: push
|
||||
|
||||
longconnsvr:
|
||||
openImWsPort: [ 17778 ]
|
||||
openImWsPort: [ 10001 ] # ws服务端口,默认即可,要开放此端口或做nginx转发
|
||||
websocketMaxConnNum: 10000
|
||||
websocketMaxMsgLen: 4096
|
||||
websocketTimeOut: 10
|
||||
|
||||
## 推送只能开启一个 enable代表开启
|
||||
push:
|
||||
tpns:
|
||||
tpns: #腾讯推送,暂未测试 暂不要使用
|
||||
ios:
|
||||
accessID: 1600018281
|
||||
secretKey: 3cd68a77a95b89e5089a1aca523f318f
|
||||
accessID:
|
||||
secretKey:
|
||||
android:
|
||||
accessID: 111
|
||||
secretKey: 111
|
||||
jpns:
|
||||
appKey: 2783339cee4de379cc798fe1
|
||||
masterSecret: 66e5f309e032c68cc668c28a
|
||||
pushUrl: "https://api.jpush.cn/v3/push"
|
||||
accessID:
|
||||
secretKey:
|
||||
enable: false # true or false (bool)
|
||||
jpns: #极光推送 在极光后台申请后,修改以下四项,必须修改
|
||||
appKey:
|
||||
masterSecret:
|
||||
pushUrl:
|
||||
pushIntent:
|
||||
enable: false # true or false (bool)
|
||||
getui: #个推推送
|
||||
pushUrl:
|
||||
masterSecret: ""
|
||||
appKey: ""
|
||||
intent: ""
|
||||
enable: # true or false (bool)
|
||||
channelID: ""
|
||||
channelName: ""
|
||||
channel:
|
||||
HW:
|
||||
category:
|
||||
XM:
|
||||
channelID:
|
||||
OPPO:
|
||||
channelID:
|
||||
fcm: #firebase cloud message 消息推送
|
||||
serviceAccount: #帐号文件,此处需要改修配置,并且这个文件放在 config目录下
|
||||
enable: false
|
||||
mob: #袤博推送
|
||||
appKey: #帐号文件,此处需要改修配置,并且这个文件放在 config目录下
|
||||
pushUrl:
|
||||
scheme:
|
||||
appSecret:
|
||||
enable: false
|
||||
|
||||
|
||||
|
||||
manager:
|
||||
appManagerUid: ["openIM123456","openIM654321"]
|
||||
secrets: ["openIM1","openIM2"]
|
||||
#app管理员userID和对应的secret 建议修改。 用于管理后台登录,也可以用户管理后台对应的api
|
||||
appManagerUid: [ "openIM123456","openIM654321", "openIM333", "openIMAdmin"]
|
||||
secrets: [ "openIM1","openIM2", "openIM333", "openIMAdmin"]
|
||||
appSysNotificationName: "系统通知"
|
||||
|
||||
secret: tuoyun
|
||||
secret:
|
||||
# 多端互踢策略
|
||||
# 1:多平台登录:Android、iOS、Windows、Mac 每种平台只能一个在线,web端可以多个同时在线
|
||||
multiloginpolicy: 1
|
||||
|
||||
multiloginpolicy:
|
||||
onlyOneTerminalAccess: false
|
||||
mobileAndPCTerminalAccessButOtherTerminalKickEachOther: true
|
||||
allTerminalAccess: false
|
||||
#msg log insert to db
|
||||
chatpersistencemysql: true
|
||||
#可靠性存储
|
||||
reliablestorage: false
|
||||
#消息缓存时间
|
||||
msgCacheTimeout: 86400
|
||||
#群聊已读开启
|
||||
groupMessageHasReadReceiptEnable: true
|
||||
#单聊已读开启
|
||||
singleMessageHasReadReceiptEnable: true
|
||||
|
||||
#token config
|
||||
tokenpolicy:
|
||||
accessSecret: "open_im_server"
|
||||
# Token effective time seconds as a unit
|
||||
#Seven days 7*24*60*60
|
||||
accessExpire: 604800
|
||||
accessSecret: #token生成相关,默认即可
|
||||
# Token effective time day as a unit
|
||||
accessExpire: #token过期时间(天) 默认即可
|
||||
messageverify:
|
||||
friendVerify:
|
||||
|
||||
messagecallback:
|
||||
callbackSwitch: false
|
||||
callbackUrl: "http://www.xxx.com/msg/judge"
|
||||
# c2c:
|
||||
# callbackBeforeSendMsg:
|
||||
# switch: false
|
||||
# timeoutStrategy: 1 #1:send
|
||||
# callbackAfterSendMsg:
|
||||
# switch: false
|
||||
# state:
|
||||
# stateChange:
|
||||
# switch: false
|
||||
#ios系统推送声音以及标记计数
|
||||
iospush:
|
||||
pushSound: "xxx"
|
||||
badgeCount: true
|
||||
production: false
|
||||
|
||||
callback:
|
||||
# callback url 需要自行更换callback url
|
||||
callbackUrl : "http://127.0.0.1:8080/callback"
|
||||
# 开启关闭操作前后回调的配置
|
||||
callbackBeforeSendSingleMsg:
|
||||
enable: false # 回调是否启用
|
||||
callbackTimeOut: 2 # 回调超时时间
|
||||
callbackFailedContinue: true # 回调超时是否继续执行代码
|
||||
callbackAfterSendSingleMsg:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackBeforeSendGroupMsg:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackFailedContinue: true
|
||||
callbackAfterSendGroupMsg:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackAfterConsumeGroupMsg:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackMsgModify:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackFailedContinue: true
|
||||
callbackUserOnline:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackUserOffline:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackUserKickOff:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackOfflinePush:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackFailedContinue: true # 回调超时是否继续离线推送
|
||||
callbackOnlinePush:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackFailedContinue: true # 回调超时是否继续离线推送
|
||||
callbackSuperGroupOnlinePush:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackFailedContinue: true # 回调超时是否继续离线推送
|
||||
callbackBeforeAddFriend:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackFailedContinue: true # 回调超时是否继续
|
||||
callbackBeforeCreateGroup:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackFailedContinue: true # 回调超时是否继续
|
||||
callbackBeforeMemberJoinGroup:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackFailedContinue: true # 回调超时是否继续
|
||||
callbackBeforeSetGroupMemberInfo:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackFailedContinue: true # 回调超时是否继续
|
||||
callbackSetMessageReactionExtensions:
|
||||
enable: false
|
||||
callbackTimeOut: 2
|
||||
callbackFailedContinue: true # 回调超时是否继续
|
||||
|
||||
|
||||
notification:
|
||||
groupCreated:
|
||||
conversation:
|
||||
reliabilityLevel: 3
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: true
|
||||
title: "create group title" # xx create the group
|
||||
desc: "create group desc"
|
||||
ext: "create group ext"
|
||||
defaultTips:
|
||||
tips: "create the group" # xx create the group
|
||||
|
||||
groupInfoSet:
|
||||
conversation:
|
||||
reliabilityLevel: 3
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "groupInfoSet title"
|
||||
desc: "groupInfoSet desc"
|
||||
ext: "groupInfoSet ext"
|
||||
defaultTips:
|
||||
tips: "modified the group profile" # group info changed by xx
|
||||
|
||||
joinGroupApplication:
|
||||
conversation:
|
||||
reliabilityLevel: 2
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "joinGroupApplication title"
|
||||
desc: "joinGroupApplication desc"
|
||||
ext: "joinGroupApplication ext"
|
||||
defaultTips:
|
||||
tips: "apply to join the group" # group info changed by xx
|
||||
|
||||
memberQuit:
|
||||
conversation:
|
||||
reliabilityLevel: 3
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "memberQuit title"
|
||||
desc: "memberQuit desc"
|
||||
ext: "memberQuit ext"
|
||||
defaultTips:
|
||||
tips: "quit group msg" # group info changed by xx
|
||||
|
||||
groupApplicationAccepted:
|
||||
conversation:
|
||||
reliabilityLevel: 2
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "groupApplicationAccepted title"
|
||||
desc: "groupApplicationAccepted desc"
|
||||
ext: "groupApplicationAccepted ext"
|
||||
defaultTips:
|
||||
tips: "was allowed to join the group" # group info changed by xx
|
||||
|
||||
groupApplicationRejected:
|
||||
conversation:
|
||||
reliabilityLevel: 2
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: " title"
|
||||
desc: " desc"
|
||||
ext: " ext"
|
||||
defaultTips:
|
||||
tips: "was rejected into the group" # group info changed by xx
|
||||
|
||||
groupOwnerTransferred:
|
||||
conversation:
|
||||
reliabilityLevel: 3
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "groupOwnerTransferred title"
|
||||
desc: "groupOwnerTransferred desc"
|
||||
ext: "groupOwnerTransferred ext"
|
||||
defaultTips:
|
||||
tips: "become a new group owner" # group info changed by xx
|
||||
|
||||
memberKicked:
|
||||
conversation:
|
||||
reliabilityLevel: 3
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "memberKicked title"
|
||||
desc: "memberKicked desc"
|
||||
ext: "memberKicked ext"
|
||||
defaultTips:
|
||||
tips: "was kicked out of the group" # group info changed by xx
|
||||
|
||||
memberInvited:
|
||||
conversation:
|
||||
reliabilityLevel: 3
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "memberInvited title"
|
||||
desc: "memberInvited desc"
|
||||
ext: "memberInvited ext"
|
||||
defaultTips:
|
||||
tips: "was invited into the group" # group info changed by xx
|
||||
|
||||
memberEnter:
|
||||
conversation:
|
||||
reliabilityLevel: 3
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "memberEnter title"
|
||||
desc: "memberEnter desc"
|
||||
ext: "memberEnter ext"
|
||||
defaultTips:
|
||||
tips: "entered the group" # group info changed by xx
|
||||
|
||||
groupDismissed:
|
||||
conversation:
|
||||
reliabilityLevel: 3
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "groupDismissed title"
|
||||
desc: "groupDismissed desc"
|
||||
ext: "groupDismissed ext"
|
||||
defaultTips:
|
||||
tips: "group dismissed"
|
||||
|
||||
|
||||
groupMuted:
|
||||
conversation:
|
||||
reliabilityLevel: 3
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "groupMuted title"
|
||||
desc: "groupMuted desc"
|
||||
ext: "groupMuted ext"
|
||||
defaultTips:
|
||||
tips: "group Muted"
|
||||
|
||||
groupCancelMuted:
|
||||
conversation:
|
||||
reliabilityLevel: 3
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "groupCancelMuted title"
|
||||
desc: "groupCancelMuted desc"
|
||||
ext: "groupCancelMuted ext"
|
||||
defaultTips:
|
||||
tips: "group Cancel Muted"
|
||||
|
||||
|
||||
groupMemberMuted:
|
||||
conversation:
|
||||
reliabilityLevel: 3
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "groupMemberMuted title"
|
||||
desc: "groupMemberMuted desc"
|
||||
ext: "groupMemberMuted ext"
|
||||
defaultTips:
|
||||
tips: "group Member Muted"
|
||||
|
||||
groupMemberCancelMuted:
|
||||
conversation:
|
||||
reliabilityLevel: 3
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "groupMemberCancelMuted title"
|
||||
desc: "groupMemberCancelMuted desc"
|
||||
ext: "groupMemberCancelMuted ext"
|
||||
defaultTips:
|
||||
tips: "group Member Cancel Muted"
|
||||
|
||||
groupMemberInfoSet:
|
||||
conversation:
|
||||
reliabilityLevel: 2
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "groupMemberInfoSet title"
|
||||
desc: "groupMemberInfoSet desc"
|
||||
ext: "groupMemberInfoSet ext"
|
||||
defaultTips:
|
||||
tips: "group member info set"
|
||||
|
||||
|
||||
organizationChanged:
|
||||
conversation:
|
||||
reliabilityLevel: 2
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "organizationChanged title"
|
||||
desc: "organizationChanged desc"
|
||||
ext: "organizationChanged ext"
|
||||
defaultTips:
|
||||
tips: "organization changed"
|
||||
|
||||
|
||||
|
||||
#############################friend#################################
|
||||
|
||||
friendApplicationAdded:
|
||||
conversation:
|
||||
reliabilityLevel: 2
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
switch: true
|
||||
title: "Somebody applies to add you as a friend"
|
||||
desc: "Somebody applies to add you as a friend"
|
||||
ext: "Somebody applies to add you as a friend"
|
||||
defaultTips:
|
||||
tips: "I applies to add you as a friend" #
|
||||
|
||||
friendApplicationApproved:
|
||||
conversation:
|
||||
reliabilityLevel: 2
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
switch: true
|
||||
title: "Someone applies to add your friend application"
|
||||
desc: "Someone applies to add your friend application"
|
||||
ext: "Someone applies to add your friend application"
|
||||
defaultTips:
|
||||
tips: "I applies to add your friend application" #
|
||||
|
||||
|
||||
friendApplicationRejected:
|
||||
conversation:
|
||||
reliabilityLevel: 2
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
switch: true
|
||||
title: "Someone rejected your friend application"
|
||||
desc: "Someone rejected your friend application"
|
||||
ext: "Someone rejected your friend application"
|
||||
defaultTips:
|
||||
tips: "I rejected your friend application" #
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
friendAdded:
|
||||
conversation:
|
||||
reliabilityLevel: 3
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: true
|
||||
title: "We have become friends"
|
||||
desc: "We have become friends"
|
||||
ext: "We have become friends"
|
||||
defaultTips:
|
||||
tips: "We have become friends" #
|
||||
|
||||
|
||||
|
||||
friendDeleted:
|
||||
conversation:
|
||||
reliabilityLevel: 2
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
switch: true
|
||||
title: "deleted a friend"
|
||||
desc: "deleted a friend"
|
||||
ext: "deleted a friend"
|
||||
defaultTips:
|
||||
tips: "deleted a friend" #
|
||||
|
||||
|
||||
friendRemarkSet:
|
||||
conversation:
|
||||
reliabilityLevel: 2
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
switch: true
|
||||
title: "Your friend's profile has been changed"
|
||||
desc: "Your friend's profile has been changed"
|
||||
ext: "Your friend's profile has been changed"
|
||||
defaultTips:
|
||||
tips: "Your friend's profile has been changed" #
|
||||
|
||||
|
||||
|
||||
blackAdded:
|
||||
conversation:
|
||||
reliabilityLevel: 2
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
switch: true
|
||||
title: "blocked a user"
|
||||
desc: "blocked a user"
|
||||
ext: "blocked a user"
|
||||
defaultTips:
|
||||
tips: "blocked a user" #
|
||||
|
||||
|
||||
blackDeleted:
|
||||
conversation:
|
||||
reliabilityLevel: 2
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
switch: true
|
||||
title: "Remove a blocked user"
|
||||
desc: "Remove a blocked user"
|
||||
ext: "Remove a blocked user"
|
||||
defaultTips:
|
||||
tips: "Remove a blocked user"
|
||||
|
||||
friendInfoUpdated:
|
||||
conversation:
|
||||
reliabilityLevel: 2
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
switch: true
|
||||
title: "friend info updated"
|
||||
desc: "friend info updated"
|
||||
ext: "friend info updated"
|
||||
defaultTips:
|
||||
tips: "friend info updated"
|
||||
|
||||
|
||||
#####################user#########################
|
||||
userInfoUpdated:
|
||||
conversation:
|
||||
reliabilityLevel: 2
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
switch: true
|
||||
title: "Remove a blocked user"
|
||||
desc: "Remove a blocked user"
|
||||
ext: "Remove a blocked user"
|
||||
defaultTips:
|
||||
tips: "remove a blocked user"
|
||||
|
||||
#####################conversation#########################
|
||||
conversationOptUpdate:
|
||||
conversation:
|
||||
reliabilityLevel: 1
|
||||
unreadCount: false
|
||||
offlinePush:
|
||||
switch: true
|
||||
title: "conversation opt update"
|
||||
desc: "conversation opt update"
|
||||
ext: "conversation opt update"
|
||||
defaultTips:
|
||||
tips: "conversation opt update"
|
||||
|
||||
conversationSetPrivate:
|
||||
conversation:
|
||||
reliabilityLevel: 3
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: true
|
||||
title: "burn after reading"
|
||||
desc: "burn after reading"
|
||||
ext: "burn after reading"
|
||||
defaultTips:
|
||||
openTips: "burn after reading was opened"
|
||||
closeTips: "burn after reading was closed"
|
||||
|
||||
###################workMoments################
|
||||
workMomentsNotification:
|
||||
conversation:
|
||||
reliabilityLevel: 2
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: true
|
||||
title: "burn after reading"
|
||||
desc: "burn after reading"
|
||||
ext: "burn after reading"
|
||||
defaultTips:
|
||||
openTips: "burn after reading was opened"
|
||||
closeTips: "burn after reading was closed"
|
||||
|
||||
###################organization################
|
||||
joinDepartmentNotification:
|
||||
conversation:
|
||||
reliabilityLevel: 3
|
||||
unreadCount: true
|
||||
offlinePush:
|
||||
switch: false
|
||||
title: "welcome user join department"
|
||||
desc: "welcome user join department"
|
||||
ext: "welcome user join department"
|
||||
defaultTips:
|
||||
tips: "welcome user join department"
|
||||
|
||||
#---------------demo configuration---------------------#
|
||||
#The following configuration items are applied to openIM Demo configuration
|
||||
#是否启动demo,如果自身没有账号体系,设置为true
|
||||
demoswitch: true
|
||||
demo:
|
||||
listenIP: 0.0.0.0
|
||||
#demo对外服务端口,默认即可,需要开放此端口或做nginx转发
|
||||
openImDemoPort: [ 10004 ]
|
||||
alismsverify: #阿里云短信配置,在阿里云申请成功后修改以下四项,enable为true则必须修改,阿里云为默认短信验证方式
|
||||
accessKeyId:
|
||||
accessKeySecret:
|
||||
signName:
|
||||
verificationCodeTemplateCode:
|
||||
enable: false
|
||||
tencentsms: #腾讯云短信配置,在腾讯云申请成功后,修改以下选项,enable为true则必须修改
|
||||
appID:
|
||||
region:
|
||||
secretID:
|
||||
secretKey:
|
||||
signName:
|
||||
verificationCodeTemplateCode:
|
||||
enable: true
|
||||
superCode: 666666 #超级验证码,建议修改掉,收不到短信验证码时可以用此替代
|
||||
needInvitationCode: false
|
||||
# second
|
||||
codeTTL: 60
|
||||
useSuperCode: true
|
||||
mail: #仅支持qq邮箱,具体操作参考 https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=1001256 必须修改
|
||||
title:
|
||||
senderMail:
|
||||
senderAuthorizationCode:
|
||||
smtpAddr:
|
||||
smtpPort: #需开放此端口 出口方向
|
||||
testDepartMentID: 001
|
||||
imAPIURL: http://127.0.0.1:10002
|
||||
onboardProcess: false # 是否开启注册流程
|
||||
createOrganizationUserAndJoinDepartment: false
|
||||
joinDepartmentIDList: [] # 用户注册进来默认加的部门ID列表 不填就随机
|
||||
joinDepartmentGroups: false # 注册是否加部门群
|
||||
oaNotification: false # 注册是否发送OA通知
|
||||
|
||||
workMoment:
|
||||
onlyFriendCanSee: false
|
||||
|
||||
|
||||
rtc:
|
||||
signalTimeout: 35
|
||||
|
||||
# prometheus每个服务监听的端口数量需要和rpc port保持一致
|
||||
prometheus:
|
||||
enable: false
|
||||
userPrometheusPort: [ 20110 ]
|
||||
friendPrometheusPort: [ 20120 ]
|
||||
messagePrometheusPort: [ 20130 ]
|
||||
messageGatewayPrometheusPort: [ 20140 ]
|
||||
groupPrometheusPort: [ 20150 ]
|
||||
authPrometheusPort: [ 20160 ]
|
||||
pushPrometheusPort: [ 20170 ]
|
||||
adminCmsPrometheusPort: [ 20200 ]
|
||||
officePrometheusPort: [ 20210 ]
|
||||
organizationPrometheusPort: [ 20220 ]
|
||||
conversationPrometheusPort: [ 20230 ]
|
||||
cachePrometheusPort: [ 20240 ]
|
||||
realTimeCommPrometheusPort: [ 21300 ]
|
||||
messageTransferPrometheusPort: [ 21400, 21401, 21402, 21403 ] # 端口数量和 script/path_info.cfg msg_transfer_service_num保持一致
|
||||
|
||||
205
config/open-im-ng-example.conf
Normal file
205
config/open-im-ng-example.conf
Normal file
@@ -0,0 +1,205 @@
|
||||
upstream im_msg_gateway{
|
||||
server 127.0.0.1:10001; #IM消息服务器地址 根据部署情况可指定多台
|
||||
}
|
||||
upstream im_api{
|
||||
server 127.0.0.1:10002; #IM群组用户api服务器地址 根据部署情况可指定多台
|
||||
}
|
||||
upstream im_jssdk_gateway{
|
||||
server 127.0.0.1:10003; #IM jssdk服务器地址 根据部署情况可指定多台
|
||||
}
|
||||
upstream im_demo{
|
||||
server 127.0.0.1:10004; #IM demo登录注册服务器地址 根据部署情况可指定多台
|
||||
}
|
||||
upstream storage {
|
||||
server 127.0.0.1:10005; #MinIO服务器地址 暂时支持1台
|
||||
}
|
||||
upstream im_admin{
|
||||
server 127.0.0.1:10006; #IM admin服务器地址 根据部署情况可指定多台
|
||||
}
|
||||
upstream im_grafana{
|
||||
server 127.0.0.1:10007; #IM 统计服务器地址 docker-compose启动所在机器
|
||||
}
|
||||
upstream im_chat{
|
||||
server 127.0.0.1:10008; #IM 商业版登录注册服务器地址 根据部署情况可指定多台
|
||||
}
|
||||
upstream im_complete_admin{
|
||||
server 127.0.0.1:10009; #IM 商业版admin地址 根据部署情况可指定多台
|
||||
}
|
||||
upstream im_organization{
|
||||
server 127.0.0.1:10010; #IM 商业版组织架构服务器地址 根据部署情况可指定多台
|
||||
}
|
||||
upstream im_open_rtc{
|
||||
server 127.0.0.1:7880; #rtc 音视频通话 服务器地址 根据部署情况可指定多台
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443;
|
||||
server_name web.rentsoft.cn; #1 web im 端 域名
|
||||
|
||||
ssl on;
|
||||
ssl_certificate /etc/nginx/conf.d/ssl/web.rentsoft.cn.crt; #2 证书
|
||||
ssl_certificate_key /etc/nginx/conf.d/ssl/web.rentsoft.cn.key; #3 证书
|
||||
ssl_session_timeout 5m;
|
||||
gzip on;
|
||||
gzip_min_length 1k;
|
||||
gzip_buffers 4 16k;
|
||||
gzip_comp_level 2;
|
||||
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/wasm;
|
||||
gzip_vary off;
|
||||
gzip_disable "MSIE [1-6]\.";
|
||||
error_page 405 =200 $uri;
|
||||
|
||||
default_type application/wasm;
|
||||
location /{ #web demo
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-Ip $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header X-NginX-Proxy true;
|
||||
root /data1/online/Pc-Web-Demo/build/; # web im静态资源存放路径
|
||||
index index.html;
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
location /msg_gateway { #10001 ws
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header X-real-ip $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_pass http://im_msg_gateway/;
|
||||
}
|
||||
location ^~/api/ { #10002 api
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header X-real-ip $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_pass http://im_api/;
|
||||
}
|
||||
location /jssdk_gateway { #10003 jssdk
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header X-real-ip $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_pass http://im_jssdk_gateway/;
|
||||
}
|
||||
location ^~/demo/ { # 10004 demo
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header X-real-ip $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_pass http://im_demo/;
|
||||
}
|
||||
location ^~/admin/ { #10006 admin
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header X-real-ip $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_pass http://im_admin/;
|
||||
}
|
||||
location ^~/grafana/ { #10007 prometheus
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header X-real-ip $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_pass http://im_grafana/;
|
||||
}
|
||||
location ^~/chat/ { #10008 chat login
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header X-real-ip $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_pass http://im_chat/;
|
||||
}
|
||||
location ^~/complete_admin/ { #10009 admin
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header X-real-ip $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_pass http://im_complete_admin/;
|
||||
}
|
||||
location ^~/organization/ { #10010 organization
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header X-real-ip $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_pass http://im_organization/;
|
||||
}
|
||||
location ^~/open_rtc/ { #7880 rtc
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header X-real-ip $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_pass http://im_open_rtc/;
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name web.rentsoft.cn ; #1 web im 端 域名
|
||||
rewrite ^(.*)$ https://${server_name}$1 permanent;
|
||||
}
|
||||
|
||||
server {
|
||||
ssl_session_timeout 5m;
|
||||
listen 443;
|
||||
server_name storage.rentsoft.cn; #1 MinIO存储域名
|
||||
ssl on;
|
||||
ssl_certificate /etc/nginx/conf.d/ssl/storage.rentsoft.cn.crt; #证书
|
||||
ssl_certificate_key /etc/nginx/conf.d/ssl/storage.rentsoft.cn.key; #证书
|
||||
gzip on;
|
||||
gzip_min_length 1k;
|
||||
gzip_buffers 4 16k;
|
||||
gzip_comp_level 2;
|
||||
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
|
||||
gzip_vary off;
|
||||
gzip_disable "MSIE [1-6]\.";
|
||||
location / {
|
||||
proxy_pass http://storage;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_http_version 1.1;
|
||||
client_max_body_size 8000M;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
server {
|
||||
listen 443;
|
||||
server_name admin.rentsoft.cn; #后台管理域名
|
||||
ssl on;
|
||||
ssl_certificate /etc/nginx/conf.d/ssl/admin.rentsoft.cn.crt; # 证书
|
||||
ssl_certificate_key /etc/nginx/conf.d/ssl/admin.rentsoft.cn.key; #证书
|
||||
ssl_session_timeout 5m;
|
||||
gzip on;
|
||||
gzip_min_length 1k;
|
||||
gzip_buffers 4 16k;
|
||||
gzip_comp_level 2;
|
||||
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
|
||||
gzip_vary off;
|
||||
gzip_disable "MSIE [1-6]\.";
|
||||
location / {
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-Ip $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header X-NginX-Proxy true;
|
||||
root /data1/online/Open-IM-Admin/dist/; #管理后台web静态资源存放路径
|
||||
index index.html;
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name admin.rentsoft.cn; #管理后台 域名
|
||||
rewrite ^(.*)$ https://${server_name}$1 permanent;
|
||||
}
|
||||
43
config/usualConfig.yaml
Normal file
43
config/usualConfig.yaml
Normal file
@@ -0,0 +1,43 @@
|
||||
etcd:
|
||||
userName:
|
||||
password:
|
||||
secret: openIM123 # etcd 配置密钥
|
||||
|
||||
mysql:
|
||||
dbMysqlUserName: root #mysql用户名
|
||||
dbMysqlPassword: openIM123 # mysql密码
|
||||
|
||||
mongo:
|
||||
dbUserName: root #mongo用户名
|
||||
dbPassword: openIM123 #mongo密码
|
||||
|
||||
redis:
|
||||
dbUserName:
|
||||
dbPassWord: openIM123 #redis密码
|
||||
|
||||
kafka:
|
||||
SASLUserName:
|
||||
SASLPassword:
|
||||
|
||||
credential:
|
||||
minio:
|
||||
endpoint: http://127.0.0.1:10005 #发图片视频文件需要填写
|
||||
accessKeyID: root
|
||||
secretAccessKey: openIM123
|
||||
|
||||
secret: tuoyun #建议修改
|
||||
|
||||
tokenpolicy:
|
||||
accessSecret: "open_im_server" #token生成相关 建议修改
|
||||
accessExpire: 90 #token过期时间(天) 默认即可
|
||||
|
||||
messageverify:
|
||||
friendVerify: false #发送消息是否验证好友关系 false表示不验证好友关系
|
||||
|
||||
push:
|
||||
getui:
|
||||
pushUrl: "https://restapi.getui.com/v2/$appId"
|
||||
masterSecret: "" #需添加
|
||||
appKey: "" #需添加
|
||||
enable: false #true启动个推推送
|
||||
|
||||
6
deploy/.dockerignore
Normal file
6
deploy/.dockerignore
Normal file
@@ -0,0 +1,6 @@
|
||||
# 先设为忽略所有内容
|
||||
**/**
|
||||
|
||||
|
||||
# 然后逐个排除
|
||||
!open_im_*
|
||||
158
deploy/Makefile
Normal file
158
deploy/Makefile
Normal file
@@ -0,0 +1,158 @@
|
||||
|
||||
GREEN_PREFIX="\033[32m"
|
||||
COLOR_SUFFIX="\033[0m"
|
||||
SKY_BLUE_PREFIX="\033[36m"
|
||||
|
||||
|
||||
# 编译所有需要的组件源码
|
||||
win-build-all:
|
||||
go env -w GOOS=linux
|
||||
|
||||
make build-api && make build-msg-gateway && make build-msg-transfer && make build-push && make build-timer-task
|
||||
make build-rpc-user && make build-rpc-friend && make build-rpc-group && make build-rpc-msg && make build-rpc-auth
|
||||
make build-demo
|
||||
|
||||
go env -w GOOS=windows
|
||||
|
||||
# 编译 open_im_api
|
||||
build-api:
|
||||
echo -e ${GREEN_PREFIX} "open_im_api building..." ${COLOR_SUFFIX}
|
||||
go build -ldflags="-w -s" -o open_im_api ../cmd/open_im_api/main.go
|
||||
echo -e ${GREEN_PREFIX} "open_im_api build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 编译 open_im_msg_gateway
|
||||
build-msg-gateway:
|
||||
echo -e ${GREEN_PREFIX} "open_im_msg_gateway building..." ${COLOR_SUFFIX}
|
||||
go build -ldflags="-w -s" -o open_im_msg_gateway ../cmd/open_im_msg_gateway/main.go
|
||||
echo -e ${GREEN_PREFIX} "open_im_msg_gateway build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 编译 open_im_msg_transfer
|
||||
build-msg-transfer:
|
||||
echo -e ${GREEN_PREFIX} "open_im_msg_transfer building..." ${COLOR_SUFFIX}
|
||||
go build -ldflags="-w -s" -o open_im_msg_transfer ../cmd/open_im_msg_transfer/main.go
|
||||
echo -e ${GREEN_PREFIX} "open_im_msg_transfer build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 编译 open_im_push
|
||||
build-push:
|
||||
echo -e ${GREEN_PREFIX} "open_im_push building..." ${COLOR_SUFFIX}
|
||||
go build -ldflags="-w -s" -o open_im_push ../cmd/open_im_push/main.go
|
||||
echo -e ${GREEN_PREFIX} "open_im_push build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 编译 open_im_timer_task
|
||||
build-timer-task:
|
||||
echo -e ${GREEN_PREFIX} "open_im_timer_task building..." ${COLOR_SUFFIX}
|
||||
go build -ldflags="-w -s" -o open_im_timer_task ../cmd/open_im_timer_task/main.go
|
||||
echo -e ${GREEN_PREFIX} "open_im_timer_task build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 编译 build-rpc-user
|
||||
build-rpc-user:
|
||||
echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_user building..." ${COLOR_SUFFIX}
|
||||
go build -ldflags="-w -s" -o open_im_rpc_user ../cmd/rpc/open_im_user/main.go
|
||||
echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_user build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 编译 build-rpc-friend
|
||||
build-rpc-friend:
|
||||
echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_friend building..." ${COLOR_SUFFIX}
|
||||
go build -ldflags="-w -s" -o open_im_rpc_friend ../cmd/rpc/open_im_friend/main.go
|
||||
echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_friend build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 编译 build-rpc-group
|
||||
build-rpc-group:
|
||||
echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_group building..." ${COLOR_SUFFIX}
|
||||
go build -ldflags="-w -s" -o open_im_rpc_group ../cmd/rpc/open_im_group/main.go
|
||||
echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_group build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 编译 build-rpc-auth
|
||||
build-rpc-auth:
|
||||
echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_auth building..." ${COLOR_SUFFIX}
|
||||
go build -ldflags="-w -s" -o open_im_rpc_auth ../cmd/rpc/open_im_auth/main.go
|
||||
echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_auth build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 编译 build-rpc-msg
|
||||
build-rpc-msg:
|
||||
echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_msg building..." ${COLOR_SUFFIX}
|
||||
go build -ldflags="-w -s" -o open_im_rpc_msg ../cmd/rpc/open_im_msg/main.go
|
||||
echo -e ${SKY_BLUE_PREFIX} "open_im_rpc_msg build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 编译 open_im_demo
|
||||
build-demo:
|
||||
echo -e ${SKY_BLUE_PREFIX} "open_im_demo building..." ${COLOR_SUFFIX}
|
||||
go build -ldflags="-w -s" -o open_im_demo ../cmd/open_im_demo/main.go
|
||||
echo -e ${SKY_BLUE_PREFIX} "open_im_demo build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 打包所有组件为镜像
|
||||
image-all:
|
||||
make image-api && make image-msg-gateway && make image-msg-transfer & make image-push && make image-timer-task
|
||||
make image-rpc-user && make image-rpc-friend && make image-rpc-group && make image-rpc-msg && make image-rpc-auth
|
||||
make image-demo
|
||||
|
||||
# 打包 open_im_api
|
||||
image-api:
|
||||
echo -e ${GREEN_PREFIX} "IMAGE:openim/api building..." ${COLOR_SUFFIX}
|
||||
docker build -t openim/api:latest -f ./dockerfiles/Dockerfile.api .
|
||||
echo -e ${GREEN_PREFIX} "IMAGE:openim/api build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 打包 open_im_msg_gateway
|
||||
image-msg-gateway:
|
||||
echo -e ${GREEN_PREFIX} "IMAGE:openim/msg_gateway building..." ${COLOR_SUFFIX}
|
||||
docker build -t openim/msg_gateway:latest -f ./dockerfiles/Dockerfile.msg_gateway .
|
||||
echo -e ${GREEN_PREFIX} "IMAGE:openim/msg_gateway build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 打包 open_im_msg_transfer
|
||||
image-msg-transfer:
|
||||
echo -e ${GREEN_PREFIX} "IMAGE:openim/msg_transfer building..." ${COLOR_SUFFIX}
|
||||
docker build -t openim/msg_transfer:latest -f ./dockerfiles/Dockerfile.msg_transfer .
|
||||
echo -e ${GREEN_PREFIX} "IMAGE:openim/msg_transfer build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 打包 open_im_push
|
||||
image-push:
|
||||
echo -e ${GREEN_PREFIX} "IMAGE:openim/push building..." ${COLOR_SUFFIX}
|
||||
docker build -t openim/push:latest -f ./dockerfiles/Dockerfile.push .
|
||||
echo -e ${GREEN_PREFIX} "IMAGE:openim/push build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 打包 open_im_timer_task
|
||||
image-timer-task:
|
||||
echo -e ${GREEN_PREFIX} "IMAGE:openim/timer_task building..." ${COLOR_SUFFIX}
|
||||
docker build -t openim/timer_task:latest -f ./dockerfiles/Dockerfile.timer_task .
|
||||
echo -e ${GREEN_PREFIX} "IMAGE:openim/timer_task build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 打包 build-rpc-user
|
||||
image-rpc-user:
|
||||
echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_user building..." ${COLOR_SUFFIX}
|
||||
docker build -t openim/rpc_user:latest -f ./dockerfiles/Dockerfile.rpc_user .
|
||||
echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_user build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 打包 build-rpc-friend
|
||||
image-rpc-friend:
|
||||
echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_friend building..." ${COLOR_SUFFIX}
|
||||
docker build -t openim/rpc_friend:latest -f ./dockerfiles/Dockerfile.rpc_friend .
|
||||
echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_friend build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 打包 build-rpc-group
|
||||
image-rpc-group:
|
||||
echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_group building..." ${COLOR_SUFFIX}
|
||||
docker build -t openim/rpc_group:latest -f ./dockerfiles/Dockerfile.rpc_group .
|
||||
echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_group build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 打包 build-rpc-auth
|
||||
image-rpc-auth:
|
||||
echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_auth building..." ${COLOR_SUFFIX}
|
||||
docker build -t openim/rpc_auth:latest -f ./dockerfiles/Dockerfile.rpc_auth .
|
||||
echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_auth build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 打包 build-rpc-msg
|
||||
image-rpc-msg:
|
||||
echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_msg building..." ${COLOR_SUFFIX}
|
||||
docker build -t openim/rpc_msg:latest -f ./dockerfiles/Dockerfile.rpc_msg .
|
||||
echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/rpc_msg build ok" ${COLOR_SUFFIX}
|
||||
|
||||
# 打包 open_im_demo
|
||||
image-demo:
|
||||
echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/demo building..." ${COLOR_SUFFIX}
|
||||
docker build -t openim/demo:latest -f ./dockerfiles/Dockerfile.demo .
|
||||
echo -e ${SKY_BLUE_PREFIX} "IMAGE:openim/demo build ok" ${COLOR_SUFFIX}
|
||||
|
||||
.PHONY: win-build-all build-api build-msg-gateway build-msg-transfer build-push
|
||||
build-timer-task build-rpc-user build-rpc-friend build-rpc-group build-rpc-msg build-demo
|
||||
image-all image-api image-msg-gateway image-msg-transfer image-push
|
||||
image-timer-task image-rpc-user image-rpc-friend image-rpc-group image-rpc-msg image-demo
|
||||
183
deploy/config.example.yaml
Normal file
183
deploy/config.example.yaml
Normal file
@@ -0,0 +1,183 @@
|
||||
# The class cannot be named by Pascal or camel case.
|
||||
# If it is not used, the corresponding structure will not be set,
|
||||
# and it will not be read naturally.
|
||||
serverversion: 1.0.3
|
||||
#---------------Infrastructure configuration---------------------#
|
||||
etcd:
|
||||
etcdSchema: openIM
|
||||
etcdAddr: [ openim_etcd:2379 ]
|
||||
|
||||
mysql:
|
||||
dbMysqlAddress: [ openim_mysql:3306 ] # openim_mysql 是对应的mysql服务的host
|
||||
dbMysqlUserName: openIM
|
||||
dbMysqlPassword: openIM
|
||||
dbMysqlDatabaseName: openIM
|
||||
dbTableName: eMsg
|
||||
dbMsgTableNum: 1
|
||||
dbMaxOpenConns: 20
|
||||
dbMaxIdleConns: 10
|
||||
dbMaxLifeTime: 120
|
||||
|
||||
mongo:
|
||||
dbUri: ""#当dbUri值不为空则直接使用该值
|
||||
dbAddress: [ openim_mongo:27017 ]
|
||||
dbDirect: false
|
||||
dbTimeout: 10
|
||||
dbDatabase: openIM
|
||||
dbSource: admin
|
||||
dbUserName:
|
||||
dbPassword:
|
||||
dbMaxPoolSize: 20
|
||||
dbRetainChatRecords: 7
|
||||
|
||||
redis:
|
||||
dbAddress: openim_redis:6379
|
||||
dbMaxIdle: 128
|
||||
dbMaxActive: 0
|
||||
dbIdleTimeout: 120
|
||||
dbPassWord: openIM
|
||||
|
||||
kafka:
|
||||
ws2mschat:
|
||||
addr: [ openim_kafka:9092 ]
|
||||
topic: "ws2ms_chat"
|
||||
ms2pschat:
|
||||
addr: [ openim_kafka:9092 ]
|
||||
topic: "ms2ps_chat"
|
||||
consumergroupid:
|
||||
msgToMongo: mongo
|
||||
msgToMySql: mysql
|
||||
msgToPush: push
|
||||
|
||||
|
||||
|
||||
#---------------Internal service configuration---------------------#
|
||||
|
||||
# The service ip default is empty,
|
||||
# automatically obtain the machine's valid network card ip as the service ip,
|
||||
# otherwise the configuration ip is preferred
|
||||
serverip: 0.0.0.0
|
||||
|
||||
# endpoints 内部组件间访问的端点host名称,访问时,可以内部直接访问 host:port 来访问
|
||||
# 新增的这一段配置节,主要是位了注册到etcd时,可以使用同一network下的容器名(host)来访问不同的容器,拆分到不同容器后原来全部使用serverip的形式不能用了
|
||||
endpoints:
|
||||
api: openim_api
|
||||
push: openim_push
|
||||
msg_gateway: openim_msg_gateway
|
||||
rpc_auth: openim_rpc_auth
|
||||
rpc_friend: openim_rpc_friend
|
||||
rpc_group: openim_rpc_group
|
||||
rpc_msg: openim_rpc_msg
|
||||
rpc_user: openim_rpc_user
|
||||
|
||||
api:
|
||||
openImApiPort: [ 10000 ]
|
||||
sdk:
|
||||
openImSdkWsPort: [ 30000 ]
|
||||
cmsapi:
|
||||
openImCmsApiPort: [ 8000 ]
|
||||
|
||||
credential:
|
||||
tencent:
|
||||
appID:
|
||||
region:
|
||||
bucket:
|
||||
secretID:
|
||||
secretKey:
|
||||
|
||||
|
||||
rpcport:
|
||||
openImUserPort: [ 10100 ]
|
||||
openImFriendPort: [ 10200 ]
|
||||
openImOfflineMessagePort: [ 10300]
|
||||
openImOnlineRelayPort: [ 10400 ]
|
||||
openImGroupPort: [ 10500 ]
|
||||
openImAuthPort: [ 10600 ]
|
||||
openImPushPort: [ 10700 ]
|
||||
openImStatisticsPort: [ 10800 ]
|
||||
openImMessageCmsPort: [ 10900 ]
|
||||
openImAdminCmsPort: [ 11000 ]
|
||||
|
||||
rpcregistername:
|
||||
openImUserName: User
|
||||
openImFriendName: Friend
|
||||
openImOfflineMessageName: OfflineMessage
|
||||
openImPushName: Push
|
||||
openImOnlineMessageRelayName: OnlineMessageRelay
|
||||
openImGroupName: Group
|
||||
openImAuthName: Auth
|
||||
|
||||
log:
|
||||
storageLocation: ../logs/
|
||||
rotationTime: 24
|
||||
remainRotationCount: 5
|
||||
remainLogLevel: 6
|
||||
elasticSearchSwitch: false
|
||||
elasticSearchAddr: [ 127.0.0.1:9201 ]
|
||||
elasticSearchUser: ""
|
||||
elasticSearchPassword: ""
|
||||
|
||||
modulename:
|
||||
longConnSvrName: msg_gateway
|
||||
msgTransferName: msg_transfer
|
||||
pushName: push
|
||||
|
||||
longconnsvr:
|
||||
openImWsPort: [ 17778 ]
|
||||
websocketMaxConnNum: 10000
|
||||
websocketMaxMsgLen: 4096
|
||||
websocketTimeOut: 10
|
||||
|
||||
push:
|
||||
tpns:
|
||||
ios:
|
||||
accessID:
|
||||
secretKey:
|
||||
android:
|
||||
accessID:
|
||||
secretKey:
|
||||
jpns:
|
||||
appKey:
|
||||
masterSecret:
|
||||
pushUrl:
|
||||
pushIntent:
|
||||
manager:
|
||||
appManagerUid: ["openIM123456","openIM654321"]
|
||||
secrets: ["openIM1","openIM2"]
|
||||
|
||||
secret: tuoyun
|
||||
|
||||
multiloginpolicy: 1
|
||||
|
||||
#token config
|
||||
tokenpolicy:
|
||||
accessSecret: "open_im_server"
|
||||
# Token effective time day as a unit
|
||||
accessExpire: 7
|
||||
|
||||
messagecallback:
|
||||
callbackSwitch: false
|
||||
callbackUrl: "http://www.xxx.com/msg/judge"
|
||||
#TimeOut use second as unit
|
||||
callbackTimeOut: 10
|
||||
|
||||
|
||||
#---------------demo configuration---------------------#
|
||||
#The following configuration items are applied to openIM Demo configuration
|
||||
demoswitch: true
|
||||
demo:
|
||||
openImDemoPort: [ 42233 ]
|
||||
alismsverify:
|
||||
accessKeyId:
|
||||
accessKeySecret:
|
||||
signName:
|
||||
verificationCodeTemplateCode:
|
||||
superCode: 666666
|
||||
mail:
|
||||
title:
|
||||
senderMail:
|
||||
senderAuthorizationCode:
|
||||
smtpAddr:
|
||||
smtpPort:
|
||||
|
||||
|
||||
17
deploy/dockerfiles/Dockerfile.api
Normal file
17
deploy/dockerfiles/Dockerfile.api
Normal file
@@ -0,0 +1,17 @@
|
||||
FROM alpine:3.13
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /app
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_api $WORKDIR/main
|
||||
COPY ./start_api.sh $$WORKDIR
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \
|
||||
chmod +x $WORKDIR/main
|
||||
|
||||
|
||||
WORKDIR $WORKDIR
|
||||
CMD ./start_api.sh
|
||||
16
deploy/dockerfiles/Dockerfile.demo
Normal file
16
deploy/dockerfiles/Dockerfile.demo
Normal file
@@ -0,0 +1,16 @@
|
||||
FROM alpine:3.13
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /app
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_demo $WORKDIR/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \
|
||||
chmod +x $WORKDIR/main
|
||||
|
||||
|
||||
WORKDIR $WORKDIR
|
||||
CMD ./main
|
||||
16
deploy/dockerfiles/Dockerfile.msg_gateway
Normal file
16
deploy/dockerfiles/Dockerfile.msg_gateway
Normal file
@@ -0,0 +1,16 @@
|
||||
FROM alpine:3.13
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /app
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_msg_gateway $WORKDIR/main
|
||||
|
||||
# 创建用于挂载的几个目录,重命名可执行文件为 main,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \
|
||||
chmod +x $WORKDIR/main
|
||||
|
||||
|
||||
WORKDIR $WORKDIR
|
||||
CMD ./main
|
||||
16
deploy/dockerfiles/Dockerfile.msg_transfer
Normal file
16
deploy/dockerfiles/Dockerfile.msg_transfer
Normal file
@@ -0,0 +1,16 @@
|
||||
FROM alpine:3.13
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /app
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_msg_transfer $WORKDIR/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \
|
||||
chmod +x $WORKDIR/main
|
||||
|
||||
|
||||
WORKDIR $WORKDIR
|
||||
CMD ./main
|
||||
16
deploy/dockerfiles/Dockerfile.push
Normal file
16
deploy/dockerfiles/Dockerfile.push
Normal file
@@ -0,0 +1,16 @@
|
||||
FROM alpine:3.13
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /app
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_push $WORKDIR/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \
|
||||
chmod +x $WORKDIR/main
|
||||
|
||||
|
||||
WORKDIR $WORKDIR
|
||||
CMD ./main
|
||||
16
deploy/dockerfiles/Dockerfile.rpc_auth
Normal file
16
deploy/dockerfiles/Dockerfile.rpc_auth
Normal file
@@ -0,0 +1,16 @@
|
||||
FROM alpine:3.13
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /app
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_rpc_auth $WORKDIR/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \
|
||||
chmod +x $WORKDIR/main
|
||||
|
||||
|
||||
WORKDIR $WORKDIR
|
||||
CMD ./main
|
||||
16
deploy/dockerfiles/Dockerfile.rpc_friend
Normal file
16
deploy/dockerfiles/Dockerfile.rpc_friend
Normal file
@@ -0,0 +1,16 @@
|
||||
FROM alpine:3.13
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /app
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_rpc_friend $WORKDIR/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \
|
||||
chmod +x $WORKDIR/main
|
||||
|
||||
|
||||
WORKDIR $WORKDIR
|
||||
CMD ./main
|
||||
16
deploy/dockerfiles/Dockerfile.rpc_group
Normal file
16
deploy/dockerfiles/Dockerfile.rpc_group
Normal file
@@ -0,0 +1,16 @@
|
||||
FROM alpine:3.13
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /app
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_rpc_group $WORKDIR/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \
|
||||
chmod +x $WORKDIR/main
|
||||
|
||||
|
||||
WORKDIR $WORKDIR
|
||||
CMD ./main
|
||||
16
deploy/dockerfiles/Dockerfile.rpc_msg
Normal file
16
deploy/dockerfiles/Dockerfile.rpc_msg
Normal file
@@ -0,0 +1,16 @@
|
||||
FROM alpine:3.13
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /app
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_rpc_msg $WORKDIR/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \
|
||||
chmod +x $WORKDIR/main
|
||||
|
||||
|
||||
WORKDIR $WORKDIR
|
||||
CMD ./main
|
||||
16
deploy/dockerfiles/Dockerfile.rpc_user
Normal file
16
deploy/dockerfiles/Dockerfile.rpc_user
Normal file
@@ -0,0 +1,16 @@
|
||||
FROM alpine:3.13
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /app
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_rpc_user $WORKDIR/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \
|
||||
chmod +x $WORKDIR/main
|
||||
|
||||
|
||||
WORKDIR $WORKDIR
|
||||
CMD ./main
|
||||
16
deploy/dockerfiles/Dockerfile.timer_task
Normal file
16
deploy/dockerfiles/Dockerfile.timer_task
Normal file
@@ -0,0 +1,16 @@
|
||||
FROM alpine:3.13
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /app
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_timer_task $WORKDIR/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/db && \
|
||||
chmod +x $WORKDIR/main
|
||||
|
||||
|
||||
WORKDIR $WORKDIR
|
||||
CMD ./main
|
||||
101
deploy/env.yaml
Normal file
101
deploy/env.yaml
Normal file
@@ -0,0 +1,101 @@
|
||||
version: "3.7"
|
||||
networks:
|
||||
openim:
|
||||
external: true
|
||||
|
||||
services:
|
||||
mysql:
|
||||
networks:
|
||||
- openim
|
||||
image: mysql:5.7
|
||||
# ports:
|
||||
# #- 13306:3306
|
||||
# - 23306:33060
|
||||
container_name: openim_mysql
|
||||
volumes:
|
||||
- ./components/mysql/data:/var/lib/mysql
|
||||
- /etc/localtime:/etc/localtime
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: openIM
|
||||
restart: always
|
||||
|
||||
mongodb:
|
||||
networks:
|
||||
- openim
|
||||
image: mongo:4.4.5-bionic
|
||||
# ports:
|
||||
# - 37017:27017
|
||||
container_name: openim_mongo
|
||||
volumes:
|
||||
- ./components/mongodb/data/db:/data/db
|
||||
- ./components/mongodb/data/logs:/data/logs
|
||||
- ./components/mongodb/data/conf:/etc/mongo
|
||||
environment:
|
||||
TZ: Asia/Shanghai
|
||||
# - MONGO_INITDB_ROOT_USERNAME=openIM
|
||||
# - MONGO_INITDB_ROOT_PASSWORD=openIM
|
||||
restart: always
|
||||
|
||||
redis:
|
||||
networks:
|
||||
- openim
|
||||
image: redis:6.2.4-alpine
|
||||
# ports:
|
||||
# - 16379:6379
|
||||
container_name: openim_redis
|
||||
volumes:
|
||||
- ./components/redis/data:/data
|
||||
#redis config file
|
||||
#- ./components/redis/config/redis.conf:/usr/local/redis/config/redis.conf
|
||||
environment:
|
||||
TZ: Asia/Shanghai
|
||||
restart: always
|
||||
sysctls:
|
||||
net.core.somaxconn: 1024
|
||||
command: redis-server --requirepass openIM --appendonly yes
|
||||
|
||||
|
||||
zookeeper:
|
||||
networks:
|
||||
- openim
|
||||
image: wurstmeister/zookeeper
|
||||
# ports:
|
||||
# - 2181:2181
|
||||
container_name: openim_zookeeper
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime
|
||||
environment:
|
||||
TZ: Asia/Shanghai
|
||||
restart: always
|
||||
|
||||
kafka:
|
||||
networks:
|
||||
- openim
|
||||
image: wurstmeister/kafka
|
||||
container_name: openim_kafka
|
||||
restart: always
|
||||
environment:
|
||||
TZ: Asia/Shanghai
|
||||
KAFKA_BROKER_ID: 0
|
||||
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
|
||||
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
|
||||
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
|
||||
depends_on:
|
||||
- zookeeper
|
||||
|
||||
etcd:
|
||||
networks:
|
||||
- openim
|
||||
image: quay.io/coreos/etcd
|
||||
# ports:
|
||||
# - 2379:2379
|
||||
# - 2380:2380
|
||||
container_name: openim_etcd
|
||||
volumes:
|
||||
- /etc/timezone:/etc/timezone
|
||||
- /etc/localtime:/etc/localtime
|
||||
environment:
|
||||
ETCDCTL_API: 3
|
||||
restart: always
|
||||
command: /usr/local/bin/etcd --name etcd0 --data-dir /etcd-data --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-advertise-peer-urls http://0.0.0.0:2380 --initial-cluster etcd0=http://0.0.0.0:2380 --initial-cluster-token tkn --initial-cluster-state new
|
||||
|
||||
223
deploy/openim.yaml
Normal file
223
deploy/openim.yaml
Normal file
@@ -0,0 +1,223 @@
|
||||
version: "3.7"
|
||||
networks:
|
||||
openim:
|
||||
external: true
|
||||
|
||||
services:
|
||||
api:
|
||||
networks:
|
||||
- openim
|
||||
image: openim/api
|
||||
container_name: openim_api
|
||||
ports:
|
||||
- 10000:10000 # API,必须开
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
# Dockerfile 里定义了配置文件的路径环境变量,CONFIG_NAME,默认指向了 /app/config/config.yaml
|
||||
- ./config/config.yaml:/app/config/config.yaml
|
||||
- ./db/sdk:/app/db/sdk
|
||||
restart: always
|
||||
# depends_on:
|
||||
# - kafka
|
||||
# # - mysql
|
||||
# # - mongodb
|
||||
# - redis
|
||||
# - etcd
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "1g"
|
||||
max-file: "2"
|
||||
|
||||
msg_gateway:
|
||||
networks:
|
||||
- openim
|
||||
image: openim/msg_gateway
|
||||
container_name: openim_msg_gateway
|
||||
ports:
|
||||
- 17778:17778 # 消息,必须开
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
- ./config/config.yaml:/app/config/config.yaml
|
||||
- ./db/sdk:/app/db/sdk
|
||||
restart: always
|
||||
# depends_on:
|
||||
# - kafka
|
||||
# # - mysql
|
||||
# # - mongodb
|
||||
# - redis
|
||||
# - etcd
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "1g"
|
||||
max-file: "2"
|
||||
|
||||
msg_transfer:
|
||||
networks:
|
||||
- openim
|
||||
image: openim/msg_transfer
|
||||
container_name: openim_msg_transfer
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
- ./config/config.yaml:/app/config/config.yaml
|
||||
- ./db/sdk:/app/db/sdk
|
||||
restart: always
|
||||
# depends_on:
|
||||
# - kafka
|
||||
# # - mysql
|
||||
# # - mongodb
|
||||
# - redis
|
||||
# - etcd
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "1g"
|
||||
max-file: "2"
|
||||
|
||||
push:
|
||||
networks:
|
||||
- openim
|
||||
image: openim/push
|
||||
container_name: openim_push
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
- ./config/config.yaml:/app/config/config.yaml
|
||||
- ./db/sdk:/app/db/sdk
|
||||
restart: always
|
||||
# depends_on:
|
||||
# - kafka
|
||||
# # - mysql
|
||||
# # - mongodb
|
||||
# - redis
|
||||
# - etcd
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "1g"
|
||||
max-file: "2"
|
||||
|
||||
timer_task:
|
||||
networks:
|
||||
- openim
|
||||
image: openim/timer_task
|
||||
container_name: openim_timer_task
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
- ./config/config.yaml:/app/config/config.yaml
|
||||
- ./db/sdk:/app/db/sdk
|
||||
restart: always
|
||||
# depends_on:
|
||||
# - kafka
|
||||
# # - mysql
|
||||
# # - mongodb
|
||||
# - redis
|
||||
# - etcd
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "1g"
|
||||
max-file: "2"
|
||||
|
||||
rpc_user:
|
||||
networks:
|
||||
- openim
|
||||
image: openim/rpc_user
|
||||
container_name: openim_rpc_user
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
- ./config/config.yaml:/app/config/config.yaml
|
||||
- ./db/sdk:/app/db/sdk
|
||||
restart: always
|
||||
# depends_on:
|
||||
# - kafka
|
||||
# # - mysql
|
||||
# # - mongodb
|
||||
# - redis
|
||||
# - etcd
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "1g"
|
||||
max-file: "2"
|
||||
|
||||
rpc_friend:
|
||||
networks:
|
||||
- openim
|
||||
image: openim/rpc_friend
|
||||
container_name: openim_rpc_friend
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
- ./config/config.yaml:/app/config/config.yaml
|
||||
- ./db/sdk:/app/db/sdk
|
||||
restart: always
|
||||
# depends_on:
|
||||
# - kafka
|
||||
# # - mysql
|
||||
# # - mongodb
|
||||
# - redis
|
||||
# - etcd
|
||||
|
||||
rpc_group:
|
||||
networks:
|
||||
- openim
|
||||
image: openim/rpc_group
|
||||
container_name: openim_rpc_group
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
- ./config/config.yaml:/app/config/config.yaml
|
||||
- ./db/sdk:/app/db/sdk
|
||||
restart: always
|
||||
# depends_on:
|
||||
# - kafka
|
||||
# # - mysql
|
||||
# # - mongodb
|
||||
# - redis
|
||||
# - etcd
|
||||
|
||||
rpc_auth:
|
||||
networks:
|
||||
- openim
|
||||
image: openim/rpc_auth
|
||||
container_name: openim_rpc_auth
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
- ./config/config.yaml:/app/config/config.yaml
|
||||
- ./db/sdk:/app/db/sdk
|
||||
restart: always
|
||||
# depends_on:
|
||||
# - kafka
|
||||
# # - mysql
|
||||
# # - mongodb
|
||||
# - redis
|
||||
# - etcd
|
||||
|
||||
rpc_msg:
|
||||
networks:
|
||||
- openim
|
||||
image: openim/rpc_msg
|
||||
container_name: openim_rpc_msg
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
- ./config/config.yaml:/app/config/config.yaml
|
||||
- ./db/sdk:/app/db/sdk
|
||||
restart: always
|
||||
# depends_on:
|
||||
# - kafka
|
||||
# # - mysql
|
||||
# # - mongodb
|
||||
# - redis
|
||||
# - etcd
|
||||
|
||||
demo:
|
||||
networks:
|
||||
- openim
|
||||
image: openim/demo
|
||||
container_name: openim_demo
|
||||
ports:
|
||||
- 42233:42233
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
- ./config/config.yaml:/app/config/config.yaml
|
||||
- ./db/sdk:/app/db/sdk
|
||||
restart: always
|
||||
30
deploy/readme.md
Normal file
30
deploy/readme.md
Normal file
@@ -0,0 +1,30 @@
|
||||
|
||||
### 以docker-compose 形式单独部署
|
||||
```sh
|
||||
# 查看 ./Makefile ,先编译各个需要的源码到 ../bin
|
||||
# win-* 表示在win平台编译位linux二进制,其实就是处理了 go env -w GOOS=linux
|
||||
make win-build-all
|
||||
|
||||
# 得到各个二进制程序之后,打包为镜像
|
||||
# 目前没有处理 Open-IM-SDK-Core ,需要的话可以自己单独处理这个模块
|
||||
make image-all
|
||||
|
||||
# docker-compose.yaml 分成了两部分,一部分是openIM的镜像容器 openim.yaml,一部分是依赖的环境 env.yaml
|
||||
# 两部分使用一个外部的网络来联通,所以首先创建用到的 network
|
||||
docker network create openim --attachable=true -d bridge
|
||||
|
||||
# 处理openim组件需要的挂载目录,主要是处理config目录
|
||||
mkdir ./config
|
||||
cp ./config.example.yaml ./config/config.yaml # 修改 ./config/config.yaml 内容,比如各个依赖组件的 host
|
||||
|
||||
# 然后拉起env.yaml
|
||||
docker-compose -f ./env.yaml up -d
|
||||
|
||||
# 等env 容器全部拉起成功之后,拉起openim.yaml
|
||||
docker-compose -f ./openim.yaml up -d
|
||||
|
||||
# 查看容器运行,推荐使用下 portainer ,web查看容器情况,查看日志等等
|
||||
docker container ps -a | grep openim
|
||||
|
||||
# 正常应该是查看api,demo等的容器日志,看到gin打印的路由日志才算是成功
|
||||
```
|
||||
21
deploy_k8s/admin_cms/admin_cms.Dockerfile
Normal file
21
deploy_k8s/admin_cms/admin_cms.Dockerfile
Normal file
@@ -0,0 +1,21 @@
|
||||
FROM ubuntu
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /Open-IM-Server
|
||||
ENV CMDDIR $WORKDIR/cmd
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_admin_cms $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
RUN apt-get -qq update \
|
||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config", "/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
42
deploy_k8s/admin_cms/deployment.yaml
Normal file
42
deploy_k8s/admin_cms/deployment.yaml
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: admin-cms-deployment
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: admin-cms # 选择这个指定标签执行
|
||||
replicas: 1 # 运行pod数量
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: admin-cms # 标签
|
||||
spec:
|
||||
containers:
|
||||
- name: admin-cms
|
||||
image: openim/admin_cms:v2.3.8
|
||||
# imagePullPolicy: Always #每次启动都重新拉取镜像
|
||||
ports:
|
||||
- containerPort: 10200
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
- name: USUAL_CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: openim-config
|
||||
- configMap:
|
||||
name: openim-usualconfig
|
||||
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
|
||||
20
deploy_k8s/api/api.Dockerfile
Normal file
20
deploy_k8s/api/api.Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
FROM ubuntu
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /Open-IM-Server
|
||||
ENV CMDDIR $WORKDIR/cmd
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_api $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
RUN apt-get -qq update \
|
||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
54
deploy_k8s/api/deployment.yaml
Normal file
54
deploy_k8s/api/deployment.yaml
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: api-deployment
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: api # 选择这个指定标签执行
|
||||
replicas: 1 # 运行pod数量
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: api # 标签
|
||||
spec:
|
||||
containers:
|
||||
- name: api
|
||||
image: openim/api:v2.3.8
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10002
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
- name: USUAL_CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: openim-config
|
||||
- configMap:
|
||||
name: openim-usualconfig
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: api
|
||||
spec:
|
||||
ports:
|
||||
- name: api-port
|
||||
protocol: TCP
|
||||
port: 10002
|
||||
targetPort: 10002
|
||||
selector:
|
||||
app: api
|
||||
type: NodePort
|
||||
20
deploy_k8s/auth/auth.Dockerfile
Normal file
20
deploy_k8s/auth/auth.Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
FROM ubuntu
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /Open-IM-Server
|
||||
ENV CMDDIR $WORKDIR/cmd
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_auth $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
RUN apt-get -qq update \
|
||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
40
deploy_k8s/auth/deployment.yaml
Normal file
40
deploy_k8s/auth/deployment.yaml
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: auth-deployment
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: auth # 选择这个指定标签执行
|
||||
replicas: 1 # 运行pod数量
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: auth # 标签
|
||||
spec:
|
||||
containers:
|
||||
- name: auth
|
||||
image: openim/auth:v2.3.8
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10160
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
- name: USUAL_CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: openim-config
|
||||
- configMap:
|
||||
name: openim-usualconfig
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
30
deploy_k8s/build_push_all_images.sh
Normal file
30
deploy_k8s/build_push_all_images.sh
Normal file
@@ -0,0 +1,30 @@
|
||||
#/bin/sh
|
||||
source ./path_info.cfg
|
||||
|
||||
# images version
|
||||
version=v2.3.8
|
||||
git pull
|
||||
cd ../script/; ./build_all_service.sh
|
||||
cd ../deploy_k8s/
|
||||
|
||||
for i in ${service[*]}
|
||||
do
|
||||
mv ../bin/open_im_${i} ./${i}/
|
||||
done
|
||||
|
||||
echo "move success"
|
||||
|
||||
echo "start to build images"
|
||||
|
||||
for i in ${service[*]}
|
||||
do
|
||||
echo "start to build images" $i
|
||||
cd $i
|
||||
image="openim/${i}:$version"
|
||||
docker build -t $image . -f ./${i}.Dockerfile
|
||||
echo "build ${dockerfile} success"
|
||||
docker push $image
|
||||
echo "push ${image} success "
|
||||
cd ..
|
||||
done
|
||||
|
||||
20
deploy_k8s/cache/cache.Dockerfile
vendored
Normal file
20
deploy_k8s/cache/cache.Dockerfile
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
FROM ubuntu
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /Open-IM-Server
|
||||
ENV CMDDIR $WORKDIR/cmd
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_cache $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
RUN apt-get -qq update \
|
||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
40
deploy_k8s/cache/deployment.yaml
vendored
Normal file
40
deploy_k8s/cache/deployment.yaml
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: cache-deployment
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: cache # 选择这个指定标签执行
|
||||
replicas: 1 # 运行pod数量
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: cache # 标签
|
||||
spec:
|
||||
containers:
|
||||
- name: cache
|
||||
image: openim/cache:v2.3.8
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10240
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
- name: USUAL_CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: openim-config
|
||||
- configMap:
|
||||
name: openim-usualconfig
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
19
deploy_k8s/cms_api/cms_api.Dockerfile
Normal file
19
deploy_k8s/cms_api/cms_api.Dockerfile
Normal file
@@ -0,0 +1,19 @@
|
||||
FROM ubuntu
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /Open-IM-Server
|
||||
ENV CMDDIR $WORKDIR/cmd
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_cms_api $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
RUN apt-get -qq update \
|
||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
54
deploy_k8s/cms_api/deployment.yaml
Normal file
54
deploy_k8s/cms_api/deployment.yaml
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: cms-api-deployment
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: cms-api # 选择这个指定标签执行
|
||||
replicas: 1 # 运行pod数量
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: cms-api # 标签
|
||||
spec:
|
||||
containers:
|
||||
- name: cms-api
|
||||
image: openim/cms_api:v2.3.8
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10006
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
- name: USUAL_CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: openim-config
|
||||
- configMap:
|
||||
name: openim-usualconfig
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: cms-api
|
||||
spec:
|
||||
ports:
|
||||
- name: cms-api-port
|
||||
protocol: TCP
|
||||
port: 10006
|
||||
targetPort: 10006
|
||||
selector:
|
||||
app: cms-api
|
||||
type: NodePort
|
||||
19
deploy_k8s/conversation/conversation.Dockerfile
Normal file
19
deploy_k8s/conversation/conversation.Dockerfile
Normal file
@@ -0,0 +1,19 @@
|
||||
FROM ubuntu
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /Open-IM-Server
|
||||
ENV CMDDIR $WORKDIR/cmd
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_conversation $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
RUN apt-get -qq update \
|
||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
42
deploy_k8s/conversation/deployment.yaml
Normal file
42
deploy_k8s/conversation/deployment.yaml
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: conversation-deployment
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: conversation # 选择这个指定标签执行
|
||||
replicas: 2 # 运行pod数量
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: conversation # 标签
|
||||
spec:
|
||||
containers:
|
||||
- name: conversation
|
||||
image: openim/conversation:v2.3.8
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10230
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
- name: USUAL_CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
|
||||
volumes:
|
||||
- name: config
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: openim-config
|
||||
- configMap:
|
||||
name: openim-usualconfig
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
|
||||
20
deploy_k8s/demo/demo.Dockerfile
Normal file
20
deploy_k8s/demo/demo.Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
FROM ubuntu
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /Open-IM-Server
|
||||
ENV CMDDIR $WORKDIR/cmd
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_demo $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
RUN apt-get -qq update \
|
||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
54
deploy_k8s/demo/deployment.yaml
Normal file
54
deploy_k8s/demo/deployment.yaml
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: demo-deployment
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: demo # 选择这个指定标签执行
|
||||
replicas: 1 # 运行pod数量
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: demo # 标签
|
||||
spec:
|
||||
containers:
|
||||
- name: demo
|
||||
image: openim/demo:v2.3.8
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10004
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
- name: USUAL_CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: openim-config
|
||||
- configMap:
|
||||
name: openim-usualconfig
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: demo
|
||||
spec:
|
||||
ports:
|
||||
- name: demo
|
||||
protocol: TCP
|
||||
port: 10004
|
||||
targetPort: 10004
|
||||
selector:
|
||||
app: demo
|
||||
type: NodePort
|
||||
41
deploy_k8s/friend/deployment.yaml
Normal file
41
deploy_k8s/friend/deployment.yaml
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: friend-deployment
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: friend # 选择这个指定标签执行
|
||||
replicas: 1 # 运行pod数量
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: friend # 标签
|
||||
spec:
|
||||
containers:
|
||||
- name: friend
|
||||
image: openim/friend:v2.3.8
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10120
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
- name: USUAL_CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: openim-config
|
||||
- configMap:
|
||||
name: openim-usualconfig
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
|
||||
20
deploy_k8s/friend/friend.Dockerfile
Normal file
20
deploy_k8s/friend/friend.Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
FROM ubuntu
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /Open-IM-Server
|
||||
ENV CMDDIR $WORKDIR/cmd
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_friend $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
RUN apt-get -qq update \
|
||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
40
deploy_k8s/group/deployment.yaml
Normal file
40
deploy_k8s/group/deployment.yaml
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: group-deployment
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: group # 选择这个指定标签执行
|
||||
replicas: 1 # 运行pod数量
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: group # 标签
|
||||
spec:
|
||||
containers:
|
||||
- name: group
|
||||
image: openim/group:v2.3.8
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10150
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
- name: USUAL_CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: openim-config
|
||||
- configMap:
|
||||
name: openim-usualconfig
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
20
deploy_k8s/group/group.Dockerfile
Normal file
20
deploy_k8s/group/group.Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
FROM ubuntu
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /Open-IM-Server
|
||||
ENV CMDDIR $WORKDIR/cmd
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_group $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
RUN apt-get -qq update \
|
||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
119
deploy_k8s/ingress.yaml
Normal file
119
deploy_k8s/ingress.yaml
Normal file
@@ -0,0 +1,119 @@
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: "nginx"
|
||||
nginx.ingress.kubernetes.io/proxy-http-version: "1.1"
|
||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
|
||||
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
|
||||
name: sdk-server-ingress
|
||||
spec:
|
||||
rules:
|
||||
- host: sdk-server.openim.xxx.com
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: sdk-server
|
||||
port:
|
||||
number: 10003
|
||||
path: /
|
||||
pathType: Prefix
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: "nginx"
|
||||
nginx.ingress.kubernetes.io/proxy-http-version: "1.1"
|
||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
|
||||
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
|
||||
name: msg-gateway-ingress
|
||||
spec:
|
||||
rules:
|
||||
- host: msg-gateway.openim.xxx.com
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: msg-gateway
|
||||
port:
|
||||
number: 10001
|
||||
path: /
|
||||
pathType: Prefix
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: "nginx"
|
||||
nginx.ingress.kubernetes.io/Access-Control-Allow-Origin: '*'
|
||||
nginx.ingress.kubernetes.io/cors-allow-headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,x-auth-token,Pagination
|
||||
nginx.ingress.kubernetes.io/cors-allow-methods: 'PUT, GET, POST, OPTIONS'
|
||||
nginx.ingress.kubernetes.io/cors-allow-origin: '*'
|
||||
nginx.ingress.kubernetes.io/enable-cors: 'true'
|
||||
nginx.ingress.kubernetes.io/service-weight: ''
|
||||
name: api-ingress
|
||||
spec:
|
||||
rules:
|
||||
- host: api.openim.xxx.com
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: api
|
||||
port:
|
||||
number: 10002
|
||||
path: /
|
||||
pathType: Prefix
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: "nginx"
|
||||
nginx.ingress.kubernetes.io/Access-Control-Allow-Origin: '*'
|
||||
nginx.ingress.kubernetes.io/cors-allow-headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,x-auth-token,Pagination
|
||||
nginx.ingress.kubernetes.io/cors-allow-methods: 'PUT, GET, POST, OPTIONS'
|
||||
nginx.ingress.kubernetes.io/cors-allow-origin: '*'
|
||||
nginx.ingress.kubernetes.io/enable-cors: 'true'
|
||||
nginx.ingress.kubernetes.io/service-weight: ''
|
||||
name: demo-ingress
|
||||
spec:
|
||||
rules:
|
||||
- host: demo.openim.xxx.com
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: demo
|
||||
port:
|
||||
number: 10004
|
||||
path: /
|
||||
pathType: Prefix
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: "nginx"
|
||||
nginx.ingress.kubernetes.io/Access-Control-Allow-Origin: '*'
|
||||
nginx.ingress.kubernetes.io/cors-allow-headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,x-auth-token,Pagination
|
||||
nginx.ingress.kubernetes.io/cors-allow-methods: 'PUT, GET, POST, OPTIONS'
|
||||
nginx.ingress.kubernetes.io/cors-allow-origin: '*'
|
||||
nginx.ingress.kubernetes.io/enable-cors: 'true'
|
||||
nginx.ingress.kubernetes.io/service-weight: ''
|
||||
name: cms-api-ingress
|
||||
spec:
|
||||
rules:
|
||||
- host: cms-api.openim.xxx.com
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: cms-api
|
||||
port:
|
||||
number: 10006
|
||||
path: /
|
||||
pathType: Prefix
|
||||
99
deploy_k8s/k8s_openim_deploy.md
Normal file
99
deploy_k8s/k8s_openim_deploy.md
Normal file
@@ -0,0 +1,99 @@
|
||||
#### openIM k8s部署文档
|
||||
### 1. 修改配置文件
|
||||
在Open-IM-SERVER根目录下修改config/config.yaml配置文件, 请确保以下修改的所有地址必须保证k8s pod能够访问
|
||||
1. 修改ETCD配置为自己的ETCD ip地址, 最好和k8s本身使用的ETCD分开
|
||||
2. 修改MySQL配置
|
||||
3. 修改Mongo配置
|
||||
4. 修改Redis配置
|
||||
5. 修改Kafka配置
|
||||
6. 将rpcRegisterIP修改为空, 此地址为每个rpc注册到ETCD的地址, 置空每个rpc将会将pod地址注册到ETCD, 才能正确rpc请求(重要)
|
||||
7. 如果使用minio作为对象存储, 还需要修改minio的地址
|
||||
8. 其他如果使用离线推送,需要修改push离线推送配置
|
||||
|
||||
|
||||
### 2. 项目根目录创建im configMap到k8s openim namespace
|
||||
1. 为open-IM项目创建单独命名空间
|
||||
```
|
||||
kubectl create namespace openim
|
||||
```
|
||||
2. 修改config.yaml后在项目根目录创建configmap, config/usualConfig.yaml只需要挂载不需要修改配置
|
||||
```
|
||||
kubectl -n openim create configmap openim-config --from-file=config/config.yaml
|
||||
kubectl -n openim create configmap openim-usualconfig --from-file=config/usualConfig.yaml
|
||||
```
|
||||
查看configmap
|
||||
```
|
||||
kubectl -n openim get configmap
|
||||
```
|
||||
|
||||
### 3(可选). 修改每个deployment.yml
|
||||
每个rpc的deployment在Open-IM-SERVER根目录deploy_k8s下
|
||||
给需要调度的node打上标签
|
||||
```
|
||||
kubectl get nodes
|
||||
kubectl label node k8s-node1 role=openIMworker
|
||||
```
|
||||
在deployment的spec.template.spec加上
|
||||
```
|
||||
nodeSelector:
|
||||
role: openIMworker
|
||||
```
|
||||
创建资源清单时添加上nodeSelector属性对应即可,
|
||||
修改每种服务数量,建议至少每种2个rpc。
|
||||
如果修改了config/config.yaml某些配置比如端口,同时需要修改对应deployment端口和ingress端口
|
||||
|
||||
|
||||
### 4. 修改ingress.yaml配置文件
|
||||
1. 需要安装ingress controller, 这里使用的是ingress-nginx, 使用其他类型的ingress controller需要更改ingress.class, 将host改为自己部署服务的host
|
||||
|
||||
### 5. 执行./kubectl_start.sh脚本
|
||||
1. 脚本给予可执行权限
|
||||
```
|
||||
chmod +x ./kubectl_start.sh ./kubectl_stop.sh
|
||||
```
|
||||
2. 启动k8s service和deployment
|
||||
```
|
||||
./kubectl_start.sh
|
||||
```
|
||||
3. 启动k8s ingress
|
||||
```
|
||||
kubectl -n openim apply -f ingress.yaml
|
||||
```
|
||||
kubectl 启动所有deployment, services, ingress
|
||||
|
||||
### 6. 查看k8s deployment service ingress状态
|
||||
|
||||
```
|
||||
kubectl -n openim get services
|
||||
kubectl -n openim get deployment
|
||||
kubectl -n openim get ingress
|
||||
kubectl -n openim get pods
|
||||
```
|
||||
检测服务可达
|
||||
```
|
||||
telnet msg-gateway.openim.xxx.com {{your_ingress_port}}
|
||||
telnet sdk-server.openim.xxx.com {{your_ingress_port}}
|
||||
telnet api.openim.xxx.com {{your_ingress_port}}
|
||||
telnet cms-api.openim.xxx.com {{your_ingress_port}}
|
||||
telnet demo.openim.xxx.com {{your_ingress_port}}
|
||||
```
|
||||
|
||||
#### openIM k8s更新
|
||||
1. 暂存配置文件,拉取代码
|
||||
```
|
||||
git stash push config/config.yaml
|
||||
git pull
|
||||
```
|
||||
2. 合并配置文件, 解决冲突
|
||||
```
|
||||
git stash pop
|
||||
```
|
||||
3. 重新生成configmap
|
||||
```
|
||||
kubectl -n openim create configmap config --from-file=config/config.yaml
|
||||
```
|
||||
4.修改所有deployment文件的spec.template.spec.image 改为新版本后在/deploy_k8s下重新执行
|
||||
```
|
||||
./kubectl_stop.sh
|
||||
./kubectl_start.sh
|
||||
```
|
||||
11
deploy_k8s/kubectl_start_all.sh
Executable file
11
deploy_k8s/kubectl_start_all.sh
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
source ./path_info.cfg
|
||||
|
||||
#mkdir -p /db/sdk #path for jssdk sqlite
|
||||
|
||||
for i in ${service[*]}
|
||||
do
|
||||
kubectl -n openim apply -f ./${i}/deployment.yaml
|
||||
done
|
||||
|
||||
36
deploy_k8s/kubectl_stop_all.sh
Executable file
36
deploy_k8s/kubectl_stop_all.sh
Executable file
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
service=(
|
||||
#api service file
|
||||
api
|
||||
cms-api
|
||||
#rpc service file
|
||||
user
|
||||
friend
|
||||
group
|
||||
auth
|
||||
admin-cms
|
||||
office
|
||||
organization
|
||||
conversation
|
||||
cache
|
||||
msg-gateway
|
||||
msg-transfer
|
||||
msg
|
||||
push
|
||||
sdk-server
|
||||
demo
|
||||
)
|
||||
|
||||
for i in ${service[*]}
|
||||
do
|
||||
kubectl -n openim delete deployment "${i}-deployment"
|
||||
done
|
||||
|
||||
kubectl -n openim delete service api
|
||||
kubectl -n openim delete service cms-api
|
||||
kubectl -n openim delete service sdk-server
|
||||
kubectl -n openim delete service msg-gateway
|
||||
kubectl -n openim delete service demo
|
||||
|
||||
echo done
|
||||
40
deploy_k8s/msg/deployment.yaml
Normal file
40
deploy_k8s/msg/deployment.yaml
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: msg-deployment
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: msg # 选择这个指定标签执行
|
||||
replicas: 1 # 运行pod数量
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: msg # 标签
|
||||
spec:
|
||||
containers:
|
||||
- name: msg
|
||||
image: openim/msg:v2.3.8
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10130
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
- name: USUAL_CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: openim-config
|
||||
- configMap:
|
||||
name: openim-usualconfig
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
21
deploy_k8s/msg/msg.Dockerfile
Normal file
21
deploy_k8s/msg/msg.Dockerfile
Normal file
@@ -0,0 +1,21 @@
|
||||
FROM ubuntu
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /Open-IM-Server
|
||||
ENV CMDDIR $WORKDIR/cmd
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_msg $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
RUN apt-get -qq update \
|
||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
59
deploy_k8s/msg_gateway/deployment.yaml
Normal file
59
deploy_k8s/msg_gateway/deployment.yaml
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: msg-gateway-deployment
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: msg-gateway # 选择这个指定标签执行
|
||||
replicas: 1 # 运行pod数量
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: msg-gateway # 标签
|
||||
spec:
|
||||
containers:
|
||||
- name: msg-gateway
|
||||
image: openim/msg_gateway:v2.3.8
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- name: rpc-port
|
||||
containerPort: 10140
|
||||
- name: ws-port
|
||||
containerPort: 10001
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
- name: USUAL_CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: openim-config
|
||||
- configMap:
|
||||
name: openim-usualconfig
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: msg-gateway
|
||||
spec:
|
||||
ports:
|
||||
- name: msg-gateway-port
|
||||
protocol: TCP
|
||||
port: 10001
|
||||
targetPort: ws-port
|
||||
selector:
|
||||
app: msg-gateway
|
||||
type: NodePort
|
||||
|
||||
|
||||
20
deploy_k8s/msg_gateway/msg_gateway.Dockerfile
Normal file
20
deploy_k8s/msg_gateway/msg_gateway.Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
FROM ubuntu
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /Open-IM-Server
|
||||
ENV CMDDIR $WORKDIR/cmd
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_msg_gateway $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
RUN apt-get -qq update \
|
||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
38
deploy_k8s/msg_transfer/deployment.yaml
Normal file
38
deploy_k8s/msg_transfer/deployment.yaml
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: msg-transfer-deployment
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: msg-transfer # 选择这个指定标签执行
|
||||
replicas: 1 # 运行pod数量
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: msg-transfer # 标签
|
||||
spec:
|
||||
containers:
|
||||
- name: msg-transfer
|
||||
image: openim/msg_transfer:v2.3.8
|
||||
# imagePullPolicy: Always
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
- name: USUAL_CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: openim-config
|
||||
- configMap:
|
||||
name: openim-usualconfig
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
20
deploy_k8s/msg_transfer/msg_transfer.Dockerfile
Normal file
20
deploy_k8s/msg_transfer/msg_transfer.Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
FROM ubuntu
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /Open-IM-Server
|
||||
ENV CMDDIR $WORKDIR/cmd
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_msg_transfer $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
RUN apt-get -qq update \
|
||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
40
deploy_k8s/office/deployment.yaml
Normal file
40
deploy_k8s/office/deployment.yaml
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: office-deployment
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: office # 选择这个指定标签执行
|
||||
replicas: 1 # 运行pod数量
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: office # 标签
|
||||
spec:
|
||||
containers:
|
||||
- name: office
|
||||
image: openim/office:v2.3.8
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10210
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
- name: USUAL_CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: openim-config
|
||||
- configMap:
|
||||
name: openim-usualconfig
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
21
deploy_k8s/office/office.Dockerfile
Normal file
21
deploy_k8s/office/office.Dockerfile
Normal file
@@ -0,0 +1,21 @@
|
||||
FROM ubuntu
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /Open-IM-Server
|
||||
ENV CMDDIR $WORKDIR/cmd
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_office $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
RUN apt-get -qq update \
|
||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
40
deploy_k8s/organization/deployment.yaml
Normal file
40
deploy_k8s/organization/deployment.yaml
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: organization-deployment
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: organization # 选择这个指定标签执行
|
||||
replicas: 1 # 运行pod数量
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: organization # 标签
|
||||
spec:
|
||||
containers:
|
||||
- name: organization
|
||||
image: openim/organization:v2.3.8
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10220
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
- name: USUAL_CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: openim-config
|
||||
- configMap:
|
||||
name: openim-usualconfig
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
21
deploy_k8s/organization/organization.Dockerfile
Normal file
21
deploy_k8s/organization/organization.Dockerfile
Normal file
@@ -0,0 +1,21 @@
|
||||
FROM ubuntu
|
||||
|
||||
# 设置固定的项目路径
|
||||
ENV WORKDIR /Open-IM-Server
|
||||
ENV CMDDIR $WORKDIR/cmd
|
||||
ENV CONFIG_NAME $WORKDIR/config/config.yaml
|
||||
|
||||
# 将可执行文件复制到目标目录
|
||||
ADD ./open_im_organization $WORKDIR/cmd/main
|
||||
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
RUN apt-get -qq update \
|
||||
&& apt-get -qq install -y --no-install-recommends ca-certificates curl
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user