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..7371808 100644 --- a/Gemfile +++ b/Gemfile @@ -1,33 +1,30 @@ 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' + +gem 'bootsnap', require: false # 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..7a1b000 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,85 @@ 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) + bootsnap (1.18.4) + msgpack (~> 1.2) + builder (3.3.0) coderay (1.1.3) coffee-rails (5.0.0) coffee-script (>= 2.2.0) @@ -97,87 +97,112 @@ 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) + msgpack (1.7.2) + net-imap (0.4.16) + date + net-protocol + net-pop (0.1.2) + net-protocol + 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,52 +213,50 @@ 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 + bootsnap coffee-rails - ed25519 jbuilder jquery-rails - listen pg pry-rails - puma (< 5) - rack-attack (~> 6.7) - rails (~> 6.0.4) + puma + rack-attack + rails (~> 7.2.1) sass-rails spring sqlite3 uglifier BUNDLED WITH - 2.2.22 + 2.5.16 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 @@
-

Technical

-

Advanced Technical

-

OpenArt

-

Community/Social

-

Other

+

Technical

+

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/docker-entrypoint b/bin/docker-entrypoint new file mode 100755 index 0000000..67ef493 --- /dev/null +++ b/bin/docker-entrypoint @@ -0,0 +1,8 @@ +#!/bin/bash -e + +# If running the rails server then create or migrate existing database +if [ "${1}" == "./bin/rails" ] && [ "${2}" == "server" ]; then + ./bin/rails db:prepare +fi + +exec "${@}" 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..da8896b 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -1,3 +1,4 @@ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) require 'bundler/setup' # Set up gems listed in the Gemfile. +require 'bootsnap/setup' diff --git a/config/database.yml b/config/database.yml index 1c1a37c..b19c0c5 100644 --- a/config/database.yml +++ b/config/database.yml @@ -21,5 +21,10 @@ test: database: db/test.sqlite3 production: - <<: *default - database: db/production.sqlite3 + adapter: postgresql + encoding: unicode + pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> + host: <%= ENV.fetch("GAUGE_DATABASE_HOST") { "host.containers.internal" } %> + database: gauge + username: gauge + password: <%= ENV["GAUGE_DATABASE_PASSWORD"] %> 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..1a7c2cb 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, coder: JSON 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..87f2b6c 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, coder: JSON 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 diff --git a/storage/.keep b/storage/.keep new file mode 100644 index 0000000..e69de29