42 lines
1.3 KiB
Ruby
42 lines
1.3 KiB
Ruby
|
|
class Cloudflare::BaseCloudflareZoneService
|
||
|
|
BASE_URI = 'https://api.cloudflare.com/client/v4'.freeze
|
||
|
|
|
||
|
|
private
|
||
|
|
|
||
|
|
def headers
|
||
|
|
{
|
||
|
|
'Authorization' => "Bearer #{api_token}",
|
||
|
|
'Content-Type' => 'application/json'
|
||
|
|
}
|
||
|
|
end
|
||
|
|
|
||
|
|
def api_token
|
||
|
|
InstallationConfig.find_by(name: 'CLOUDFLARE_API_KEY')&.value
|
||
|
|
end
|
||
|
|
|
||
|
|
def zone_id
|
||
|
|
InstallationConfig.find_by(name: 'CLOUDFLARE_ZONE_ID')&.value
|
||
|
|
end
|
||
|
|
|
||
|
|
def update_portal_ssl_settings(portal, data)
|
||
|
|
verification_record = data['ownership_verification_http']
|
||
|
|
ssl_record = data['ssl']
|
||
|
|
verification_errors = data['verification_errors']&.first || ''
|
||
|
|
|
||
|
|
# Start with existing settings to preserve verification data if it exists
|
||
|
|
ssl_settings = portal.ssl_settings || {}
|
||
|
|
|
||
|
|
# Only update verification fields if they exist in the response (during initial setup)
|
||
|
|
if verification_record.present?
|
||
|
|
ssl_settings['cf_verification_id'] = verification_record['http_url'].split('/').last
|
||
|
|
ssl_settings['cf_verification_body'] = verification_record['http_body']
|
||
|
|
end
|
||
|
|
|
||
|
|
# Always update SSL status and errors from current response
|
||
|
|
ssl_settings['cf_status'] = ssl_record&.dig('status')
|
||
|
|
ssl_settings['cf_verification_errors'] = verification_errors
|
||
|
|
|
||
|
|
portal.update(ssl_settings: ssl_settings)
|
||
|
|
end
|
||
|
|
end
|