diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..87a8281
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,60 @@
+# syntax = docker/dockerfile:1
+
+# Make sure RUBY_VERSION matches the Ruby version in .ruby-version and Gemfile
+ARG RUBY_VERSION=3.3.5
+FROM registry.docker.com/library/ruby:$RUBY_VERSION-slim as base
+
+# Rails app lives here
+WORKDIR /rails
+
+# Set production environment
+ENV RAILS_ENV="production" \
+ BUNDLE_DEPLOYMENT="1" \
+ BUNDLE_PATH="/usr/local/bundle" \
+ BUNDLE_WITHOUT="development"
+
+# Throw-away build stage to reduce size of final image
+FROM base as build
+
+# Install packages needed to build gems
+RUN apt-get update -qq && \
+ apt-get install --no-install-recommends -y build-essential git libvips pkg-config libpq-dev libsqlite3-dev nodejs yarn
+
+# Install application gems
+COPY Gemfile Gemfile.lock ./
+RUN bundle install && \
+ rm -rf ~/.bundle/ "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git && \
+ bundle exec bootsnap precompile --gemfile
+
+# Copy application code
+COPY . .
+
+# Precompile bootsnap code for faster boot times
+RUN bundle exec bootsnap precompile app/ lib/
+
+# Precompiling assets for production without requiring secret RAILS_MASTER_KEY
+RUN SECRET_KEY_BASE_DUMMY=1 ./bin/rails assets:precompile
+
+# Final stage for app image
+FROM base
+
+# Install packages needed for deployment
+RUN apt-get update -qq && \
+ apt-get install --no-install-recommends -y curl libsqlite3-0 nodejs libpq5 libvips && \
+ rm -rf /var/lib/apt/lists /var/cache/apt/archives
+
+# Copy built artifacts: gems, application
+COPY --from=build /usr/local/bundle /usr/local/bundle
+COPY --from=build /rails /rails
+
+# Run and own only the runtime files as a non-root user for security
+RUN useradd rails --create-home --shell /bin/bash && \
+ chown -R rails:rails db log storage tmp
+USER rails:rails
+
+# Entrypoint prepares the database.
+ENTRYPOINT ["/rails/bin/docker-entrypoint"]
+
+# Start the server by default, this can be overwritten at runtime
+EXPOSE 3000
+CMD ["./bin/rails", "server", "--early-hints"]
diff --git a/Gemfile b/Gemfile
index 6a9a35e..a073b5e 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,33 +1,28 @@
source 'https://rubygems.org'
-gem 'rails', '~> 6.0.4'
+gem 'rails', '~> 7.2.1'
-gem 'sqlite3'
+gem 'coffee-rails'
gem 'sass-rails'
gem 'uglifier'
-gem 'coffee-rails'
# gem 'therubyracer', platforms: :ruby
-gem 'jquery-rails'
gem 'jbuilder'
+gem 'jquery-rails'
gem 'activeresource', github: 'rails/activeresource', require: 'active_resource'
gem 'pry-rails'
-gem "rack-attack", "~> 6.7"
+gem 'rack-attack', '~> 6.7'
# gem 'spreadsheet_architect'
group :development do
gem 'spring'
- gem 'capistrano-rails'
- gem 'capistrano-rvm'
- gem 'capistrano3-puma'
- gem 'ed25519'
- gem 'listen'
+ gem 'sqlite3'
end
group :production do
- gem 'puma', '< 5'
gem 'pg'
+ gem 'puma'
end
diff --git a/Gemfile.lock b/Gemfile.lock
index 24edf39..fc477d1 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,8 +1,8 @@
GIT
remote: https://github.com/rails/activeresource.git
- revision: 9dfc15e98007d0e546c404d7236a218bb04a8698
+ revision: a1f6a19652709f2da6aaa2559f7cd0a4f7d2cf3e
specs:
- activeresource (6.0.0)
+ activeresource (6.1.1)
activemodel (>= 6.0)
activemodel-serializers-xml (~> 1.0)
activesupport (>= 6.0)
@@ -10,85 +10,83 @@ GIT
GEM
remote: https://rubygems.org/
specs:
- actioncable (6.0.5.1)
- actionpack (= 6.0.5.1)
+ actioncable (7.2.1)
+ actionpack (= 7.2.1)
+ activesupport (= 7.2.1)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
- actionmailbox (6.0.5.1)
- actionpack (= 6.0.5.1)
- activejob (= 6.0.5.1)
- activerecord (= 6.0.5.1)
- activestorage (= 6.0.5.1)
- activesupport (= 6.0.5.1)
- mail (>= 2.7.1)
- actionmailer (6.0.5.1)
- actionpack (= 6.0.5.1)
- actionview (= 6.0.5.1)
- activejob (= 6.0.5.1)
- mail (~> 2.5, >= 2.5.4)
- rails-dom-testing (~> 2.0)
- actionpack (6.0.5.1)
- actionview (= 6.0.5.1)
- activesupport (= 6.0.5.1)
- rack (~> 2.0, >= 2.0.8)
- rack-test (>= 0.6.3)
- rails-dom-testing (~> 2.0)
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
- actiontext (6.0.5.1)
- actionpack (= 6.0.5.1)
- activerecord (= 6.0.5.1)
- activestorage (= 6.0.5.1)
- activesupport (= 6.0.5.1)
+ zeitwerk (~> 2.6)
+ actionmailbox (7.2.1)
+ actionpack (= 7.2.1)
+ activejob (= 7.2.1)
+ activerecord (= 7.2.1)
+ activestorage (= 7.2.1)
+ activesupport (= 7.2.1)
+ mail (>= 2.8.0)
+ actionmailer (7.2.1)
+ actionpack (= 7.2.1)
+ actionview (= 7.2.1)
+ activejob (= 7.2.1)
+ activesupport (= 7.2.1)
+ mail (>= 2.8.0)
+ rails-dom-testing (~> 2.2)
+ actionpack (7.2.1)
+ actionview (= 7.2.1)
+ activesupport (= 7.2.1)
nokogiri (>= 1.8.5)
- actionview (6.0.5.1)
- activesupport (= 6.0.5.1)
+ racc
+ rack (>= 2.2.4, < 3.2)
+ rack-session (>= 1.0.1)
+ rack-test (>= 0.6.3)
+ rails-dom-testing (~> 2.2)
+ rails-html-sanitizer (~> 1.6)
+ useragent (~> 0.16)
+ actiontext (7.2.1)
+ actionpack (= 7.2.1)
+ activerecord (= 7.2.1)
+ activestorage (= 7.2.1)
+ activesupport (= 7.2.1)
+ globalid (>= 0.6.0)
+ nokogiri (>= 1.8.5)
+ actionview (7.2.1)
+ activesupport (= 7.2.1)
builder (~> 3.1)
- erubi (~> 1.4)
- rails-dom-testing (~> 2.0)
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
- activejob (6.0.5.1)
- activesupport (= 6.0.5.1)
+ erubi (~> 1.11)
+ rails-dom-testing (~> 2.2)
+ rails-html-sanitizer (~> 1.6)
+ activejob (7.2.1)
+ activesupport (= 7.2.1)
globalid (>= 0.3.6)
- activemodel (6.0.5.1)
- activesupport (= 6.0.5.1)
+ activemodel (7.2.1)
+ activesupport (= 7.2.1)
activemodel-serializers-xml (1.0.2)
activemodel (> 5.x)
activesupport (> 5.x)
builder (~> 3.1)
- activerecord (6.0.5.1)
- activemodel (= 6.0.5.1)
- activesupport (= 6.0.5.1)
- activestorage (6.0.5.1)
- actionpack (= 6.0.5.1)
- activejob (= 6.0.5.1)
- activerecord (= 6.0.5.1)
+ activerecord (7.2.1)
+ activemodel (= 7.2.1)
+ activesupport (= 7.2.1)
+ timeout (>= 0.4.0)
+ activestorage (7.2.1)
+ actionpack (= 7.2.1)
+ activejob (= 7.2.1)
+ activerecord (= 7.2.1)
+ activesupport (= 7.2.1)
marcel (~> 1.0)
- activesupport (6.0.5.1)
- concurrent-ruby (~> 1.0, >= 1.0.2)
- i18n (>= 0.7, < 2)
- minitest (~> 5.1)
- tzinfo (~> 1.1)
- zeitwerk (~> 2.2, >= 2.2.2)
- airbrussh (1.4.1)
- sshkit (>= 1.6.1, != 1.7.0)
- builder (3.2.4)
- capistrano (3.17.1)
- airbrussh (>= 1.0.0)
- i18n
- rake (>= 10.0.0)
- sshkit (>= 1.9.0)
- capistrano-bundler (2.1.0)
- capistrano (~> 3.1)
- capistrano-rails (1.6.2)
- capistrano (~> 3.1)
- capistrano-bundler (>= 1.1, < 3)
- capistrano-rvm (0.1.2)
- capistrano (~> 3.0)
- sshkit (~> 1.2)
- capistrano3-puma (5.2.0)
- capistrano (~> 3.7)
- capistrano-bundler
- puma (>= 4.0, < 6.0)
+ activesupport (7.2.1)
+ base64
+ bigdecimal
+ concurrent-ruby (~> 1.0, >= 1.3.1)
+ connection_pool (>= 2.2.5)
+ drb
+ i18n (>= 1.6, < 2)
+ logger (>= 1.4.2)
+ minitest (>= 5.1)
+ securerandom (>= 0.3)
+ tzinfo (~> 2.0, >= 2.0.5)
+ base64 (0.2.0)
+ bigdecimal (3.1.8)
+ builder (3.3.0)
coderay (1.1.3)
coffee-rails (5.0.0)
coffee-script (>= 2.2.0)
@@ -97,87 +95,110 @@ GEM
coffee-script-source
execjs
coffee-script-source (1.12.2)
- concurrent-ruby (1.1.10)
+ concurrent-ruby (1.3.4)
+ connection_pool (2.4.1)
crass (1.0.6)
- ed25519 (1.3.0)
- erubi (1.11.0)
- execjs (2.8.1)
- ffi (1.15.5)
- globalid (1.0.0)
- activesupport (>= 5.0)
- i18n (1.12.0)
+ date (3.3.4)
+ drb (2.2.1)
+ erubi (1.13.0)
+ execjs (2.9.1)
+ ffi (1.17.0)
+ globalid (1.2.1)
+ activesupport (>= 6.1)
+ i18n (1.14.5)
concurrent-ruby (~> 1.0)
- jbuilder (2.11.5)
+ io-console (0.7.2)
+ irb (1.14.0)
+ rdoc (>= 4.0.0)
+ reline (>= 0.4.2)
+ jbuilder (2.12.0)
actionview (>= 5.0.0)
activesupport (>= 5.0.0)
- jquery-rails (4.5.0)
+ jquery-rails (4.6.0)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
- listen (3.7.1)
- rb-fsevent (~> 0.10, >= 0.10.3)
- rb-inotify (~> 0.9, >= 0.9.10)
- loofah (2.18.0)
+ logger (1.6.1)
+ loofah (2.22.0)
crass (~> 1.0.2)
- nokogiri (>= 1.5.9)
- mail (2.7.1)
+ nokogiri (>= 1.12.0)
+ mail (2.8.1)
mini_mime (>= 0.1.1)
- marcel (1.0.2)
- method_source (1.0.0)
- mini_mime (1.1.2)
- mini_portile2 (2.8.0)
- minitest (5.16.3)
- net-scp (4.0.0.rc1)
- net-ssh (>= 2.6.5, < 8.0.0)
- net-ssh (7.0.1)
- nio4r (2.5.8)
- nokogiri (1.13.8)
- mini_portile2 (~> 2.8.0)
+ net-imap
+ net-pop
+ net-smtp
+ marcel (1.0.4)
+ method_source (1.1.0)
+ mini_mime (1.1.5)
+ mini_portile2 (2.8.7)
+ minitest (5.25.1)
+ net-imap (0.4.16)
+ date
+ net-protocol
+ net-pop (0.1.2)
+ net-protocol (0.2.2)
+ timeout
+ net-smtp (0.5.0)
+ net-protocol
+ nio4r (2.7.3)
+ nokogiri (1.16.7)
+ mini_portile2 (~> 2.8.2)
racc (~> 1.4)
- pg (1.4.3)
- pry (0.14.1)
+ pg (1.5.8)
+ pry (0.14.2)
coderay (~> 1.1)
method_source (~> 1.0)
- pry-rails (0.3.9)
- pry (>= 0.10.4)
- puma (4.3.12)
+ pry-rails (0.3.11)
+ pry (>= 0.13.0)
+ psych (5.1.2)
+ stringio
+ puma (6.4.2)
nio4r (~> 2.0)
- racc (1.6.0)
- rack (2.2.4)
+ racc (1.8.1)
+ rack (3.1.7)
rack-attack (6.7.0)
rack (>= 1.0, < 4)
- rack-test (2.0.2)
+ rack-session (2.0.0)
+ rack (>= 3.0.0)
+ rack-test (2.1.0)
rack (>= 1.3)
- rails (6.0.5.1)
- actioncable (= 6.0.5.1)
- actionmailbox (= 6.0.5.1)
- actionmailer (= 6.0.5.1)
- actionpack (= 6.0.5.1)
- actiontext (= 6.0.5.1)
- actionview (= 6.0.5.1)
- activejob (= 6.0.5.1)
- activemodel (= 6.0.5.1)
- activerecord (= 6.0.5.1)
- activestorage (= 6.0.5.1)
- activesupport (= 6.0.5.1)
- bundler (>= 1.3.0)
- railties (= 6.0.5.1)
- sprockets-rails (>= 2.0.0)
- rails-dom-testing (2.0.3)
- activesupport (>= 4.2.0)
+ rackup (2.1.0)
+ rack (>= 3)
+ webrick (~> 1.8)
+ rails (7.2.1)
+ actioncable (= 7.2.1)
+ actionmailbox (= 7.2.1)
+ actionmailer (= 7.2.1)
+ actionpack (= 7.2.1)
+ actiontext (= 7.2.1)
+ actionview (= 7.2.1)
+ activejob (= 7.2.1)
+ activemodel (= 7.2.1)
+ activerecord (= 7.2.1)
+ activestorage (= 7.2.1)
+ activesupport (= 7.2.1)
+ bundler (>= 1.15.0)
+ railties (= 7.2.1)
+ rails-dom-testing (2.2.0)
+ activesupport (>= 5.0.0)
+ minitest
nokogiri (>= 1.6)
- rails-html-sanitizer (1.4.3)
- loofah (~> 2.3)
- railties (6.0.5.1)
- actionpack (= 6.0.5.1)
- activesupport (= 6.0.5.1)
- method_source
- rake (>= 0.8.7)
- thor (>= 0.20.3, < 2.0)
- rake (13.0.6)
- rb-fsevent (0.11.2)
- rb-inotify (0.10.1)
- ffi (~> 1.0)
+ rails-html-sanitizer (1.6.0)
+ loofah (~> 2.21)
+ nokogiri (~> 1.14)
+ railties (7.2.1)
+ actionpack (= 7.2.1)
+ activesupport (= 7.2.1)
+ irb (~> 1.13)
+ rackup (>= 1.0.0)
+ rake (>= 12.2)
+ thor (~> 1.0, >= 1.2.2)
+ zeitwerk (~> 2.6)
+ rake (13.2.1)
+ rdoc (6.7.0)
+ psych (>= 4.0.0)
+ reline (0.5.10)
+ io-console (~> 0.5)
sass-rails (6.0.0)
sassc-rails (~> 2.1, >= 2.1.1)
sassc (2.4.0)
@@ -188,48 +209,45 @@ GEM
sprockets (> 3.0)
sprockets-rails
tilt
- spring (4.0.0)
- sprockets (4.1.1)
+ securerandom (0.3.1)
+ spring (4.2.1)
+ sprockets (4.2.1)
concurrent-ruby (~> 1.0)
- rack (> 1, < 3)
- sprockets-rails (3.4.2)
- actionpack (>= 5.2)
- activesupport (>= 5.2)
+ rack (>= 2.2.4, < 4)
+ sprockets-rails (3.5.2)
+ actionpack (>= 6.1)
+ activesupport (>= 6.1)
sprockets (>= 3.0.0)
- sqlite3 (1.4.4)
- sshkit (1.21.2)
- net-scp (>= 1.1.2)
- net-ssh (>= 2.8.0)
- thor (1.2.1)
- thread_safe (0.3.6)
- tilt (2.0.11)
- tzinfo (1.2.10)
- thread_safe (~> 0.1)
+ sqlite3 (2.0.4)
+ mini_portile2 (~> 2.8.0)
+ stringio (3.1.1)
+ thor (1.3.2)
+ tilt (2.4.0)
+ timeout (0.4.1)
+ tzinfo (2.0.6)
+ concurrent-ruby (~> 1.0)
uglifier (4.2.0)
execjs (>= 0.3.0, < 3)
- websocket-driver (0.7.5)
+ useragent (0.16.10)
+ webrick (1.8.1)
+ websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
- zeitwerk (2.6.0)
+ zeitwerk (2.6.18)
PLATFORMS
ruby
DEPENDENCIES
activeresource!
- capistrano-rails
- capistrano-rvm
- capistrano3-puma
coffee-rails
- ed25519
jbuilder
jquery-rails
- listen
pg
pry-rails
- puma (< 5)
+ puma
rack-attack (~> 6.7)
- rails (~> 6.0.4)
+ rails (~> 7.2.1)
sass-rails
spring
sqlite3
diff --git a/app/assets/images/2023_fb_preview.jpg b/app/assets/images/2023_fb_preview.jpg
deleted file mode 100644
index 1f8b430..0000000
Binary files a/app/assets/images/2023_fb_preview.jpg and /dev/null differ
diff --git a/app/assets/images/openfest-splash.png b/app/assets/images/openfest-splash.png
deleted file mode 100644
index 8625015..0000000
Binary files a/app/assets/images/openfest-splash.png and /dev/null differ
diff --git a/app/assets/images/openfest-splash.webp b/app/assets/images/openfest-splash.webp
new file mode 100644
index 0000000..614f155
Binary files /dev/null and b/app/assets/images/openfest-splash.webp differ
diff --git a/app/models/talk.rb b/app/models/talk.rb
index b3fc2a9..fd3e0cd 100644
--- a/app/models/talk.rb
+++ b/app/models/talk.rb
@@ -1,8 +1,8 @@
class Talk < ActiveResource::Base
has_many :selections, class_name: 'SelectedTalk'
- self.site = "https://cfp.openfest.org/api/conferences/10"
- self.element_name = "event"
+ self.site = 'https://cfp.openfest.org/api/conferences/11'
+ self.element_name = 'event'
def self.ordered_by_id
find(:all, from: :halfnarp_friendly).sort_by(&:id)
diff --git a/app/views/home/index.html.erb b/app/views/home/index.html.erb
index 43d77e4..3c89126 100644
--- a/app/views/home/index.html.erb
+++ b/app/views/home/index.html.erb
@@ -72,8 +72,7 @@
-
-Advanced Technical
-OpenArt
-Community/Social
-Other
+
+Advanced Technical
+OpenArt
+Community/Social
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index 7438b80..ec2c76c 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -10,11 +10,11 @@
-
+
-
+
diff --git a/bin/rails b/bin/rails
index 0739660..efc0377 100755
--- a/bin/rails
+++ b/bin/rails
@@ -1,4 +1,4 @@
#!/usr/bin/env ruby
-APP_PATH = File.expand_path('../config/application', __dir__)
-require_relative '../config/boot'
-require 'rails/commands'
+APP_PATH = File.expand_path("../config/application", __dir__)
+require_relative "../config/boot"
+require "rails/commands"
diff --git a/bin/rake b/bin/rake
index 1724048..4fbf10b 100755
--- a/bin/rake
+++ b/bin/rake
@@ -1,4 +1,4 @@
#!/usr/bin/env ruby
-require_relative '../config/boot'
-require 'rake'
+require_relative "../config/boot"
+require "rake"
Rake.application.run
diff --git a/bin/setup b/bin/setup
index 5853b5e..76a6ca3 100755
--- a/bin/setup
+++ b/bin/setup
@@ -1,36 +1,37 @@
#!/usr/bin/env ruby
-require 'fileutils'
+require "fileutils"
-# path to your application root.
-APP_ROOT = File.expand_path('..', __dir__)
+APP_ROOT = File.expand_path("..", __dir__)
+APP_NAME = "gauge"
def system!(*args)
- system(*args) || abort("\n== Command #{args} failed ==")
+ system(*args, exception: true)
end
FileUtils.chdir APP_ROOT do
- # This script is a way to setup or update your development environment automatically.
- # This script is idempotent, so that you can run it at anytime and get an expectable outcome.
+ # This script is a way to set up or update your development environment automatically.
+ # This script is idempotent, so that you can run it at any time and get an expectable outcome.
# Add necessary setup steps to this file.
- puts '== Installing dependencies =='
- system! 'gem install bundler --conservative'
- system('bundle check') || system!('bundle install')
-
- # Install JavaScript dependencies
- # system('bin/yarn')
+ puts "== Installing dependencies =="
+ system! "gem install bundler --conservative"
+ system("bundle check") || system!("bundle install")
# puts "\n== Copying sample files =="
- # unless File.exist?('config/database.yml')
- # FileUtils.cp 'config/database.yml.sample', 'config/database.yml'
+ # unless File.exist?("config/database.yml")
+ # FileUtils.cp "config/database.yml.sample", "config/database.yml"
# end
puts "\n== Preparing database =="
- system! 'bin/rails db:prepare'
+ system! "bin/rails db:prepare"
puts "\n== Removing old logs and tempfiles =="
- system! 'bin/rails log:clear tmp:clear'
+ system! "bin/rails log:clear tmp:clear"
puts "\n== Restarting application server =="
- system! 'bin/rails restart'
+ system! "bin/rails restart"
+
+ # puts "\n== Configuring puma-dev =="
+ # system "ln -nfs #{APP_ROOT} ~/.puma-dev/#{APP_NAME}"
+ # system "curl -Is https://#{APP_NAME}.test/up | head -n 1"
end
diff --git a/config/application.rb b/config/application.rb
index cb340d7..84c0841 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -9,16 +9,24 @@ Bundler.require(*Rails.groups)
module Gauge
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
- config.load_defaults 5.1
+ config.load_defaults 7.2
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
- config.i18n.available_locales = [:bg, :en]
+ config.i18n.available_locales = %i[bg en]
config.i18n.default_locale = :bg
- # Settings in config/environments/* take precedence over those specified here.
- # Application configuration can go into files in config/initializers
- # -- all .rb files in that directory are automatically loaded after loading
- # the framework and any gems in your application.
+ # Please, add to the `ignore` list any other `lib` subdirectories that do
+ # not contain `.rb` files, or that should not be reloaded or eager loaded.
+ # Common ones are `templates`, `generators`, or `middleware`, for example.
+ config.autoload_lib(ignore: %w[assets tasks])
+
+ # Configuration for the application, engines, and railties goes here.
+ #
+ # These settings can be overridden in specific environments using the files
+ # in config/environments, which are processed later.
+ #
+ # config.time_zone = "Central Time (US & Canada)"
+ # config.eager_load_paths << Rails.root.join("extras")
end
end
diff --git a/config/boot.rb b/config/boot.rb
index 30f5120..2820116 100644
--- a/config/boot.rb
+++ b/config/boot.rb
@@ -1,3 +1,3 @@
-ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
+ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
-require 'bundler/setup' # Set up gems listed in the Gemfile.
+require "bundler/setup" # Set up gems listed in the Gemfile.
diff --git a/config/environment.rb b/config/environment.rb
index 426333b..cac5315 100644
--- a/config/environment.rb
+++ b/config/environment.rb
@@ -1,5 +1,5 @@
# Load the Rails application.
-require_relative 'application'
+require_relative "application"
# Initialize the Rails application.
Rails.application.initialize!
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 66df51f..c0a54a6 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -1,10 +1,12 @@
+require "active_support/core_ext/integer/time"
+
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
- # In the development environment your application's code is reloaded on
- # every request. This slows down response time but is perfect for development
+ # In the development environment your application's code is reloaded any time
+ # it changes. This slows down response time but is perfect for development
# since you don't have to restart the web server when you make code changes.
- config.cache_classes = false
+ config.enable_reloading = true
# Do not eager load code on boot.
config.eager_load = false
@@ -12,16 +14,17 @@ Rails.application.configure do
# Show full error reports.
config.consider_all_requests_local = true
+ # Enable server timing.
+ config.server_timing = true
+
# Enable/disable caching. By default caching is disabled.
# Run rails dev:cache to toggle caching.
- if Rails.root.join('tmp', 'caching-dev.txt').exist?
+ if Rails.root.join("tmp/caching-dev.txt").exist?
config.action_controller.perform_caching = true
config.action_controller.enable_fragment_cache_logging = true
config.cache_store = :memory_store
- config.public_file_server.headers = {
- 'Cache-Control' => "public, max-age=#{2.days.to_i}"
- }
+ config.public_file_server.headers = { "Cache-Control" => "public, max-age=#{2.days.to_i}" }
else
config.action_controller.perform_caching = false
@@ -34,29 +37,42 @@ Rails.application.configure do
# Don't care if the mailer can't send.
config.action_mailer.raise_delivery_errors = false
+ # Disable caching for Action Mailer templates even if Action Controller
+ # caching is enabled.
config.action_mailer.perform_caching = false
+ config.action_mailer.default_url_options = { host: "localhost", port: 3000 }
+
# Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log
+ # Raise exceptions for disallowed deprecations.
+ config.active_support.disallowed_deprecation = :raise
+
+ # Tell Active Support which deprecation messages to disallow.
+ config.active_support.disallowed_deprecation_warnings = []
+
# Raise an error on page load if there are pending migrations.
config.active_record.migration_error = :page_load
# Highlight code that triggered database queries in logs.
config.active_record.verbose_query_logs = true
- # Debug mode disables concatenation and preprocessing of assets.
- # This option may cause significant delays in view rendering with a large
- # number of complex assets.
- config.assets.debug = true
+ # Highlight code that enqueued background job in logs.
+ config.active_job.verbose_enqueue_logs = true
# Suppress logger output for asset requests.
config.assets.quiet = true
# Raises error for missing translations.
- # config.action_view.raise_on_missing_translations = true
+ # config.i18n.raise_on_missing_translations = true
- # Use an evented file watcher to asynchronously detect changes in source code,
- # routes, locales, etc. This feature depends on the listen gem.
- config.file_watcher = ActiveSupport::EventedFileUpdateChecker
+ # Annotate rendered view with file names.
+ config.action_view.annotate_rendered_view_with_filenames = true
+
+ # Uncomment if you wish to allow Action Cable access from any origin.
+ # config.action_cable.disable_request_forgery_protection = true
+
+ # Raise error when a before_action's only/except options reference missing actions.
+ config.action_controller.raise_on_missing_callback_actions = true
end
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 27ddd01..d8e0d7f 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -1,8 +1,10 @@
+require "active_support/core_ext/integer/time"
+
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# Code is not reloaded between requests.
- config.cache_classes = true
+ config.enable_reloading = false
# Eager load code on boot. This eager loads most of Rails and
# your application in memory, allowing both threaded web servers
@@ -11,56 +13,69 @@ Rails.application.configure do
config.eager_load = true
# Full error reports are disabled and caching is turned on.
- config.consider_all_requests_local = false
+ config.consider_all_requests_local = false
config.action_controller.perform_caching = true
- # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
- # or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
+ # Ensures that a master key has been made available in ENV["RAILS_MASTER_KEY"], config/master.key, or an environment
+ # key such as config/credentials/production.key. This key is used to decrypt credentials (and other encrypted files).
# config.require_master_key = true
- # Disable serving static files from the `/public` folder by default since
- # Apache or NGINX already handles this.
- config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
+ # Disable serving static files from `public/`, relying on NGINX/Apache to do so instead.
+ # config.public_file_server.enabled = false
- # Compress JavaScripts and CSS.
- config.assets.js_compressor = :uglifier
+ # Compress CSS using a preprocessor.
# config.assets.css_compressor = :sass
- # Do not fallback to assets pipeline if a precompiled asset is missed.
+ # Do not fall back to assets pipeline if a precompiled asset is missed.
config.assets.compile = false
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
- # config.action_controller.asset_host = 'http://assets.example.com'
+ # config.asset_host = "http://assets.example.com"
# Specifies the header that your server uses for sending files.
- # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
- # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
+ # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for Apache
+ # config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" # for NGINX
# Store uploaded files on the local file system (see config/storage.yml for options).
config.active_storage.service = :local
# Mount Action Cable outside main process or domain.
# config.action_cable.mount_path = nil
- # config.action_cable.url = 'wss://example.com/cable'
- # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
+ # config.action_cable.url = "wss://example.com/cable"
+ # config.action_cable.allowed_request_origins = [ "http://example.com", /http:\/\/example.*/ ]
+
+ # Assume all access to the app is happening through a SSL-terminating reverse proxy.
+ # Can be used together with config.force_ssl for Strict-Transport-Security and secure cookies.
+ # config.assume_ssl = true
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
config.force_ssl = true
- # Use the lowest log level to ensure availability of diagnostic information
- # when problems arise.
- config.log_level = :debug
+ # Skip http-to-https redirect for the default health check endpoint.
+ # config.ssl_options = { redirect: { exclude: ->(request) { request.path == "/up" } } }
+
+ # Log to STDOUT by default
+ config.logger = ActiveSupport::Logger.new(STDOUT)
+ .tap { |logger| logger.formatter = ::Logger::Formatter.new }
+ .then { |logger| ActiveSupport::TaggedLogging.new(logger) }
# Prepend all log lines with the following tags.
config.log_tags = [ :request_id ]
+ # "info" includes generic and useful information about system operation, but avoids logging too much
+ # information to avoid inadvertent exposure of personally identifiable information (PII). If you
+ # want to log everything, set the level to "debug".
+ config.log_level = ENV.fetch("RAILS_LOG_LEVEL", "info")
+
# Use a different cache store in production.
# config.cache_store = :mem_cache_store
# Use a real queuing backend for Active Job (and separate queues per environment).
- # config.active_job.queue_adapter = :resque
+ # config.active_job.queue_adapter = :resque
# config.active_job.queue_name_prefix = "gauge_production"
+ # Disable caching for Action Mailer templates even if Action Controller
+ # caching is enabled.
config.action_mailer.perform_caching = false
# Ignore bad email addresses and do not raise email delivery errors.
@@ -71,43 +86,17 @@ Rails.application.configure do
# the I18n.default_locale when a translation cannot be found).
config.i18n.fallbacks = true
- # Send deprecation notices to registered listeners.
- config.active_support.deprecation = :notify
-
- # Use default logging formatter so that PID and timestamp are not suppressed.
- config.log_formatter = ::Logger::Formatter.new
-
- # Use a different logger for distributed setups.
- # require 'syslog/logger'
- # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
-
- if ENV["RAILS_LOG_TO_STDOUT"].present?
- logger = ActiveSupport::Logger.new(STDOUT)
- logger.formatter = config.log_formatter
- config.logger = ActiveSupport::TaggedLogging.new(logger)
- end
+ # Don't log any deprecations.
+ config.active_support.report_deprecations = false
# Do not dump schema after migrations.
config.active_record.dump_schema_after_migration = false
- # Inserts middleware to perform automatic connection switching.
- # The `database_selector` hash is used to pass options to the DatabaseSelector
- # middleware. The `delay` is used to determine how long to wait after a write
- # to send a subsequent read to the primary.
- #
- # The `database_resolver` class is used by the middleware to determine which
- # database is appropriate to use based on the time delay.
- #
- # The `database_resolver_context` class is used by the middleware to set
- # timestamps for the last write to the primary. The resolver uses the context
- # class timestamps to determine how long to wait before reading from the
- # replica.
- #
- # By default Rails will store a last write timestamp in the session. The
- # DatabaseSelector middleware is designed as such you can define your own
- # strategy for connection switching and pass that into the middleware through
- # these configuration options.
- # config.active_record.database_selector = { delay: 2.seconds }
- # config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
- # config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
+ # Enable DNS rebinding protection and other `Host` header attacks.
+ # config.hosts = [
+ # "example.com", # Allow requests from example.com
+ # /.*\.example\.com/ # Allow requests from subdomains like `www.example.com`
+ # ]
+ # Skip DNS rebinding protection for the default health check endpoint.
+ # config.host_authorization = { exclude: ->(request) { request.path == "/up" } }
end
diff --git a/config/environments/test.rb b/config/environments/test.rb
index 4e9d6d5..0c616a1 100644
--- a/config/environments/test.rb
+++ b/config/environments/test.rb
@@ -1,3 +1,5 @@
+require "active_support/core_ext/integer/time"
+
# The test environment is used exclusively to run your application's
# test suite. You never need to work with it otherwise. Remember that
# your test database is "scratch space" for the test suite and is wiped
@@ -5,27 +7,26 @@
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
-
- config.cache_classes = true
- # Do not eager load code on boot. This avoids loading your whole application
- # just for the purpose of running a single test. If you are using a tool that
- # preloads Rails for running tests, you may have to set it to true.
- config.eager_load = false
+ # While tests run files are not watched, reloading is not necessary.
+ config.enable_reloading = false
+
+ # Eager loading loads your entire application. When running a single test locally,
+ # this is usually not necessary, and can slow down your test suite. However, it's
+ # recommended that you enable it in continuous integration systems to ensure eager
+ # loading is working properly before deploying your code.
+ config.eager_load = ENV["CI"].present?
# Configure public file server for tests with Cache-Control for performance.
- config.public_file_server.enabled = true
- config.public_file_server.headers = {
- 'Cache-Control' => "public, max-age=#{1.hour.to_i}"
- }
+ config.public_file_server.headers = { "Cache-Control" => "public, max-age=#{1.hour.to_i}" }
# Show full error reports and disable caching.
- config.consider_all_requests_local = true
+ config.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.cache_store = :null_store
- # Raise exceptions instead of rendering exception templates.
- config.action_dispatch.show_exceptions = false
+ # Render exception templates for rescuable exceptions and raise for other exceptions.
+ config.action_dispatch.show_exceptions = :rescuable
# Disable request forgery protection in test environment.
config.action_controller.allow_forgery_protection = false
@@ -33,6 +34,8 @@ Rails.application.configure do
# Store uploaded files on the local file system in a temporary directory.
config.active_storage.service = :test
+ # Disable caching for Action Mailer templates even if Action Controller
+ # caching is enabled.
config.action_mailer.perform_caching = false
# Tell Action Mailer not to deliver emails to the real world.
@@ -40,9 +43,25 @@ Rails.application.configure do
# ActionMailer::Base.deliveries array.
config.action_mailer.delivery_method = :test
+ # Unlike controllers, the mailer instance doesn't have any context about the
+ # incoming request so you'll need to provide the :host parameter yourself.
+ config.action_mailer.default_url_options = { host: "www.example.com" }
+
# Print deprecation notices to the stderr.
config.active_support.deprecation = :stderr
+ # Raise exceptions for disallowed deprecations.
+ config.active_support.disallowed_deprecation = :raise
+
+ # Tell Active Support which deprecation messages to disallow.
+ config.active_support.disallowed_deprecation_warnings = []
+
# Raises error for missing translations.
- # config.action_view.raise_on_missing_translations = true
+ # config.i18n.raise_on_missing_translations = true
+
+ # Annotate rendered view with file names.
+ # config.action_view.annotate_rendered_view_with_filenames = true
+
+ # Raise error when a before_action's only/except options reference missing actions.
+ config.action_controller.raise_on_missing_callback_actions = true
end
diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb
index 4b828e8..bd5bcd2 100644
--- a/config/initializers/assets.rb
+++ b/config/initializers/assets.rb
@@ -1,14 +1,12 @@
# Be sure to restart your server when you modify this file.
# Version of your assets, change this if you want to expire all your assets.
-Rails.application.config.assets.version = '1.0'
+Rails.application.config.assets.version = "1.0"
# Add additional assets to the asset load path.
# Rails.application.config.assets.paths << Emoji.images_path
-# Add Yarn node_modules folder to the asset load path.
-Rails.application.config.assets.paths << Rails.root.join('node_modules')
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in the app/assets
# folder are already added.
-# Rails.application.config.assets.precompile += %w( admin.js admin.css )
+# Rails.application.config.assets.precompile += %w[ admin.js admin.css ]
diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb
index 35d0f26..b3076b3 100644
--- a/config/initializers/content_security_policy.rb
+++ b/config/initializers/content_security_policy.rb
@@ -1,30 +1,25 @@
# Be sure to restart your server when you modify this file.
-# Define an application-wide content security policy
-# For further information see the following documentation
-# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
+# Define an application-wide content security policy.
+# See the Securing Rails Applications Guide for more information:
+# https://guides.rubyonrails.org/security.html#content-security-policy-header
-# Rails.application.config.content_security_policy do |policy|
-# policy.default_src :self, :https
-# policy.font_src :self, :https, :data
-# policy.img_src :self, :https, :data
-# policy.object_src :none
-# policy.script_src :self, :https
-# policy.style_src :self, :https
-# # If you are using webpack-dev-server then specify webpack-dev-server host
-# policy.connect_src :self, :https, "http://localhost:3035", "ws://localhost:3035" if Rails.env.development?
-
-# # Specify URI for violation reports
-# # policy.report_uri "/csp-violation-report-endpoint"
+# Rails.application.configure do
+# config.content_security_policy do |policy|
+# policy.default_src :self, :https
+# policy.font_src :self, :https, :data
+# policy.img_src :self, :https, :data
+# policy.object_src :none
+# policy.script_src :self, :https
+# policy.style_src :self, :https
+# # Specify URI for violation reports
+# # policy.report_uri "/csp-violation-report-endpoint"
+# end
+#
+# # Generate session nonces for permitted importmap, inline scripts, and inline styles.
+# config.content_security_policy_nonce_generator = ->(request) { request.session.id.to_s }
+# config.content_security_policy_nonce_directives = %w(script-src style-src)
+#
+# # Report violations without enforcing the policy.
+# # config.content_security_policy_report_only = true
# end
-
-# If you are using UJS then enable automatic nonce generation
-# Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) }
-
-# Set the nonce only to specific directives
-# Rails.application.config.content_security_policy_nonce_directives = %w(script-src)
-
-# Report CSP violations to a specified URI
-# For further information see the following documentation:
-# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
-# Rails.application.config.content_security_policy_report_only = true
diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb
index 4a994e1..c010b83 100644
--- a/config/initializers/filter_parameter_logging.rb
+++ b/config/initializers/filter_parameter_logging.rb
@@ -1,4 +1,8 @@
# Be sure to restart your server when you modify this file.
-# Configure sensitive parameters which will be filtered from the log file.
-Rails.application.config.filter_parameters += [:password]
+# Configure parameters to be partially matched (e.g. passw matches password) and filtered from the log file.
+# Use this to limit dissemination of sensitive information.
+# See the ActiveSupport::ParameterFilter documentation for supported notations and behaviors.
+Rails.application.config.filter_parameters += [
+ :passw, :email, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn
+]
diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb
index ac033bf..3860f65 100644
--- a/config/initializers/inflections.rb
+++ b/config/initializers/inflections.rb
@@ -4,13 +4,13 @@
# are locale specific, and you may define rules for as many different
# locales as you wish. All of these examples are active by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect|
-# inflect.plural /^(ox)$/i, '\1en'
-# inflect.singular /^(ox)en/i, '\1'
-# inflect.irregular 'person', 'people'
+# inflect.plural /^(ox)$/i, "\\1en"
+# inflect.singular /^(ox)en/i, "\\1"
+# inflect.irregular "person", "people"
# inflect.uncountable %w( fish sheep )
# end
# These inflection rules are supported but not enabled by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect|
-# inflect.acronym 'RESTful'
+# inflect.acronym "RESTful"
# end
diff --git a/config/initializers/new_framework_defaults_5_1.rb b/config/initializers/new_framework_defaults_5_1.rb
deleted file mode 100644
index 9010abd..0000000
--- a/config/initializers/new_framework_defaults_5_1.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-# Be sure to restart your server when you modify this file.
-#
-# This file contains migration options to ease your Rails 5.1 upgrade.
-#
-# Once upgraded flip defaults one by one to migrate to the new default.
-#
-# Read the Guide for Upgrading Ruby on Rails for more info on each option.
-
-# Make `form_with` generate non-remote forms.
-Rails.application.config.action_view.form_with_generates_remote_forms = false
-
-# Unknown asset fallback will return the path passed in when the given
-# asset is not present in the asset pipeline.
-# Rails.application.config.assets.unknown_asset_fallback = false
diff --git a/config/initializers/new_framework_defaults_5_2.rb b/config/initializers/new_framework_defaults_5_2.rb
deleted file mode 100644
index c383d07..0000000
--- a/config/initializers/new_framework_defaults_5_2.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-# Be sure to restart your server when you modify this file.
-#
-# This file contains migration options to ease your Rails 5.2 upgrade.
-#
-# Once upgraded flip defaults one by one to migrate to the new default.
-#
-# Read the Guide for Upgrading Ruby on Rails for more info on each option.
-
-# Make Active Record use stable #cache_key alongside new #cache_version method.
-# This is needed for recyclable cache keys.
-# Rails.application.config.active_record.cache_versioning = true
-
-# Use AES-256-GCM authenticated encryption for encrypted cookies.
-# Also, embed cookie expiry in signed or encrypted cookies for increased security.
-#
-# This option is not backwards compatible with earlier Rails versions.
-# It's best enabled when your entire app is migrated and stable on 5.2.
-#
-# Existing cookies will be converted on read then written with the new scheme.
-# Rails.application.config.action_dispatch.use_authenticated_cookie_encryption = true
-
-# Use AES-256-GCM authenticated encryption as default cipher for encrypting messages
-# instead of AES-256-CBC, when use_authenticated_message_encryption is set to true.
-# Rails.application.config.active_support.use_authenticated_message_encryption = true
-
-# Add default protection from forgery to ActionController::Base instead of in
-# ApplicationController.
-# Rails.application.config.action_controller.default_protect_from_forgery = true
-
-# Store boolean values are in sqlite3 databases as 1 and 0 instead of 't' and
-# 'f' after migrating old data.
-# Rails.application.config.active_record.sqlite3.represent_boolean_as_integer = true
-
-# Use SHA-1 instead of MD5 to generate non-sensitive digests, such as the ETag header.
-# Rails.application.config.active_support.use_sha1_digests = true
-
-# Make `form_with` generate id attributes for any generated HTML tags.
-# Rails.application.config.action_view.form_with_generates_ids = true
diff --git a/config/initializers/new_framework_defaults_6_0.rb b/config/initializers/new_framework_defaults_6_0.rb
deleted file mode 100644
index 92240ef..0000000
--- a/config/initializers/new_framework_defaults_6_0.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-# Be sure to restart your server when you modify this file.
-#
-# This file contains migration options to ease your Rails 6.0 upgrade.
-#
-# Once upgraded flip defaults one by one to migrate to the new default.
-#
-# Read the Guide for Upgrading Ruby on Rails for more info on each option.
-
-# Don't force requests from old versions of IE to be UTF-8 encoded.
-# Rails.application.config.action_view.default_enforce_utf8 = false
-
-# Embed purpose and expiry metadata inside signed and encrypted
-# cookies for increased security.
-#
-# This option is not backwards compatible with earlier Rails versions.
-# It's best enabled when your entire app is migrated and stable on 6.0.
-# Rails.application.config.action_dispatch.use_cookies_with_metadata = true
-
-# Change the return value of `ActionDispatch::Response#content_type` to Content-Type header without modification.
-# Rails.application.config.action_dispatch.return_only_media_type_on_content_type = false
-
-# Return false instead of self when enqueuing is aborted from a callback.
-# Rails.application.config.active_job.return_false_on_aborted_enqueue = true
-
-# Send Active Storage analysis and purge jobs to dedicated queues.
-# Rails.application.config.active_storage.queues.analysis = :active_storage_analysis
-# Rails.application.config.active_storage.queues.purge = :active_storage_purge
-
-# When assigning to a collection of attachments declared via `has_many_attached`, replace existing
-# attachments instead of appending. Use #attach to add new attachments without replacing existing ones.
-# Rails.application.config.active_storage.replace_on_assign_to_many = true
-
-# Use ActionMailer::MailDeliveryJob for sending parameterized and normal mail.
-#
-# The default delivery jobs (ActionMailer::Parameterized::DeliveryJob, ActionMailer::DeliveryJob),
-# will be removed in Rails 6.1. This setting is not backwards compatible with earlier Rails versions.
-# If you send mail in the background, job workers need to have a copy of
-# MailDeliveryJob to ensure all delivery jobs are processed properly.
-# Make sure your entire app is migrated and stable on 6.0 before using this setting.
-# Rails.application.config.action_mailer.delivery_job = "ActionMailer::MailDeliveryJob"
-
-# Enable the same cache key to be reused when the object being cached of type
-# `ActiveRecord::Relation` changes by moving the volatile information (max updated at and count)
-# of the relation's cache key into the cache version to support recycling cache key.
-# Rails.application.config.active_record.collection_cache_versioning = true
diff --git a/config/initializers/permissions_policy.rb b/config/initializers/permissions_policy.rb
new file mode 100644
index 0000000..7db3b95
--- /dev/null
+++ b/config/initializers/permissions_policy.rb
@@ -0,0 +1,13 @@
+# Be sure to restart your server when you modify this file.
+
+# Define an application-wide HTTP permissions policy. For further
+# information see: https://developers.google.com/web/updates/2018/06/feature-policy
+
+# Rails.application.config.permissions_policy do |policy|
+# policy.camera :none
+# policy.gyroscope :none
+# policy.microphone :none
+# policy.usb :none
+# policy.fullscreen :self
+# policy.payment :self, "https://secure.example.com"
+# end
diff --git a/config/initializers/rack_attack.rb b/config/initializers/rack_attack.rb
index 553e327..4f45ec2 100644
--- a/config/initializers/rack_attack.rb
+++ b/config/initializers/rack_attack.rb
@@ -1,5 +1,5 @@
-require "net/http"
+require 'net/http'
-Net::HTTP.get(URI("https://lists.fissionrelays.net/tor/exits.txt")).split("\n").each do |tor_exit|
- Rack::Attack.blocklist_ip(tor_exit)
+File.read(Rails.root.join('config', 'rack_attack_blocklist.txt')).split("\n").each do |blocked_ip|
+ Rack::Attack.blocklist_ip(blocked_ip)
end
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index 3a03ea0..93a8443 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -1,6 +1,6 @@
bg:
generic:
- title: Възможни лекции за OpenFest 2023
+ title: Възможни лекции за OpenFest 2024
submit: Изпрати
store_and_submit_changes: Запази локално промените и ги изпрати, ако е възможно
help_us_reduce_the_conflicts: Помогнете ни да намалим конфликтите в програмата на OpenFest
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 59302c2..c7e7ebc 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -1,6 +1,6 @@
en:
generic:
- title: OpenFest 2023 Talk Preference Poll
+ title: OpenFest 2024 Talk Preference Poll
submit: Submit
store_and_submit_changes: Store your changes locally and submit them if possible
help_us_reduce_the_conflicts: "Help us to reduce the conflicts in OpenFest's schedule"
diff --git a/config/puma.rb b/config/puma.rb
index 1e19380..03c166f 100644
--- a/config/puma.rb
+++ b/config/puma.rb
@@ -1,56 +1,34 @@
-# Puma can serve each request in a thread from an internal thread pool.
-# The `threads` method setting takes two numbers: a minimum and maximum.
-# Any libraries that use thread pools should be configured to match
-# the maximum value specified for Puma. Default is set to 5 threads for minimum
-# and maximum; this matches the default thread size of Active Record.
+# This configuration file will be evaluated by Puma. The top-level methods that
+# are invoked here are part of Puma's configuration DSL. For more information
+# about methods provided by the DSL, see https://puma.io/puma/Puma/DSL.html.
+
+# Puma starts a configurable number of processes (workers) and each process
+# serves each request in a thread from an internal thread pool.
#
-threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
+# The ideal number of threads per worker depends both on how much time the
+# application spends waiting for IO operations and on how much you wish to
+# to prioritize throughput over latency.
+#
+# As a rule of thumb, increasing the number of threads will increase how much
+# traffic a given process can handle (throughput), but due to CRuby's
+# Global VM Lock (GVL) it has diminishing returns and will degrade the
+# response time (latency) of the application.
+#
+# The default is set to 3 threads as it's deemed a decent compromise between
+# throughput and latency for the average Rails application.
+#
+# Any libraries that use a connection pool or another resource pool should
+# be configured to provide at least as many connections as the number of
+# threads. This includes Active Record's `pool` parameter in `database.yml`.
+threads_count = ENV.fetch("RAILS_MAX_THREADS", 3)
threads threads_count, threads_count
# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
-#
-port ENV.fetch("PORT") { 3000 }
+port ENV.fetch("PORT", 3000)
-# Specifies the `environment` that Puma will run in.
-#
-environment ENV.fetch("RAILS_ENV") { "development" }
-
-# Specifies the number of `workers` to boot in clustered mode.
-# Workers are forked webserver processes. If using threads and workers together
-# the concurrency of the application would be max `threads` * `workers`.
-# Workers do not work on JRuby or Windows (both of which do not support
-# processes).
-#
-# workers ENV.fetch("WEB_CONCURRENCY") { 2 }
-
-# Use the `preload_app!` method when specifying a `workers` number.
-# This directive tells Puma to first boot the application and load code
-# before forking the application. This takes advantage of Copy On Write
-# process behavior so workers use less memory. If you use this option
-# you need to make sure to reconnect any threads in the `on_worker_boot`
-# block.
-#
-# preload_app!
-
-# If you are preloading your application and using Active Record, it's
-# recommended that you close any connections to the database before workers
-# are forked to prevent connection leakage.
-#
-# before_fork do
-# ActiveRecord::Base.connection_pool.disconnect! if defined?(ActiveRecord)
-# end
-
-# The code in the `on_worker_boot` will be called if you are using
-# clustered mode by specifying a number of `workers`. After each worker
-# process is booted, this block will be run. If you are using the `preload_app!`
-# option, you will want to use this block to reconnect to any threads
-# or connections that may have been created at application boot, as Ruby
-# cannot share connections between processes.
-#
-# on_worker_boot do
-# ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
-# end
-#
-
-# Allow puma to be restarted by `rails restart` command.
+# Allow puma to be restarted by `bin/rails restart` command.
plugin :tmp_restart
+
+# Specify the PID file. Defaults to tmp/pids/server.pid in development.
+# In other environments, only set the PID file if requested.
+pidfile ENV["PIDFILE"] if ENV["PIDFILE"]
diff --git a/config/rack_attack_blocklist.txt b/config/rack_attack_blocklist.txt
new file mode 100644
index 0000000..a910af7
--- /dev/null
+++ b/config/rack_attack_blocklist.txt
@@ -0,0 +1,1873 @@
+2a0a:4cc0:0:99:c44b:7eff:fe23:de3d
+2a0a:4cc0:1:101:a463:1eff:fee1:4874
+2a0a:4cc0:3:c6:887f:3dff:feab:e676
+2a0a:3840:1337:125:0:b9c1:7d57:1337
+2a0b:f4c0:16c:1::1
+2a0b:f4c0:16c:2::1
+2a0b:f4c0:16c:3::1
+2a0b:f4c0:16c:4::1
+2a0b:f4c0:16c:5::1
+2a0b:f4c0:16c:6::1
+2a0b:f4c0:16c:7::1
+2a0b:f4c0:16c:8::1
+2a0b:f4c0:16c:9::1
+2a0b:f4c0:16c:10::1
+2a0b:f4c0:16c:11::1
+2a0b:f4c0:16c:12::1
+2a0b:f4c0:16c:13::1
+2a0b:f4c0:16c:14::1
+2a0b:f4c0:16c:15::1
+2a0b:f4c0:16c:16::1
+2a0b:f4c2:1::128
+2a0b:f4c2:1::129
+2a0b:f4c2:1::130
+2a0b:f4c2:1::132
+2a0b:f4c2:1::133
+2a0b:f4c2:1::134
+2a0b:f4c2:1::135
+2a0b:f4c2:1::137
+2a0b:f4c2:1::138
+2a0b:f4c2:1::139
+2a0b:f4c2:1::140
+2a0b:f4c2:1::141
+2a0b:f4c2:1::142
+2a0b:f4c2:1::143
+2a0b:f4c2:1::144
+2a0b:f4c2:1::145
+2a0b:f4c2:1::146
+2a0b:f4c2:1::147
+2a0b:f4c2:1::148
+2a0b:f4c2:1::149
+2a0b:f4c2:1::150
+2a0b:f4c2:1::151
+2a0b:f4c2:1::153
+2a0b:f4c2:1::154
+2a0b:f4c2:1::155
+2a0b:f4c2:1::156
+2a0b:f4c2:1::157
+2a0b:f4c2:1::158
+2a0b:f4c2:1::159
+2a0b:f4c2:1::161
+2a0b:f4c2:1::162
+2a0b:f4c2:1::163
+2a0b:f4c2:1::164
+2a0b:f4c2:1::165
+2a0b:f4c2:1::166
+2a0b:f4c2:1::167
+2a0b:f4c2:1::168
+2a0b:f4c2:1::169
+2a0b:f4c2:1::170
+2a0b:f4c2:1::171
+2a0b:f4c2:1::172
+2a0b:f4c2:1::173
+2a0b:f4c2:1::174
+2a0b:f4c2:1::175
+2a0b:f4c2:1::176
+2a0b:f4c2:1::177
+2a0b:f4c2:1::178
+2a0b:f4c2:1::179
+2a0b:f4c2:1::180
+2a0b:f4c2:1::181
+2a0b:f4c2:1::182
+2a0b:f4c2:1::183
+2a0b:f4c2:1::184
+2a0b:f4c2:1::185
+2a0b:f4c2:1::186
+2a0b:f4c2:1::187
+2a0b:f4c2:1::188
+2a0b:f4c2:1::189
+2a0b:f4c2:1::190
+2a0b:f4c2:1::191
+2a0b:f4c2:2::32
+2a0b:f4c2:2::33
+2a0b:f4c2:2::34
+2a0b:f4c2:2::35
+2a0b:f4c2:2::36
+2a0b:f4c2:2::37
+2a0b:f4c2:2::38
+2a0b:f4c2:2::39
+2a0b:f4c2:2::40
+2a0b:f4c2:2::41
+2a0b:f4c2:2::42
+2a0b:f4c2:2::43
+2a0b:f4c2:2::44
+2a0b:f4c2:2::45
+2a0b:f4c2:2::46
+2a0b:f4c2:2::47
+2a0b:f4c2:2::48
+2a0b:f4c2:2::49
+2a0b:f4c2:2::50
+2a0b:f4c2:2::51
+2a0b:f4c2:2::52
+2a0b:f4c2:2::53
+2a0b:f4c2:2::54
+2a0b:f4c2:2::55
+2a0b:f4c2:2::56
+2a0b:f4c2:2::57
+2a0b:f4c2:2::58
+2a0b:f4c2:2::59
+2a0b:f4c2:2::60
+2a0b:f4c2:2::61
+2a0b:f4c2:2::62
+2a0b:f4c2:2::63
+2a0b:f4c2:3::64
+2a0b:f4c2:3::65
+2a0b:f4c2:3::66
+2a0b:f4c2:3::67
+2a0b:f4c2:3::68
+2a0b:f4c2:3::69
+2a0b:f4c2:3::70
+2a0b:f4c2:3::71
+2a0b:f4c2:3::72
+2a0b:f4c2:3::73
+2a0b:f4c2:3::74
+2a0b:f4c2:3::75
+2a0b:f4c2:3::76
+2a0b:f4c2:3::77
+2a0b:f4c2:3::78
+2a0b:f4c2:3::79
+2a0b:f4c2:3::80
+2a0b:f4c2:3::81
+2a0b:f4c2:3::82
+2a0b:f4c2:3::83
+2a0b:f4c2:3::84
+2a0b:f4c2:3::85
+2a0b:f4c2:3::86
+2a0b:f4c2:3::87
+2a0b:f4c2:3::88
+2a0b:f4c2:3::89
+2a0b:f4c2:3::90
+2a0b:f4c2:3::91
+2a0b:f4c2:3::92
+2a0b:f4c2:3::93
+2a0b:f4c2::1
+2a0b:f4c2::2
+2a0b:f4c2::3
+2a0b:f4c2::4
+2a0b:f4c2::5
+2a0b:f4c2::6
+2a0b:f4c2::7
+2a0b:f4c2::8
+2a0b:f4c2::9
+2a0b:f4c2::10
+2a0b:f4c2::11
+2a0b:f4c2::12
+2a0b:f4c2::13
+2a0b:f4c2::14
+2a0b:f4c2::15
+2a0b:f4c2::16
+2a0b:f4c2::17
+2a0b:f4c2::18
+2a0b:f4c2::19
+2a0b:f4c2::20
+2a0b:f4c2::21
+2a0b:f4c2::22
+2a0b:f4c2::23
+2a0b:f4c2::24
+2a0b:f4c2::25
+2a0b:f4c2::26
+2a0b:f4c2::27
+2a0b:f4c2::28
+2a0b:f4c2::29
+2a0b:f4c2::30
+2a0b:f4c2::31
+2a0c:5cc0:1:1::293c:1518
+2a0c:e300::23
+2a0d:c2c0:1:4::2
+2a0e:97c0:3ea:372::1
+2a0e:97c0:3ea:bc::1
+2a0e:97c0:3ea:fd::1
+2a0e:4005:1002:ffff:185:40:4:29
+2a0e:4005:1002:ffff:185:40:4:38
+2a0e:4005:1002:ffff:185:40:4:92
+2a0e:4005:1002:ffff:185:40:4:94
+2a0e:4005:1002:ffff:185:40:4:95
+2a0e:4005:1002:ffff:185:40:4:100
+2a0e:4005:1002:ffff:185:40:4:101
+2a0e:4005:1002:ffff:185:40:4:132
+2a0e:4005:1002:ffff:185:40:4:149
+2a0e:b107:dd0::3:ed78:7632
+2a0e:e701:1198::1
+2a0e:fa00:0:1b::1
+2a0f:85c1:356:3238::1
+2a0f:93c1:26:1f2::9ce5
+2a0f:5707:aaef:282::1
+2a0f:5707:aaef:390::1
+2a0f:9400:7e11:b852::1
+2a0f:df00:0:255::194
+2a0f:df00:0:255::195
+2a0f:df00:0:255::196
+2a0f:df00:0:255::197
+2a0f:df00:0:255::198
+2a0f:df00:0:255::199
+2a0f:df00:0:255::200
+2a0f:df00:0:255::201
+2a0f:df00:0:255::202
+2a0f:df00:0:255::203
+2a0f:df00:0:255::204
+2a0f:df00:0:255::205
+2a0f:df00:0:255::206
+2a0f:e586:f:f:a052:2166:bef9:a432
+2a0f:e586:f:f:baa4:d491:90be:dca5
+2a0f:e586:f:f:c94a:de42:aac1:9045
+2a0f:e586:f:f::89
+2a0f:e586:f:f::133
+2a0f:e586:f:f::182
+2a0f:e586:f:f::188
+2a00:1b88:4::2
+2a00:1b88:4::4
+2a00:1dc0:caff:8b::24bd
+2a00:1dc0:caff:12c::4d3a
+2a00:1dc0:caff:15::45dc
+2a00:1dc0:caff:44::326d
+2a00:1dc0:caff:73::a568
+2a00:1dc0:caff:138::94d2
+2a00:11c0:1b:aa2::5
+2a00:11c0:1c:311::5
+2a00:11c0:1f:1::55
+2a00:99a0:0:1000::2
+2a00:1728:f:f:f:f:c03c:9898
+2a01:4f9:3a:2748::2
+2a01:5e0:36:c5cd::1
+2a01:5e0:36:c311::1
+2a01:5e0:36:cf2a::1
+2a01:7e00::f03c:91ff:fe56:2656
+2a01:7e00::f03c:91ff:fe78:b382
+2a01:4262:1ab:ffff::133
+2a01:6340:2:501::10
+2a01:6340:2:501::20
+2a02:13f0:8100:6:688:5fe9:2e1f:1
+2a02:16d0:0:5::1
+2a02:418:6017::147
+2a02:418:6017::148
+2a02:898:218::1
+2a02:898:218::2
+2a02:2970:1001::4b
+2a02:c206:2095:2624::1
+2a02:c207:3002:8283::1
+2a02:ec0:209:10::4
+2a02:ed06::222
+2a03:3b40:fe:3b1::1
+2a03:6f20:531::254
+2a03:4000:1d:3d:1827:b1ff:feec:f6b0
+2a03:4000:1d:b7a:782f:17ff:fef0:a708
+2a03:4000:1e:7d4:84fb:5fff:fef3:9d56
+2a03:4000:1e:81:c835:7dff:fe90:3ed5
+2a03:4000:2b:66e:dead:beef:ca1f:1337
+2a03:4000:5:65b:388a:15ff:fedc:30d6
+2a03:4000:6:102b:c457:f3ff:feb0:a6d0
+2a03:4000:6:614:d803:40ff:fec3:832a
+2a03:4000:6:d042:5440:88ff:fedd:4ae5
+2a03:4000:6:e047:6494:62ff:fe3f:85b8
+2a03:4000:15:928:dead:beef:ca1f:1337
+2a03:4000:17:a15:d4db:fbff:fef4:8b7b
+2a03:4000:19:40:4804:2fff:fe4c:9cc1
+2a03:4000:21:8a8:dead:beef:ca1f:1337
+2a03:4000:21:115:8837:15ff:fe14:64cc
+2a03:4000:27:6f8:e466:27ff:fe82:1b2a
+2a03:4000:27:36:c813:6dff:fe0e:b93e
+2a03:4000:28:1e8::69
+2a03:4000:28:3e:c4ee:b0ff:fecb:1cde
+2a03:4000:29:8a9:887f:9eff:feed:9e9
+2a03:4000:37:3:e842:2ff:feb9:c49c
+2a03:4000:46:197:b434:d3ff:fe68:d9e1
+2a03:4000:48:4d:88c8:8eff:fee8:9d1a
+2a03:4000:56:91:480a:eeff:fea8:f9c6
+2a03:4000:62:8:c855:23ff:fef6:50ee
+2a03:4000:66:15:18a0:6bff:fe90:3147
+2a03:4000:66:d88:6469:50ff:fe0b:98a8
+2a03:e600:100::1
+2a03:e600:100::2
+2a03:e600:100::3
+2a03:e600:100::4
+2a03:e600:100::5
+2a03:e600:100::6
+2a03:e600:100::65
+2a03:e600:100::66
+2a03:e600:100::67
+2a03:e600:100::68
+2a03:e600:100::69
+2a03:e600:100::70
+2a03:e600:100::71
+2a04:9dc0:31::c0cc:4d
+2a04:9dc0:31::c0cc:73
+2a04:52c0:102:46e0::1
+2a04:52c0:103:5acd::1
+2a04:52c0:103:412::1
+2a04:52c0:104:31e6::1
+2a04:52c0:104:4735::1
+2a04:52c0:104:ad97::1
+2a04:52c0:104:fe02::1
+2a04:52c0:105:78fc::1
+2a04:52c0:105:98a3::1
+2a04:52c0:106:394::1
+2a04:52c0:108:a34f::1
+2a04:52c0:116:e0e3::1
+2a04:52c0:119:3f0b::1
+2a04:52c0:128:c6e7:50ef:cafe:babe:1337
+2a04:52c0:130:896e::1
+2a04:52c0:130:d285::1
+2a05:541:110:3e::1
+2a05:541:110:20::1
+2a05:541:112:31::1
+2a05:541:121:33::1
+2a05:541:141:2c::1
+2a05:541:152:4::1
+2a05:b0c7:6bd4::1
+2a05:b0c7:67c6::1
+2a05:b0c7:6388::1
+2a05:b0c7:6949::1
+2a06:1280:bee1:2::ee12:230
+2a06:1700:0:3c::1
+2a06:1700:0:12::1
+2a06:1700:0:12::2
+2a06:1700:0:12::3
+2a06:1700:0:12::4
+2a06:1700:0:15::1
+2a06:1700:0:15::2
+2a06:1700:0:15::3
+2a06:1700:0:15::4
+2a06:1700:0:16::1
+2a06:1700:0:47::166
+2a06:1700:0:50::11
+2a06:1700:0:193::100
+2a06:1700:3:19::1
+2a06:1700:3:34::1
+2a06:1700:4:11:7::2
+2a06:1700:4:14::1
+2a06:d380:0:103::62
+2a06:d380:0:103::63
+2a06:e80:3000:1:bad:babe:ca11:911
+2a07:e01:2:13::2
+2a07:e03:2a::bcde
+2a09:6301:0:2e1:b492:c29e:f532:42c6
+2a10:c800:1:9cc6::1
+2a11:6100:0:22:a236:9fff:fe9e:36ea
+2a12:5940:13e2::2
+2a12:5940:52c2::2
+2a12:5940:144f::2
+2a12:5940:9101::2
+2a12:5940:a896::2
+2a12:5940:b4db::2
+2a12:5940:b4dd::2
+2a12:5940:c826::2
+2a12:5940:f0a8::2
+2a12:a800:1:1:194:26:192:161
+2a12:a800:2:1:45:138:16:178
+2a12:a800:2:1:45:138:16:213
+2a12:a800:2:1:185:241:208:81
+2a12:bec4:11d3:de9f::1
+2a12:d8c0:109a:9001::7
+2001:1af8:4060:a01f::12a6
+2001:1af8:4700:a114:6::1
+2001:1b60:2:1:3935:104:0:1
+2001:1b60:3:221:3132:102:0:1
+2001:1b60:3:221:4134:101:0:1
+2001:1b60:3:239:1003:103:0:1
+2001:1b60:3:239:1003:106:0:1
+2001:4b20:12:f001::105
+2001:4b98:dc0:43:f816:3eff:fe5f:cf14
+2001:4b98:dc0:47:216:3eff:fe3d:888c
+2001:4ba0:ffeb:b1::c
+2001:4ba0:fff8:120::1
+2001:19f0:5:6dcc:5400:4ff:fefc:9cc
+2001:19f0:5401:266f:5400:4ff:feb9:e92b
+2001:40e8:0:f090::100
+2001:41d0:2:9161::1
+2001:41d0:304:200::9dce
+2001:41d0:304:200::3348
+2001:41d0:401:3200::3efd
+2001:41d0:404:300::dd2
+2001:41d0:601:1100::108e
+2001:41d0:701:1100::4f60
+2001:41d0:701:1100::38fc
+2001:41d0:801:2000::15bb
+2001:41d0:1008:20d1::1
+2001:41d0:a:2a61::1
+2001:41d0:a:5c0::1
+2001:41d0:a:fe22::1
+2001:67c:6ec:203:192:42:116:173
+2001:67c:6ec:203:192:42:116:174
+2001:67c:6ec:203:192:42:116:175
+2001:67c:6ec:203:192:42:116:176
+2001:67c:6ec:203:192:42:116:177
+2001:67c:6ec:203:192:42:116:178
+2001:67c:6ec:203:192:42:116:179
+2001:67c:6ec:203:192:42:116:180
+2001:67c:6ec:203:192:42:116:181
+2001:67c:6ec:203:192:42:116:182
+2001:67c:6ec:203:192:42:116:183
+2001:67c:6ec:203:192:42:116:184
+2001:67c:6ec:203:192:42:116:185
+2001:67c:6ec:203:192:42:116:186
+2001:67c:6ec:203:192:42:116:187
+2001:67c:6ec:203:192:42:116:191
+2001:67c:6ec:203:192:42:116:192
+2001:67c:6ec:203:192:42:116:193
+2001:67c:6ec:203:192:42:116:194
+2001:67c:6ec:203:192:42:116:195
+2001:67c:6ec:203:192:42:116:196
+2001:67c:6ec:203:192:42:116:197
+2001:67c:6ec:203:192:42:116:198
+2001:67c:6ec:203:192:42:116:199
+2001:67c:6ec:203:192:42:116:200
+2001:67c:6ec:203:192:42:116:201
+2001:67c:6ec:203:192:42:116:202
+2001:67c:6ec:203:192:42:116:203
+2001:67c:6ec:203:192:42:116:208
+2001:67c:6ec:203:192:42:116:209
+2001:67c:6ec:203:192:42:116:210
+2001:67c:6ec:203:192:42:116:211
+2001:67c:6ec:203:192:42:116:212
+2001:67c:6ec:203:192:42:116:213
+2001:67c:6ec:203:192:42:116:214
+2001:67c:6ec:203:192:42:116:215
+2001:67c:6ec:203:192:42:116:216
+2001:67c:6ec:203:192:42:116:217
+2001:67c:6ec:203:192:42:116:218
+2001:67c:6ec:203:192:42:116:219
+2001:67c:6ec:203:218:33ff:fe44:5513
+2001:67c:6ec:203:218:33ff:fe44:5514
+2001:67c:6ec:203:218:33ff:fe44:5515
+2001:67c:6ec:203:218:33ff:fe44:5517
+2001:67c:6ec:203:218:33ff:fe44:5518
+2001:67c:6ec:203:218:33ff:fe44:5519
+2001:67c:6ec:203:218:33ff:fe44:5520
+2001:67c:6ec:203:218:33ff:fe44:5522
+2001:67c:6ec:203:218:33ff:fe44:5523
+2001:67c:6ec:203:218:33ff:fe44:5524
+2001:67c:6ec:203:218:33ff:fe44:5525
+2001:67c:6ec:203:218:33ff:fe44:5526
+2001:67c:6ec:203:218:33ff:fe44:5527
+2001:67c:6ec:203:218:33ff:fe44:5528
+2001:67c:89c:666::1
+2001:67c:89c:702:1ce:1ce:babe:1
+2001:67c:89c:702:1ce:1ce:babe:2
+2001:67c:89c:702:1ce:1ce:babe:3
+2001:67c:89c:702:1ce:1ce:babe:4
+2001:67c:89c:702:1ce:1ce:babe:5
+2001:67c:89c:702:1ce:1ce:babe:6
+2001:67c:89c:702:1ce:1ce:babe:7
+2001:67c:89c:702:1ce:1ce:babe:8
+2001:67c:89c:702:1ce:1ce:babe:9
+2001:67c:89c:702:1ce:1ce:babe:10
+2001:67c:289c:2::234
+2001:67c:289c:2::235
+2001:67c:289c:4::77
+2001:67c:289c:4::78
+2001:67c:289c:4::79
+2001:67c:289c:4::80
+2001:67c:289c::20
+2001:67c:289c::25
+2001:67c:2044:1905::26
+2001:67c:2608::1
+2001:470:1:908::9001
+2001:620:20d0::19
+2001:620:20d0::20
+2001:620:20d0::23
+2001:620:20d0::24
+2001:638:301:f732::150
+2001:780:107:b::85
+2001:910:1400:107::2
+2001:ac8:8b:22:0:1:9121:1111
+2001:ac8:22:43::20e5:a7d7
+2001:b011:4002:37fc::b
+2001:b030:2422::7234
+2001:bc8:1600:472a::1
+2001:bf0:666::666
+2001:df7:7e80:100:9f2b:1d15:c713:52ad
+2400:6180:100:d0::2c:3001
+2400:8901::f03c:93ff:fe68:23b3
+2400:8901::f03c:94ff:fe7f:59f6
+2400:d320:2202:5765::1
+2400:d321:2195:2012::1
+2401:c080:2000:111f:5400:4ff:fea3:9c02
+2402:1f00:8100:400::9
+2406:da1a:888:d200:3daf:64c9:d771:fbab
+2406:da1a:a96:2f00:9461:57d2:2f87:cb16
+2407:3640:2207:8882::1
+2600:3c0a::f03c:94ff:fe5a:3a17
+2600:3c00::f03c:91ff:fe73:f9ba
+2600:3c00::f03c:91ff:fe96:1cd9
+2600:3c00::f03c:93ff:fe2b:34f6
+2600:3c01::f03c:94ff:fe28:b96e
+2600:3c03::f03c:91ff:fe24:47be
+2600:3c03::f03c:92ff:fed8:d9ef
+2600:3c03::f03c:94ff:fed1:8c69
+2602:2da:0:33:5054:ff:fe6c:39dc
+2602:2da:0:34:5054:ff:fe7e:7c21
+2602:2e5::104
+2602:fc24:12:77c0::1
+2602:fc24:12:81a6::1
+2602:fc24:12:a679::1
+2602:fc24:19:1c9::1
+2602:fc24:19:2b4::1
+2602:fc24:19:30::1
+2602:fc24:19:eb06::1
+2602:fccf:310:1::a
+2602:fccf:310:1::b
+2602:fccf:310:1::c
+2602:fef9:100:1100::199
+2603:c026:c102:5ff:2603:c026:c102:5ff
+2604:2dc0:101:200::1dd3
+2604:2dc0:101:200::162b
+2604:2dc0:202:300::ed3
+2604:6600:0:42::2
+2604:b480:3:6::2
+2605:2700:0:2:a800:ff:fe39:574
+2605:6400:10:1ab:2605:6400:10:1ab
+2605:6400:10:3f9:2fb4:3d9c:a1bc:73a3
+2605:6400:10:3f9:8fca:7115:49b6:57fd
+2605:6400:10:3f9:42af:65de:583f:49f1
+2605:6400:10:3f9:116c:94a1:a862:dfec
+2605:6400:10:3f9:b9ce:43e8:7a59:6f17
+2605:6400:10:3f9:bf6e:ca88:3193:7de8
+2605:6400:10:3f9:c161:156a:847d:1a1d
+2605:6400:10:3f9:f741:57f7:8f88:b2bd
+2605:6400:10:4ed:1:1:1:1
+2605:6400:10:7ce:1211:2284:56a3:1121
+2605:6400:10:8a2:de49:ffd1:46f5:99a2
+2605:6400:10:12b:1877:e308:72b3:41b0
+2605:6400:10:16e:e9da:a184:bfe1:e727
+2605:6400:10:44f::1
+2605:6400:10:58f:8768:8283:1a62:bdc6
+2605:6400:10:75:1585:9b71:1c16:b1a1
+2605:6400:10:984:41e7:4ad6:a11e:cdcc
+2605:6400:10:1008:1111:1111:1111:1111
+2605:6400:10:1060:411f:41d8:11fe:716f
+2605:6400:10:1362::2
+2605:6400:10:aa1:2db8:1c14:2191:4aa8
+2605:6400:20:1a8:f5f2:4a28:b5ed:931d
+2605:6400:20:1c01:7d33:a5db:c2b9:1092
+2605:6400:20:3ea:c2a3:1162:7224:e5df
+2605:6400:20:482:3920:1829:1839:1293
+2605:6400:20:2417::69
+2605:6400:20:a28:b37e:88e9:caa1:7b9c
+2605:6400:20:be7::1
+2605:6400:20:ff9::1
+2605:6400:30:e88d:36fc:7ca1:dff5:1e57
+2605:6400:30:e98e:3368:3377:b4f0:8c48
+2605:6400:30:e948:4cee:191b:1e55:25b3
+2605:6400:30:ea52:4246:fb82:f36c:8ede
+2605:6400:30:ea58:51a1:e174:d185:d6f1
+2605:6400:30:ea86:59b6:d4c6:5192:1a19
+2605:6400:30:eb71:51b7:4869:7579:3aa1
+2605:6400:30:ebb6:532:acc:65:31
+2605:6400:30:ed0c:b477:4972:756a:2f42
+2605:6400:30:edc3::34
+2605:6400:30:ef7a:391a:8c71:a2f1:9506
+2605:6400:30:f0ed:9151:66ed:6366:5c74
+2605:6400:30:f1fa:f57f:d285:3ed9:ee27
+2605:6400:30:f4ae:8f7b:cc6e:d1d7:b978
+2605:6400:30:f5a3:5bb1:af4e:c969:c73e
+2605:6400:30:f5db:25a1:b884:ef2d:8818
+2605:6400:30:f7c0:8511:b113:ca11:9baa
+2605:6400:30:f7ca::2
+2605:6400:30:f7fa:c230:6fe8:a09a:5836
+2605:6400:30:f8b5:620c:dc25:c624:aafd
+2605:6400:30:f08c:45b7:4a99:a154:694e
+2605:6400:30:f8d5::1
+2605:6400:30:f8da:2b2:a293:30ad:506d
+2605:6400:30:f32b:8fec:4251:d9d1:1ff5
+2605:6400:30:f32b:7417:ea33:425b:9732
+2605:6400:30:f32b:c191:e73e:8bd5:9c61
+2605:6400:30:f38b:28b3:cd24:51f3:e412
+2605:6400:30:f49b:e2ee:34f8:c854:6f63
+2605:6400:30:f51a:f826:ecfc:47b6:92a9
+2605:6400:30:f57d:916e:73f8:d5e7:675b
+2605:6400:30:f78b::2
+2605:6400:30:f82f:7de1:3de3:8947:bc6a
+2605:6400:30:f174:1:1:1:1
+2605:6400:30:f174:1:2:3:4
+2605:6400:30:f174:4:3:2:1
+2605:6400:30:f174:42:42:42:0
+2605:6400:30:f174:42:42:42:42
+2605:6400:30:f174:1111:2222:3333:4444
+2605:6400:30:f174::42
+2605:6400:30:f307:3aa6:91d4:da12:7eee
+2605:6400:30:f307:5d12:16d8:1641:2b15
+2605:6400:30:f307:1712:1a11:9b1c:ab7f
+2605:6400:30:f307:ba73:e934:5195:accd
+2605:6400:30:f307:c2bf:d371:75a9:31e6
+2605:6400:30:f307:ff42:3928:c777:8563
+2605:6400:30:f330:61ea:72a8:8aea:fa1f
+2605:6400:30:f414:42ce:c612:dab8:1337
+2605:6400:30:f440:757e:adf1:55f7:5a31
+2605:6400:30:f503::1
+2605:6400:30:f534:ae1d:c3d9:9941:d85e
+2605:6400:30:f623:5a78:29a6:8492:27b0
+2605:6400:30:f671:3fc7:4bb4:ca18:86fa
+2605:6400:30:f753:891d:ee77:e97c:741a
+2605:6400:30:f805:1e96:b223:fbe5:cfac
+2605:6400:30:f858:2704:73e1:7085:12ef
+2605:6400:30:f920:f523:28ef:3617:8b86
+2605:6400:40:fde8:11c7:119b:aaf9:2722
+2605:6400:40:fe09::2
+2605:6400:d814:1b8::4
+2605:aa80:0:9::3
+2607:5300:60:566f::1
+2607:5300:61:785:1:2:3:4
+2607:5300:201:3100::535e
+2607:5300:205:200::3dde
+2607:5300:205:200::56be
+2607:5300:205:200::163a
+2607:5300:205:200::4894
+2607:f130:0:ed:216:3cff:febd:3b42
+2607:f530:8002::19
+2620:18c:0:192::131
+2620:18c:0:192::132
+2620:18c:0:192::133
+2620:18c:0:192::134
+2620:18c:0:192::135
+2620:18c:0:192::136
+2620:18c:0:192::137
+2620:18c:0:192::138
+2620:18c:0:192::139
+2620:18c:0:192::140
+2620:18c:0:192::141
+2620:18c:0:192::142
+2620:18c:0:192::143
+2620:18c:0:192::144
+2620:18c:0:192::145
+2620:18c:0:192::146
+2620:18c:0:192::147
+2620:18c:0:192::148
+2620:18c:0:192::149
+2620:18c:0:192::150
+2620:18c:0:192::171
+2620:18c:0:192::172
+2620:18c:0:192::173
+2620:18c:0:192::211
+2620:18c:0:192::212
+2620:18c:0:192::213
+2620:18c:0:192::214
+2620:18c:0:192::215
+2620:18c:0:192::216
+2620:18c:0:192::217
+2620:18c:0:192::218
+2620:18c:0:192::219
+2620:18c:0:192::220
+2620:18c:0:192::221
+2620:18c:0:192::222
+2620:18c:0:192::223
+2620:18c:0:192::224
+2620:18c:0:192::225
+2620:18c:0:192::226
+2620:18c:0:192::227
+2620:18c:0:192::228
+2620:18c:0:192::229
+2620:18c:0:192::230
+2620:95:4007::111
+2800:ba0:6:c1::4858
+2804:391c:0:18:1c00:6eff:fe00:cf
+2804:391c:0:18:1c00:91ff:fe00:d2
+2804:391c:0:18:1c00:d3ff:fe00:d1
+2.56.10.36
+2.58.56.35
+2.58.56.43
+2.58.56.90
+2.58.56.220
+2.58.56.248
+3.108.196.136
+5.2.67.226
+5.2.72.110
+5.2.79.190
+5.34.182.203
+5.42.80.232
+5.42.80.233
+5.42.80.234
+5.42.80.235
+5.45.98.162
+5.45.102.93
+5.45.104.176
+5.79.66.19
+5.104.86.6
+5.181.80.107
+5.182.86.212
+5.196.8.113
+5.196.95.34
+5.255.97.221
+5.255.98.23
+5.255.98.151
+5.255.98.198
+5.255.99.5
+5.255.99.108
+5.255.99.124
+5.255.99.147
+5.255.100.26
+5.255.100.219
+5.255.100.227
+5.255.101.10
+5.255.103.235
+5.255.104.202
+5.255.111.64
+5.255.114.171
+5.255.115.58
+5.255.117.56
+5.255.118.183
+5.255.118.244
+5.255.120.205
+5.255.121.71
+5.255.123.158
+5.255.123.164
+5.255.124.150
+5.255.125.41
+5.255.125.196
+5.255.127.222
+8.218.9.41
+13.126.132.195
+15.204.238.148
+23.94.211.25
+23.129.64.131
+23.129.64.132
+23.129.64.133
+23.129.64.134
+23.129.64.135
+23.129.64.136
+23.129.64.137
+23.129.64.138
+23.129.64.139
+23.129.64.140
+23.129.64.141
+23.129.64.142
+23.129.64.143
+23.129.64.144
+23.129.64.145
+23.129.64.146
+23.129.64.147
+23.129.64.148
+23.129.64.149
+23.129.64.150
+23.129.64.171
+23.129.64.172
+23.129.64.173
+23.129.64.211
+23.129.64.212
+23.129.64.213
+23.129.64.214
+23.129.64.215
+23.129.64.216
+23.129.64.217
+23.129.64.218
+23.129.64.219
+23.129.64.220
+23.129.64.221
+23.129.64.222
+23.129.64.223
+23.129.64.224
+23.129.64.225
+23.129.64.226
+23.129.64.227
+23.129.64.228
+23.129.64.229
+23.129.64.230
+23.130.136.194
+23.130.136.195
+23.137.248.100
+23.137.248.139
+23.137.250.83
+23.137.253.27
+23.137.253.108
+23.137.253.109
+23.137.253.110
+23.152.24.77
+23.153.248.33
+23.153.248.34
+23.154.177.2
+23.154.177.3
+23.154.177.4
+23.154.177.5
+23.154.177.6
+23.154.177.7
+23.154.177.8
+23.154.177.9
+23.154.177.10
+23.154.177.11
+23.154.177.12
+23.154.177.13
+23.154.177.14
+23.154.177.15
+23.154.177.16
+23.154.177.17
+23.154.177.18
+23.154.177.19
+23.154.177.20
+23.154.177.21
+23.154.177.22
+23.154.177.23
+23.154.177.24
+23.154.177.25
+23.154.177.26
+23.154.177.27
+23.154.177.28
+23.154.177.29
+23.154.177.30
+23.154.177.31
+23.155.8.104
+23.155.24.4
+24.240.72.170
+27.255.75.198
+31.42.185.134
+31.129.22.65
+31.133.0.16
+31.133.0.17
+31.133.0.26
+31.133.0.36
+31.133.0.210
+31.133.1.14
+35.0.127.52
+37.48.70.156
+37.48.120.196
+37.114.41.119
+37.120.239.59
+37.187.5.192
+37.187.74.97
+37.205.8.220
+37.228.129.5
+37.228.129.63
+37.228.129.128
+37.252.254.33
+37.252.255.135
+38.97.116.244
+42.116.36.196
+45.8.22.207
+45.9.148.113
+45.11.59.28
+45.12.3.80
+45.15.157.177
+45.56.127.63
+45.61.185.172
+45.61.186.203
+45.61.187.200
+45.66.35.10
+45.66.35.20
+45.66.35.21
+45.66.35.22
+45.66.35.35
+45.79.50.161
+45.79.79.121
+45.79.144.222
+45.79.177.21
+45.79.253.76
+45.80.158.23
+45.80.158.27
+45.80.158.205
+45.83.104.137
+45.94.31.68
+45.94.31.180
+45.95.169.94
+45.95.169.95
+45.95.169.130
+45.95.169.223
+45.95.169.224
+45.95.169.225
+45.95.169.226
+45.95.169.227
+45.95.169.228
+45.95.169.229
+45.95.169.230
+45.95.169.255
+45.95.202.48
+45.118.133.44
+45.128.133.242
+45.128.157.46
+45.129.84.246
+45.129.84.247
+45.129.84.248
+45.129.84.249
+45.131.65.34
+45.132.246.245
+45.134.225.36
+45.135.132.20
+45.138.16.42
+45.138.16.76
+45.138.16.107
+45.138.16.113
+45.138.16.178
+45.138.16.213
+45.138.16.222
+45.138.16.230
+45.138.16.240
+45.138.16.249
+45.139.122.176
+45.139.122.177
+45.139.122.178
+45.139.122.179
+45.141.215.17
+45.141.215.19
+45.141.215.21
+45.141.215.40
+45.141.215.56
+45.141.215.61
+45.141.215.62
+45.141.215.63
+45.141.215.80
+45.141.215.81
+45.141.215.88
+45.141.215.90
+45.141.215.95
+45.141.215.97
+45.141.215.110
+45.141.215.111
+45.141.215.114
+45.141.215.167
+45.141.215.169
+45.148.10.111
+45.148.10.169
+45.151.122.34
+45.155.76.108
+45.155.76.226
+46.38.255.27
+46.165.243.36
+46.182.21.248
+46.232.251.191
+46.234.47.105
+47.76.187.86
+47.243.99.161
+47.250.38.29
+49.51.172.44
+51.15.59.15
+51.38.81.135
+51.38.113.118
+51.38.225.46
+51.81.33.188
+51.81.222.62
+51.81.254.3
+51.81.254.14
+51.81.254.15
+51.89.153.112
+51.91.18.151
+51.195.166.174
+51.222.84.46
+51.222.136.218
+51.222.142.67
+54.36.101.21
+54.36.209.253
+54.36.209.254
+62.171.137.169
+62.182.83.214
+62.182.84.146
+64.227.115.78
+64.227.159.148
+64.255.46.210
+66.78.40.182
+66.146.193.33
+66.220.242.222
+67.219.109.141
+71.19.144.106
+71.19.144.222
+72.14.179.10
+72.211.49.235
+74.82.47.194
+77.37.3.7
+77.48.28.193
+77.48.28.237
+77.48.28.239
+77.81.247.72
+77.83.246.112
+77.91.85.147
+77.91.86.95
+77.91.87.79
+77.105.146.42
+77.220.196.253
+77.221.152.105
+77.221.157.237
+77.221.159.75
+77.221.159.184
+77.221.159.189
+77.221.159.192
+77.221.159.193
+78.142.18.219
+79.124.8.241
+79.137.198.213
+80.67.167.81
+80.67.172.162
+80.82.78.14
+80.94.92.106
+80.210.78.252
+80.241.60.207
+81.16.33.42
+81.17.28.95
+82.68.49.227
+82.85.247.254
+82.118.242.62
+82.153.138.119
+82.197.182.161
+82.221.128.191
+82.221.131.5
+82.221.139.190
+83.96.213.63
+83.97.20.77
+83.97.20.115
+83.217.9.73
+84.16.224.227
+84.19.182.20
+84.211.225.54
+84.247.165.51
+84.252.120.163
+85.17.9.83
+85.93.218.204
+85.239.41.130
+86.104.73.167
+86.104.194.13
+86.205.5.107
+87.118.110.27
+87.118.116.90
+87.118.116.103
+87.118.122.30
+87.118.122.51
+87.120.254.132
+88.80.20.86
+89.37.95.34
+89.58.18.210
+89.58.26.216
+89.58.41.156
+89.58.41.251
+89.58.63.200
+89.147.108.90
+89.147.110.82
+89.147.110.118
+89.147.110.154
+89.147.110.202
+89.147.111.87
+89.147.111.124
+89.185.82.71
+89.185.85.140
+89.187.143.31
+89.213.174.248
+89.234.157.254
+89.236.112.100
+91.92.109.43
+91.92.109.126
+91.92.252.98
+91.103.253.141
+91.132.144.59
+91.202.5.104
+91.203.145.116
+91.206.26.26
+91.208.75.3
+91.208.75.4
+91.208.75.153
+91.208.75.156
+91.208.75.178
+91.208.75.239
+91.210.59.57
+91.210.107.207
+91.219.236.101
+91.219.237.56
+91.219.239.166
+92.243.24.163
+92.246.84.133
+92.246.138.145
+93.95.228.125
+93.95.228.205
+93.95.230.165
+93.95.231.14
+93.99.104.18
+93.99.104.40
+93.99.104.128
+93.99.104.194
+93.99.104.195
+93.123.12.112
+94.16.112.22
+94.16.115.121
+94.16.116.81
+94.16.116.86
+94.16.121.91
+94.16.121.226
+94.32.66.15
+94.75.225.81
+94.102.51.15
+94.140.115.63
+94.142.241.194
+94.142.244.16
+94.158.246.65
+94.177.106.54
+94.228.163.25
+94.228.169.70
+94.230.208.147
+94.230.208.148
+95.128.43.164
+95.142.161.63
+95.143.193.125
+95.164.5.105
+95.211.244.28
+96.27.198.133
+96.126.98.146
+98.128.173.33
+102.130.113.9
+102.130.117.167
+102.130.127.117
+103.28.52.93
+103.109.101.105
+103.126.161.54
+103.163.218.11
+103.164.54.199
+103.174.253.222
+103.186.0.144
+103.193.179.233
+103.196.37.111
+103.208.86.5
+103.251.167.10
+103.251.167.20
+104.167.242.116
+104.167.242.117
+104.167.242.118
+104.192.1.138
+104.192.3.74
+104.219.232.126
+104.219.236.100
+104.244.72.115
+104.244.72.132
+104.244.73.43
+104.244.73.136
+104.244.73.190
+104.244.73.193
+104.244.74.23
+104.244.74.97
+104.244.75.74
+104.244.77.192
+104.244.77.208
+104.244.78.162
+104.244.78.233
+104.244.79.44
+104.244.79.50
+104.244.79.61
+107.173.179.59
+107.174.138.172
+107.189.1.9
+107.189.1.80
+107.189.1.160
+107.189.1.167
+107.189.1.175
+107.189.1.198
+107.189.2.108
+107.189.2.206
+107.189.3.11
+107.189.3.94
+107.189.3.148
+107.189.3.249
+107.189.4.12
+107.189.4.158
+107.189.4.209
+107.189.5.7
+107.189.5.18
+107.189.5.19
+107.189.5.121
+107.189.6.36
+107.189.6.124
+107.189.6.246
+107.189.7.47
+107.189.7.114
+107.189.7.141
+107.189.7.144
+107.189.7.161
+107.189.7.168
+107.189.8.5
+107.189.8.16
+107.189.8.45
+107.189.8.56
+107.189.8.65
+107.189.8.70
+107.189.8.133
+107.189.8.136
+107.189.8.181
+107.189.8.226
+107.189.8.238
+107.189.10.175
+107.189.11.111
+107.189.11.113
+107.189.12.3
+107.189.12.7
+107.189.12.88
+107.189.13.91
+107.189.13.180
+107.189.13.251
+107.189.13.253
+107.189.13.254
+107.189.14.4
+107.189.14.43
+107.189.14.106
+107.189.29.103
+107.189.29.184
+107.189.30.49
+107.189.30.69
+107.189.30.86
+107.189.30.236
+107.189.31.33
+107.189.31.187
+107.189.31.232
+108.61.158.147
+108.61.189.136
+108.181.16.251
+108.181.27.205
+108.181.69.243
+108.181.124.143
+109.69.67.17
+109.70.100.1
+109.70.100.2
+109.70.100.3
+109.70.100.4
+109.70.100.5
+109.70.100.6
+109.70.100.65
+109.70.100.66
+109.70.100.67
+109.70.100.68
+109.70.100.69
+109.70.100.70
+109.70.100.71
+109.122.221.11
+109.169.33.163
+114.35.245.150
+118.163.74.160
+123.253.35.32
+125.212.241.131
+125.253.31.196
+128.31.0.13
+128.127.180.156
+130.0.236.83
+130.193.10.21
+130.193.15.79
+130.193.15.186
+135.125.205.25
+135.181.209.88
+136.244.111.163
+138.59.18.110
+139.99.8.57
+139.99.172.11
+139.144.213.41
+139.162.249.209
+141.98.11.62
+141.98.119.56
+141.98.119.106
+141.239.146.142
+141.255.152.115
+142.44.133.81
+142.44.234.69
+142.171.12.88
+143.110.156.176
+144.24.197.112
+144.172.118.4
+144.172.118.55
+144.172.118.57
+146.59.35.38
+146.59.35.246
+146.70.81.186
+146.70.121.124
+146.70.146.26
+146.70.164.210
+147.45.78.34
+147.45.116.145
+148.113.152.91
+148.113.196.231
+149.56.22.133
+149.56.44.47
+149.202.79.129
+151.80.148.159
+154.16.116.61
+154.26.159.157
+154.47.20.16
+154.47.20.49
+154.47.20.163
+154.64.230.110
+154.213.185.133
+154.213.185.165
+154.213.185.183
+154.213.185.185
+154.213.185.230
+154.213.185.254
+155.138.161.171
+156.67.111.146
+160.119.249.240
+162.247.72.192
+162.247.72.199
+162.247.74.7
+162.247.74.27
+162.247.74.200
+162.247.74.201
+162.247.74.202
+162.247.74.204
+162.247.74.206
+162.247.74.213
+162.247.74.216
+162.251.5.152
+163.5.143.76
+163.172.45.102
+164.132.172.209
+165.73.242.163
+166.70.207.2
+171.25.193.20
+171.25.193.25
+171.25.193.77
+171.25.193.78
+171.25.193.79
+171.25.193.80
+171.25.193.234
+171.25.193.235
+172.81.131.110
+172.81.131.111
+172.81.131.139
+172.81.131.156
+172.81.132.94
+172.104.164.133
+172.104.182.84
+172.104.214.41
+172.105.161.162
+172.232.164.52
+172.233.227.15
+172.233.227.17
+173.0.3.111
+173.249.57.253
+176.58.100.98
+176.58.121.177
+176.97.114.182
+176.97.114.202
+176.118.193.33
+176.121.81.51
+176.124.221.200
+176.126.253.190
+177.54.158.15
+177.54.158.17
+177.54.158.18
+178.17.170.23
+178.17.170.144
+178.17.171.102
+178.17.174.14
+178.17.174.164
+178.20.55.16
+178.20.55.182
+178.175.131.141
+178.175.142.26
+178.175.148.209
+178.175.148.246
+178.218.144.18
+178.218.144.51
+178.218.144.64
+178.218.144.96
+178.218.144.99
+179.43.128.16
+179.43.159.78
+179.43.159.194
+179.43.159.195
+179.43.159.196
+179.43.159.197
+179.43.159.198
+179.43.159.199
+179.43.159.200
+179.43.159.201
+179.43.167.195
+179.43.182.58
+179.43.182.232
+180.150.226.99
+184.105.48.40
+185.7.33.146
+185.10.16.41
+185.29.8.212
+185.29.9.147
+185.34.33.2
+185.35.202.222
+185.38.175.133
+185.39.207.83
+185.40.4.29
+185.40.4.38
+185.40.4.92
+185.40.4.94
+185.40.4.95
+185.40.4.100
+185.40.4.101
+185.40.4.132
+185.40.4.149
+185.42.170.203
+185.56.83.83
+185.56.171.94
+185.67.82.114
+185.82.219.109
+185.84.31.254
+185.91.116.202
+185.100.85.22
+185.100.85.23
+185.100.85.24
+185.100.85.25
+185.100.85.132
+185.100.87.41
+185.100.87.136
+185.100.87.139
+185.100.87.166
+185.100.87.174
+185.100.87.192
+185.100.87.250
+185.100.87.253
+185.106.94.195
+185.106.102.102
+185.107.57.64
+185.107.57.65
+185.107.57.66
+185.107.70.56
+185.112.144.11
+185.112.146.167
+185.113.128.30
+185.125.217.74
+185.126.117.21
+185.129.61.1
+185.129.61.2
+185.129.61.3
+185.129.61.4
+185.129.61.5
+185.129.61.6
+185.129.61.7
+185.129.61.8
+185.129.61.9
+185.129.61.10
+185.129.61.129
+185.129.62.62
+185.129.62.63
+185.130.44.43
+185.130.44.59
+185.130.44.108
+185.130.47.58
+185.132.53.12
+185.141.147.128
+185.141.147.129
+185.142.239.49
+185.146.232.234
+185.153.197.227
+185.154.110.17
+185.154.110.142
+185.165.169.42
+185.165.169.239
+185.165.171.84
+185.165.190.111
+185.170.114.25
+185.181.60.135
+185.183.157.214
+185.183.159.40
+185.191.204.254
+185.193.52.180
+185.193.125.87
+185.193.158.134
+185.195.71.2
+185.195.71.3
+185.195.71.4
+185.195.71.5
+185.195.71.6
+185.195.71.7
+185.195.71.8
+185.195.71.9
+185.195.71.10
+185.195.71.11
+185.195.71.12
+185.195.71.244
+185.195.237.238
+185.207.107.130
+185.207.107.216
+185.216.68.52
+185.219.132.52
+185.220.100.240
+185.220.100.241
+185.220.100.242
+185.220.100.243
+185.220.100.244
+185.220.100.245
+185.220.100.246
+185.220.100.247
+185.220.100.248
+185.220.100.249
+185.220.100.250
+185.220.100.251
+185.220.100.252
+185.220.100.253
+185.220.100.254
+185.220.100.255
+185.220.101.0
+185.220.101.1
+185.220.101.2
+185.220.101.3
+185.220.101.4
+185.220.101.5
+185.220.101.6
+185.220.101.7
+185.220.101.8
+185.220.101.9
+185.220.101.10
+185.220.101.11
+185.220.101.12
+185.220.101.13
+185.220.101.14
+185.220.101.15
+185.220.101.16
+185.220.101.17
+185.220.101.18
+185.220.101.19
+185.220.101.20
+185.220.101.21
+185.220.101.22
+185.220.101.23
+185.220.101.24
+185.220.101.25
+185.220.101.26
+185.220.101.27
+185.220.101.28
+185.220.101.29
+185.220.101.30
+185.220.101.31
+185.220.101.32
+185.220.101.33
+185.220.101.34
+185.220.101.35
+185.220.101.36
+185.220.101.37
+185.220.101.38
+185.220.101.39
+185.220.101.40
+185.220.101.41
+185.220.101.42
+185.220.101.43
+185.220.101.44
+185.220.101.45
+185.220.101.46
+185.220.101.47
+185.220.101.48
+185.220.101.49
+185.220.101.50
+185.220.101.51
+185.220.101.52
+185.220.101.53
+185.220.101.54
+185.220.101.55
+185.220.101.56
+185.220.101.57
+185.220.101.58
+185.220.101.59
+185.220.101.60
+185.220.101.61
+185.220.101.62
+185.220.101.63
+185.220.101.64
+185.220.101.65
+185.220.101.66
+185.220.101.67
+185.220.101.68
+185.220.101.69
+185.220.101.70
+185.220.101.71
+185.220.101.72
+185.220.101.73
+185.220.101.74
+185.220.101.75
+185.220.101.76
+185.220.101.77
+185.220.101.78
+185.220.101.79
+185.220.101.80
+185.220.101.81
+185.220.101.82
+185.220.101.83
+185.220.101.84
+185.220.101.85
+185.220.101.86
+185.220.101.87
+185.220.101.88
+185.220.101.89
+185.220.101.90
+185.220.101.91
+185.220.101.92
+185.220.101.93
+185.220.101.128
+185.220.101.129
+185.220.101.130
+185.220.101.131
+185.220.101.132
+185.220.101.133
+185.220.101.134
+185.220.101.135
+185.220.101.136
+185.220.101.137
+185.220.101.138
+185.220.101.139
+185.220.101.140
+185.220.101.141
+185.220.101.142
+185.220.101.143
+185.220.101.144
+185.220.101.145
+185.220.101.146
+185.220.101.147
+185.220.101.148
+185.220.101.149
+185.220.101.150
+185.220.101.151
+185.220.101.153
+185.220.101.154
+185.220.101.155
+185.220.101.156
+185.220.101.157
+185.220.101.158
+185.220.101.159
+185.220.101.161
+185.220.101.162
+185.220.101.163
+185.220.101.164
+185.220.101.165
+185.220.101.166
+185.220.101.167
+185.220.101.168
+185.220.101.169
+185.220.101.170
+185.220.101.171
+185.220.101.172
+185.220.101.173
+185.220.101.174
+185.220.101.175
+185.220.101.176
+185.220.101.177
+185.220.101.178
+185.220.101.179
+185.220.101.180
+185.220.101.181
+185.220.101.182
+185.220.101.183
+185.220.101.184
+185.220.101.185
+185.220.101.186
+185.220.101.187
+185.220.101.188
+185.220.101.189
+185.220.101.190
+185.220.101.191
+185.220.103.4
+185.220.103.5
+185.220.103.6
+185.220.103.7
+185.220.103.8
+185.220.103.9
+185.225.69.203
+185.225.69.232
+185.225.226.181
+185.227.68.78
+185.227.134.106
+185.233.100.23
+185.241.208.28
+185.241.208.54
+185.241.208.71
+185.241.208.81
+185.241.208.115
+185.241.208.196
+185.241.208.202
+185.241.208.204
+185.241.208.206
+185.241.208.232
+185.241.208.243
+185.243.23.81
+185.244.25.12
+185.244.192.175
+185.244.192.184
+185.246.86.197
+185.246.128.161
+185.246.188.73
+185.246.188.74
+185.246.188.149
+185.246.189.77
+185.246.189.99
+185.246.189.130
+185.247.184.33
+185.247.184.105
+185.247.224.143
+185.252.232.218
+185.254.196.141
+188.68.41.191
+188.68.49.235
+188.68.52.231
+188.165.200.97
+188.172.229.15
+188.214.104.21
+188.244.106.81
+190.103.179.98
+190.120.229.98
+190.211.254.97
+192.42.116.13
+192.42.116.14
+192.42.116.15
+192.42.116.17
+192.42.116.18
+192.42.116.19
+192.42.116.20
+192.42.116.22
+192.42.116.23
+192.42.116.24
+192.42.116.25
+192.42.116.26
+192.42.116.27
+192.42.116.28
+192.42.116.173
+192.42.116.174
+192.42.116.175
+192.42.116.176
+192.42.116.177
+192.42.116.178
+192.42.116.179
+192.42.116.180
+192.42.116.181
+192.42.116.182
+192.42.116.183
+192.42.116.184
+192.42.116.185
+192.42.116.186
+192.42.116.187
+192.42.116.191
+192.42.116.192
+192.42.116.193
+192.42.116.194
+192.42.116.195
+192.42.116.196
+192.42.116.197
+192.42.116.198
+192.42.116.199
+192.42.116.200
+192.42.116.201
+192.42.116.202
+192.42.116.203
+192.42.116.208
+192.42.116.209
+192.42.116.210
+192.42.116.211
+192.42.116.212
+192.42.116.213
+192.42.116.214
+192.42.116.215
+192.42.116.216
+192.42.116.217
+192.42.116.218
+192.42.116.219
+192.99.149.111
+192.99.168.180
+192.108.48.150
+192.155.88.243
+193.26.115.43
+193.26.115.61
+193.36.38.17
+193.70.80.213
+193.105.134.150
+193.105.134.155
+193.142.147.69
+193.142.147.233
+193.182.96.246
+193.189.100.194
+193.189.100.195
+193.189.100.196
+193.189.100.197
+193.189.100.198
+193.189.100.199
+193.189.100.200
+193.189.100.201
+193.189.100.202
+193.189.100.203
+193.189.100.204
+193.189.100.205
+193.189.100.206
+193.218.118.89
+193.218.118.133
+193.218.118.155
+193.218.118.173
+193.218.118.178
+193.218.118.182
+193.218.118.188
+193.233.133.109
+193.235.207.238
+194.15.112.133
+194.15.113.118
+194.15.115.212
+194.26.192.77
+194.26.192.161
+194.62.248.21
+194.163.157.49
+194.164.122.21
+195.80.151.242
+195.88.74.206
+195.160.220.104
+195.176.3.19
+195.176.3.20
+195.176.3.23
+195.176.3.24
+198.58.107.53
+198.96.155.3
+198.98.48.31
+198.98.48.33
+198.98.48.35
+198.98.50.199
+198.98.50.215
+198.98.51.52
+198.98.51.189
+198.98.51.249
+198.98.52.24
+198.98.53.136
+198.98.54.49
+198.98.60.90
+198.251.84.163
+198.251.84.237
+198.251.88.18
+198.251.89.96
+199.7.140.230
+199.195.248.184
+199.195.249.214
+199.195.250.18
+199.195.250.46
+199.195.250.165
+199.195.251.78
+199.195.251.119
+199.195.251.148
+199.195.251.202
+199.195.253.124
+199.195.253.156
+199.195.253.180
+199.195.253.247
+200.122.181.2
+201.23.12.101
+201.23.14.225
+201.23.16.249
+202.61.226.98
+202.182.99.129
+204.8.156.142
+204.85.191.7
+204.85.191.8
+204.85.191.9
+204.137.14.92
+204.137.14.104
+204.137.14.105
+204.137.14.106
+204.194.29.4
+205.185.113.180
+205.185.116.34
+205.185.117.149
+205.185.119.35
+205.185.121.170
+205.185.123.93
+205.185.124.176
+205.185.124.193
+205.185.127.231
+207.188.137.212
+209.141.32.181
+209.141.32.198
+209.141.37.94
+209.141.46.203
+209.141.51.30
+209.141.51.180
+209.141.54.203
+209.141.55.26
+209.141.59.116
+209.141.60.219
+209.141.62.71
+212.21.66.6
+212.69.167.80
+212.73.134.204
+212.95.50.77
+212.95.52.76
+213.95.149.22
+213.252.140.118
+216.73.159.75
+216.73.159.101
+216.239.90.19
+217.12.221.131
+217.79.189.239
+217.146.2.41
+217.197.107.138
diff --git a/db/migrate/20161005112915_create_selected_talks.rb b/db/migrate/20161005112915_create_selected_talks.rb
index de9d2e5..d69a3d0 100644
--- a/db/migrate/20161005112915_create_selected_talks.rb
+++ b/db/migrate/20161005112915_create_selected_talks.rb
@@ -1,6 +1,6 @@
class TalkPreference < ActiveRecord::Base
self.primary_key = :unique_id
- serialize :talks, Array
+ serialize :talks, type: Array
end
class SelectedTalk < ApplicationRecord
diff --git a/db/migrate/20161005115007_remove_talks_from_talk_preferences.rb b/db/migrate/20161005115007_remove_talks_from_talk_preferences.rb
index b144427..4538c14 100644
--- a/db/migrate/20161005115007_remove_talks_from_talk_preferences.rb
+++ b/db/migrate/20161005115007_remove_talks_from_talk_preferences.rb
@@ -1,7 +1,7 @@
class TalkPreference < ActiveRecord::Base
self.primary_key = :unique_id
has_many :selected_talks
- serialize :talks, Array
+ serialize :talks, type: Array
end
class SelectedTalk < ApplicationRecord
diff --git a/db/migrate/20240913155424_add_service_name_to_active_storage_blobs.active_storage.rb b/db/migrate/20240913155424_add_service_name_to_active_storage_blobs.active_storage.rb
new file mode 100644
index 0000000..a15c6ce
--- /dev/null
+++ b/db/migrate/20240913155424_add_service_name_to_active_storage_blobs.active_storage.rb
@@ -0,0 +1,22 @@
+# This migration comes from active_storage (originally 20190112182829)
+class AddServiceNameToActiveStorageBlobs < ActiveRecord::Migration[6.0]
+ def up
+ return unless table_exists?(:active_storage_blobs)
+
+ unless column_exists?(:active_storage_blobs, :service_name)
+ add_column :active_storage_blobs, :service_name, :string
+
+ if configured_service = ActiveStorage::Blob.service.name
+ ActiveStorage::Blob.unscoped.update_all(service_name: configured_service)
+ end
+
+ change_column :active_storage_blobs, :service_name, :string, null: false
+ end
+ end
+
+ def down
+ return unless table_exists?(:active_storage_blobs)
+
+ remove_column :active_storage_blobs, :service_name
+ end
+end
diff --git a/db/migrate/20240913155425_create_active_storage_variant_records.active_storage.rb b/db/migrate/20240913155425_create_active_storage_variant_records.active_storage.rb
new file mode 100644
index 0000000..94ac83a
--- /dev/null
+++ b/db/migrate/20240913155425_create_active_storage_variant_records.active_storage.rb
@@ -0,0 +1,27 @@
+# This migration comes from active_storage (originally 20191206030411)
+class CreateActiveStorageVariantRecords < ActiveRecord::Migration[6.0]
+ def change
+ return unless table_exists?(:active_storage_blobs)
+
+ # Use Active Record's configured type for primary key
+ create_table :active_storage_variant_records, id: primary_key_type, if_not_exists: true do |t|
+ t.belongs_to :blob, null: false, index: false, type: blobs_primary_key_type
+ t.string :variation_digest, null: false
+
+ t.index %i[ blob_id variation_digest ], name: "index_active_storage_variant_records_uniqueness", unique: true
+ t.foreign_key :active_storage_blobs, column: :blob_id
+ end
+ end
+
+ private
+ def primary_key_type
+ config = Rails.configuration.generators
+ config.options[config.orm][:primary_key_type] || :primary_key
+ end
+
+ def blobs_primary_key_type
+ pkey_name = connection.primary_key(:active_storage_blobs)
+ pkey_column = connection.columns(:active_storage_blobs).find { |c| c.name == pkey_name }
+ pkey_column.bigint? ? :bigint : pkey_column.type
+ end
+end
diff --git a/db/migrate/20240913155426_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb b/db/migrate/20240913155426_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb
new file mode 100644
index 0000000..93c8b85
--- /dev/null
+++ b/db/migrate/20240913155426_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb
@@ -0,0 +1,8 @@
+# This migration comes from active_storage (originally 20211119233751)
+class RemoveNotNullOnActiveStorageBlobsChecksum < ActiveRecord::Migration[6.0]
+ def change
+ return unless table_exists?(:active_storage_blobs)
+
+ change_column_null(:active_storage_blobs, :checksum, true)
+ end
+end
diff --git a/public/404.html b/public/404.html
index b612547..2be3af2 100644
--- a/public/404.html
+++ b/public/404.html
@@ -4,7 +4,7 @@
The page you were looking for doesn't exist (404)
-
+
diff --git a/public/406-unsupported-browser.html b/public/406-unsupported-browser.html
new file mode 100644
index 0000000..7cf1e16
--- /dev/null
+++ b/public/406-unsupported-browser.html
@@ -0,0 +1,66 @@
+
+
+
+
Your browser is not supported (406)
+
+
+
+
+
+
+
+
+
Your browser is not supported.
+
Please upgrade your browser to continue.
+
+
+
+
diff --git a/public/422.html b/public/422.html
index a21f82b..c08eac0 100644
--- a/public/422.html
+++ b/public/422.html
@@ -4,7 +4,7 @@
The change you wanted was rejected (422)
-
+
diff --git a/public/500.html b/public/500.html
index 061abc5..78a030a 100644
--- a/public/500.html
+++ b/public/500.html
@@ -4,7 +4,7 @@
We're sorry, but something went wrong (500)
-
+
diff --git a/public/robots.txt b/public/robots.txt
index 3c9c7c0..c19f78a 100644
--- a/public/robots.txt
+++ b/public/robots.txt
@@ -1,5 +1 @@
-# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
-#
-# To ban all spiders from the entire site uncomment the next two lines:
-# User-agent: *
-# Disallow: /
+# See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file