mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-01 03:27:52 +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