mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 02:57:57 +00:00 
			
		
		
		
	feat: Report cwctl events to hub (#8009)
This commit is contained in:
		| @@ -1 +1 @@ | |||||||
| 2.4.0 | 2.5.0 | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
|  |  | ||||||
| # Description: Install and manage a Chatwoot installation. | # Description: Install and manage a Chatwoot installation. | ||||||
| # OS: Ubuntu 20.04 LTS | # OS: Ubuntu 20.04 LTS | ||||||
| # Script Version: 2.4.0 | # Script Version: 2.5.0 | ||||||
| # Run this script as root | # Run this script as root | ||||||
|  |  | ||||||
| set -eu -o errexit -o pipefail -o noclobber -o nounset | set -eu -o errexit -o pipefail -o noclobber -o nounset | ||||||
| @@ -19,8 +19,9 @@ fi | |||||||
| # option --output/-o requires 1 argument | # option --output/-o requires 1 argument | ||||||
| LONGOPTS=console,debug,help,install,Install:,logs:,restart,ssl,upgrade,webserver,version | LONGOPTS=console,debug,help,install,Install:,logs:,restart,ssl,upgrade,webserver,version | ||||||
| OPTIONS=cdhiI:l:rsuwv | OPTIONS=cdhiI:l:rsuwv | ||||||
| CWCTL_VERSION="2.4.0" | CWCTL_VERSION="2.5.0" | ||||||
| pg_pass=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 15 ; echo '') | pg_pass=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 15 ; echo '') | ||||||
|  | CHATWOOT_HUB_URL="https://hub.2.chatwoot.com/events" | ||||||
|  |  | ||||||
| # if user does not specify an option | # if user does not specify an option | ||||||
| if [ "$#" -eq 0 ]; then | if [ "$#" -eq 0 ]; then | ||||||
| @@ -848,6 +849,56 @@ function webserver() { | |||||||
|   #TODO(@vn): allow installing nginx only without SSL |   #TODO(@vn): allow installing nginx only without SSL | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ############################################################################## | ||||||
|  | # Report cwctl events to hub | ||||||
|  | # Globals: | ||||||
|  | #   CHATWOOT_HUB_URL | ||||||
|  | # Arguments: | ||||||
|  | # event_name: Name of the event to report | ||||||
|  | # event_data: Data to report | ||||||
|  | # installation_identifier: Installation identifier | ||||||
|  | # Outputs: | ||||||
|  | #   None | ||||||
|  | ############################################################################## | ||||||
|  | function report_event() { | ||||||
|  |   local event_name="$1" | ||||||
|  |   local event_data="$2" | ||||||
|  |  | ||||||
|  |   CHATWOOT_HUB_URL="https://hub.2.chatwoot.com/events" | ||||||
|  |  | ||||||
|  |   # get installation identifier | ||||||
|  |   local installation_identifier=$(get_installation_identifier) | ||||||
|  |  | ||||||
|  |   # Prepare the data for the request | ||||||
|  |   local data="{\"installation_identifier\":\"$installation_identifier\",\"event_name\":\"$event_name\",\"event_data\":{\"action\":\"$event_data\"}}" | ||||||
|  |  | ||||||
|  |   # Make the curl request to report the event | ||||||
|  |   curl -X POST -H "Content-Type: application/json" -d "$data" "$CHATWOOT_HUB_URL" -s -o /dev/null | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ############################################################################## | ||||||
|  | # Get installation identifier | ||||||
|  | # Globals: | ||||||
|  | #   None | ||||||
|  | # Arguments: | ||||||
|  | #   None | ||||||
|  | # Outputs: | ||||||
|  | #   installation_identifier | ||||||
|  | ############################################################################## | ||||||
|  | function get_installation_identifier() { | ||||||
|  |  | ||||||
|  |   local installation_identifier | ||||||
|  |  | ||||||
|  |   installation_identifier=$(sudo -i -u chatwoot << "EOF" | ||||||
|  |   cd chatwoot | ||||||
|  |   RAILS_ENV=production bundle exec rake instance_id:get_installation_identifier | ||||||
|  | EOF | ||||||
|  | ) | ||||||
|  |   echo "$installation_identifier" | ||||||
|  | } | ||||||
|  |  | ||||||
| ############################################################################## | ############################################################################## | ||||||
| # Print cwctl version (-v/--version) | # Print cwctl version (-v/--version) | ||||||
| # Globals: | # Globals: | ||||||
| @@ -874,38 +925,47 @@ function main() { | |||||||
|   setup_logging |   setup_logging | ||||||
|  |  | ||||||
|   if [ "$c" == "y" ]; then |   if [ "$c" == "y" ]; then | ||||||
|  |     report_event "cwctl" "console" > /dev/null 2>&1 | ||||||
|     get_console |     get_console | ||||||
|   fi |   fi | ||||||
|    |    | ||||||
|   if [ "$h" == "y" ]; then |   if [ "$h" == "y" ]; then | ||||||
|  |     report_event "cwctl" "help"  > /dev/null 2>&1 | ||||||
|     help |     help | ||||||
|   fi |   fi | ||||||
|  |  | ||||||
|   if [ "$i" == "y" ] || [ "$I" == "y" ]; then |   if [ "$i" == "y" ] || [ "$I" == "y" ]; then | ||||||
|     install |     install | ||||||
|  |     report_event "cwctl" "install"  > /dev/null 2>&1 | ||||||
|   fi |   fi | ||||||
|  |  | ||||||
|   if [ "$l" == "y" ]; then |   if [ "$l" == "y" ]; then | ||||||
|  |     report_event "cwctl" "logs"  > /dev/null 2>&1 | ||||||
|     get_logs |     get_logs | ||||||
|   fi |   fi | ||||||
|  |  | ||||||
|   if [ "$r" == "y" ]; then |   if [ "$r" == "y" ]; then | ||||||
|  |     report_event "cwctl" "restart"  > /dev/null 2>&1 | ||||||
|     restart |     restart | ||||||
|   fi |   fi | ||||||
|    |    | ||||||
|   if [ "$s" == "y" ]; then |   if [ "$s" == "y" ]; then | ||||||
|  |     report_event "cwctl" "ssl"  > /dev/null 2>&1 | ||||||
|     ssl |     ssl | ||||||
|   fi |   fi | ||||||
|  |  | ||||||
|   if [ "$u" == "y" ]; then |   if [ "$u" == "y" ]; then | ||||||
|  |     report_event "cwctl" "upgrade"  > /dev/null 2>&1 | ||||||
|     upgrade |     upgrade | ||||||
|   fi |   fi | ||||||
|  |  | ||||||
|   if [ "$w" == "y" ]; then |   if [ "$w" == "y" ]; then | ||||||
|  |     report_event "cwctl" "webserver"  > /dev/null 2>&1 | ||||||
|     webserver |     webserver | ||||||
|   fi |   fi | ||||||
|  |  | ||||||
|   if [ "$v" == "y" ]; then |   if [ "$v" == "y" ]; then | ||||||
|  |     report_event "cwctl" "version"  > /dev/null 2>&1 | ||||||
|     version |     version | ||||||
|   fi |   fi | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								lib/tasks/instance_id.rake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								lib/tasks/instance_id.rake
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | namespace :instance_id do | ||||||
|  |   desc 'Get the installation identifier' | ||||||
|  |   task :get_installation_identifier => :environment do | ||||||
|  |     identifier = InstallationConfig.find_by(name: 'INSTALLATION_IDENTIFIER')&.value | ||||||
|  |     identifier ||= InstallationConfig.create!(name: 'INSTALLATION_IDENTIFIER', value: SecureRandom.uuid).value | ||||||
|  |     puts identifier | ||||||
|  |   end | ||||||
|  | end | ||||||
		Reference in New Issue
	
	Block a user
	 Vishnu Narayanan
					Vishnu Narayanan