mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-10-31 16:32:12 +08:00 
			
		
		
		
	feat: add docker compose fix
Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com>
This commit is contained in:
		
						commit
						b818259100
					
				| @ -104,9 +104,21 @@ git merge release-v3.1 | ||||
| # Push the updates to the main branch | ||||
| git push origin main | ||||
| ``` | ||||
| ##  Release Process | ||||
| 
 | ||||
| ``` | ||||
| Publishing v3.2.0: A Step-by-Step Guide | ||||
| (1) Create the tag v3.2.0-alpha.0 from the main branch. | ||||
| (2) Bugs are fixed on the main branch. Once the bugs are resolved, tag the main branch as v3.2.0-rc.0. | ||||
| (3) After further testing, if v3.2.0-rc.0 is deemed stable, create a branch named release-v3.2 from the tag v3.2.0-rc.0. | ||||
| (4) From the release-v3.2 branch, create the tag v3.2.0. At this point, the official release of v3.2.0 is complete. | ||||
| 
 | ||||
| After the release of v3.2.0, if urgent bugs are discovered, fix them on the release-v3.2 branch. Then, submit two pull requests (PRs) to both the main and release-v3.2 branches. Tag the release-v3.2 branch as v3.2.1. | ||||
| ``` | ||||
| 
 | ||||
| Throughout this process, active communication within the team is pivotal to maintaining transparency and consensus on changes. | ||||
| 
 | ||||
| ## Docker Images Version Management | ||||
| 
 | ||||
| For more details on managing Docker image versions, visit [OpenIM Docker Images Administration](https://github.com/OpenIMSDK/Open-IM-Server/blob/main/docs/conversions/images.md). | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							| @ -37,7 +37,7 @@ require ( | ||||
| require github.com/google/uuid v1.3.0 | ||||
| 
 | ||||
| require ( | ||||
| 	github.com/OpenIMSDK/protocol v0.0.11 | ||||
| 	github.com/OpenIMSDK/protocol v0.0.12 | ||||
| 	github.com/OpenIMSDK/tools v0.0.13 | ||||
| 	github.com/aliyun/aliyun-oss-go-sdk v2.2.8+incompatible | ||||
| 	github.com/go-redis/redis v6.15.9+incompatible | ||||
|  | ||||
							
								
								
									
										4
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.sum
									
									
									
									
									
								
							| @ -17,8 +17,8 @@ cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7Biccwk | ||||
| firebase.google.com/go v3.13.0+incompatible h1:3TdYC3DDi6aHn20qoRkxwGqNgdjtblwVAyRLQwGn/+4= | ||||
| firebase.google.com/go v3.13.0+incompatible/go.mod h1:xlah6XbEyW6tbfSklcfe5FHJIwjt8toICdV5Wh9ptHs= | ||||
| github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= | ||||
| github.com/OpenIMSDK/protocol v0.0.11 h1:3sWujfQhO1I1Da1b8UScaZcc0DNunSbNiH3DagZB/AA= | ||||
| github.com/OpenIMSDK/protocol v0.0.11/go.mod h1:F25dFrwrIx3lkNoiuf6FkCfxuwf8L4Z8UIsdTHP/r0Y= | ||||
| github.com/OpenIMSDK/protocol v0.0.12 h1:79rBgpKBF4TMy5tkLH3DQNiZFVmxKMP7VyX+kmJh4d8= | ||||
| github.com/OpenIMSDK/protocol v0.0.12/go.mod h1:F25dFrwrIx3lkNoiuf6FkCfxuwf8L4Z8UIsdTHP/r0Y= | ||||
| github.com/OpenIMSDK/tools v0.0.13 h1:rcw4HS8S2DPZR9UOBxD8/ol9UBMzXBypzOVEytDRIMo= | ||||
| github.com/OpenIMSDK/tools v0.0.13/go.mod h1:eg+q4A34Qmu73xkY0mt37FHGMCMfC6CtmOnm0kFEGFI= | ||||
| github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM= | ||||
|  | ||||
							
								
								
									
										304
									
								
								go.work.sum
									
									
									
									
									
								
							
							
						
						
									
										304
									
								
								go.work.sum
									
									
									
									
									
								
							| @ -1,23 +1,323 @@ | ||||
| cloud.google.com/go/iam v1.1.1 h1:lW7fzj15aVIXYHREOqjRBV9PsH0Z6u8Y46a1YGvQP4Y= | ||||
| cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= | ||||
| cloud.google.com/go/accessapproval v1.7.1 h1:/5YjNhR6lzCvmJZAnByYkfEgWjfAKwYP6nkuTk6nKFE= | ||||
| cloud.google.com/go/accessapproval v1.7.1/go.mod h1:JYczztsHRMK7NTXb6Xw+dwbs/WnOJxbo/2mTI+Kgg68= | ||||
| cloud.google.com/go/accesscontextmanager v1.8.1 h1:WIAt9lW9AXtqw/bnvrEUaE8VG/7bAAeMzRCBGMkc4+w= | ||||
| cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo= | ||||
| cloud.google.com/go/aiplatform v1.48.0 h1:M5davZWCTzE043rJCn+ZLW6hSxfG1KAx4vJTtas2/ec= | ||||
| cloud.google.com/go/aiplatform v1.48.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= | ||||
| cloud.google.com/go/analytics v0.21.3 h1:TFBC1ZAqX9/jL56GEXdLrVe5vT3I22bDVWyDwZX4IEg= | ||||
| cloud.google.com/go/analytics v0.21.3/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= | ||||
| cloud.google.com/go/apigateway v1.6.1 h1:aBSwCQPcp9rZ0zVEUeJbR623palnqtvxJlUyvzsKGQc= | ||||
| cloud.google.com/go/apigateway v1.6.1/go.mod h1:ufAS3wpbRjqfZrzpvLC2oh0MFlpRJm2E/ts25yyqmXA= | ||||
| cloud.google.com/go/apigeeconnect v1.6.1 h1:6u/jj0P2c3Mcm+H9qLsXI7gYcTiG9ueyQL3n6vCmFJM= | ||||
| cloud.google.com/go/apigeeconnect v1.6.1/go.mod h1:C4awq7x0JpLtrlQCr8AzVIzAaYgngRqWf9S5Uhg+wWs= | ||||
| cloud.google.com/go/apigeeregistry v0.7.1 h1:hgq0ANLDx7t2FDZDJQrCMtCtddR/pjCqVuvQWGrQbXw= | ||||
| cloud.google.com/go/apigeeregistry v0.7.1/go.mod h1:1XgyjZye4Mqtw7T9TsY4NW10U7BojBvG4RMD+vRDrIw= | ||||
| cloud.google.com/go/appengine v1.8.1 h1:J+aaUZ6IbTpBegXbmEsh8qZZy864ZVnOoWyfa1XSNbI= | ||||
| cloud.google.com/go/appengine v1.8.1/go.mod h1:6NJXGLVhZCN9aQ/AEDvmfzKEfoYBlfB80/BHiKVputY= | ||||
| cloud.google.com/go/area120 v0.8.1 h1:wiOq3KDpdqXmaHzvZwKdpoM+3lDcqsI2Lwhyac7stss= | ||||
| cloud.google.com/go/area120 v0.8.1/go.mod h1:BVfZpGpB7KFVNxPiQBuHkX6Ed0rS51xIgmGyjrAfzsg= | ||||
| cloud.google.com/go/artifactregistry v1.14.1 h1:k6hNqab2CubhWlGcSzunJ7kfxC7UzpAfQ1UPb9PDCKI= | ||||
| cloud.google.com/go/artifactregistry v1.14.1/go.mod h1:nxVdG19jTaSTu7yA7+VbWL346r3rIdkZ142BSQqhn5E= | ||||
| cloud.google.com/go/asset v1.14.1 h1:vlHdznX70eYW4V1y1PxocvF6tEwxJTTarwIGwOhFF3U= | ||||
| cloud.google.com/go/asset v1.14.1/go.mod h1:4bEJ3dnHCqWCDbWJ/6Vn7GVI9LerSi7Rfdi03hd+WTQ= | ||||
| cloud.google.com/go/assuredworkloads v1.11.1 h1:yaO0kwS+SnhVSTF7BqTyVGt3DTocI6Jqo+S3hHmCwNk= | ||||
| cloud.google.com/go/assuredworkloads v1.11.1/go.mod h1:+F04I52Pgn5nmPG36CWFtxmav6+7Q+c5QyJoL18Lry0= | ||||
| cloud.google.com/go/automl v1.13.1 h1:iP9iQurb0qbz+YOOMfKSEjhONA/WcoOIjt6/m+6pIgo= | ||||
| cloud.google.com/go/automl v1.13.1/go.mod h1:1aowgAHWYZU27MybSCFiukPO7xnyawv7pt3zK4bheQE= | ||||
| cloud.google.com/go/baremetalsolution v1.1.1 h1:0Ge9PQAy6cZ1tRrkc44UVgYV15nw2TVnzJzYsMHXF+E= | ||||
| cloud.google.com/go/baremetalsolution v1.1.1/go.mod h1:D1AV6xwOksJMV4OSlWHtWuFNZZYujJknMAP4Qa27QIA= | ||||
| cloud.google.com/go/batch v1.3.1 h1:uE0Q//W7FOGPjf7nuPiP0zoE8wOT3ngoIO2HIet0ilY= | ||||
| cloud.google.com/go/batch v1.3.1/go.mod h1:VguXeQKXIYaeeIYbuozUmBR13AfL4SJP7IltNPS+A4A= | ||||
| cloud.google.com/go/beyondcorp v1.0.0 h1:VPg+fZXULQjs8LiMeWdLaB5oe8G9sEoZ0I0j6IMiG1Q= | ||||
| cloud.google.com/go/beyondcorp v1.0.0/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= | ||||
| cloud.google.com/go/bigquery v1.53.0 h1:K3wLbjbnSlxhuG5q4pntHv5AEbQM1QqHKGYgwFIqOTg= | ||||
| cloud.google.com/go/bigquery v1.53.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= | ||||
| cloud.google.com/go/billing v1.16.0 h1:1iktEAIZ2uA6KpebC235zi/rCXDdDYQ0bTXTNetSL80= | ||||
| cloud.google.com/go/billing v1.16.0/go.mod h1:y8vx09JSSJG02k5QxbycNRrN7FGZB6F3CAcgum7jvGA= | ||||
| cloud.google.com/go/binaryauthorization v1.6.1 h1:cAkOhf1ic92zEN4U1zRoSupTmwmxHfklcp1X7CCBKvE= | ||||
| cloud.google.com/go/binaryauthorization v1.6.1/go.mod h1:TKt4pa8xhowwffiBmbrbcxijJRZED4zrqnwZ1lKH51U= | ||||
| cloud.google.com/go/certificatemanager v1.7.1 h1:uKsohpE0hiobx1Eak9jNcPCznwfB6gvyQCcS28Ah9E8= | ||||
| cloud.google.com/go/certificatemanager v1.7.1/go.mod h1:iW8J3nG6SaRYImIa+wXQ0g8IgoofDFRp5UMzaNk1UqI= | ||||
| cloud.google.com/go/channel v1.16.0 h1:dqRkK2k7Ll/HHeYGxv18RrfhozNxuTJRkspW0iaFZoY= | ||||
| cloud.google.com/go/channel v1.16.0/go.mod h1:eN/q1PFSl5gyu0dYdmxNXscY/4Fi7ABmeHCJNf/oHmc= | ||||
| cloud.google.com/go/cloudbuild v1.13.0 h1:YBbAWcvE4x6xPWTyS+OU4eiUpz5rCS3VCM/aqmfddPA= | ||||
| cloud.google.com/go/cloudbuild v1.13.0/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= | ||||
| cloud.google.com/go/clouddms v1.6.1 h1:rjR1nV6oVf2aNNB7B5uz1PDIlBjlOiBgR+q5n7bbB7M= | ||||
| cloud.google.com/go/clouddms v1.6.1/go.mod h1:Ygo1vL52Ov4TBZQquhz5fiw2CQ58gvu+PlS6PVXCpZI= | ||||
| cloud.google.com/go/cloudtasks v1.12.1 h1:cMh9Q6dkvh+Ry5LAPbD/U2aw6KAqdiU6FttwhbTo69w= | ||||
| cloud.google.com/go/cloudtasks v1.12.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= | ||||
| cloud.google.com/go/contactcenterinsights v1.10.0 h1:YR2aPedGVQPpFBZXJnPkqRj8M//8veIZZH5ZvICoXnI= | ||||
| cloud.google.com/go/contactcenterinsights v1.10.0/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= | ||||
| cloud.google.com/go/container v1.24.0 h1:N51t/cgQJFqDD/W7Mb+IvmAPHrf8AbPx7Bb7aF4lROE= | ||||
| cloud.google.com/go/container v1.24.0/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= | ||||
| cloud.google.com/go/containeranalysis v0.10.1 h1:SM/ibWHWp4TYyJMwrILtcBtYKObyupwOVeceI9pNblw= | ||||
| cloud.google.com/go/containeranalysis v0.10.1/go.mod h1:Ya2jiILITMY68ZLPaogjmOMNkwsDrWBSTyBubGXO7j0= | ||||
| cloud.google.com/go/datacatalog v1.16.0 h1:qVeQcw1Cz93/cGu2E7TYUPh8Lz5dn5Ws2siIuQ17Vng= | ||||
| cloud.google.com/go/datacatalog v1.16.0/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= | ||||
| cloud.google.com/go/dataflow v0.9.1 h1:VzG2tqsk/HbmOtq/XSfdF4cBvUWRK+S+oL9k4eWkENQ= | ||||
| cloud.google.com/go/dataflow v0.9.1/go.mod h1:Wp7s32QjYuQDWqJPFFlnBKhkAtiFpMTdg00qGbnIHVw= | ||||
| cloud.google.com/go/dataform v0.8.1 h1:xcWso0hKOoxeW72AjBSIp/UfkvpqHNzzS0/oygHlcqY= | ||||
| cloud.google.com/go/dataform v0.8.1/go.mod h1:3BhPSiw8xmppbgzeBbmDvmSWlwouuJkXsXsb8UBih9M= | ||||
| cloud.google.com/go/datafusion v1.7.1 h1:eX9CZoyhKQW6g1Xj7+RONeDj1mV8KQDKEB9KLELX9/8= | ||||
| cloud.google.com/go/datafusion v1.7.1/go.mod h1:KpoTBbFmoToDExJUso/fcCiguGDk7MEzOWXUsJo0wsI= | ||||
| cloud.google.com/go/datalabeling v0.8.1 h1:zxsCD/BLKXhNuRssen8lVXChUj8VxF3ofN06JfdWOXw= | ||||
| cloud.google.com/go/datalabeling v0.8.1/go.mod h1:XS62LBSVPbYR54GfYQsPXZjTW8UxCK2fkDciSrpRFdY= | ||||
| cloud.google.com/go/dataplex v1.9.0 h1:yoBWuuUZklYp7nx26evIhzq8+i/nvKYuZr1jka9EqLs= | ||||
| cloud.google.com/go/dataplex v1.9.0/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= | ||||
| cloud.google.com/go/dataproc/v2 v2.0.1 h1:4OpSiPMMGV3XmtPqskBU/RwYpj3yMFjtMLj/exi425Q= | ||||
| cloud.google.com/go/dataproc/v2 v2.0.1/go.mod h1:7Ez3KRHdFGcfY7GcevBbvozX+zyWGcwLJvvAMwCaoZ4= | ||||
| cloud.google.com/go/dataqna v0.8.1 h1:ITpUJep04hC9V7C+gcK390HO++xesQFSUJ7S4nSnF3U= | ||||
| cloud.google.com/go/dataqna v0.8.1/go.mod h1:zxZM0Bl6liMePWsHA8RMGAfmTG34vJMapbHAxQ5+WA8= | ||||
| cloud.google.com/go/datastore v1.13.0 h1:ktbC66bOQB3HJPQe8qNI1/aiQ77PMu7hD4mzE6uxe3w= | ||||
| cloud.google.com/go/datastore v1.13.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= | ||||
| cloud.google.com/go/datastream v1.10.0 h1:ra/+jMv36zTAGPfi8TRne1hXme+UsKtdcK4j6bnqQiw= | ||||
| cloud.google.com/go/datastream v1.10.0/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= | ||||
| cloud.google.com/go/deploy v1.13.0 h1:A+w/xpWgz99EYzB6e31gMGAI/P5jTZ2UO7veQK5jQ8o= | ||||
| cloud.google.com/go/deploy v1.13.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= | ||||
| cloud.google.com/go/dialogflow v1.40.0 h1:sCJbaXt6ogSbxWQnERKAzos57f02PP6WkGbOZvXUdwc= | ||||
| cloud.google.com/go/dialogflow v1.40.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= | ||||
| cloud.google.com/go/dlp v1.10.1 h1:tF3wsJ2QulRhRLWPzWVkeDz3FkOGVoMl6cmDUHtfYxw= | ||||
| cloud.google.com/go/dlp v1.10.1/go.mod h1:IM8BWz1iJd8njcNcG0+Kyd9OPnqnRNkDV8j42VT5KOI= | ||||
| cloud.google.com/go/documentai v1.22.0 h1:dW8ex9yb3oT9s1yD2+yLcU8Zq15AquRZ+wd0U+TkxFw= | ||||
| cloud.google.com/go/documentai v1.22.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= | ||||
| cloud.google.com/go/domains v0.9.1 h1:rqz6KY7mEg7Zs/69U6m6LMbB7PxFDWmT3QWNXIqhHm0= | ||||
| cloud.google.com/go/domains v0.9.1/go.mod h1:aOp1c0MbejQQ2Pjf1iJvnVyT+z6R6s8pX66KaCSDYfE= | ||||
| cloud.google.com/go/edgecontainer v1.1.1 h1:zhHWnLzg6AqzE+I3gzJqiIwHfjEBhWctNQEzqb+FaRo= | ||||
| cloud.google.com/go/edgecontainer v1.1.1/go.mod h1:O5bYcS//7MELQZs3+7mabRqoWQhXCzenBu0R8bz2rwk= | ||||
| cloud.google.com/go/errorreporting v0.3.0 h1:kj1XEWMu8P0qlLhm3FwcaFsUvXChV/OraZwA70trRR0= | ||||
| cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= | ||||
| cloud.google.com/go/essentialcontacts v1.6.2 h1:OEJ0MLXXCW/tX1fkxzEZOsv/wRfyFsvDVNaHWBAvoV0= | ||||
| cloud.google.com/go/essentialcontacts v1.6.2/go.mod h1:T2tB6tX+TRak7i88Fb2N9Ok3PvY3UNbUsMag9/BARh4= | ||||
| cloud.google.com/go/eventarc v1.13.0 h1:xIP3XZi0Xawx8DEfh++mE2lrIi5kQmCr/KcWhJ1q0J4= | ||||
| cloud.google.com/go/eventarc v1.13.0/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= | ||||
| cloud.google.com/go/filestore v1.7.1 h1:Eiz8xZzMJc5ppBWkuaod/PUdUZGCFR8ku0uS+Ah2fRw= | ||||
| cloud.google.com/go/filestore v1.7.1/go.mod h1:y10jsorq40JJnjR/lQ8AfFbbcGlw3g+Dp8oN7i7FjV4= | ||||
| cloud.google.com/go/functions v1.15.1 h1:LtAyqvO1TFmNLcROzHZhV0agEJfBi+zfMZsF4RT/a7U= | ||||
| cloud.google.com/go/functions v1.15.1/go.mod h1:P5yNWUTkyU+LvW/S9O6V+V423VZooALQlqoXdoPz5AE= | ||||
| cloud.google.com/go/gkebackup v1.3.0 h1:lgyrpdhtJKV7l1GM15YFt+OCyHMxsQZuSydyNmS0Pxo= | ||||
| cloud.google.com/go/gkebackup v1.3.0/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU= | ||||
| cloud.google.com/go/gkeconnect v0.8.1 h1:a1ckRvVznnuvDWESM2zZDzSVFvggeBaVY5+BVB8tbT0= | ||||
| cloud.google.com/go/gkeconnect v0.8.1/go.mod h1:KWiK1g9sDLZqhxB2xEuPV8V9NYzrqTUmQR9shJHpOZw= | ||||
| cloud.google.com/go/gkehub v0.14.1 h1:2BLSb8i+Co1P05IYCKATXy5yaaIw/ZqGvVSBTLdzCQo= | ||||
| cloud.google.com/go/gkehub v0.14.1/go.mod h1:VEXKIJZ2avzrbd7u+zeMtW00Y8ddk/4V9511C9CQGTY= | ||||
| cloud.google.com/go/gkemulticloud v1.0.0 h1:MluqhtPVZReoriP5+adGIw+ij/RIeRik8KApCW2WMTw= | ||||
| cloud.google.com/go/gkemulticloud v1.0.0/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= | ||||
| cloud.google.com/go/gsuiteaddons v1.6.1 h1:mi9jxZpzVjLQibTS/XfPZvl+Jr6D5Bs8pGqUjllRb00= | ||||
| cloud.google.com/go/gsuiteaddons v1.6.1/go.mod h1:CodrdOqRZcLp5WOwejHWYBjZvfY0kOphkAKpF/3qdZY= | ||||
| cloud.google.com/go/iap v1.8.1 h1:X1tcp+EoJ/LGX6cUPt3W2D4H2Kbqq0pLAsldnsCjLlE= | ||||
| cloud.google.com/go/iap v1.8.1/go.mod h1:sJCbeqg3mvWLqjZNsI6dfAtbbV1DL2Rl7e1mTyXYREQ= | ||||
| cloud.google.com/go/ids v1.4.1 h1:khXYmSoDDhWGEVxHl4c4IgbwSRR+qE/L4hzP3vaU9Hc= | ||||
| cloud.google.com/go/ids v1.4.1/go.mod h1:np41ed8YMU8zOgv53MMMoCntLTn2lF+SUzlM+O3u/jw= | ||||
| cloud.google.com/go/iot v1.7.1 h1:yrH0OSmicD5bqGBoMlWG8UltzdLkYzNUwNVUVz7OT54= | ||||
| cloud.google.com/go/iot v1.7.1/go.mod h1:46Mgw7ev1k9KqK1ao0ayW9h0lI+3hxeanz+L1zmbbbk= | ||||
| cloud.google.com/go/kms v1.15.0 h1:xYl5WEaSekKYN5gGRyhjvZKM22GVBBCzegGNVPy+aIs= | ||||
| cloud.google.com/go/kms v1.15.0/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= | ||||
| cloud.google.com/go/language v1.10.1 h1:3MXeGEv8AlX+O2LyV4pO4NGpodanc26AmXwOuipEym0= | ||||
| cloud.google.com/go/language v1.10.1/go.mod h1:CPp94nsdVNiQEt1CNjF5WkTcisLiHPyIbMhvR8H2AW0= | ||||
| cloud.google.com/go/lifesciences v0.9.1 h1:axkANGx1wiBXHiPcJZAE+TDjjYoJRIDzbHC/WYllCBU= | ||||
| cloud.google.com/go/lifesciences v0.9.1/go.mod h1:hACAOd1fFbCGLr/+weUKRAJas82Y4vrL3O5326N//Wc= | ||||
| cloud.google.com/go/logging v1.7.0 h1:CJYxlNNNNAMkHp9em/YEXcfJg+rPDg7YfwoRpMU+t5I= | ||||
| cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= | ||||
| cloud.google.com/go/managedidentities v1.6.1 h1:2/qZuOeLgUHorSdxSQGtnOu9xQkBn37+j+oZQv/KHJY= | ||||
| cloud.google.com/go/managedidentities v1.6.1/go.mod h1:h/irGhTN2SkZ64F43tfGPMbHnypMbu4RB3yl8YcuEak= | ||||
| cloud.google.com/go/maps v1.4.0 h1:PdfgpBLhAoSzZrQXP+/zBc78fIPLZSJp5y8+qSMn2UU= | ||||
| cloud.google.com/go/maps v1.4.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= | ||||
| cloud.google.com/go/mediatranslation v0.8.1 h1:50cF7c1l3BanfKrpnTCaTvhf+Fo6kdF21DG0byG7gYU= | ||||
| cloud.google.com/go/mediatranslation v0.8.1/go.mod h1:L/7hBdEYbYHQJhX2sldtTO5SZZ1C1vkapubj0T2aGig= | ||||
| cloud.google.com/go/memcache v1.10.1 h1:7lkLsF0QF+Mre0O/NvkD9Q5utUNwtzvIYjrOLOs0HO0= | ||||
| cloud.google.com/go/memcache v1.10.1/go.mod h1:47YRQIarv4I3QS5+hoETgKO40InqzLP6kpNLvyXuyaA= | ||||
| cloud.google.com/go/metastore v1.12.0 h1:+9DsxUOHvsqvC0ylrRc/JwzbXJaaBpfIK3tX0Lx8Tcc= | ||||
| cloud.google.com/go/metastore v1.12.0/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= | ||||
| cloud.google.com/go/monitoring v1.15.1 h1:65JhLMd+JiYnXr6j5Z63dUYCuOg770p8a/VC+gil/58= | ||||
| cloud.google.com/go/monitoring v1.15.1/go.mod h1:lADlSAlFdbqQuwwpaImhsJXu1QSdd3ojypXrFSMr2rM= | ||||
| cloud.google.com/go/networkconnectivity v1.12.1 h1:LnrYM6lBEeTq+9f2lR4DjBhv31EROSAQi/P5W4Q0AEc= | ||||
| cloud.google.com/go/networkconnectivity v1.12.1/go.mod h1:PelxSWYM7Sh9/guf8CFhi6vIqf19Ir/sbfZRUwXh92E= | ||||
| cloud.google.com/go/networkmanagement v1.8.0 h1:/3xP37eMxnyvkfLrsm1nv1b2FbMMSAEAOlECTvoeCq4= | ||||
| cloud.google.com/go/networkmanagement v1.8.0/go.mod h1:Ho/BUGmtyEqrttTgWEe7m+8vDdK74ibQc+Be0q7Fof0= | ||||
| cloud.google.com/go/networksecurity v0.9.1 h1:TBLEkMp3AE+6IV/wbIGRNTxnqLXHCTEQWoxRVC18TzY= | ||||
| cloud.google.com/go/networksecurity v0.9.1/go.mod h1:MCMdxOKQ30wsBI1eI659f9kEp4wuuAueoC9AJKSPWZQ= | ||||
| cloud.google.com/go/notebooks v1.9.1 h1:CUqMNEtv4EHFnbogV+yGHQH5iAQLmijOx191innpOcs= | ||||
| cloud.google.com/go/notebooks v1.9.1/go.mod h1:zqG9/gk05JrzgBt4ghLzEepPHNwE5jgPcHZRKhlC1A8= | ||||
| cloud.google.com/go/optimization v1.4.1 h1:pEwOAmO00mxdbesCRSsfj8Sd4rKY9kBrYW7Vd3Pq7cA= | ||||
| cloud.google.com/go/optimization v1.4.1/go.mod h1:j64vZQP7h9bO49m2rVaTVoNM0vEBEN5eKPUPbZyXOrk= | ||||
| cloud.google.com/go/orchestration v1.8.1 h1:KmN18kE/xa1n91cM5jhCh7s1/UfIguSCisw7nTMUzgE= | ||||
| cloud.google.com/go/orchestration v1.8.1/go.mod h1:4sluRF3wgbYVRqz7zJ1/EUNc90TTprliq9477fGobD8= | ||||
| cloud.google.com/go/orgpolicy v1.11.1 h1:I/7dHICQkNwym9erHqmlb50LRU588NPCvkfIY0Bx9jI= | ||||
| cloud.google.com/go/orgpolicy v1.11.1/go.mod h1:8+E3jQcpZJQliP+zaFfayC2Pg5bmhuLK755wKhIIUCE= | ||||
| cloud.google.com/go/osconfig v1.12.1 h1:dgyEHdfqML6cUW6/MkihNdTVc0INQst0qSE8Ou1ub9c= | ||||
| cloud.google.com/go/osconfig v1.12.1/go.mod h1:4CjBxND0gswz2gfYRCUoUzCm9zCABp91EeTtWXyz0tE= | ||||
| cloud.google.com/go/oslogin v1.10.1 h1:LdSuG3xBYu2Sgr3jTUULL1XCl5QBx6xwzGqzoDUw1j0= | ||||
| cloud.google.com/go/oslogin v1.10.1/go.mod h1:x692z7yAue5nE7CsSnoG0aaMbNoRJRXO4sn73R+ZqAs= | ||||
| cloud.google.com/go/phishingprotection v0.8.1 h1:aK/lNmSd1vtbft/vLe2g7edXK72sIQbqr2QyrZN/iME= | ||||
| cloud.google.com/go/phishingprotection v0.8.1/go.mod h1:AxonW7GovcA8qdEk13NfHq9hNx5KPtfxXNeUxTDxB6I= | ||||
| cloud.google.com/go/policytroubleshooter v1.8.0 h1:XTMHy31yFmXgQg57CB3w9YQX8US7irxDX0Fl0VwlZyY= | ||||
| cloud.google.com/go/policytroubleshooter v1.8.0/go.mod h1:tmn5Ir5EToWe384EuboTcVQT7nTag2+DuH3uHmKd1HU= | ||||
| cloud.google.com/go/privatecatalog v0.9.1 h1:B/18xGo+E0EMS9LOEQ0zXz7F2asMgmVgTYGSI89MHOA= | ||||
| cloud.google.com/go/privatecatalog v0.9.1/go.mod h1:0XlDXW2unJXdf9zFz968Hp35gl/bhF4twwpXZAW50JA= | ||||
| cloud.google.com/go/pubsub v1.33.0 h1:6SPCPvWav64tj0sVX/+npCBKhUi/UjJehy9op/V3p2g= | ||||
| cloud.google.com/go/pubsub v1.33.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= | ||||
| cloud.google.com/go/pubsublite v1.8.1 h1:pX+idpWMIH30/K7c0epN6V703xpIcMXWRjKJsz0tYGY= | ||||
| cloud.google.com/go/pubsublite v1.8.1/go.mod h1:fOLdU4f5xldK4RGJrBMm+J7zMWNj/k4PxwEZXy39QS0= | ||||
| cloud.google.com/go/recaptchaenterprise/v2 v2.7.2 h1:IGkbudobsTXAwmkEYOzPCQPApUCsN4Gbq3ndGVhHQpI= | ||||
| cloud.google.com/go/recaptchaenterprise/v2 v2.7.2/go.mod h1:kR0KjsJS7Jt1YSyWFkseQ756D45kaYNTlDPPaRAvDBU= | ||||
| cloud.google.com/go/recommendationengine v0.8.1 h1:nMr1OEVHuDambRn+/y4RmNAmnR/pXCuHtH0Y4tCgGRQ= | ||||
| cloud.google.com/go/recommendationengine v0.8.1/go.mod h1:MrZihWwtFYWDzE6Hz5nKcNz3gLizXVIDI/o3G1DLcrE= | ||||
| cloud.google.com/go/recommender v1.10.1 h1:UKp94UH5/Lv2WXSQe9+FttqV07x/2p1hFTMMYVFtilg= | ||||
| cloud.google.com/go/recommender v1.10.1/go.mod h1:XFvrE4Suqn5Cq0Lf+mCP6oBHD/yRMA8XxP5sb7Q7gpA= | ||||
| cloud.google.com/go/redis v1.13.1 h1:YrjQnCC7ydk+k30op7DSjSHw1yAYhqYXFcOq1bSXRYA= | ||||
| cloud.google.com/go/redis v1.13.1/go.mod h1:VP7DGLpE91M6bcsDdMuyCm2hIpB6Vp2hI090Mfd1tcg= | ||||
| cloud.google.com/go/resourcemanager v1.9.1 h1:QIAMfndPOHR6yTmMUB0ZN+HSeRmPjR/21Smq5/xwghI= | ||||
| cloud.google.com/go/resourcemanager v1.9.1/go.mod h1:dVCuosgrh1tINZ/RwBufr8lULmWGOkPS8gL5gqyjdT8= | ||||
| cloud.google.com/go/resourcesettings v1.6.1 h1:Fdyq418U69LhvNPFdlEO29w+DRRjwDA4/pFamm4ksAg= | ||||
| cloud.google.com/go/resourcesettings v1.6.1/go.mod h1:M7mk9PIZrC5Fgsu1kZJci6mpgN8o0IUzVx3eJU3y4Jw= | ||||
| cloud.google.com/go/retail v1.14.1 h1:gYBrb9u/Hc5s5lUTFXX1Vsbc/9BEvgtioY6ZKaK0DK8= | ||||
| cloud.google.com/go/retail v1.14.1/go.mod h1:y3Wv3Vr2k54dLNIrCzenyKG8g8dhvhncT2NcNjb/6gE= | ||||
| cloud.google.com/go/run v1.2.0 h1:kHeIG8q+N6Zv0nDkBjSOYfK2eWqa5FnaiDPH/7/HirE= | ||||
| cloud.google.com/go/run v1.2.0/go.mod h1:36V1IlDzQ0XxbQjUx6IYbw8H3TJnWvhii963WW3B/bo= | ||||
| cloud.google.com/go/scheduler v1.10.1 h1:yoZbZR8880KgPGLmACOMCiY2tPk+iX4V/dkxqTirlz8= | ||||
| cloud.google.com/go/scheduler v1.10.1/go.mod h1:R63Ldltd47Bs4gnhQkmNDse5w8gBRrhObZ54PxgR2Oo= | ||||
| cloud.google.com/go/secretmanager v1.11.1 h1:cLTCwAjFh9fKvU6F13Y4L9vPcx9yiWPyWXE4+zkuEQs= | ||||
| cloud.google.com/go/secretmanager v1.11.1/go.mod h1:znq9JlXgTNdBeQk9TBW/FnR/W4uChEKGeqQWAJ8SXFw= | ||||
| cloud.google.com/go/security v1.15.1 h1:jR3itwycg/TgGA0uIgTItcVhA55hKWiNJxaNNpQJaZE= | ||||
| cloud.google.com/go/security v1.15.1/go.mod h1:MvTnnbsWnehoizHi09zoiZob0iCHVcL4AUBj76h9fXA= | ||||
| cloud.google.com/go/securitycenter v1.23.0 h1:XOGJ9OpnDtqg8izd7gYk/XUhj8ytjIalyjjsR6oyG0M= | ||||
| cloud.google.com/go/securitycenter v1.23.0/go.mod h1:8pwQ4n+Y9WCWM278R8W3nF65QtY172h4S8aXyI9/hsQ= | ||||
| cloud.google.com/go/servicedirectory v1.11.0 h1:pBWpjCFVGWkzVTkqN3TBBIqNSoSHY86/6RL0soSQ4z8= | ||||
| cloud.google.com/go/servicedirectory v1.11.0/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= | ||||
| cloud.google.com/go/shell v1.7.1 h1:aHbwH9LSqs4r2rbay9f6fKEls61TAjT63jSyglsw7sI= | ||||
| cloud.google.com/go/shell v1.7.1/go.mod h1:u1RaM+huXFaTojTbW4g9P5emOrrmLE69KrxqQahKn4g= | ||||
| cloud.google.com/go/spanner v1.47.0 h1:aqiMP8dhsEXgn9K5EZBWxPG7dxIiyM2VaikqeU4iteg= | ||||
| cloud.google.com/go/spanner v1.47.0/go.mod h1:IXsJwVW2j4UKs0eYDqodab6HgGuA1bViSqW4uH9lfUI= | ||||
| cloud.google.com/go/speech v1.19.0 h1:MCagaq8ObV2tr1kZJcJYgXYbIn8Ai5rp42tyGYw9rls= | ||||
| cloud.google.com/go/speech v1.19.0/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= | ||||
| cloud.google.com/go/storagetransfer v1.10.0 h1:+ZLkeXx0K0Pk5XdDmG0MnUVqIR18lllsihU/yq39I8Q= | ||||
| cloud.google.com/go/storagetransfer v1.10.0/go.mod h1:DM4sTlSmGiNczmV6iZyceIh2dbs+7z2Ayg6YAiQlYfA= | ||||
| cloud.google.com/go/talent v1.6.2 h1:j46ZgD6N2YdpFPux9mc7OAf4YK3tiBCsbLKc8rQx+bU= | ||||
| cloud.google.com/go/talent v1.6.2/go.mod h1:CbGvmKCG61mkdjcqTcLOkb2ZN1SrQI8MDyma2l7VD24= | ||||
| cloud.google.com/go/texttospeech v1.7.1 h1:S/pR/GZT9p15R7Y2dk2OXD/3AufTct/NSxT4a7nxByw= | ||||
| cloud.google.com/go/texttospeech v1.7.1/go.mod h1:m7QfG5IXxeneGqTapXNxv2ItxP/FS0hCZBwXYqucgSk= | ||||
| cloud.google.com/go/tpu v1.6.1 h1:kQf1jgPY04UJBYYjNUO+3GrZtIb57MfGAW2bwgLbR3A= | ||||
| cloud.google.com/go/tpu v1.6.1/go.mod h1:sOdcHVIgDEEOKuqUoi6Fq53MKHJAtOwtz0GuKsWSH3E= | ||||
| cloud.google.com/go/trace v1.10.1 h1:EwGdOLCNfYOOPtgqo+D2sDLZmRCEO1AagRTJCU6ztdg= | ||||
| cloud.google.com/go/trace v1.10.1/go.mod h1:gbtL94KE5AJLH3y+WVpfWILmqgc6dXcqgNXdOPAQTYk= | ||||
| cloud.google.com/go/translate v1.8.2 h1:PQHamiOzlehqLBJMnM72lXk/OsMQewZB12BKJ8zXrU0= | ||||
| cloud.google.com/go/translate v1.8.2/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= | ||||
| cloud.google.com/go/video v1.19.0 h1:BRyyS+wU+Do6VOXnb8WfPr42ZXti9hzmLKLUCkggeK4= | ||||
| cloud.google.com/go/video v1.19.0/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= | ||||
| cloud.google.com/go/videointelligence v1.11.1 h1:MBMWnkQ78GQnRz5lfdTAbBq/8QMCF3wahgtHh3s/J+k= | ||||
| cloud.google.com/go/videointelligence v1.11.1/go.mod h1:76xn/8InyQHarjTWsBR058SmlPCwQjgcvoW0aZykOvo= | ||||
| cloud.google.com/go/vision/v2 v2.7.2 h1:ccK6/YgPfGHR/CyESz1mvIbsht5Y2xRsWCPqmTNydEw= | ||||
| cloud.google.com/go/vision/v2 v2.7.2/go.mod h1:jKa8oSYBWhYiXarHPvP4USxYANYUEdEsQrloLjrSwJU= | ||||
| cloud.google.com/go/vmmigration v1.7.1 h1:gnjIclgqbEMc+cF5IJuPxp53wjBIlqZ8h9hE8Rkwp7A= | ||||
| cloud.google.com/go/vmmigration v1.7.1/go.mod h1:WD+5z7a/IpZ5bKK//YmT9E047AD+rjycCAvyMxGJbro= | ||||
| cloud.google.com/go/vmwareengine v1.0.0 h1:qsJ0CPlOQu/3MFBGklu752v3AkD+Pdu091UmXJ+EjTA= | ||||
| cloud.google.com/go/vmwareengine v1.0.0/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= | ||||
| cloud.google.com/go/vpcaccess v1.7.1 h1:ram0GzjNWElmbxXMIzeOZUkQ9J8ZAahD6V8ilPGqX0Y= | ||||
| cloud.google.com/go/vpcaccess v1.7.1/go.mod h1:FogoD46/ZU+JUBX9D606X21EnxiszYi2tArQwLY4SXs= | ||||
| cloud.google.com/go/webrisk v1.9.1 h1:Ssy3MkOMOnyRV5H2bkMQ13Umv7CwB/kugo3qkAX83Fk= | ||||
| cloud.google.com/go/webrisk v1.9.1/go.mod h1:4GCmXKcOa2BZcZPn6DCEvE7HypmEJcJkr4mtM+sqYPc= | ||||
| cloud.google.com/go/websecurityscanner v1.6.1 h1:CfEF/vZ+xXyAR3zC9iaC/QRdf1MEgS20r5UR17Q4gOg= | ||||
| cloud.google.com/go/websecurityscanner v1.6.1/go.mod h1:Njgaw3rttgRHXzwCB8kgCYqv5/rGpFCsBOvPbYgszpg= | ||||
| cloud.google.com/go/workflows v1.11.1 h1:2akeQ/PgtRhrNuD/n1WvJd5zb7YyuDZrlOanBj2ihPg= | ||||
| cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvofaL6FqlET6g= | ||||
| github.com/AlekSi/pointer v1.1.0 h1:SSDMPcXD9jSl8FPy9cRzoRaMJtm9g9ggGTxecRUbQoI= | ||||
| github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= | ||||
| github.com/OpenIMSDK/protocol v0.0.11 h1:3sWujfQhO1I1Da1b8UScaZcc0DNunSbNiH3DagZB/AA= | ||||
| github.com/OpenIMSDK/protocol v0.0.11/go.mod h1:F25dFrwrIx3lkNoiuf6FkCfxuwf8L4Z8UIsdTHP/r0Y= | ||||
| github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409 h1:DTQ/38ao/CfXsrK0cSAL+h4R/u0VVvfWLZEOlLwEROI= | ||||
| github.com/alecthomas/kingpin/v2 v2.3.1 h1:ANLJcKmQm4nIaog7xdr/id6FM6zm5hHnfZrvtKPxqGg= | ||||
| github.com/alecthomas/kingpin/v2 v2.3.1/go.mod h1:oYL5vtsvEHZGHxU7DMp32Dvx+qL+ptGn6lWaot2vCNE= | ||||
| github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= | ||||
| github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= | ||||
| github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= | ||||
| github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= | ||||
| github.com/bsm/ginkgo/v2 v2.7.0/go.mod h1:AiKlXPm7ItEHNc/2+OkrNG4E0ITzojb9/xWzvQ9XZ9w= | ||||
| github.com/bsm/gomega v1.26.0/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= | ||||
| github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= | ||||
| github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= | ||||
| github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= | ||||
| github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= | ||||
| github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= | ||||
| github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= | ||||
| github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nCtnAiZdYFd45cYZPs8vOOIYKfk= | ||||
| github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= | ||||
| github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= | ||||
| github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= | ||||
| github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= | ||||
| github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= | ||||
| github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f h1:7T++XKzy4xg7PKy+bM+Sa9/oe1OC88yz2hXQUISoXfA= | ||||
| github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= | ||||
| github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8= | ||||
| github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= | ||||
| github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= | ||||
| github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= | ||||
| github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= | ||||
| github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= | ||||
| github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= | ||||
| github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= | ||||
| github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= | ||||
| github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= | ||||
| github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= | ||||
| github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= | ||||
| github.com/golang/mock v1.1.1 h1:G5FRp8JnTd7RQH5kemVNlMeyXQAztQ3mOWV95KxsXH8= | ||||
| github.com/google/go-pkcs11 v0.2.0 h1:5meDPB26aJ98f+K9G21f0AqZwo/S5BJMJh8nuhMbdsI= | ||||
| github.com/google/go-pkcs11 v0.2.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= | ||||
| github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= | ||||
| github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= | ||||
| github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= | ||||
| github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= | ||||
| github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI= | ||||
| github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= | ||||
| github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= | ||||
| github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= | ||||
| github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI= | ||||
| github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc= | ||||
| github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= | ||||
| github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= | ||||
| github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= | ||||
| github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= | ||||
| github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY= | ||||
| github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= | ||||
| github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= | ||||
| github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= | ||||
| github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= | ||||
| github.com/marmotedu/component-base v1.6.2 h1:UtQkG0ZmAbVHVUdky5Sw68QLJno5ARSqslHu/xsVNl0= | ||||
| github.com/marmotedu/errors v1.0.2 h1:qx9GtOljmAL+wLuemahe3WSWdXyEpJvLBlpXK8y2rdI= | ||||
| github.com/marmotedu/marmotedu-sdk-go v1.6.2 h1:eQcHVdK89Xb107+XbeqIyEXzYFxmyjQFChBtijrQSl8= | ||||
| github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= | ||||
| github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= | ||||
| github.com/onsi/ginkgo/v2 v2.0.0 h1:CcuG/HvWNkkaqCUpJifQY8z7qEMBJya6aLPx6ftGyjQ= | ||||
| github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= | ||||
| github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= | ||||
| github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= | ||||
| github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= | ||||
| github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= | ||||
| github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= | ||||
| github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= | ||||
| github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= | ||||
| github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk= | ||||
| github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= | ||||
| github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= | ||||
| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.563 h1:2VDxTtn9dAqI2DnnvB9fXpPE4DblOmquyzmN2zxTD8A= | ||||
| github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.563 h1:FoX+MK4vHThvPO6FbP5q98zD8S3n+d5+DbtK7skl++c= | ||||
| github.com/xdg/scram v1.0.3 h1:nTadYh2Fs4BK2xdldEa2g5bbaZp0/+1nJMMPtPxS/to= | ||||
| github.com/xdg/stringprep v1.0.3 h1:cmL5Enob4W83ti/ZHuZLuKD/xqJfus4fVPwE+/BDm+4= | ||||
| github.com/xhit/go-str2duration v1.2.0 h1:BcV5u025cITWxEQKGWr1URRzrcXtu7uk8+luz3Yuhwc= | ||||
| github.com/xhit/go-str2duration v1.2.0/go.mod h1:3cPSlfZlUHVlneIVfePFWcJZsuwf+P1v2SRTV4cUmp4= | ||||
| github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= | ||||
| go.opentelemetry.io/proto/otlp v0.7.0 h1:rwOQPCuKAKmwGKq2aVNnYIibI6wnV7EvzgfTCzcdGg8= | ||||
| go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= | ||||
| golang.org/x/exp v0.0.0-20190121172915-509febef88a4 h1:c2HOrn5iMezYjSlGPncknSEr/8x5LELb/ilJbXi9DEA= | ||||
| golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3 h1:XQyxROzUlZH+WIQwySDgnISgOivlhjIEwaQaJEJrrN0= | ||||
| golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= | ||||
| golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= | ||||
| golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= | ||||
| golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= | ||||
| google.golang.org/genproto/googleapis/bytestream v0.0.0-20230807174057-1744710a1577 h1:ZX0eQu2J+jOO87sq8fQG8J/Nfp7D7BhHpixIE5EYK/k= | ||||
| google.golang.org/genproto/googleapis/bytestream v0.0.0-20230807174057-1744710a1577/go.mod h1:NjCQG/D8JandXxM57PZbAJL1DCNL6EypA0vPPwfsc7c= | ||||
| gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= | ||||
| gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= | ||||
|  | ||||
| @ -363,3 +363,6 @@ func (m *MessageApi) GetActiveGroup(c *gin.Context) { | ||||
| func (m *MessageApi) SearchMsg(c *gin.Context) { | ||||
| 	a2r.Call(msg.MsgClient.SearchMessage, m.Client, c) | ||||
| } | ||||
| func (m *MessageApi) GetServerTime(c *gin.Context) { | ||||
| 	a2r.Call(msg.MsgClient.GetServerTime, m.Client, c) | ||||
| } | ||||
|  | ||||
| @ -187,6 +187,7 @@ func NewGinRouter(discov discoveryregistry.SvcDiscoveryRegistry, rdb redis.Unive | ||||
| 
 | ||||
| 		msgGroup.POST("/batch_send_msg", m.BatchSendMsg) | ||||
| 		msgGroup.POST("/check_msg_is_send_success", m.CheckMsgIsSendSuccess) | ||||
| 		msgGroup.POST("/get_server_time", m.GetServerTime) | ||||
| 	} | ||||
| 	// Conversation | ||||
| 	conversationGroup := r.Group("/conversation", ParseToken) | ||||
|  | ||||
| @ -188,3 +188,6 @@ func (m *msgServer) SearchMessage(ctx context.Context, req *msg.SearchMessageReq | ||||
| 	resp.ChatLogsNum = total | ||||
| 	return resp, nil | ||||
| } | ||||
| func (m *msgServer) GetServerTime(ctx context.Context, _ *msg.GetServerTimeReq) (*msg.GetServerTimeResp, error) { | ||||
| 	return &msg.GetServerTimeResp{ServerTime: utils.GetCurrentTimestampByMill()}, nil | ||||
| } | ||||
|  | ||||
							
								
								
									
										104
									
								
								openim-chat/config/config.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								openim-chat/config/config.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,104 @@ | ||||
| # Copyright © 2023 OpenIM open source community. All rights reserved. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| 
 | ||||
| # 需要先启动OpenIMServer | ||||
| zookeeper: | ||||
|   schema: openim | ||||
|   zkAddr: | ||||
|     - 127.0.0.1:2181 | ||||
|   username: "" | ||||
|   password: "" | ||||
| 
 | ||||
| chatApi: | ||||
|   openImChatApiPort: [ 10008 ] | ||||
|   listenIP: | ||||
| 
 | ||||
| adminApi: | ||||
|   openImAdminApiPort: [ 10009 ] | ||||
|   listenIP: | ||||
| 
 | ||||
| rpc: | ||||
|   registerIP:                             #作为rpc启动时,注册到zookeeper的IP,api/gateway能访问到此ip和对应的rpcPort中的端口 | ||||
|   listenIP:                               #默认为0.0.0.0 | ||||
| 
 | ||||
| rpcPort: | ||||
|   openImAdminPort: [ 30200 ] | ||||
|   openImChatPort: [ 30300 ] | ||||
| rpcRegisterName: | ||||
|   openImAdminName: admin | ||||
|   openImChatName: chat | ||||
| 
 | ||||
| # 没有配置表示和OpenIM一致 | ||||
| mysql: | ||||
|   #  address: [ 127.0.0.1:13306 ]            #目前仅支持单机 | ||||
|   #  username: root                          #用户名 | ||||
|   #  password: openIM123                     #密码 | ||||
|   #  database: openIM_v2                     #不建议修改 | ||||
|   #  maxOpenConn: 1000                       #最大连接数 | ||||
|   #  maxIdleConn: 100                        #最大空闲连接数 | ||||
|   #  maxLifeTime: 60                         #连接可以重复使用的最长时间(秒) | ||||
|   #  logLevel: 4                             #日志级别 1=slient 2=error 3=warn 4=info | ||||
|   #  slowThreshold: 500                      #慢语句阈值 (毫秒) | ||||
|   database: openim_enterprise | ||||
| 
 | ||||
| # 没有配置表示和OpenIM一致 | ||||
| log: | ||||
|   storageLocation: ../logs/           #存放目录 | ||||
| #  rotationTime: 24                    #日志旋转时间 | ||||
| #  remainRotationCount: 2              #日志数量 | ||||
| #  remainLogLevel: 6                   #日志级别 6表示全都打印, | ||||
| #  isStdout: false | ||||
| #  isJson: false | ||||
| #  withStack: false | ||||
| 
 | ||||
| # secret: openIM123 | ||||
| #tokenPolicy: | ||||
| #  expire: 86400 | ||||
| 
 | ||||
| verifyCode: | ||||
|   validTime: 300 # 验证码有效时间 | ||||
|   validCount: 5 # 验证码有效次数 | ||||
|   uintTime: 86400 # 单位时间间隔 | ||||
|   maxCount: 10 # 单位时间内最大获取次数 | ||||
|   superCode: "666666" # 超级验证码(只有use为空时使用) | ||||
|   len: 6 # 验证码长度 | ||||
|   use: "" # 使用的验证码服务(use: "ali") | ||||
|   ali: | ||||
|     endpoint: "dysmsapi.aliyuncs.com" | ||||
|     accessKeyId: "" | ||||
|     accessKeySecret: "" | ||||
|     signName: "" | ||||
|     verificationCodeTemplateCode: "" | ||||
| 
 | ||||
| # 获取ip的header,没有配置直接获取远程地址 | ||||
| #proxyHeader: "X-Forwarded-For" | ||||
| 
 | ||||
| adminList: | ||||
|   - adminID: admin1 | ||||
|     nickname: chat1 | ||||
|     imAdmin: openIM123456 | ||||
|   - adminID: admin2 | ||||
|     nickname: chat2 | ||||
|     imAdmin: openIM654321 | ||||
|   - adminID: admin3 | ||||
|     nickname: chat3 | ||||
|     imAdmin: openIMAdmin | ||||
| 
 | ||||
| 
 | ||||
| openIMUrl: "http://127.0.0.1:10002" | ||||
| 
 | ||||
| redis: | ||||
|   address: [ 127.0.0.1:16379 ] | ||||
|   username: | ||||
|   password: openIM123 | ||||
							
								
								
									
										201
									
								
								openim-chat/scripts/LICENSE/LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										201
									
								
								openim-chat/scripts/LICENSE/LICENSE
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,201 @@ | ||||
|                                  Apache License | ||||
|                            Version 2.0, January 2004 | ||||
|                         http://www.apache.org/licenses/ | ||||
| 
 | ||||
|    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||
| 
 | ||||
|    1. Definitions. | ||||
| 
 | ||||
|       "License" shall mean the terms and conditions for use, reproduction, | ||||
|       and distribution as defined by Sections 1 through 9 of this document. | ||||
| 
 | ||||
|       "Licensor" shall mean the copyright owner or entity authorized by | ||||
|       the copyright owner that is granting the License. | ||||
| 
 | ||||
|       "Legal Entity" shall mean the union of the acting entity and all | ||||
|       other entities that control, are controlled by, or are under common | ||||
|       control with that entity. For the purposes of this definition, | ||||
|       "control" means (i) the power, direct or indirect, to cause the | ||||
|       direction or management of such entity, whether by contract or | ||||
|       otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||
|       outstanding shares, or (iii) beneficial ownership of such entity. | ||||
| 
 | ||||
|       "You" (or "Your") shall mean an individual or Legal Entity | ||||
|       exercising permissions granted by this License. | ||||
| 
 | ||||
|       "Source" form shall mean the preferred form for making modifications, | ||||
|       including but not limited to software source code, documentation | ||||
|       source, and configuration files. | ||||
| 
 | ||||
|       "Object" form shall mean any form resulting from mechanical | ||||
|       transformation or translation of a Source form, including but | ||||
|       not limited to compiled object code, generated documentation, | ||||
|       and conversions to other media types. | ||||
| 
 | ||||
|       "Work" shall mean the work of authorship, whether in Source or | ||||
|       Object form, made available under the License, as indicated by a | ||||
|       copyright notice that is included in or attached to the work | ||||
|       (an example is provided in the Appendix below). | ||||
| 
 | ||||
|       "Derivative Works" shall mean any work, whether in Source or Object | ||||
|       form, that is based on (or derived from) the Work and for which the | ||||
|       editorial revisions, annotations, elaborations, or other modifications | ||||
|       represent, as a whole, an original work of authorship. For the purposes | ||||
|       of this License, Derivative Works shall not include works that remain | ||||
|       separable from, or merely link (or bind by name) to the interfaces of, | ||||
|       the Work and Derivative Works thereof. | ||||
| 
 | ||||
|       "Contribution" shall mean any work of authorship, including | ||||
|       the original version of the Work and any modifications or additions | ||||
|       to that Work or Derivative Works thereof, that is intentionally | ||||
|       submitted to Licensor for inclusion in the Work by the copyright owner | ||||
|       or by an individual or Legal Entity authorized to submit on behalf of | ||||
|       the copyright owner. For the purposes of this definition, "submitted" | ||||
|       means any form of electronic, verbal, or written communication sent | ||||
|       to the Licensor or its representatives, including but not limited to | ||||
|       communication on electronic mailing lists, source code control systems, | ||||
|       and issue tracking systems that are managed by, or on behalf of, the | ||||
|       Licensor for the purpose of discussing and improving the Work, but | ||||
|       excluding communication that is conspicuously marked or otherwise | ||||
|       designated in writing by the copyright owner as "Not a Contribution." | ||||
| 
 | ||||
|       "Contributor" shall mean Licensor and any individual or Legal Entity | ||||
|       on behalf of whom a Contribution has been received by Licensor and | ||||
|       subsequently incorporated within the Work. | ||||
| 
 | ||||
|    2. Grant of Copyright License. Subject to the terms and conditions of | ||||
|       this License, each Contributor hereby grants to You a perpetual, | ||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|       copyright license to reproduce, prepare Derivative Works of, | ||||
|       publicly display, publicly perform, sublicense, and distribute the | ||||
|       Work and such Derivative Works in Source or Object form. | ||||
| 
 | ||||
|    3. Grant of Patent License. Subject to the terms and conditions of | ||||
|       this License, each Contributor hereby grants to You a perpetual, | ||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|       (except as stated in this section) patent license to make, have made, | ||||
|       use, offer to sell, sell, import, and otherwise transfer the Work, | ||||
|       where such license applies only to those patent claims licensable | ||||
|       by such Contributor that are necessarily infringed by their | ||||
|       Contribution(s) alone or by combination of their Contribution(s) | ||||
|       with the Work to which such Contribution(s) was submitted. If You | ||||
|       institute patent litigation against any entity (including a | ||||
|       cross-claim or counterclaim in a lawsuit) alleging that the Work | ||||
|       or a Contribution incorporated within the Work constitutes direct | ||||
|       or contributory patent infringement, then any patent licenses | ||||
|       granted to You under this License for that Work shall terminate | ||||
|       as of the date such litigation is filed. | ||||
| 
 | ||||
|    4. Redistribution. You may reproduce and distribute copies of the | ||||
|       Work or Derivative Works thereof in any medium, with or without | ||||
|       modifications, and in Source or Object form, provided that You | ||||
|       meet the following conditions: | ||||
| 
 | ||||
|       (a) You must give any other recipients of the Work or | ||||
|           Derivative Works a copy of this License; and | ||||
| 
 | ||||
|       (b) You must cause any modified files to carry prominent notices | ||||
|           stating that You changed the files; and | ||||
| 
 | ||||
|       (c) You must retain, in the Source form of any Derivative Works | ||||
|           that You distribute, all copyright, patent, trademark, and | ||||
|           attribution notices from the Source form of the Work, | ||||
|           excluding those notices that do not pertain to any part of | ||||
|           the Derivative Works; and | ||||
| 
 | ||||
|       (d) If the Work includes a "NOTICE" text file as part of its | ||||
|           distribution, then any Derivative Works that You distribute must | ||||
|           include a readable copy of the attribution notices contained | ||||
|           within such NOTICE file, excluding those notices that do not | ||||
|           pertain to any part of the Derivative Works, in at least one | ||||
|           of the following places: within a NOTICE text file distributed | ||||
|           as part of the Derivative Works; within the Source form or | ||||
|           documentation, if provided along with the Derivative Works; or, | ||||
|           within a display generated by the Derivative Works, if and | ||||
|           wherever such third-party notices normally appear. The contents | ||||
|           of the NOTICE file are for informational purposes only and | ||||
|           do not modify the License. You may add Your own attribution | ||||
|           notices within Derivative Works that You distribute, alongside | ||||
|           or as an addendum to the NOTICE text from the Work, provided | ||||
|           that such additional attribution notices cannot be construed | ||||
|           as modifying the License. | ||||
| 
 | ||||
|       You may add Your own copyright statement to Your modifications and | ||||
|       may provide additional or different license terms and conditions | ||||
|       for use, reproduction, or distribution of Your modifications, or | ||||
|       for any such Derivative Works as a whole, provided Your use, | ||||
|       reproduction, and distribution of the Work otherwise complies with | ||||
|       the conditions stated in this License. | ||||
| 
 | ||||
|    5. Submission of Contributions. Unless You explicitly state otherwise, | ||||
|       any Contribution intentionally submitted for inclusion in the Work | ||||
|       by You to the Licensor shall be under the terms and conditions of | ||||
|       this License, without any additional terms or conditions. | ||||
|       Notwithstanding the above, nothing herein shall supersede or modify | ||||
|       the terms of any separate license agreement you may have executed | ||||
|       with Licensor regarding such Contributions. | ||||
| 
 | ||||
|    6. Trademarks. This License does not grant permission to use the trade | ||||
|       names, trademarks, service marks, or product names of the Licensor, | ||||
|       except as required for reasonable and customary use in describing the | ||||
|       origin of the Work and reproducing the content of the NOTICE file. | ||||
| 
 | ||||
|    7. Disclaimer of Warranty. Unless required by applicable law or | ||||
|       agreed to in writing, Licensor provides the Work (and each | ||||
|       Contributor provides its Contributions) on an "AS IS" BASIS, | ||||
|       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||||
|       implied, including, without limitation, any warranties or conditions | ||||
|       of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||||
|       PARTICULAR PURPOSE. You are solely responsible for determining the | ||||
|       appropriateness of using or redistributing the Work and assume any | ||||
|       risks associated with Your exercise of permissions under this License. | ||||
| 
 | ||||
|    8. Limitation of Liability. In no event and under no legal theory, | ||||
|       whether in tort (including negligence), contract, or otherwise, | ||||
|       unless required by applicable law (such as deliberate and grossly | ||||
|       negligent acts) or agreed to in writing, shall any Contributor be | ||||
|       liable to You for damages, including any direct, indirect, special, | ||||
|       incidental, or consequential damages of any character arising as a | ||||
|       result of this License or out of the use or inability to use the | ||||
|       Work (including but not limited to damages for loss of goodwill, | ||||
|       work stoppage, computer failure or malfunction, or any and all | ||||
|       other commercial damages or losses), even if such Contributor | ||||
|       has been advised of the possibility of such damages. | ||||
| 
 | ||||
|    9. Accepting Warranty or Additional Liability. While redistributing | ||||
|       the Work or Derivative Works thereof, You may choose to offer, | ||||
|       and charge a fee for, acceptance of support, warranty, indemnity, | ||||
|       or other liability obligations and/or rights consistent with this | ||||
|       License. However, in accepting such obligations, You may act only | ||||
|       on Your own behalf and on Your sole responsibility, not on behalf | ||||
|       of any other Contributor, and only if You agree to indemnify, | ||||
|       defend, and hold each Contributor harmless for any liability | ||||
|       incurred by, or claims asserted against, such Contributor by reason | ||||
|       of your accepting any such warranty or additional liability. | ||||
| 
 | ||||
|    END OF TERMS AND CONDITIONS | ||||
| 
 | ||||
|    APPENDIX: How to apply the Apache License to your work. | ||||
| 
 | ||||
|       To apply the Apache License to your work, attach the following | ||||
|       boilerplate notice, with the fields enclosed by brackets "[]" | ||||
|       replaced with your own identifying information. (Don't include | ||||
|       the brackets!)  The text should be enclosed in the appropriate | ||||
|       comment syntax for the file format. We also recommend that a | ||||
|       file or class name and description of purpose be included on the | ||||
|       same "printed page" as the copyright notice for easier | ||||
|       identification within third-party archives. | ||||
| 
 | ||||
|    Copyright [yyyy] [name of copyright owner] | ||||
| 
 | ||||
|    Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|    you may not use this file except in compliance with the License. | ||||
|    You may obtain a copy of the License at | ||||
| 
 | ||||
|        http://www.apache.org/licenses/LICENSE-2.0 | ||||
| 
 | ||||
|    Unless required by applicable law or agreed to in writing, software | ||||
|    distributed under the License is distributed on an "AS IS" BASIS, | ||||
|    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|    See the License for the specific language governing permissions and | ||||
|    limitations under the License. | ||||
							
								
								
									
										13
									
								
								openim-chat/scripts/LICENSE/LICENSE_TEMPLATES
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								openim-chat/scripts/LICENSE/LICENSE_TEMPLATES
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| Copyright © {{.Year}} {{.Holder}} All rights reserved. | ||||
| 
 | ||||
| Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| you may not use this file except in compliance with the License. | ||||
| You may obtain a copy of the License at | ||||
| 
 | ||||
|     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| 
 | ||||
| Unless required by applicable law or agreed to in writing, software | ||||
| distributed under the License is distributed on an "AS IS" BASIS, | ||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| See the License for the specific language governing permissions and | ||||
| limitations under the License. | ||||
							
								
								
									
										65
									
								
								openim-chat/scripts/admin_rpc_start.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								openim-chat/scripts/admin_rpc_start.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,65 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| 
 | ||||
| # Copyright © 2023 OpenIM open source community. All rights reserved. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| 
 | ||||
| #Include shell font styles and some basic information | ||||
| SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) | ||||
| OPENIM_ROOT=$(dirname "${SCRIPTS_ROOT}")/.. | ||||
| 
 | ||||
| source $OPENIM_ROOT/scripts/style_info.sh | ||||
| source $OPENIM_ROOT/scripts/path_info.sh | ||||
| source $OPENIM_ROOT/scripts/function.sh | ||||
| 
 | ||||
| list1=$(cat $config_path | grep openImPushPort | awk -F '[:]' '{print $NF}') | ||||
| list2=$(cat $config_path | grep pushPrometheusPort | awk -F '[:]' '{print $NF}') | ||||
| list_to_string $list1 | ||||
| rpc_ports=($ports_array) | ||||
| list_to_string $list2 | ||||
| prome_ports=($ports_array) | ||||
| 
 | ||||
| #Check if the service exists | ||||
| #If it is exists,kill this process | ||||
| check=$(ps | grep -w ./${push_name} | grep -v grep | wc -l) | ||||
| if [ $check -ge 1 ]; then | ||||
|   oldPid=$(ps | grep -w ./${push_name} | grep -v grep | awk '{print $2}') | ||||
|   kill -9 $oldPid | ||||
| fi | ||||
| #Waiting port recycling | ||||
| sleep 1 | ||||
| cd ${push_binary_root} | ||||
| 
 | ||||
| for ((i = 0; i < ${#rpc_ports[@]}; i++)); do | ||||
|   nohup ./${push_name} -port ${rpc_ports[$i]} -prometheus_port ${prome_ports[$i]} >>../logs/openIM.log 2>&1 & | ||||
| done | ||||
| 
 | ||||
| sleep 3 | ||||
| #Check launched service process | ||||
| check=$(ps | grep -w ./${push_name} | grep -v grep | wc -l) | ||||
| if [ $check -ge 1 ]; then | ||||
|   newPid=$(ps | grep -w ./${push_name} | grep -v grep | awk '{print $2}') | ||||
|   ports=$(netstat -netulp | grep -w ${newPid} | awk '{print $4}' | awk -F '[:]' '{print $NF}') | ||||
|   allPorts="" | ||||
| 
 | ||||
|   for i in $ports; do | ||||
|     allPorts=${allPorts}"$i " | ||||
|   done | ||||
|   echo -e ${SKY_BLUE_PREFIX}"SERVICE START SUCCESS "${COLOR_SUFFIX} | ||||
|   echo -e ${SKY_BLUE_PREFIX}"SERVICE_NAME: "${COLOR_SUFFIX}${YELLOW_PREFIX}${push_name}${COLOR_SUFFIX} | ||||
|   echo -e ${SKY_BLUE_PREFIX}"PID: "${COLOR_SUFFIX}${YELLOW_PREFIX}${newPid}${COLOR_SUFFIX} | ||||
|   echo -e ${SKY_BLUE_PREFIX}"LISTENING_PORT: "${COLOR_SUFFIX}${YELLOW_PREFIX}${allPorts}${COLOR_SUFFIX} | ||||
| else | ||||
|   echo -e ${YELLOW_PREFIX}${push_name}${COLOR_SUFFIX}${RED_PREFIX}"SERVICE START ERROR, PLEASE CHECK openIM.log"${COLOR_SUFFIX} | ||||
| fi | ||||
							
								
								
									
										14
									
								
								openim-chat/scripts/build.cmd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								openim-chat/scripts/build.cmd
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | ||||
| @echo off | ||||
| 
 | ||||
| set "api_apps=admin-api chat-api" | ||||
| set "rpc_apps=admin-rpc chat-rpc" | ||||
| 
 | ||||
| for %%a in (%api_apps%) do ( | ||||
|     go build -o %%a.exe ../cmd/api/%%a/main.go | ||||
| ) | ||||
| 
 | ||||
| for %%a in (%rpc_apps%) do ( | ||||
|     go build -o %%a.exe ../cmd/rpc/%%a/main.go | ||||
| ) | ||||
| 
 | ||||
| move *exe ../cmd | ||||
							
								
								
									
										134
									
								
								openim-chat/scripts/build_all_service.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								openim-chat/scripts/build_all_service.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,134 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| 
 | ||||
| # Copyright © 2023 OpenIM. All rights reserved. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| 
 | ||||
| set -e | ||||
| set -o pipefail | ||||
| 
 | ||||
| #Include shell font styles and some basic information | ||||
| SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) | ||||
| OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. | ||||
| 
 | ||||
| #Include shell font styles and some basic information | ||||
| source $SCRIPTS_ROOT/style_info.sh | ||||
| source $SCRIPTS_ROOT/path_info.sh | ||||
| source $SCRIPTS_ROOT/function.sh | ||||
| 
 | ||||
| echo -e "${YELLOW_PREFIX}=======>SCRIPTS_ROOT=$SCRIPTS_ROOT${COLOR_SUFFIX}" | ||||
| echo -e "${YELLOW_PREFIX}=======>OPENIM_ROOT=$OPENIM_ROOT${COLOR_SUFFIX}" | ||||
| echo -e "${YELLOW_PREFIX}=======>pwd=$PWD${COLOR_SUFFIX}" | ||||
| 
 | ||||
| echo -e  "" | ||||
| 
 | ||||
| echo -e "${BACKGROUND_BLUE}===============> Building all using make build binary files ${COLOR_SUFFIX}"  | ||||
| 
 | ||||
| echo -e  "" | ||||
| echo -e "${BOLD_PREFIX}____________________________________________________________ ${COLOR_SUFFIX}" | ||||
| 
 | ||||
| 
 | ||||
| bin_dir="$BIN_DIR" | ||||
| logs_dir="$OPENIM_ROOT/logs" | ||||
| 
 | ||||
| echo "==> bin_dir=$bin_dir" | ||||
| echo "==> logs_dir=$logs_dir" | ||||
| 
 | ||||
| 
 | ||||
| cd $SCRIPTS_ROOT/.. | ||||
| 
 | ||||
| # CPU core number | ||||
| cpu_count=$(lscpu | grep -e '^CPU(s):' | awk '{print $2}') | ||||
| echo -e "${GREEN_PREFIX}======> cpu_count=$cpu_count${COLOR_SUFFIX}" | ||||
| 
 | ||||
| # Count the number of concurrent compilations (half the number of cpus) | ||||
| compile_count=$((cpu_count / 2)) | ||||
| 
 | ||||
| # Execute 'make build' run the make command for concurrent compilation | ||||
| make -j$compile_count build | ||||
| 
 | ||||
| if [ $? -ne 0 ]; then | ||||
|   echo "make build Error, script exits" | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| # Get the current operating system and architecture | ||||
| OS=$(uname -s | tr '[:upper:]' '[:lower:]') | ||||
| ARCH=$(uname -m) | ||||
| 
 | ||||
| # Select the repository home directory based on the operating system and architecture | ||||
| if [[ "$OS" == "darwin" ]]; then | ||||
|     if [[ "$ARCH" == "x86_64" ]]; then | ||||
|         REPO_DIR="darwin/amd64" | ||||
|     else | ||||
|         REPO_DIR="darwin/386" | ||||
|     fi | ||||
| elif [[ "$OS" == "linux" ]]; then | ||||
|     if [[ "$ARCH" == "x86_64" ]]; then | ||||
|         REPO_DIR="linux/amd64" | ||||
|     elif [[ "$ARCH" == "arm64" ]]; then | ||||
|         REPO_DIR="linux/arm64" | ||||
|     elif [[ "$ARCH" == "mips64" ]]; then | ||||
|         REPO_DIR="linux/mips64" | ||||
|     elif [[ "$ARCH" == "mips64le" ]]; then | ||||
|         REPO_DIR="linux/mips64le" | ||||
|     elif [[ "$ARCH" == "ppc64le" ]]; then | ||||
|         REPO_DIR="linux/ppc64le" | ||||
|     elif [[ "$ARCH" == "s390x" ]]; then | ||||
|         REPO_DIR="linux/s390x" | ||||
|     else | ||||
|         REPO_DIR="linux/386" | ||||
|     fi | ||||
| elif [[ "$OS" == "windows" ]]; then | ||||
|     if [[ "$ARCH" == "x86_64" ]]; then | ||||
|         REPO_DIR="windows/amd64" | ||||
|     else | ||||
|         REPO_DIR="windows/386" | ||||
|     fi | ||||
| else | ||||
|     echo -e "${RED_PREFIX}Unsupported OS: $OS${COLOR_SUFFIX}" | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| # Determine if all scripts were successfully built | ||||
| BUILD_SUCCESS=true | ||||
| FAILED_SCRIPTS=() | ||||
| 
 | ||||
| for binary in $(find _output/bin/platforms/$REPO_DIR -type f); do | ||||
|     if [[ ! -x $binary ]]; then | ||||
|         FAILED_SCRIPTS+=("$binary") | ||||
|         BUILD_SUCCESS=false | ||||
|     fi | ||||
| done | ||||
| 
 | ||||
| echo -e " " | ||||
| 
 | ||||
| echo -e "${BOLD_PREFIX}=====================>  Build Results <=====================${COLOR_SUFFIX}" | ||||
| 
 | ||||
| echo -e " " | ||||
| 
 | ||||
| if [[ "$BUILD_SUCCESS" == true ]]; then | ||||
|     echo -e "${GREEN_PREFIX}All binaries built successfully.${COLOR_SUFFIX}" | ||||
| else | ||||
|     echo -e "${RED_PREFIX}Some binary builds failed. Please check the following binary files:${COLOR_SUFFIX}" | ||||
|     for script in "${FAILED_SCRIPTS[@]}"; do | ||||
|         echo -e "${RED_PREFIX}$script${COLOR_SUFFIX}" | ||||
|     done | ||||
| fi | ||||
| 
 | ||||
| echo -e " " | ||||
| 
 | ||||
| echo -e "${BOLD_PREFIX}============================================================${COLOR_SUFFIX}" | ||||
| 
 | ||||
| echo -e " " | ||||
							
								
								
									
										36
									
								
								openim-chat/scripts/build_docker.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								openim-chat/scripts/build_docker.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| 
 | ||||
| # Copyright © 2023 OpenIM open source community. All rights reserved. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| 
 | ||||
| #Include shell font styles and some basic information | ||||
| SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) | ||||
| OPENIM_ROOT=$(dirname "${SCRIPTS_ROOT}")/.. | ||||
| 
 | ||||
| 
 | ||||
| IMAGE_VERSION=v1.1.0 | ||||
| image=openim/openim_chat:$IMAGE_VERSION | ||||
| 
 | ||||
| 
 | ||||
| OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. | ||||
| chmod +x $OPENIM_ROOT/scripts/*.sh | ||||
| 
 | ||||
| $OPENIM_ROOT/scripts/build_all_service.sh | ||||
| 
 | ||||
| docker build -t $image . -f $OPENIM_ROOT/deploy.Dockerfile | ||||
| 
 | ||||
| docker push $image | ||||
| 
 | ||||
| echo -e ${YELLOW_PREFIX}"docker build success"${COLOR_SUFFIX} | ||||
							
								
								
									
										49
									
								
								openim-chat/scripts/check_all.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								openim-chat/scripts/check_all.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| 
 | ||||
| # Copyright © 2023 OpenIM open source community. All rights reserved. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| 
 | ||||
| #Include shell font styles and some basic information | ||||
| SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) | ||||
| OPENIM_ROOT=$(dirname "${SCRIPTS_ROOT}")/.. | ||||
| 
 | ||||
| #Include shell font styles and some basic information | ||||
| source $SCRIPTS_ROOT/style_info.sh | ||||
| source $SCRIPTS_ROOT/path_info.sh | ||||
| source $SCRIPTS_ROOT/function.sh | ||||
| 
 | ||||
| service_port_name=( | ||||
|  openImChatApiPort | ||||
|  openImAdminApiPort | ||||
|    #api port name | ||||
|    openImAdminPort | ||||
|    openImChatPort | ||||
| ) | ||||
| 
 | ||||
| switch=$(cat $config_path | grep demoswitch |awk -F '[:]' '{print $NF}') | ||||
| for i in ${service_port_name[*]}; do | ||||
|   list=$(cat $config_path | grep -w ${i} | awk -F '[:]' '{print $NF}') | ||||
|   list_to_string $list | ||||
|   for j in ${ports_array}; do | ||||
|     port=$(ss -tunlp| grep -E 'api|rpc|open_im' | awk '{print $5}' | grep -w ${j} | awk -F '[:]' '{print $NF}') | ||||
|     if [[ ${port} -ne ${j} ]]; then | ||||
|       echo -e ${YELLOW_PREFIX}${i}${COLOR_SUFFIX}${RED_PREFIX}" service does not start normally,not initiated port is "${COLOR_SUFFIX}${YELLOW_PREFIX}${j}${COLOR_SUFFIX} | ||||
|       echo -e ${RED_PREFIX}"please check ../logs/openIM.log "${COLOR_SUFFIX} | ||||
|       exit -1 | ||||
|     else | ||||
|       echo -e ${j}${GREEN_PREFIX}" port has been listening,belongs service is "${i}${COLOR_SUFFIX} | ||||
|     fi | ||||
|   done | ||||
| done | ||||
							
								
								
									
										101
									
								
								openim-chat/scripts/docker_start_all.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								openim-chat/scripts/docker_start_all.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,101 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| # Copyright © 2023 OpenIM open source community. All rights reserved. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| 
 | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| 
 | ||||
| # Include shell font styles and some basic information | ||||
| SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) | ||||
| OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. | ||||
| 
 | ||||
| source "$SCRIPTS_ROOT/style_info.sh" | ||||
| source "$SCRIPTS_ROOT/path_info.sh" | ||||
| source "$SCRIPTS_ROOT/function.sh" | ||||
| 
 | ||||
| printf "${YELLOW_PREFIX}=======>SCRIPTS_ROOT=%s${COLOR_SUFFIX}\n" "$SCRIPTS_ROOT" | ||||
| printf "${YELLOW_PREFIX}=======>OPENIM_ROOT=%s${COLOR_SUFFIX}\n" "$OPENIM_ROOT" | ||||
| printf "${YELLOW_PREFIX}=======>pwd=%s${COLOR_SUFFIX}\n" "$PWD" | ||||
| 
 | ||||
| bin_dir="$BIN_DIR" | ||||
| logs_dir="$SCRIPTS_ROOT/../logs" | ||||
| 
 | ||||
| printf "${YELLOW_PREFIX}=======>bin_dir=%s${COLOR_SUFFIX}\n" "$bin_dir" | ||||
| printf "${YELLOW_PREFIX}=======>logs_dir=%s${COLOR_SUFFIX}\n" "$logs_dir" | ||||
| printf "${YELLOW_PREFIX}=======>sdk_db_dir=%s${COLOR_SUFFIX}\n" "$sdk_db_dir" | ||||
| 
 | ||||
| # Service filenames | ||||
| service_filenames=( | ||||
|   chat-api | ||||
|   admin-api | ||||
|   #rpc | ||||
|   admin-rpc | ||||
|   chat-rpc | ||||
| ) | ||||
| 
 | ||||
| # Service config port names | ||||
| service_port_names=( | ||||
|   openImChatApiPort | ||||
|   openImAdminApiPort | ||||
|   #api port name | ||||
|   openImAdminPort | ||||
|   openImChatPort | ||||
| ) | ||||
| 
 | ||||
| service_prometheus_port_names=() | ||||
| 
 | ||||
| cd "$SCRIPTS_ROOT" | ||||
| 
 | ||||
| # Function to kill a service | ||||
| kill_service() { | ||||
|   local service_name=$1 | ||||
|   local pid=$(pgrep -f "$service_name") | ||||
|   if [ -n "$pid" ]; then | ||||
|     echo "$service_name service has been started, pid: $pid" | ||||
|     echo "Killing the service $service_name, pid: $pid" | ||||
|     killall "$service_name" | ||||
|     sleep 0.5 | ||||
|   fi | ||||
| } | ||||
| 
 | ||||
| for ((i = 0; i < ${#service_filenames[*]}; i++)); do | ||||
|   service_name="${service_filenames[$i]}" | ||||
|   kill_service "$service_name" | ||||
|   cd "$SCRIPTS_ROOT" | ||||
| 
 | ||||
|   # Get the rpc ports from the configuration file | ||||
|   readarray -t portList < "$config_path" | ||||
|   service_ports=() | ||||
|   for line in "${portList[@]}"; do | ||||
|     if [[ $line == *"${service_port_names[$i]}"* ]]; then | ||||
|       port=$(echo "$line" | awk -F ':' '{print $NF}') | ||||
|       service_ports+=("$port") | ||||
|     fi | ||||
|   done | ||||
| 
 | ||||
|   # Start related rpc services based on the number of ports | ||||
|   for port in "${service_ports[@]}"; do | ||||
|     # Start the service in the background | ||||
|     cmd="$bin_dir/$service_name -port $port --config_folder_path $config_path" | ||||
|     if [[ $i -eq 0 || $i -eq 1 ]]; then | ||||
|       cmd="$bin_dir/$service_name -port $port --config_folder_path $config_path" | ||||
|     fi | ||||
|     echo "$cmd" | ||||
|     nohup "$cmd" >> "${logs_dir}/openIM.log" 2>&1 & | ||||
|     sleep 1 | ||||
|   done | ||||
| done | ||||
| 
 | ||||
| sleep infinity | ||||
							
								
								
									
										32
									
								
								openim-chat/scripts/function.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								openim-chat/scripts/function.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,32 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| 
 | ||||
| # Copyright © 2023 OpenIM open source community. All rights reserved. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| 
 | ||||
| #input:[10023,2323,3434] | ||||
| #output:10023 2323 3434 | ||||
| list_to_string(){ | ||||
|     ports_list=$* | ||||
|     sub_s1=`echo $ports_list | sed 's/ //g'` | ||||
|     sub_s2=${sub_s1//,/ } | ||||
|     sub_s3=${sub_s2#*[} | ||||
|     sub_s4=${sub_s3%]*} | ||||
|     ports_array=$sub_s4 | ||||
| } | ||||
| 
 | ||||
| remove_space(){ | ||||
|   value=$* | ||||
|   result=`echo $value | sed 's/ //g'` | ||||
| } | ||||
							
								
								
									
										93
									
								
								openim-chat/scripts/githooks/commit-msg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								openim-chat/scripts/githooks/commit-msg
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,93 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| # Copyright © 2023 OpenIMSDK. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| # | ||||
| # ============================================================================== | ||||
| # | ||||
| # Store this file as .git/hooks/commit-msg in your repository in order to | ||||
| # enforce checking for proper commit message format before actual commits. | ||||
| # You may need to make the scripts executable by 'chmod +x .git/hooks/commit-msg'. | ||||
| 
 | ||||
| # commit-msg use go-gitlint tool, install go-gitlint via `go get github.com/llorllale/go-gitlint/cmd/go-gitlint` | ||||
| # go-gitlint --msg-file="$1" | ||||
| 
 | ||||
| # An example hook scripts to check the commit log message. | ||||
| # Called by "git commit" with one argument, the name of the file | ||||
| # that has the commit message.  The hook should exit with non-zero | ||||
| # status after issuing an appropriate message if it wants to stop the | ||||
| # commit.  The hook is allowed to edit the commit message file. | ||||
| 
 | ||||
| YELLOW="\e[93m" | ||||
| GREEN="\e[32m" | ||||
| RED="\e[31m" | ||||
| ENDCOLOR="\e[0m" | ||||
| 
 | ||||
| printMessage() { | ||||
|    printf "${YELLOW}OpenIM : $1${ENDCOLOR}\n" | ||||
| } | ||||
| 
 | ||||
| printSuccess() { | ||||
|    printf "${GREEN}OpenIM : $1${ENDCOLOR}\n" | ||||
| } | ||||
| 
 | ||||
| printError() { | ||||
|    printf "${RED}OpenIM : $1${ENDCOLOR}\n" | ||||
| } | ||||
| 
 | ||||
| printMessage "Running the OpenIM commit-msg hook." | ||||
| 
 | ||||
| # This example catches duplicate Signed-off-by lines. | ||||
| 
 | ||||
| test "" = "$(grep '^Signed-off-by: ' "$1" | | ||||
| 	 sort | uniq -c | sed -e '/^[ 	]*1[ 	]/d')" || { | ||||
| 	echo >&2 Duplicate Signed-off-by lines. | ||||
| 	exit 1 | ||||
| } | ||||
| 
 | ||||
| # TODO: go-gitlint dir set | ||||
| OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/../.. | ||||
| GITLINT_DIR="$OPENIM_ROOT/_output/tools/go-gitlint" | ||||
| 
 | ||||
| $GITLINT_DIR \ | ||||
|     --msg-file=$1 \ | ||||
|     --subject-regex="^(build|chore|ci|docs|feat|feature|fix|perf|refactor|revert|style|bot|test)(.*)?:\s?.*" \ | ||||
|     --subject-maxlen=150 \ | ||||
|     --subject-minlen=10 \ | ||||
|     --body-regex=".*" \ | ||||
|     --max-parents=1 | ||||
| 
 | ||||
| if [ $? -ne 0 ] | ||||
| then | ||||
|     if ! command -v $GITLINT_DIR &>/dev/null; then | ||||
|         printError "$GITLINT_DIR not found. Please run 'make tools' OR 'make tools.verify.go-gitlint' make verto install it." | ||||
|     fi | ||||
|     printError "Please fix your commit message to match kubecub coding standards" | ||||
|     printError "https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694#file-githook-md" | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| ### Add Sign-off-by line to the end of the commit message | ||||
| # Get local git config | ||||
| NAME=$(git config user.name) | ||||
| EMAIL=$(git config user.email) | ||||
| 
 | ||||
| # Check if the commit message contains a sign-off line | ||||
| grep -qs "^Signed-off-by: " "$1" | ||||
| SIGNED_OFF_BY_EXISTS=$? | ||||
| 
 | ||||
| # Add "Signed-off-by" line if it doesn't exist | ||||
| if [ $SIGNED_OFF_BY_EXISTS -ne 0 ]; then | ||||
|   echo -e "\nSigned-off-by: $NAME <$EMAIL>" >> "$1" | ||||
| fi | ||||
							
								
								
									
										112
									
								
								openim-chat/scripts/githooks/pre-commit
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								openim-chat/scripts/githooks/pre-commit
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,112 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| # Copyright © 2023 OpenIMSDK. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| # | ||||
| # ============================================================================== | ||||
| # This is a pre-commit hook that ensures attempts to commit files that are | ||||
| # are larger than $limit to your _local_ repo fail, with a helpful error message. | ||||
| 
 | ||||
| # You can override the default limit of 2MB by supplying the environment variable: | ||||
| # GIT_FILE_SIZE_LIMIT=50000000 git commit -m "test: this commit is allowed file sizes up to 50MB" | ||||
| # | ||||
| # ============================================================================== | ||||
| # | ||||
| 
 | ||||
| LC_ALL=C | ||||
| 
 | ||||
| local_branch="$(git rev-parse --abbrev-ref HEAD)" | ||||
| valid_branch_regex="^(main|master|develop|release(-[a-zA-Z0-9._-]+)?)$|(feature|feat|openim|hotfix|test|bug|bot|ci|cicd|style|)\/[a-z0-9._-]+$|^HEAD$" | ||||
| 
 | ||||
| YELLOW="\e[93m" | ||||
| GREEN="\e[32m" | ||||
| RED="\e[31m" | ||||
| ENDCOLOR="\e[0m" | ||||
| 
 | ||||
| printMessage() { | ||||
|    printf "${YELLOW}openim : $1${ENDCOLOR}\n" | ||||
| } | ||||
| 
 | ||||
| printSuccess() { | ||||
|    printf "${GREEN}openim : $1${ENDCOLOR}\n" | ||||
| } | ||||
| 
 | ||||
| printError() { | ||||
|    printf "${RED}openim : $1${ENDCOLOR}\n" | ||||
| } | ||||
| 
 | ||||
| printMessage "Running local openim pre-commit hook." | ||||
| 
 | ||||
| # flutter format . | ||||
| # https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694#file-githook-md | ||||
| # TODO! GIT_FILE_SIZE_LIMIT=50000000 git commit -m "test: this commit is allowed file sizes up to 50MB" | ||||
| # Maximum file size limit in bytes | ||||
| limit=${GIT_FILE_SIZE_LIMIT:-2000000} # Default 2MB | ||||
| limitInMB=$(( $limit / 1000000 )) | ||||
| 
 | ||||
| function file_too_large(){ | ||||
| 	filename=$0 | ||||
| 	filesize=$(( $1 / 2**20 )) | ||||
| 
 | ||||
| 	cat <<HEREDOC | ||||
| 
 | ||||
| 	File $filename is $filesize MB, which is larger than github's maximum | ||||
|         file size (2 MB). We will not be able to push this file to GitHub. | ||||
| 	Commit aborted | ||||
| 
 | ||||
| HEREDOC | ||||
|     git status | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| # Move to the repo root so git files paths make sense | ||||
| repo_root=$( git rev-parse --show-toplevel ) | ||||
| cd $repo_root | ||||
| 
 | ||||
| empty_tree=$( git hash-object -t tree /dev/null ) | ||||
| 
 | ||||
| if git rev-parse --verify HEAD > /dev/null 2>&1 | ||||
| then | ||||
| 	against=HEAD | ||||
| else | ||||
| 	against="$empty_tree" | ||||
| fi | ||||
| 
 | ||||
| # Set split so that for loop below can handle spaces in file names by splitting on line breaks | ||||
| IFS=' | ||||
| ' | ||||
| 
 | ||||
| shouldFail=false | ||||
| for file in $( git diff-index --cached --name-only $against ); do | ||||
| 	file_size=$(([ ! -f $file ] && echo 0) || (ls -la $file | awk '{ print $5 }')) | ||||
| 	if [ "$file_size" -gt  "$limit" ]; then | ||||
| 	    printError "File $file is $(( $file_size / 10**6 )) MB, which is larger than our configured limit of $limitInMB MB" | ||||
|         shouldFail=true | ||||
| 	fi | ||||
| done | ||||
| 
 | ||||
| if $shouldFail | ||||
| then | ||||
|     printMessage "If you really need to commit this file, you can override the size limit by setting the GIT_FILE_SIZE_LIMIT environment variable, e.g. GIT_FILE_SIZE_LIMIT=42000000 for 42MB. Or, commit with the --no-verify switch to skip the check entirely." | ||||
| 	  printError "Commit aborted" | ||||
|     exit 1; | ||||
| fi | ||||
| 
 | ||||
| if [[ ! $local_branch =~ $valid_branch_regex ]] | ||||
| then | ||||
|     printError "There is something wrong with your branch name. Branch names in this project must adhere to this contract: $valid_branch_regex.  | ||||
| Your commit will be rejected. You should rename your branch to a valid name(feat/name OR bug/name) and try again." | ||||
|     printError "For more on this, read on: https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694" | ||||
|     exit 1 | ||||
| fi | ||||
							
								
								
									
										120
									
								
								openim-chat/scripts/githooks/pre-push
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								openim-chat/scripts/githooks/pre-push
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,120 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| # Copyright © 2023 OpenIMSDK. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| # | ||||
| # ============================================================================== | ||||
| # | ||||
| 
 | ||||
| YELLOW="\e[93m" | ||||
| GREEN="\e[32m" | ||||
| RED="\e[31m" | ||||
| ENDCOLOR="\e[0m" | ||||
| 
 | ||||
| local_branch="$(git rev-parse --abbrev-ref HEAD)" | ||||
| valid_branch_regex="^(main|master|develop|release(-[a-zA-Z0-9._-]+)?)$|(feature|feat|openim|hotfix|test|bug|ci|cicd|style|)\/[a-z0-9._-]+$|^HEAD$" | ||||
| 
 | ||||
| printMessage() { | ||||
|    printf "${YELLOW}OpenIM : $1${ENDCOLOR}\n" | ||||
| } | ||||
| 
 | ||||
| printSuccess() { | ||||
|    printf "${GREEN}OpenIM : $1${ENDCOLOR}\n" | ||||
| } | ||||
| 
 | ||||
| printError() { | ||||
|    printf "${RED}OpenIM : $1${ENDCOLOR}\n" | ||||
| } | ||||
| 
 | ||||
| printMessage "Running local OpenIM pre-push hook." | ||||
| 
 | ||||
| if [[ `git status --porcelain` ]]; then | ||||
|   printError "This scripts needs to run against committed code only. Please commit or stash you changes." | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| COLOR_SUFFIX="\033[0m" | ||||
| 
 | ||||
| BLACK_PREFIX="\033[30m" | ||||
| RED_PREFIX="\033[31m" | ||||
| GREEN_PREFIX="\033[32m" | ||||
| BACKGROUND_GREEN="\033[33m" | ||||
| BLUE_PREFIX="\033[34m" | ||||
| PURPLE_PREFIX="\033[35m" | ||||
| SKY_BLUE_PREFIX="\033[36m" | ||||
| WHITE_PREFIX="\033[37m" | ||||
| BOLD_PREFIX="\033[1m" | ||||
| UNDERLINE_PREFIX="\033[4m" | ||||
| ITALIC_PREFIX="\033[3m" | ||||
| 
 | ||||
| # Function to print colored text | ||||
| print_color() { | ||||
|   local text=$1 | ||||
|   local color=$2 | ||||
|   echo -e "${color}${text}${COLOR_SUFFIX}" | ||||
| } | ||||
| 
 | ||||
| # Function to print section separator | ||||
| print_separator() { | ||||
|   print_color "==========================================================" ${PURPLE_PREFIX} | ||||
| } | ||||
| 
 | ||||
| # Get current time | ||||
| time=$(date +"%Y-%m-%d %H:%M:%S") | ||||
| 
 | ||||
| # Print section separator | ||||
| print_separator | ||||
| 
 | ||||
| # Print time of submission | ||||
| print_color "PTIME: ${time}" "${BOLD_PREFIX}${CYAN_PREFIX}" | ||||
| echo "" | ||||
| author=$(git config user.name) | ||||
| repository=$(basename -s .git $(git config --get remote.origin.url)) | ||||
| 
 | ||||
| # Print additional information if needed | ||||
| print_color "Repository: ${repository}" "${BLUE_PREFIX}" | ||||
| echo "" | ||||
| 
 | ||||
| print_color "Author: ${author}" "${PURPLE_PREFIX}" | ||||
| 
 | ||||
| # Print section separator | ||||
| print_separator | ||||
| 
 | ||||
| file_list=$(git diff --name-status HEAD @{u}) | ||||
| added_files=$(grep -c '^A' <<< "$file_list") | ||||
| modified_files=$(grep -c '^M' <<< "$file_list") | ||||
| deleted_files=$(grep -c '^D' <<< "$file_list") | ||||
| 
 | ||||
| print_color "Added Files: ${added_files}" "${BACKGROUND_GREEN}" | ||||
| print_color "Modified Files: ${modified_files}" "${BACKGROUND_GREEN}" | ||||
| print_color "Deleted Files: ${deleted_files}" "${BACKGROUND_GREEN}" | ||||
| 
 | ||||
| if [[ ! $local_branch =~ $valid_branch_regex ]] | ||||
| then | ||||
|     printError "There is something wrong with your branch name. Branch names in this project must adhere to this contract: $valid_branch_regex.  | ||||
| Your commit will be rejected. You should rename your branch to a valid name(feat/name OR bug/name) and try again." | ||||
|     printError "For more on this, read on: https://gist.github.com/cubxxw/126b72104ac0b0ca484c9db09c3e5694" | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| # | ||||
| #printMessage "Running the Flutter analyzer" | ||||
| #flutter analyze | ||||
| # | ||||
| #if [ $? -ne 0 ]; then | ||||
| #  printError "Flutter analyzer error" | ||||
| #  exit 1 | ||||
| #fi | ||||
| # | ||||
| #printMessage "Finished running the Flutter analyzer" | ||||
							
								
								
									
										80
									
								
								openim-chat/scripts/path_info.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								openim-chat/scripts/path_info.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,80 @@ | ||||
| #!/usr/bin/env bash | ||||
| # Copyright © 2023 OpenIM open source community. All rights reserved. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #Don't put the space between "=" | ||||
| 
 | ||||
| #Include shell font styles and some basic information | ||||
| SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) | ||||
| OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. | ||||
| 
 | ||||
| # Determine the architecture and version | ||||
| architecture=$(uname -m) | ||||
| version=$(uname -s | tr '[:upper:]' '[:lower:]') | ||||
| 
 | ||||
| #Include shell font styles and some basic information | ||||
| source $SCRIPTS_ROOT/style_info.sh | ||||
| 
 | ||||
| cd $SCRIPTS_ROOT | ||||
| 
 | ||||
| # Define the supported architectures and corresponding bin directories | ||||
| declare -A supported_architectures=( | ||||
|     ["linux-amd64"]="_output/bin/platforms/linux/amd64" | ||||
|     ["linux-arm64"]="_output/bin/platforms/linux/arm64" | ||||
|     ["linux-mips64"]="_output/bin/platforms/linux/mips64" | ||||
|     ["linux-mips64le"]="_output/bin/platforms/linux/mips64le" | ||||
|     ["linux-ppc64le"]="_output/bin/platforms/linux/ppc64le" | ||||
|     ["linux-s390x"]="_output/bin/platforms/linux/s390x" | ||||
|     ["darwin-amd64"]="_output/bin/platforms/darwin/amd64" | ||||
|     ["windows-amd64"]="_output/bin/platforms/windows/amd64" | ||||
|     ["linux-x86_64"]="_output/bin/platforms/linux/amd64"  # Alias for linux-amd64 | ||||
|     ["darwin-x86_64"]="_output/bin/platforms/darwin/amd64"  # Alias for darwin-amd64 | ||||
| ) | ||||
| 
 | ||||
| # Check if the architecture and version are supported | ||||
| if [[ -z ${supported_architectures["$version-$architecture"]} ]]; then | ||||
|     echo -e "${BLUE_PREFIX}================> Unsupported architecture: $architecture or version: $version${COLOR_SUFFIX}" | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| echo -e "${BLUE_PREFIX}================> Architecture: $architecture${COLOR_SUFFIX}" | ||||
| 
 | ||||
| # Set the BIN_DIR based on the architecture and version | ||||
| BIN_DIR=${SCRIPTS_ROOT}/../${supported_architectures["$version-$architecture"]} | ||||
| 
 | ||||
| echo -e "${BLUE_PREFIX}================> BIN_DIR: $OPENIM_ROOT/$BIN_DIR${COLOR_SUFFIX}" | ||||
| 
 | ||||
| #Global configuration file default dir | ||||
| config_path="$OPENIM_ROOT/config/config.yaml" | ||||
| configfile_path="$OPENIM_ROOT/config" | ||||
| log_path="$OPENIM_ROOT/log" | ||||
| 
 | ||||
| #servicefile dir path | ||||
| service_source_root=( | ||||
|   #api service file | ||||
|   $OPENIM_ROOT/cmd/api/chat-api/ | ||||
|   $OPENIM_ROOT/cmd/api/admin-api/ | ||||
|   #rpc service file | ||||
|   $OPENIM_ROOT/cmd/rpc/admin-rpc/ | ||||
|   $OPENIM_ROOT/cmd/rpc/chat-rpc/ | ||||
| ) | ||||
| #service filename | ||||
| service_names=( | ||||
|   chat-api | ||||
|   admin-api | ||||
|   chat-rpc | ||||
|   admin-rpc | ||||
| ) | ||||
							
								
								
									
										5
									
								
								openim-chat/scripts/start.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								openim-chat/scripts/start.bat
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| cd /d %~dp0../cmd | ||||
| start admin-rpc.exe | ||||
| start chat-rpc.exe | ||||
| start chat-api.exe | ||||
| start admin-api.exe | ||||
							
								
								
									
										105
									
								
								openim-chat/scripts/start_all.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								openim-chat/scripts/start_all.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,105 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| # Copyright © 2023 OpenIM open source community. All rights reserved. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| 
 | ||||
| set -e | ||||
| set -o pipefail | ||||
| 
 | ||||
| #Include shell font styles and some basic information | ||||
| SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) | ||||
| OPENIM_ROOT=$(dirname "${SCRIPTS_ROOT}")/.. | ||||
| 
 | ||||
| source $SCRIPTS_ROOT/style_info.sh | ||||
| source $SCRIPTS_ROOT/path_info.sh | ||||
| source $SCRIPTS_ROOT/function.sh | ||||
| 
 | ||||
| echo -e "${YELLOW_PREFIX}=======>SCRIPTS_ROOT=$SCRIPTS_ROOT${COLOR_SUFFIX}" | ||||
| echo -e "${YELLOW_PREFIX}=======>OPENIM_ROOT=$OPENIM_ROOT${COLOR_SUFFIX}" | ||||
| echo -e "${YELLOW_PREFIX}=======>pwd=$PWD${COLOR_SUFFIX}" | ||||
| 
 | ||||
| # if [ ! -d "${OPENIM_ROOT}/_output/bin/platforms" ]; then | ||||
| #   cd $OPENIM_ROOT | ||||
| #   # exec build_all_service.sh | ||||
| #   "${SCRIPTS_ROOT}/build_all_service.sh" | ||||
| # fi | ||||
| 
 | ||||
| bin_dir="$BIN_DIR" | ||||
| logs_dir="$SCRIPTS_ROOT/../logs" | ||||
| 
 | ||||
| echo -e "${YELLOW_PREFIX}=======>bin_dir=$bin_dir${COLOR_SUFFIX}" | ||||
| echo -e "${YELLOW_PREFIX}=======>logs_dir=$logs_dir${COLOR_SUFFIX}" | ||||
| 
 | ||||
| #service filename | ||||
| service_filename=( | ||||
|   chat-api | ||||
|   admin-api | ||||
|   #rpc | ||||
|   admin-rpc | ||||
|   chat-rpc | ||||
| ) | ||||
| 
 | ||||
| #service config port name | ||||
| service_port_name=( | ||||
| openImChatApiPort | ||||
| openImAdminApiPort | ||||
|   #api port name | ||||
|   openImAdminPort | ||||
|   openImChatPort | ||||
| ) | ||||
| 
 | ||||
| service_prometheus_port_name=( | ||||
| 
 | ||||
| ) | ||||
| 
 | ||||
| # Automatically created when there is no bin, logs folder | ||||
| if [ ! -d $logs_dir ]; then | ||||
|   mkdir -p $logs_dir | ||||
| fi | ||||
| cd $SCRIPTS_ROOT | ||||
| 
 | ||||
| for ((i = 0; i < ${#service_filename[*]}; i++)); do | ||||
|   #Check whether the service exists | ||||
| #  service_name="ps |grep -w ${service_filename[$i]} |grep -v grep" | ||||
| #  count="${service_name}| wc -l" | ||||
| # | ||||
| #  if [ $(eval ${count}) -gt 0 ]; then | ||||
| #    pid="${service_name}| awk '{print \$2}'" | ||||
| #    echo  "${service_filename[$i]} service has been started,pid:$(eval $pid)" | ||||
| #    echo  "killing the service ${service_filename[$i]} pid:$(eval $pid)" | ||||
| #    #kill the service that existed | ||||
| #    kill -9 $(eval $pid) | ||||
| #    sleep 0.5 | ||||
| #  fi | ||||
|   cd $SCRIPTS_ROOT | ||||
| 
 | ||||
|   #Get the rpc port in the configuration file | ||||
|   portList=$(cat $config_path | grep ${service_port_name[$i]} | awk -F '[:]' '{print $NF}') | ||||
|   list_to_string ${portList} | ||||
|   service_ports=($ports_array) | ||||
| 
 | ||||
|   #Start related rpc services based on the number of ports | ||||
|   for ((j = 0; j < ${#service_ports[*]}; j++)); do | ||||
|     #Start the service in the background | ||||
|     cmd="$bin_dir/${service_filename[$i]} -port ${service_ports[$j]} --config_folder_path ${config_path}" | ||||
|     if [ $i -eq 0 -o $i -eq 1 ]; then | ||||
|       cmd="$bin_dir/${service_filename[$i]} -port ${service_ports[$j]} --config_folder_path ${config_path}" | ||||
|     fi | ||||
|     echo $cmd | ||||
|     nohup $cmd >>${logs_dir}/openIM.log 2>&1 & | ||||
|     sleep 1 | ||||
| #    pid="netstat -ntlp|grep $j |awk '{printf \$7}'|cut -d/ -f1" | ||||
| #    echo -e "${GREEN_PREFIX}${service_filename[$i]} start success,port number:${service_ports[$j]} pid:$(eval $pid)$COLOR_SUFFIX" | ||||
|   done | ||||
| done | ||||
							
								
								
									
										47
									
								
								openim-chat/scripts/stop_all.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								openim-chat/scripts/stop_all.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| # Copyright © 2023 OpenIM open source community. All rights reserved. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| 
 | ||||
| #fixme This scripts is to stop the service | ||||
| SCRIPTS_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) | ||||
| OPENIM_ROOT=$(cd $(dirname "${BASH_SOURCE[0]}")/.. &&pwd) | ||||
| 
 | ||||
| source $OPENIM_ROOT/scripts/style_info.sh | ||||
| source $OPENIM_ROOT/scripts/path_info.sh | ||||
| source $SCRIPTS_ROOT/function.sh | ||||
| 
 | ||||
| service_port_name=( | ||||
|  openImChatApiPort | ||||
|  openImAdminApiPort | ||||
|    #api port name | ||||
|    openImAdminPort | ||||
|    openImChatPort | ||||
| ) | ||||
| 
 | ||||
| for i in ${service_port_name[*]}; do | ||||
|   list=$(cat $OPENIM_ROOT/config/config.yaml | grep -w ${i} | awk -F '[:]' '{print $NF}') | ||||
|   list_to_string $list | ||||
|   for j in ${ports_array}; do | ||||
|       name="ps -aux |grep -w $j |grep -v grep" | ||||
|       count="${name}| wc -l" | ||||
|       if [ $(eval ${count}) -gt 0 ]; then | ||||
|         pid="${name}| awk '{print \$2}'" | ||||
|         echo -e "${SKY_BLUE_PREFIX}Killing service:$i pid:$(eval $pid)${COLOR_SUFFIX}" | ||||
|         #kill the service that existed | ||||
|         kill -9 $(eval $pid) | ||||
|         echo -e "${SKY_BLUE_PREFIX}service:$i was killed ${COLOR_SUFFIX}" | ||||
|       fi | ||||
|   done | ||||
| done | ||||
							
								
								
									
										66
									
								
								openim-chat/scripts/style_info.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								openim-chat/scripts/style_info.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,66 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| # Copyright © 2023 OpenIM. All rights reserved. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| 
 | ||||
| function style-info() { | ||||
|     COLOR_SUFFIX="\033[0m"  # End all colors and special effects | ||||
| 
 | ||||
|     BLACK_PREFIX="\033[30m"  # Black prefix | ||||
|     RED_PREFIX="\033[31m"  # Red prefix | ||||
|     GREEN_PREFIX="\033[32m"  # Green prefix | ||||
|     YELLOW_PREFIX="\033[33m"  # Yellow prefix | ||||
|     BLUE_PREFIX="\033[34m"  # Blue prefix | ||||
|     PURPLE_PREFIX="\033[35m"  # Purple prefix | ||||
|     SKY_BLUE_PREFIX="\033[36m"  # Sky blue prefix | ||||
|     WHITE_PREFIX="\033[37m"  # White prefix | ||||
|     BOLD_PREFIX="\033[1m"  # Bold prefix | ||||
|     UNDERLINE_PREFIX="\033[4m"  # Underline prefix | ||||
|     ITALIC_PREFIX="\033[3m"  # Italic prefix | ||||
| 
 | ||||
|     CYAN_PREFIX="033[0;36m"  # Cyan prefix | ||||
| 
 | ||||
|     BACKGROUND_BLACK="\033[40m"  # Black background | ||||
|     BACKGROUND_RED="\033[41m"  # Red background | ||||
|     BACKGROUND_GREEN="\033[42m"  # Green background | ||||
|     BACKGROUND_YELLOW="\033[43m"  # Yellow background | ||||
|     BACKGROUND_BLUE="\033[44m"  # Blue background | ||||
|     BACKGROUND_PURPLE="\033[45m"  # Purple background | ||||
|     BACKGROUND_SKY_BLUE="\033[46m"  # Sky blue background | ||||
|     BACKGROUND_WHITE="\033[47m"  # White background | ||||
| 
 | ||||
|     BLINK="\033[5m"  # Blinking effect | ||||
|     INVERT="\033[7m"  # Invert color | ||||
|     HIDE="\033[8m"  # Hide text | ||||
| 
 | ||||
|     GRAY_PREFIX="\033[90m"  # Gray prefix | ||||
|     LIGHT_RED_PREFIX="\033[91m"  # Light red prefix | ||||
|     LIGHT_GREEN_PREFIX="\033[92m"  # Light green prefix | ||||
|     LIGHT_YELLOW_PREFIX="\033[93m"  # Light yellow prefix | ||||
|     LIGHT_BLUE_PREFIX="\033[94m"  # Light blue prefix | ||||
|     LIGHT_PURPLE_PREFIX="\033[95m"  # Light purple prefix | ||||
|     LIGHT_SKY_BLUE_PREFIX="\033[96m"  # Light sky blue prefix | ||||
|     LIGHT_WHITE_PREFIX="\033[97m"  # Light white prefix | ||||
| 
 | ||||
|     BACKGROUND_GRAY="\033[100m"  # Gray background | ||||
|     BACKGROUND_LIGHT_RED="\033[101m"  # Light red background | ||||
|     BACKGROUND_LIGHT_GREEN="\033[102m"  # Light green background | ||||
|     BACKGROUND_LIGHT_YELLOW="\033[103m"  # Light yellow background | ||||
|     BACKGROUND_LIGHT_BLUE="\033[104m"  # Light blue background | ||||
|     BACKGROUND_LIGHT_PURPLE="\033[105m"  # Light purple background | ||||
|     BACKGROUND_LIGHT_SKY_BLUE="\033[106m"  # Light sky blue background | ||||
|     BACKGROUND_LIGHT_WHITE="\033[107m"  # Light white background | ||||
| } | ||||
| 
 | ||||
| style-info | ||||
| @ -78,6 +78,7 @@ func MsgDB2Pb(msgModel *unrelation.MsgDataModel) *sdkws.MsgData { | ||||
| 	msg.SendTime = msgModel.SendTime | ||||
| 	msg.CreateTime = msgModel.CreateTime | ||||
| 	msg.Status = msgModel.Status | ||||
| 	msg.IsRead = msgModel.IsRead | ||||
| 	msg.Options = msgModel.Options | ||||
| 	if msgModel.OfflinePush != nil { | ||||
| 		msg.OfflinePushInfo = &sdkws.OfflinePushInfo{ | ||||
|  | ||||
							
								
								
									
										3
									
								
								pkg/common/db/cache/user.go
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								pkg/common/db/cache/user.go
									
									
									
									
										vendored
									
									
								
							| @ -17,11 +17,12 @@ package cache | ||||
| import ( | ||||
| 	"context" | ||||
| 	"encoding/json" | ||||
| 	"github.com/OpenIMSDK/protocol/constant" | ||||
| 	"hash/crc32" | ||||
| 	"strconv" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/OpenIMSDK/protocol/constant" | ||||
| 
 | ||||
| 	"github.com/OpenIMSDK/protocol/user" | ||||
| 	"github.com/OpenIMSDK/tools/errs" | ||||
| 
 | ||||
|  | ||||
| @ -21,6 +21,8 @@ import ( | ||||
| 	"fmt" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/OpenIMSDK/tools/log" | ||||
| 
 | ||||
| 	"github.com/OpenIMSDK/protocol/msg" | ||||
| 
 | ||||
| 	"github.com/OpenIMSDK/protocol/constant" | ||||
| @ -1166,9 +1168,7 @@ func (m *MsgMongoDriver) searchMessage(ctx context.Context, req *msg.SearchMessa | ||||
| 	if err != nil { | ||||
| 		return 0, nil, err | ||||
| 	} | ||||
| 	if len(msgsDocs) == 0 { | ||||
| 		return 0, nil, errs.Wrap(mongo.ErrNoDocuments) | ||||
| 	} | ||||
| 	log.ZDebug(ctx, "query mongoDB", "result", msgsDocs) | ||||
| 	msgs := make([]*table.MsgInfoModel, 0) | ||||
| 	for index := range msgsDocs { | ||||
| 		msgInfo := msgsDocs[index].Msg | ||||
| @ -1207,7 +1207,9 @@ func (m *MsgMongoDriver) searchMessage(ctx context.Context, req *msg.SearchMessa | ||||
| 	} | ||||
| 	start := (req.Pagination.PageNumber - 1) * req.Pagination.ShowNumber | ||||
| 	n := int32(len(msgs)) | ||||
| 	if start+req.Pagination.ShowNumber < n { | ||||
| 	if start >= n { | ||||
| 		return n, []*table.MsgInfoModel{}, nil | ||||
| 	} else if start+req.Pagination.ShowNumber < n { | ||||
| 		msgs = msgs[start : start+req.Pagination.ShowNumber] | ||||
| 	} else { | ||||
| 		msgs = msgs[start:] | ||||
|  | ||||
| @ -16,11 +16,13 @@ package notification | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 
 | ||||
| 	"github.com/OpenIMSDK/protocol/constant" | ||||
| 	"github.com/OpenIMSDK/protocol/sdkws" | ||||
| 
 | ||||
| 	"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/controller" | ||||
| 	relationTb "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/relation" | ||||
| 	"github.com/OpenIMSDK/Open-IM-Server/pkg/rpcclient" | ||||
| 	"github.com/OpenIMSDK/protocol/constant" | ||||
| 	"github.com/OpenIMSDK/protocol/sdkws" | ||||
| ) | ||||
| 
 | ||||
| type UserNotificationSender struct { | ||||
|  | ||||
| @ -45,7 +45,7 @@ echo "++++ Check all OpenIM service ports" | ||||
| echo "+ The port being checked: ${OPENIM_SERVER_PORT_LISTARIES[@]}" | ||||
| openim::util::check_ports ${OPENIM_SERVER_PORT_LISTARIES[@]} | ||||
| if [[ $? -ne 0 ]]; then | ||||
|   echo "+++ cat OpenIM Log file >>> ${LOG_FILE}" | ||||
|   echo "+++ cat openim log file >>> ${LOG_FILE}" | ||||
|   openim::log::error_exit "The service does not start properly, please check the port, query variable definition!" | ||||
| else | ||||
|   echo "++++ Check all openim service ports successfully !" | ||||
|  | ||||
| @ -142,12 +142,12 @@ func checkMysql() error { | ||||
| 		config.Config.Mysql.Username, config.Config.Mysql.Password, config.Config.Mysql.Address[0], "mysql") | ||||
| 	db, err := gorm.Open(mysql.Open(dsn), nil) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 		return errs.Wrap(err) | ||||
| 	} else { | ||||
| 		sqlDB, err = db.DB() | ||||
| 		err = sqlDB.Ping() | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 			return errs.Wrap(err) | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| @ -172,11 +172,11 @@ func checkMongo() error { | ||||
| 		fmt.Sprintf("mongodb://%v:%v@%v/?authSource=admin", | ||||
| 			config.Config.Mongo.Username, config.Config.Mongo.Password, mongodbHosts))) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 		return errs.Wrap(err) | ||||
| 	} else { | ||||
| 		err = client.Ping(context.TODO(), &readpref.ReadPref{}) | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 			return errs.Wrap(err) | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| @ -191,7 +191,7 @@ func checkMinio() error { | ||||
| 			Secure: u.Scheme == "https", | ||||
| 		}) | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 			return errs.Wrap(err) | ||||
| 		} | ||||
| 
 | ||||
| 		cancel, err := minioClient.HealthCheck(time.Duration(minioHealthCheckDuration) * time.Second) | ||||
| @ -201,7 +201,7 @@ func checkMinio() error { | ||||
| 			} | ||||
| 		}() | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 			return errs.Wrap(err) | ||||
| 		} else { | ||||
| 			if minioClient.IsOffline() { | ||||
| 				return ErrComponentStart.Wrap("Minio server is offline") | ||||
| @ -236,7 +236,7 @@ func checkRedis() error { | ||||
| 	} | ||||
| 	_, err := redisClient.Ping(context.Background()).Result() | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 		return errs.Wrap(err) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
| @ -250,16 +250,16 @@ func checkZookeeper() error { | ||||
| 	}() | ||||
| 	c, _, err := zk.Connect(config.Config.Zookeeper.ZkAddr, time.Second) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 		return errs.Wrap(err) | ||||
| 	} else { | ||||
| 		if config.Config.Zookeeper.Username != "" && config.Config.Zookeeper.Password != "" { | ||||
| 			if err := c.AddAuth("digest", []byte(config.Config.Zookeeper.Username+":"+config.Config.Zookeeper.Password)); err != nil { | ||||
| 				return err | ||||
| 				return errs.Wrap(err) | ||||
| 			} | ||||
| 		} | ||||
| 		_, _, err = c.Get("/") | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 			return errs.Wrap(err) | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| @ -280,7 +280,7 @@ func checkKafka() error { | ||||
| 	} | ||||
| 	kafkaClient, err := sarama.NewClient(config.Config.Kafka.Addr, cfg) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 		return errs.Wrap(err) | ||||
| 	} else { | ||||
| 		topics, err := kafkaClient.Topics() | ||||
| 		if err != nil { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user