GRN-93: Fix for issue with excesive requests to LB (#447)

* Fix for issue with excesive requests to lb

* Fixed issue with rspec on users not passing when run alone

* Include dotenv in production
v2
Jesus Federico 4 years ago committed by GitHub
parent c07cfd0d93
commit 2b0301da38
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      Gemfile
  2. 2
      app/controllers/application_controller.rb
  3. 3
      app/helpers/application_helper.rb
  4. 4
      app/helpers/sessions_helper.rb
  5. 2
      app/mailers/user_mailer.rb
  6. 1
      app/models/user.rb
  7. 5
      config/application.rb
  8. 2
      lib/bbb_api.rb
  9. 2
      sample.env
  10. 1
      spec/factories.rb
  11. 1
      spec/models/user_spec.rb

@ -78,9 +78,9 @@ end
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platform: :mri
# Environment configuration.
gem 'dotenv-rails'
end
# Environment configuration.
gem 'dotenv-rails'
group :test do
# Include Rspec and other testing utilities.

@ -111,7 +111,7 @@ class ApplicationController < ActionController::Base
@user_domain = if Rails.env.test? || !Rails.configuration.loadbalanced_configuration
"greenlight"
else
parse_user_domain(request.env["SERVER_NAME"])
parse_user_domain(request.host)
end
end
helper_method :set_user_domain

@ -84,7 +84,8 @@ module ApplicationHelper
begin
provider_info = retrieve_provider_info(@user_domain, 'api2', 'getUserGreenlightCredentials')
provider_info['provider'] == 'greenlight'
rescue
rescue => ex
logger.info ex
false
end
end

@ -54,7 +54,9 @@ module SessionsHelper
end
def parse_user_domain(hostname)
hostname.split('.').first
return hostname.split('.').first unless Rails.configuration.url_host
return '' unless hostname.include?(Rails.configuration.url_host)
hostname.chomp(Rails.configuration.url_host).chomp('.')
end
def omniauth_options(env)

@ -17,7 +17,7 @@
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
class UserMailer < ApplicationMailer
default from: Rails.configuration.email_sender
default from: Rails.configuration.smtp_sender
def verify_email(user, url)
@user = user

@ -185,6 +185,7 @@ class User < ApplicationRecord
end
def greenlight_account?
return true unless provider # For testing cases when provider is set to null
return provider == "greenlight" unless Rails.configuration.loadbalanced_configuration
# No need to retrive the provider info if the provider is whitelisted
return true if launcher_allow_user_signup_whitelisted?(provider)

@ -68,10 +68,13 @@ module Greenlight
# Fix endpoint format if required.
config.loadbalancer_endpoint += "/" unless config.bigbluebutton_endpoint.ends_with?("/")
config.loadbalancer_endpoint = config.loadbalancer_endpoint.chomp("api/")
# Configure which settings are available to user on room creation/edit after creation
config.url_host = ENV['URL_HOST'] || ''
end
# Specify the email address that all mail is sent from
config.email_sender = ENV['EMAIL_SENDER'].present? ? ENV['EMAIL_SENDER'] : "notifications@example.com"
config.smtp_sender = ENV['SMTP_SENDER'] || "notifications@example.com"
# Determine if GreenLight should enable email verification
config.enable_email_verification = (ENV['ALLOW_MAIL_NOTIFICATIONS'] == "true")

@ -31,7 +31,7 @@ module BbbApi
# Rereives info from the loadbalanced in regards to a Provider (or tenant).
def retrieve_provider_info(provider, api = 'api', route = 'getUser')
# Include Omniauth accounts under the Greenlight provider.
provider ||= 'greenlight'
raise "Provider not included." if !provider || provider.empty?
# Build the URI.
uri = encode_bbb_url(

@ -103,7 +103,7 @@ SMTP_AUTH=
SMTP_STARTTLS_AUTO=
# Specify the email address that all mail is sent from
EMAIL_SENDER=
SMTP_SENDER=
# Prefix for the applications root URL.
# Useful for deploying the application to a subdirectory, which is highly recommended

@ -19,7 +19,6 @@
FactoryBot.define do
factory :user do
password = Faker::Internet.password(8)
provider { %w(google twitter).sample }
uid { rand(10**8) }
name { Faker::Name.first_name }

@ -17,6 +17,7 @@
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
require "rails_helper"
require 'bigbluebutton_api'
describe User, type: :model do
before do