mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-04 21:18:02 +00:00
This PR adds support for automatic SSL issuance using Cloudflare when a custom domain is updated. - Introduced a cloudflare configuration. If present, the system will attempt to issue an SSL certificate via Cloudflare whenever a custom domain is added or changed. - SSL verification is handled using an HTTP challenge. - The job will store the HTTP challenge response provided by Cloudflare and serve it under the /.well-known/cf path automatically. How to test: - Create a Cloudflare zone for your domain and copy the Zone ID. - Generate a Cloudflare API token with the required SSL certificate permissions. - Set the Fallback Origin under SSL -> Custom HostName to the Chatwoot installation. - Add or update a custom domain and verify that the SSL certificate is automatically issued. --------- Co-authored-by: Sojan Jose <sojan@pepalo.com>
23 lines
583 B
Ruby
23 lines
583 B
Ruby
class CustomDomainsController < ApplicationController
|
|
def verify
|
|
challenge_id = permitted_params[:id]
|
|
|
|
domain = request.host
|
|
portal = Portal.find_by(custom_domain: domain)
|
|
|
|
return render plain: 'Domain not found', status: :not_found unless portal
|
|
|
|
ssl_settings = portal.ssl_settings || {}
|
|
|
|
return render plain: 'Challenge ID not found', status: :not_found unless ssl_settings['cf_verification_id'] == challenge_id
|
|
|
|
render plain: ssl_settings['cf_verification_body'], status: :ok
|
|
end
|
|
|
|
private
|
|
|
|
def permitted_params
|
|
params.permit(:id)
|
|
end
|
|
end
|