Compare commits
3299 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 | ||
|
|
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 | ||
|
|
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 | ||
|
|
e77a156f29 | ||
|
|
0cc641d1f8 | ||
|
|
51cef0bc53 | ||
|
|
d6168cbad9 | ||
|
|
76f2ea01bf | ||
|
|
37a8ddbae6 | ||
|
|
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 |
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
|
||||
22
.gitignore
vendored
22
.gitignore
vendored
@@ -1,2 +1,22 @@
|
||||
bin
|
||||
logs
|
||||
.devcontainer
|
||||
components
|
||||
logs
|
||||
logs
|
||||
out-test
|
||||
.github
|
||||
.idea
|
||||
|
||||
|
||||
deploy/open_im_demo
|
||||
deploy/open_im_api
|
||||
deploy/open_im_msg_gateway
|
||||
deploy/open_im_msg_transfer
|
||||
deploy/open_im_push
|
||||
deploy/open_im_timer_task
|
||||
deploy/open_im_rpc_user
|
||||
deploy/open_im_rpc_friend
|
||||
deploy/open_im_rpc_group
|
||||
deploy/open_im_rpc_msg
|
||||
deploy/open_im_rpc_auth
|
||||
deploy/Open-IM-SDK-Core
|
||||
|
||||
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
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
# Open-IM-Server
|
||||
# Open-IM-Server
|
||||

|
||||
|
||||

|
||||
|
||||
@@ -92,6 +93,7 @@ All images are available at https://hub.docker.com/r/lyt1123/open_im_server
|
||||
4. Start docker-compose with one click(Docker automatically pulls all images)
|
||||
|
||||
```
|
||||
cd Open-IM-Server
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
@@ -99,6 +101,7 @@ All images are available at https://hub.docker.com/r/lyt1123/open_im_server
|
||||
|
||||
```
|
||||
./docker_check_service.sh
|
||||
./check_all.sh
|
||||
```
|
||||
|
||||

|
||||
@@ -154,4 +157,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 1667b0f4e2
25
cmd/open_im_api/Makefile
Normal file
25
cmd/open_im_api/Makefile
Normal file
@@ -0,0 +1,25 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_api
|
||||
BIN_DIR=../../bin/
|
||||
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make 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
231
cmd/open_im_api/main.go
Normal file
231
cmd/open_im_api/main.go
Normal file
@@ -0,0 +1,231 @@
|
||||
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/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"
|
||||
)
|
||||
|
||||
// @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.Default()
|
||||
r.Use(utils.CorsHandler())
|
||||
log.Info("load config: ", config.Config)
|
||||
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
// 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
|
||||
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)
|
||||
}
|
||||
//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)
|
||||
conversationGroup.POST("/set_conversation", conversation.SetConversation)
|
||||
conversationGroup.POST("/batch_set_conversation", conversation.BatchSetConversations)
|
||||
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)
|
||||
|
||||
}
|
||||
|
||||
initGroup := r.Group("/init")
|
||||
{
|
||||
initGroup.POST("/set_client_config", clientInit.SetClientInitConfig)
|
||||
initGroup.POST("/get_client_config", clientInit.GetClientInitConfig)
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
address = config.Config.Api.ListenIP + ":" + strconv.Itoa(*ginPort)
|
||||
fmt.Println("start api server, address: ", address)
|
||||
err := r.Run(address)
|
||||
if err != nil {
|
||||
log.Error("", "api run failed ", *ginPort, err.Error())
|
||||
}
|
||||
}
|
||||
25
cmd/open_im_cms_api/Makefile
Normal file
25
cmd/open_im_cms_api/Makefile
Normal file
@@ -0,0 +1,25 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_cms_api
|
||||
BIN_DIR=../../bin/
|
||||
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
29
cmd/open_im_cms_api/main.go
Normal file
29
cmd/open_im_cms_api/main.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/cms_api"
|
||||
"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)
|
||||
router.Run(address)
|
||||
}
|
||||
23
cmd/open_im_cron_task/Makefile
Normal file
23
cmd/open_im_cron_task/Makefile
Normal file
@@ -0,0 +1,23 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_cron_task
|
||||
BIN_DIR=../../bin/
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
11
cmd/open_im_cron_task/main.go
Normal file
11
cmd/open_im_cron_task/main.go
Normal file
@@ -0,0 +1,11 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/cron_task"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
fmt.Println("start cronTask")
|
||||
cronTask.StartCronTask()
|
||||
}
|
||||
25
cmd/open_im_demo/Makefile
Normal file
25
cmd/open_im_demo/Makefile
Normal file
@@ -0,0 +1,25 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_demo
|
||||
BIN_DIR=../../bin/
|
||||
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
78
cmd/open_im_demo/main.go
Normal file
78
cmd/open_im_demo/main.go
Normal file
@@ -0,0 +1,78 @@
|
||||
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"
|
||||
|
||||
"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())
|
||||
|
||||
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()
|
||||
fmt.Println("start demo api server, port: ", *ginPort)
|
||||
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)
|
||||
go register.OnboardingProcessRoutine()
|
||||
go register.ImportFriendRoutine()
|
||||
err := r.Run(address)
|
||||
if err != nil {
|
||||
log.Error("", "run failed ", *ginPort, err.Error())
|
||||
}
|
||||
}
|
||||
@@ -2,13 +2,11 @@
|
||||
|
||||
BINARY_NAME=open_im_msg_gateway
|
||||
BIN_DIR=../../bin/
|
||||
LAN_FILE=.go
|
||||
GO_FILE:=${BINARY_NAME}${LAN_FILE}
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o ${BINARY_NAME} ${GO_FILE}
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
26
cmd/open_im_msg_gateway/main.go
Normal file
26
cmd/open_im_msg_gateway/main.go
Normal file
@@ -0,0 +1,26 @@
|
||||
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
|
||||
rpcPort := flag.Int("rpc_port", defaultRpcPorts[0], "rpc listening port")
|
||||
wsPort := flag.Int("ws_port", defaultWsPorts[0], "ws listening port")
|
||||
flag.Parse()
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(1)
|
||||
fmt.Println("start rpc/msg_gateway server, port: ", *rpcPort, *wsPort)
|
||||
gate.Init(*rpcPort, *wsPort)
|
||||
gate.Run()
|
||||
wg.Wait()
|
||||
}
|
||||
@@ -2,13 +2,12 @@
|
||||
|
||||
BINARY_NAME=open_im_msg_transfer
|
||||
BIN_DIR=../../bin/
|
||||
LAN_FILE=.go
|
||||
GO_FILE:=${BINARY_NAME}${LAN_FILE}
|
||||
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o ${BINARY_NAME} ${GO_FILE}
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
22
cmd/open_im_msg_transfer/main.go
Normal file
22
cmd/open_im_msg_transfer/main.go
Normal file
@@ -0,0 +1,22 @@
|
||||
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)
|
||||
rpcPort := flag.Int("port", config.Config.Prometheus.MessageTransferPrometheusPort[0], "MessageTransferPrometheusPort default listen port")
|
||||
log.NewPrivateLog(constant.LogFileName)
|
||||
logic.Init()
|
||||
fmt.Println("start msg_transfer server")
|
||||
logic.Run(*rpcPort)
|
||||
wg.Wait()
|
||||
}
|
||||
@@ -2,13 +2,11 @@
|
||||
|
||||
BINARY_NAME=open_im_push
|
||||
BIN_DIR=../../bin/
|
||||
LAN_FILE=.go
|
||||
GO_FILE:=${BINARY_NAME}${LAN_FILE}
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o ${BINARY_NAME} ${GO_FILE}
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
24
cmd/open_im_push/main.go
Normal file
24
cmd/open_im_push/main.go
Normal file
@@ -0,0 +1,24 @@
|
||||
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")
|
||||
flag.Parse()
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(1)
|
||||
log.NewPrivateLog(constant.LogFileName)
|
||||
fmt.Println("start push rpc server, port: ", *rpcPort)
|
||||
logic.Init(*rpcPort)
|
||||
logic.Run()
|
||||
wg.Wait()
|
||||
}
|
||||
23
cmd/rpc/open_im_admin_cms/Makefile
Normal file
23
cmd/rpc/open_im_admin_cms/Makefile
Normal file
@@ -0,0 +1,23 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_admin_cms
|
||||
BIN_DIR=../../../bin/
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
17
cmd/rpc/open_im_admin_cms/main.go
Normal file
17
cmd/rpc/open_im_admin_cms/main.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
rpcMessageCMS "Open_IM/internal/rpc/admin_cms"
|
||||
"Open_IM/pkg/common/config"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImAdminCmsPort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "rpc listening port")
|
||||
flag.Parse()
|
||||
fmt.Println("start cms rpc server, port: ", *rpcPort)
|
||||
rpcServer := rpcMessageCMS.NewAdminCMSServer(*rpcPort)
|
||||
rpcServer.Run()
|
||||
}
|
||||
24
cmd/rpc/open_im_auth/Makefile
Normal file
24
cmd/rpc/open_im_auth/Makefile
Normal file
@@ -0,0 +1,24 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_auth
|
||||
BIN_DIR=../../../bin/
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
18
cmd/rpc/open_im_auth/main.go
Normal file
18
cmd/rpc/open_im_auth/main.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
rpcAuth "Open_IM/internal/rpc/auth"
|
||||
"Open_IM/pkg/common/config"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImAuthPort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "RpcToken default listen port 10800")
|
||||
flag.Parse()
|
||||
fmt.Println("start auth rpc server, port: ", *rpcPort)
|
||||
rpcServer := rpcAuth.NewRpcAuthServer(*rpcPort)
|
||||
rpcServer.Run()
|
||||
|
||||
}
|
||||
24
cmd/rpc/open_im_cache/Makefile
Normal file
24
cmd/rpc/open_im_cache/Makefile
Normal file
@@ -0,0 +1,24 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_cache
|
||||
BIN_DIR=../../../bin/
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
18
cmd/rpc/open_im_cache/main.go
Normal file
18
cmd/rpc/open_im_cache/main.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
rpcCache "Open_IM/internal/rpc/cache"
|
||||
"Open_IM/pkg/common/config"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImCachePort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "RpcToken default listen port 10800")
|
||||
flag.Parse()
|
||||
fmt.Println("start auth rpc server, port: ", *rpcPort)
|
||||
rpcServer := rpcCache.NewCacheServer(*rpcPort)
|
||||
rpcServer.Run()
|
||||
|
||||
}
|
||||
24
cmd/rpc/open_im_conversation/Makefile
Normal file
24
cmd/rpc/open_im_conversation/Makefile
Normal file
@@ -0,0 +1,24 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_conversation
|
||||
BIN_DIR=../../../bin/
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
18
cmd/rpc/open_im_conversation/main.go
Normal file
18
cmd/rpc/open_im_conversation/main.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
rpcConversation "Open_IM/internal/rpc/conversation"
|
||||
"Open_IM/pkg/common/config"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImConversationPort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "RpcConversation default listen port 11300")
|
||||
flag.Parse()
|
||||
fmt.Println("start conversation rpc server, port: ", *rpcPort)
|
||||
rpcServer := rpcConversation.NewRpcConversationServer(*rpcPort)
|
||||
rpcServer.Run()
|
||||
|
||||
}
|
||||
25
cmd/rpc/open_im_friend/Makefile
Normal file
25
cmd/rpc/open_im_friend/Makefile
Normal file
@@ -0,0 +1,25 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_friend
|
||||
BIN_DIR=../../../bin/
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
|
||||
17
cmd/rpc/open_im_friend/main.go
Normal file
17
cmd/rpc/open_im_friend/main.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/rpc/friend"
|
||||
"Open_IM/pkg/common/config"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImFriendPort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "get RpcFriendPort from cmd,default 12000 as port")
|
||||
flag.Parse()
|
||||
fmt.Println("start friend rpc server, port: ", *rpcPort)
|
||||
rpcServer := friend.NewFriendServer(*rpcPort)
|
||||
rpcServer.Run()
|
||||
}
|
||||
25
cmd/rpc/open_im_group/Makefile
Normal file
25
cmd/rpc/open_im_group/Makefile
Normal file
@@ -0,0 +1,25 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_group
|
||||
BIN_DIR=../../../bin/
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
|
||||
17
cmd/rpc/open_im_group/main.go
Normal file
17
cmd/rpc/open_im_group/main.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/rpc/group"
|
||||
"Open_IM/pkg/common/config"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImGroupPort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "get RpcGroupPort from cmd,default 16000 as port")
|
||||
flag.Parse()
|
||||
fmt.Println("start group rpc server, port: ", *rpcPort)
|
||||
rpcServer := group.NewGroupServer(*rpcPort)
|
||||
rpcServer.Run()
|
||||
}
|
||||
@@ -2,13 +2,11 @@
|
||||
|
||||
BINARY_NAME=open_im_msg
|
||||
BIN_DIR=../../../bin/
|
||||
LAN_FILE=.go
|
||||
GO_FILE:=${BINARY_NAME}${LAN_FILE}
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o ${BINARY_NAME} ${GO_FILE}
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
17
cmd/rpc/open_im_msg/main.go
Normal file
17
cmd/rpc/open_im_msg/main.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/rpc/msg"
|
||||
"Open_IM/pkg/common/config"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImMessagePort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "rpc listening port")
|
||||
flag.Parse()
|
||||
fmt.Println("start msg rpc server, port: ", *rpcPort)
|
||||
rpcServer := msg.NewRpcChatServer(*rpcPort)
|
||||
rpcServer.Run()
|
||||
}
|
||||
23
cmd/rpc/open_im_office/Makefile
Normal file
23
cmd/rpc/open_im_office/Makefile
Normal file
@@ -0,0 +1,23 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_office
|
||||
BIN_DIR=../../../bin/
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
17
cmd/rpc/open_im_office/main.go
Normal file
17
cmd/rpc/open_im_office/main.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
rpc "Open_IM/internal/rpc/office"
|
||||
"Open_IM/pkg/common/config"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImOfficePort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "rpc listening port")
|
||||
flag.Parse()
|
||||
fmt.Println("start office rpc server, port: ", *rpcPort)
|
||||
rpcServer := rpc.NewOfficeServer(*rpcPort)
|
||||
rpcServer.Run()
|
||||
}
|
||||
25
cmd/rpc/open_im_organization/Makefile
Normal file
25
cmd/rpc/open_im_organization/Makefile
Normal file
@@ -0,0 +1,25 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_organization
|
||||
BIN_DIR=../../../bin/
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
|
||||
17
cmd/rpc/open_im_organization/main.go
Normal file
17
cmd/rpc/open_im_organization/main.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/rpc/organization"
|
||||
"Open_IM/pkg/common/config"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImOrganizationPort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "get RpcOrganizationPort from cmd,default 11200 as port")
|
||||
flag.Parse()
|
||||
fmt.Println("start organization rpc server, port: ", *rpcPort)
|
||||
rpcServer := organization.NewServer(*rpcPort)
|
||||
rpcServer.Run()
|
||||
}
|
||||
25
cmd/rpc/open_im_user/Makefile
Normal file
25
cmd/rpc/open_im_user/Makefile
Normal file
@@ -0,0 +1,25 @@
|
||||
.PHONY: all build run gotool install clean help
|
||||
|
||||
BINARY_NAME=open_im_user
|
||||
BIN_DIR=../../../bin/
|
||||
|
||||
all: gotool build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
|
||||
|
||||
run:
|
||||
@go run ./
|
||||
|
||||
gotool:
|
||||
go fmt ./
|
||||
go vet ./
|
||||
|
||||
install:
|
||||
make build
|
||||
mv ${BINARY_NAME} ${BIN_DIR}
|
||||
|
||||
clean:
|
||||
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi
|
||||
|
||||
|
||||
17
cmd/rpc/open_im_user/main.go
Normal file
17
cmd/rpc/open_im_user/main.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"Open_IM/internal/rpc/user"
|
||||
"Open_IM/pkg/common/config"
|
||||
"flag"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
defaultPorts := config.Config.RpcPort.OpenImUserPort
|
||||
rpcPort := flag.Int("port", defaultPorts[0], "rpc listening port")
|
||||
flag.Parse()
|
||||
fmt.Println("start user rpc server, port: ", *rpcPort)
|
||||
rpcServer := user.NewUserServer(*rpcPort)
|
||||
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,50 +1,64 @@
|
||||
# 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 ] #单机部署时,默认即可
|
||||
|
||||
k8sMod: false #开启k8s模式 使用pod里面环境变量请求services调用服务 而并非etcd
|
||||
|
||||
mysql:
|
||||
dbMysqlAddress: [ 127.0.0.1:3306 ]
|
||||
dbMysqlUserName: root
|
||||
dbMysqlPassword: openIM
|
||||
dbMysqlDatabaseName: openIM
|
||||
dbTableName: eMsg
|
||||
dbMysqlAddress: [ 127.0.0.1:13306 ] #mysql地址 目前仅支持单机,默认即可
|
||||
dbMysqlUserName: root #mysql用户名,建议修改
|
||||
dbMysqlPassword: openIM # mysql密码,建议修改
|
||||
dbMysqlDatabaseName: openIM_v2 #默认即可
|
||||
dbTableName: eMsg #默认即可
|
||||
dbMsgTableNum: 1
|
||||
dbMaxOpenConns: 20
|
||||
dbMaxOpenConns: 100
|
||||
dbMaxIdleConns: 10
|
||||
dbMaxLifeTime: 120
|
||||
dbMaxLifeTime: 5
|
||||
|
||||
mongo:
|
||||
dbAddress: [ 127.0.0.1:27017 ]
|
||||
dbUri: ""#当dbUri值不为空则直接使用该值
|
||||
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: "* * * * *" # 每天凌晨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: openIM #redis密码 建议修改
|
||||
enableCluster: false #如果外部redis以集群方式启动,需要打开此开关
|
||||
|
||||
kafka:
|
||||
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
|
||||
consumergroupid:
|
||||
msgToMongo: mongo
|
||||
msgToTransfer: mongo
|
||||
msgToMongo: mongo_ex
|
||||
msgToMySql: mysql
|
||||
msgToPush: push
|
||||
|
||||
@@ -55,92 +69,702 @@ 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
|
||||
secretID: AKIDGNYVChzIQinu7QEgtNp0hnNgqcV8vZTC1
|
||||
secretKey: kz15vW83qM6dBUWIq681eBZA0c0vlIbe1
|
||||
minio: #MinIO 发送图片、视频、文件时需要,请自行申请后替换,必须修改。 客户端初始化InitSDK,中 object_storage参数为minio
|
||||
bucket: openim # 存储内容桶
|
||||
appBucket: app # 存储app的桶
|
||||
location: us-east-1
|
||||
endpoint: http://127.0.0.1:10005 #minio外网ip 这个ip是给客户端访问的
|
||||
endpointInner: http://127.0.0.1:10005 #minio内网地址 如果im server 可以通过内网访问到 minio就可以填写
|
||||
endpointInnerEnable: true #是否启用minio内网地址 启用可以让桶初始化,IM server连接minio走内网地址访问
|
||||
accessKeyID: user12345
|
||||
secretAccessKey: key12345
|
||||
storageTime: 50 #文件在minio中保存的时间
|
||||
isDistributedMod: false # 是否分布式多硬盘部署 默认docker-compose中为false
|
||||
ali: # ali oss
|
||||
regionID: "oss-cn-beijing"
|
||||
accessKeyID: ""
|
||||
accessKeySecret: ""
|
||||
stsEndpoint: "sts.cn-beijing.aliyun.com"
|
||||
ossEndpoint: "oss-cn-beijing.aliyuncs.com"
|
||||
bucket: "bucket1"
|
||||
finalHost: "http://bucket1.oss-cn-beijing.aliyuncs.com"
|
||||
stsDurationSeconds: 3600
|
||||
OssRoleArn: "acs:ram::xxx:role/xxx"
|
||||
aws:
|
||||
accessKeyID: 1 #AssumeRole用户关联的accessKeyID
|
||||
accessKeySecret: 2 #AssumeRole用户关联的accessKeySecrect
|
||||
region: ap-southeast-1 #分区
|
||||
bucket: ouyang #桶
|
||||
finalHost: ouyang.s3.ap-southeast-1.amazonaws.com #对外Host
|
||||
roleArn: arn:aws:iam::192209831083:role/AWS_S3_FOR_OUYANG #RoleArn
|
||||
externalId: AssumeRoleExtend #角色扩展Id
|
||||
roleSessionName: Required-AWS-ID-OPENIM #角色SESSION名称
|
||||
|
||||
dtm:
|
||||
serverURL: 127.0.0.1:10007
|
||||
|
||||
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
|
||||
android:
|
||||
accessID: 111
|
||||
secretKey: 111
|
||||
jpns:
|
||||
enable: false
|
||||
jpns: #极光推送 在极光后台申请后,修改以下四项,必须修改
|
||||
appKey: cf47465a368f24c659608e7e
|
||||
masterSecret: 02204efe3f3832947a236ee5
|
||||
pushUrl: "https://api.jpush.cn/v3/push"
|
||||
pushIntent: "intent:#Intent;component=io.openim.app.enterprisechat/io.openim.app.enterprisechat.MainActivity;end"
|
||||
enable: true
|
||||
getui: #个推推送
|
||||
pushUrl: "https://restapi.getui.com/v2/$appId"
|
||||
masterSecret: ""
|
||||
appKey: ""
|
||||
intent: ""
|
||||
enable: false
|
||||
fcm: #firebase cloud message 消息推送
|
||||
serviceAccount: "openim-5c6c0-firebase-adminsdk-ppwol-8765884a78.json" #帐号文件,此处需要改修配置,并且这个文件放在 config目录下
|
||||
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
|
||||
# 多端互踢策略
|
||||
# 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: "open_im_server" #token生成相关,默认即可
|
||||
# Token effective time day as a unit
|
||||
accessExpire: 90 #token过期时间(天) 默认即可
|
||||
messageverify:
|
||||
friendVerify: false
|
||||
|
||||
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
|
||||
callbackWordFilter:
|
||||
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 # 回调超时是否继续离线推送
|
||||
|
||||
|
||||
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"
|
||||
|
||||
#####################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: LTAI5tJPkn4HuuePdiLdGqe7
|
||||
accessKeySecret: 4n9OJ7ZCVN1U6KeHDAtOyNeVZcjOuV
|
||||
signName: 托云信息技术
|
||||
verificationCodeTemplateCode: SMS_226810164
|
||||
enable: false
|
||||
tencentsms: #腾讯云短信配置,在腾讯云申请成功后,修改以下选项,enable为true则必须修改
|
||||
appID: 2400000648
|
||||
region: "ap-singapore"
|
||||
secretID: IKIDra4JPGsFMDwQedMq42lESQBgwwgBQQAe
|
||||
secretKey: HI6fz4uUotjJdiX6QUIrAE2buxlKdgU2
|
||||
signName: ""
|
||||
verificationCodeTemplateCode: 2902877
|
||||
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: "openIM"
|
||||
senderMail: "765567899@qq.com"
|
||||
senderAuthorizationCode: "gxyausfoevlzbfag"
|
||||
smtpAddr: "smtp.qq.com"
|
||||
smtpPort: 25 #需开放此端口 出口方向
|
||||
testDepartMentID: 001
|
||||
imAPIURL: http://127.0.0.1:10002
|
||||
onboardProcess: false # 是否开启注册流程
|
||||
createOrganizationUserAndJoinDepartment: false
|
||||
joinDepartmentIDList: [] # 用户注册进来默认加的部门ID列表 不填就随机
|
||||
joinDepartmentGroups: false # 注册是否加部门群
|
||||
oaNotification: false # 注册是否发送OA通知
|
||||
|
||||
rtc:
|
||||
signalTimeout: 35
|
||||
|
||||
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 ]
|
||||
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: 1302656840
|
||||
region: ap-chengdu
|
||||
bucket: echat-1302656840
|
||||
secretID: AKIDGNYVChzIQinu7QEgtNp0hnNgqcV8vZTC
|
||||
secretKey: kz15vW83qM6dBUWIq681eBZA0c0vlIbe
|
||||
|
||||
|
||||
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: 1600018281
|
||||
secretKey: 3cd68a77a95b89e5089a1aca523f318f
|
||||
android:
|
||||
accessID: 111
|
||||
secretKey: 111
|
||||
jpns:
|
||||
appKey: cf47465a368f24c659608e7e
|
||||
masterSecret: 02204efe3f3832947a236ee5
|
||||
pushUrl: "https://api.jpush.cn/v3/push"
|
||||
pushIntent: "intent:#Intent;component=io.openim.app.enterprisechat/io.openim.app.enterprisechat.MainActivity;end"
|
||||
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: LTAI5tJPkn4HuuePdiLdGqe71
|
||||
accessKeySecret: 4n9OJ7ZCVN1U6KeHDAtOyNeVZcjOuV1
|
||||
signName: OpenIM Corporation
|
||||
verificationCodeTemplateCode: SMS_2268101641
|
||||
superCode: 666666
|
||||
mail:
|
||||
title: "openIM"
|
||||
senderMail: "1765567899@qq.com"
|
||||
senderAuthorizationCode: "1gxyausfoevlzbfag"
|
||||
smtpAddr: "smtp.qq.com"
|
||||
smtpPort: 25
|
||||
|
||||
|
||||
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打印的路由日志才算是成功
|
||||
```
|
||||
20
deploy_k8s/admin_cms/admin_cms.Dockerfile
Normal file
20
deploy_k8s/admin_cms/admin_cms.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_admin_cms $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config", "/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
35
deploy_k8s/admin_cms/deployment.yaml
Normal file
35
deploy_k8s/admin_cms/deployment.yaml
Normal file
@@ -0,0 +1,35 @@
|
||||
---
|
||||
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.0release
|
||||
# imagePullPolicy: Always #每次启动都重新拉取镜像
|
||||
ports:
|
||||
- containerPort: 10200
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: openim-config
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
|
||||
19
deploy_k8s/api/api.Dockerfile
Normal file
19
deploy_k8s/api/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_api $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
48
deploy_k8s/api/deployment.yaml
Normal file
48
deploy_k8s/api/deployment.yaml
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
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.0release
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10002
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: openim-config
|
||||
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
|
||||
19
deploy_k8s/auth/auth.Dockerfile
Normal file
19
deploy_k8s/auth/auth.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_auth $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
34
deploy_k8s/auth/deployment.yaml
Normal file
34
deploy_k8s/auth/deployment.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
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.0release
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10160
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: openim-config
|
||||
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.2.0
|
||||
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
|
||||
|
||||
19
deploy_k8s/cache/cache.Dockerfile
vendored
Normal file
19
deploy_k8s/cache/cache.Dockerfile
vendored
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_cache $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
34
deploy_k8s/cache/deployment.yaml
vendored
Normal file
34
deploy_k8s/cache/deployment.yaml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
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.0release
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10240
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: openim-config
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
18
deploy_k8s/cms_api/cms_api.Dockerfile
Normal file
18
deploy_k8s/cms_api/cms_api.Dockerfile
Normal file
@@ -0,0 +1,18 @@
|
||||
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
|
||||
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
48
deploy_k8s/cms_api/deployment.yaml
Normal file
48
deploy_k8s/cms_api/deployment.yaml
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
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.0release
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10006
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: openim-config
|
||||
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
|
||||
18
deploy_k8s/conversation/conversation.Dockerfile
Normal file
18
deploy_k8s/conversation/conversation.Dockerfile
Normal file
@@ -0,0 +1,18 @@
|
||||
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
|
||||
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
36
deploy_k8s/conversation/deployment.yaml
Normal file
36
deploy_k8s/conversation/deployment.yaml
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
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.0release
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10230
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: openim-config
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
|
||||
19
deploy_k8s/demo/demo.Dockerfile
Normal file
19
deploy_k8s/demo/demo.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_demo $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
48
deploy_k8s/demo/deployment.yaml
Normal file
48
deploy_k8s/demo/deployment.yaml
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
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.0release
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10004
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: openim-config
|
||||
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
|
||||
35
deploy_k8s/friend/deployment.yaml
Normal file
35
deploy_k8s/friend/deployment.yaml
Normal file
@@ -0,0 +1,35 @@
|
||||
---
|
||||
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.0release
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10120
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: openim-config
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
|
||||
19
deploy_k8s/friend/friend.Dockerfile
Normal file
19
deploy_k8s/friend/friend.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_friend $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
34
deploy_k8s/group/deployment.yaml
Normal file
34
deploy_k8s/group/deployment.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
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.0release
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10150
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: openim-config
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
19
deploy_k8s/group/group.Dockerfile
Normal file
19
deploy_k8s/group/group.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_group $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
|
||||
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离线推送配置
|
||||
9. 修改demo中的imAPIURL字段为openIM api的ingress或者service地址, 需要让demo的pod能正确请求到(重要)
|
||||
10. 其他非必须配置修改, 如短信,推送等
|
||||
|
||||
### 2. 项目根目录创建im configMap到k8s openim namespace
|
||||
1. 为open-IM项目创建单独命名空间
|
||||
```
|
||||
kubectl create namespace openim
|
||||
```
|
||||
2. 在项目根目录通过config/config.yaml
|
||||
```
|
||||
kubectl -n openim create configmap config --from-file=config/config.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
|
||||
|
||||
38
deploy_k8s/kubectl_stop_all.sh
Executable file
38
deploy_k8s/kubectl_stop_all.sh
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
service=(
|
||||
#api service file
|
||||
api
|
||||
cms-api
|
||||
#rpc service file
|
||||
user
|
||||
friend
|
||||
group
|
||||
auth
|
||||
admin-cms
|
||||
message-cms
|
||||
statistics
|
||||
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
|
||||
34
deploy_k8s/message_cms/deployment.yaml
Normal file
34
deploy_k8s/message_cms/deployment.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: message-cms-deployment
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: message-cms # 选择这个指定标签执行
|
||||
replicas: 1 # 运行pod数量
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: message-cms # 标签
|
||||
spec:
|
||||
containers:
|
||||
- name: message-cms
|
||||
image: openim/message_cms:v2.3.0release
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10190
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: openim-config
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
19
deploy_k8s/message_cms/message_cms.Dockerfile
Normal file
19
deploy_k8s/message_cms/message_cms.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_message_cms $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
34
deploy_k8s/msg/deployment.yaml
Normal file
34
deploy_k8s/msg/deployment.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
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.0release
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10130
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: openim-config
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
20
deploy_k8s/msg/msg.Dockerfile
Normal file
20
deploy_k8s/msg/msg.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 $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
53
deploy_k8s/msg_gateway/deployment.yaml
Normal file
53
deploy_k8s/msg_gateway/deployment.yaml
Normal file
@@ -0,0 +1,53 @@
|
||||
---
|
||||
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.0release
|
||||
# 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"
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: openim-config
|
||||
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
|
||||
|
||||
|
||||
19
deploy_k8s/msg_gateway/msg_gateway.Dockerfile
Normal file
19
deploy_k8s/msg_gateway/msg_gateway.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_msg_gateway $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
32
deploy_k8s/msg_transfer/deployment.yaml
Normal file
32
deploy_k8s/msg_transfer/deployment.yaml
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
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.0release
|
||||
# imagePullPolicy: Always
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: openim-config
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
19
deploy_k8s/msg_transfer/msg_transfer.Dockerfile
Normal file
19
deploy_k8s/msg_transfer/msg_transfer.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_msg_transfer $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
34
deploy_k8s/office/deployment.yaml
Normal file
34
deploy_k8s/office/deployment.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
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.0release
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10210
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: openim-config
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
20
deploy_k8s/office/office.Dockerfile
Normal file
20
deploy_k8s/office/office.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_office $WORKDIR/cmd/main
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
34
deploy_k8s/organization/deployment.yaml
Normal file
34
deploy_k8s/organization/deployment.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
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.0release
|
||||
# imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 10220
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /Open-IM-Server/config
|
||||
readOnly: true
|
||||
env:
|
||||
- name: CONFIG_NAME
|
||||
value: "/Open-IM-Server"
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: openim-config
|
||||
strategy: #更新策略
|
||||
type: RollingUpdate # 滚动更新
|
||||
20
deploy_k8s/organization/organization.Dockerfile
Normal file
20
deploy_k8s/organization/organization.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_organization $WORKDIR/cmd/main
|
||||
|
||||
|
||||
# 创建用于挂载的几个目录,添加可执行权限
|
||||
RUN mkdir $WORKDIR/logs $WORKDIR/config $WORKDIR/script && \
|
||||
chmod +x $WORKDIR/cmd/main
|
||||
|
||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/config","/Open-IM-Server/script"]
|
||||
|
||||
|
||||
WORKDIR $CMDDIR
|
||||
CMD ./main
|
||||
24
deploy_k8s/path_info.cfg
Normal file
24
deploy_k8s/path_info.cfg
Normal file
@@ -0,0 +1,24 @@
|
||||
#/bin/sh
|
||||
service=(
|
||||
#api service file
|
||||
api
|
||||
cms_api
|
||||
#rpc service file
|
||||
user
|
||||
friend
|
||||
group
|
||||
auth
|
||||
admin_cms
|
||||
message_cms
|
||||
statistics
|
||||
office
|
||||
organization
|
||||
conversation
|
||||
cache
|
||||
msg_gateway
|
||||
msg_transfer
|
||||
msg
|
||||
push
|
||||
sdk_server
|
||||
demo
|
||||
)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user