From 22452336187d48c2a546934ec1148a03402db1dc Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+sivin-git@users.noreply.github.com> Date: Wed, 17 Feb 2021 12:35:00 +0530 Subject: [PATCH 1/7] fix: the width of time stamp in notification. (#1791) Co-authored-by: Nithin David Thomas --- .../notifications/components/NotificationTable.vue | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/javascript/dashboard/routes/dashboard/notifications/components/NotificationTable.vue b/app/javascript/dashboard/routes/dashboard/notifications/components/NotificationTable.vue index 6521b2551..702c0ef76 100644 --- a/app/javascript/dashboard/routes/dashboard/notifications/components/NotificationTable.vue +++ b/app/javascript/dashboard/routes/dashboard/notifications/components/NotificationTable.vue @@ -49,10 +49,12 @@ :username="notificationItem.primary_actor.meta.assignee.name" /> - - - {{ dynamicTime(notificationItem.created_at) }} - + +
+ + {{ dynamicTime(notificationItem.created_at) }} + +
Date: Wed, 17 Feb 2021 12:50:26 +0530 Subject: [PATCH 2/7] chore: Changes the mention tag design in the private note. (#1789) --- .../components/widgets/conversation/Message.vue | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/javascript/dashboard/components/widgets/conversation/Message.vue b/app/javascript/dashboard/components/widgets/conversation/Message.vue index 648a8a317..41d770cf6 100644 --- a/app/javascript/dashboard/components/widgets/conversation/Message.vue +++ b/app/javascript/dashboard/components/widgets/conversation/Message.vue @@ -208,7 +208,7 @@ export default { max-width: 32rem; padding: var(--space-small) var(--space-normal); } - + &.is-private .file.message-text__wrap { .ion-document-text { color: var(--w-400); @@ -220,10 +220,18 @@ export default { color: var(--w-400); } } - + &.is-private.is-text > .message-text__wrap .link { color: var(--w-700); } + &.is-private.is-text > .message-text__wrap .prosemirror-mention-node { + font-weight: var(--font-weight-black); + background: none; + border-radius: var(--border-radius-small); + padding: 0; + color: var(--color-body); + text-decoration: underline; + } } &.is-pending { From 5daf970a8792532f1e929cd206096ad9aec19208 Mon Sep 17 00:00:00 2001 From: Sojan Jose Date: Wed, 17 Feb 2021 20:03:43 +0530 Subject: [PATCH 3/7] chore: Generate nginx config using chatwoot installation scripts (#1687) Co-authored-by: iriseden Co-authored-by: iriseden --- deployment/nginx_chatwoot.conf | 47 ++++++++++++++++++++++++++++++++++ deployment/setup_20.04.sh | 42 ++++++++++++++++++++++++------ 2 files changed, 81 insertions(+), 8 deletions(-) create mode 100644 deployment/nginx_chatwoot.conf diff --git a/deployment/nginx_chatwoot.conf b/deployment/nginx_chatwoot.conf new file mode 100644 index 000000000..b1f991781 --- /dev/null +++ b/deployment/nginx_chatwoot.conf @@ -0,0 +1,47 @@ +server { + listen 80; + listen [::]:80; + server_name chatwoot.domain.com www.chatwoot.domain.com; + + access_log /var/log/nginx/chatwoot_access_80.log; + error_log /var/log/nginx/chatwoot_error_80.log; + + return 301 https://chatwoot.domain.com/; +} + +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + server_name chatwoot.domain.com www.chatwoot.domain.com; + + underscores_in_headers on; + + access_log /var/log/nginx/chatwoot_access_443.log; + error_log /var/log/nginx/chatwoot_error_443.log; + + location / { + proxy_pass_header Authorization; + proxy_pass http://127.0.0.1:3000; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Ssl on; # Optional + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_http_version 1.1; + proxy_set_header Connection “”; + proxy_buffering off; + client_max_body_size 0; + proxy_read_timeout 36000s; + proxy_redirect off; + } + + ssl_certificate /etc/letsencrypt/live/chatwoot.domain.com/fullchain.pem; # managed by Certbot + ssl_certificate_key /etc/letsencrypt/live/chatwoot.domain.com/privkey.pem; # managed by Certbot + add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; + ssl_prefer_server_ciphers off; + ssl_dhparam /etc/ssl/dhparam; +} diff --git a/deployment/setup_20.04.sh b/deployment/setup_20.04.sh index 19f32fe12..c35855c9b 100644 --- a/deployment/setup_20.04.sh +++ b/deployment/setup_20.04.sh @@ -2,7 +2,8 @@ # Description: Chatwoot installation script # OS: Ubuntu 20.04 LTS / Ubuntu 20.10 -# Script Version: 0.2 +# Script Version: 0.5 +# Run this script as root apt update && apt upgrade -y apt install -y curl @@ -17,14 +18,14 @@ apt install -y \ libssl-dev libyaml-dev libreadline-dev gnupg2 nginx redis-server \ redis-tools postgresql postgresql-contrib certbot \ python3-certbot-nginx nodejs yarn patch ruby-dev zlib1g-dev liblzma-dev \ - libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev + libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev nginx-full adduser --disabled-login --gecos "" chatwoot -sudo -i -u chatwoot bash << EOF gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB +gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB curl -sSL https://get.rvm.io | bash -s stable -EOF +addgroup chatwoot rvm pg_pass=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 15 ; echo '') sudo -i -u postgres psql << EOF @@ -32,6 +33,12 @@ sudo -i -u postgres psql << EOF CREATE USER chatwoot CREATEDB; ALTER USER chatwoot PASSWORD :'pass'; ALTER ROLE chatwoot SUPERUSER; +UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1'; +DROP DATABASE template1; +CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE'; +UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1'; +\c template1 +VACUUM FREEZE; EOF systemctl enable redis-server.service @@ -49,9 +56,9 @@ rvm use 2.7.2 --default git clone https://github.com/chatwoot/chatwoot.git cd chatwoot if [[ -z "$1" ]]; then - git checkout master; +git checkout master; else - git checkout $1; +git checkout $1; fi bundle yarn @@ -76,8 +83,27 @@ cp /home/chatwoot/chatwoot/deployment/chatwoot.target /etc/systemd/system/chatwo systemctl enable chatwoot.target systemctl start chatwoot.target +read -p 'Would you like to configure Webserver and SSL (yes or no): ' configure_webserver + +if [ $configure_webserver != "yes" ] +then echo "Woot! Woot!! Chatwoot server installation is complete" echo "The server will be accessible at http://:3000" echo "To configure a domain and SSL certificate, follow the guide at https://www.chatwoot.com/docs/deployment/deploy-chatwoot-in-linux-vm" - -# TODO: Auto-configure Nginx with SSL certificate +else +read -p 'What is your domain name server (chatwoot.domain.com for example) : ' domain_name +curl https://ssl-config.mozilla.org/ffdhe4096.txt >> /etc/ssl/dhparam +wget https://raw.githubusercontent.com/chatwoot/chatwoot/develop/deployment/nginx_chatwoot.conf +cp nginx_chatwoot.conf /etc/nginx/sites-available/nginx_chatwoot.conf +certbot certonly --nginx -d $domain_name +sed -i "s/chatwoot.domain.com/$domain_name/g" /etc/nginx/sites-available/nginx_chatwoot.conf +ln -s /etc/nginx/sites-available/nginx_chatwoot.conf /etc/nginx/sites-enabled/nginx_chatwoot.conf +systemctl restart nginx +sudo -i -u chatwoot << EOF +cd chatwoot +sed -i "s/http:\/\/0.0.0.0:3000/https:\/\/$domain_name/g" .env +EOF +systemctl restart chatwoot.target +echo "Woot! Woot!! Chatwoot server installation is complete" +echo "The server will be accessible at https://$domain_name" +fi From 6bbeb005f512d36f28c18f4e784182bd385c7af7 Mon Sep 17 00:00:00 2001 From: Pranav Raj S Date: Thu, 18 Feb 2021 15:56:54 +0530 Subject: [PATCH 4/7] fix: Remove orphan members from inbox (#1797) --- ...4129_remove_orphan_inbox_members_from_inboxes.rb | 13 +++++++++++++ db/schema.rb | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20210217154129_remove_orphan_inbox_members_from_inboxes.rb diff --git a/db/migrate/20210217154129_remove_orphan_inbox_members_from_inboxes.rb b/db/migrate/20210217154129_remove_orphan_inbox_members_from_inboxes.rb new file mode 100644 index 000000000..6dbd89ce8 --- /dev/null +++ b/db/migrate/20210217154129_remove_orphan_inbox_members_from_inboxes.rb @@ -0,0 +1,13 @@ +class RemoveOrphanInboxMembersFromInboxes < ActiveRecord::Migration[6.0] + def change + Account.all.map do |account| + user_ids = account.users.all.map(&:id) + inboxes = account.inboxes + inboxes.each do |inbox| + inbox.inbox_members.each do |inbox_member| + inbox_member.destroy! unless user_ids.include?(inbox_member.user_id) + end + end + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 8b7476907..a9bf11747 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_02_12_154240) do +ActiveRecord::Schema.define(version: 2021_02_17_154129) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" From eec90a1319173d0251bc1493e0efef75016c5319 Mon Sep 17 00:00:00 2001 From: Nithin David Thomas Date: Fri, 19 Feb 2021 00:10:32 +0530 Subject: [PATCH 5/7] chore: Refactor Edit contact modal to separate form (#1805) --- .../dashboard/i18n/locale/en/contact.json | 4 +- .../dashboard/conversation/ContactPanel.vue | 2 +- .../conversation/contact/ContactForm.vue | 215 ++++++++++++++++++ .../conversation/contact/EditContact.vue | 199 ++-------------- 4 files changed, 232 insertions(+), 188 deletions(-) create mode 100644 app/javascript/dashboard/routes/dashboard/conversation/contact/ContactForm.vue diff --git a/app/javascript/dashboard/i18n/locale/en/contact.json b/app/javascript/dashboard/i18n/locale/en/contact.json index da85ffab8..cc4e20bb5 100644 --- a/app/javascript/dashboard/i18n/locale/en/contact.json +++ b/app/javascript/dashboard/i18n/locale/en/contact.json @@ -43,7 +43,9 @@ "EDIT_CONTACT": { "BUTTON_LABEL": "Edit Contact", "TITLE": "Edit contact", - "DESC": "Edit contact details", + "DESC": "Edit contact details" + }, + "CONTACT_FORM": { "FORM": { "SUBMIT": "Submit", "CANCEL": "Cancel", diff --git a/app/javascript/dashboard/routes/dashboard/conversation/ContactPanel.vue b/app/javascript/dashboard/routes/dashboard/conversation/ContactPanel.vue index b594420a1..ccf65f329 100644 --- a/app/javascript/dashboard/routes/dashboard/conversation/ContactPanel.vue +++ b/app/javascript/dashboard/routes/dashboard/conversation/ContactPanel.vue @@ -7,7 +7,7 @@
+
+
+
+ + + +
+
+
+