diff --git a/.ruby-version b/.ruby-version index 37c2961c2..a4dd9dba4 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.7.2 +2.7.4 diff --git a/Dockerfile b/Dockerfile index 962e5a8c9..8279e8735 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,7 +26,7 @@ RUN ARCH= && \ mv node-v$NODE_VER-linux-$ARCH /opt/node # Install Ruby -ENV RUBY_VER="2.7.2" +ENV RUBY_VER="2.7.4" RUN apt-get update && \ apt-get install -y --no-install-recommends build-essential \ bison libyaml-dev libgdbm-dev libreadline-dev libjemalloc-dev \ diff --git a/Gemfile b/Gemfile index f0054dcc5..5a7c1e1d3 100644 --- a/Gemfile +++ b/Gemfile @@ -157,5 +157,3 @@ gem 'concurrent-ruby', require: false gem 'connection_pool', require: false gem 'xorcist', '~> 1.1' - -gem 'resolv', '~> 0.1.0' diff --git a/Gemfile.lock b/Gemfile.lock index 04f8be599..f17bcd87a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -492,7 +492,6 @@ GEM regexp_parser (2.1.1) request_store (1.5.0) rack (>= 1.4) - resolv (0.1.0) responders (3.0.1) actionpack (>= 5.0) railties (>= 5.0) @@ -525,7 +524,7 @@ GEM rspec-support (3.10.2) rspec_junit_formatter (0.4.1) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (1.18.2) + rubocop (1.18.3) parallel (~> 1.10) parser (>= 3.0.0.0) rainbow (>= 2.2.2, < 4.0) @@ -766,7 +765,6 @@ DEPENDENCIES redcarpet (~> 3.5) redis (~> 4.3) redis-namespace (~> 1.8) - resolv (~> 0.1.0) rqrcode (~> 2.0) rspec-rails (~> 5.0) rspec-sidekiq (~> 3.1) diff --git a/app/models/report_filter.rb b/app/models/report_filter.rb index c32d4359e..a91a6baeb 100644 --- a/app/models/report_filter.rb +++ b/app/models/report_filter.rb @@ -6,6 +6,7 @@ class ReportFilter account_id target_account_id by_target_domain + target_origin ).freeze attr_reader :params @@ -34,8 +35,21 @@ class ReportFilter Report.where(account_id: value) when :target_account_id Report.where(target_account_id: value) + when :target_origin + target_origin_scope(value) else raise "Unknown filter: #{key}" end end + + def target_origin_scope(value) + case value.to_sym + when :local + Report.where(target_account: Account.local) + when :remote + Report.where(target_account: Account.remote) + else + raise "Unknown value: #{value}" + end + end end diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb index ae8b80fb7..48bbb55c8 100644 --- a/app/serializers/rest/instance_serializer.rb +++ b/app/serializers/rest/instance_serializer.rb @@ -5,7 +5,8 @@ class REST::InstanceSerializer < ActiveModel::Serializer attributes :uri, :title, :short_description, :description, :email, :version, :urls, :stats, :thumbnail, :max_toot_chars, :poll_limits, - :languages, :registrations, :approval_required, :invites_enabled + :languages, :registrations, :approval_required, :invites_enabled, + :configuration has_one :contact_account, serializer: REST::AccountSerializer @@ -66,6 +67,32 @@ class REST::InstanceSerializer < ActiveModel::Serializer { streaming_api: Rails.configuration.x.streaming_api_base_url } end + def configuration + { + statuses: { + max_characters: StatusLengthValidator::MAX_CHARS, + max_media_attachments: 4, + characters_reserved_per_url: StatusLengthValidator::URL_PLACEHOLDER_CHARS, + }, + + media_attachments: { + supported_mime_types: MediaAttachment::IMAGE_MIME_TYPES + MediaAttachment::VIDEO_MIME_TYPES + MediaAttachment::AUDIO_MIME_TYPES, + image_size_limit: MediaAttachment::IMAGE_LIMIT, + image_matrix_limit: Attachmentable::MAX_MATRIX_LIMIT, + video_size_limit: MediaAttachment::VIDEO_LIMIT, + video_frame_rate_limit: MediaAttachment::MAX_VIDEO_FRAME_RATE, + video_matrix_limit: MediaAttachment::MAX_VIDEO_MATRIX_LIMIT, + }, + + polls: { + max_options: PollValidator::MAX_OPTIONS, + max_characters_per_option: PollValidator::MAX_OPTION_CHARS, + min_expiration: PollValidator::MIN_EXPIRATION, + max_expiration: PollValidator::MAX_EXPIRATION, + }, + } + end + def languages [I18n.default_locale] end diff --git a/app/validators/status_length_validator.rb b/app/validators/status_length_validator.rb index 11997024f..2a3ac8862 100644 --- a/app/validators/status_length_validator.rb +++ b/app/validators/status_length_validator.rb @@ -2,7 +2,8 @@ class StatusLengthValidator < ActiveModel::Validator MAX_CHARS = (ENV['MAX_TOOT_CHARS'] || 500).to_i - URL_PLACEHOLDER = "\1#{'x' * 23}" + URL_PLACEHOLDER_CHARS = 23 + URL_PLACEHOLDER = "\1#{'x' * URL_PLACEHOLDER_CHARS}" def validate(status) return unless status.local? && !status.reblog? diff --git a/app/views/admin/reports/index.html.haml b/app/views/admin/reports/index.html.haml index 721c55f71..619173373 100644 --- a/app/views/admin/reports/index.html.haml +++ b/app/views/admin/reports/index.html.haml @@ -7,6 +7,12 @@ %ul %li= filter_link_to t('admin.reports.unresolved'), resolved: nil %li= filter_link_to t('admin.reports.resolved'), resolved: '1' + .filter-subset + %strong= t('admin.reports.target_origin') + %ul + %li= filter_link_to t('admin.accounts.location.all'), target_origin: nil + %li= filter_link_to t('admin.accounts.location.local'), target_origin: 'local' + %li= filter_link_to t('admin.accounts.location.remote'), target_origin: 'remote' = form_tag admin_reports_url, method: 'GET', class: 'simple_form' do .fields-group diff --git a/config/locales/en.yml b/config/locales/en.yml index 51764a0e1..af7266d86 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -579,6 +579,7 @@ en: resolved: Resolved resolved_msg: Report successfully resolved! status: Status + target_origin: Origin of reported account title: Reports unassign: Unassign unresolved: Unresolved diff --git a/docker-compose.yml b/docker-compose.yml index 52eea7a74..459813b3f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,7 +14,7 @@ services: redis: restart: always - image: redis:6.0-alpine + image: redis:6-alpine networks: - internal_network healthcheck: diff --git a/package.json b/package.json index 81abfa8bd..1c14ad610 100644 --- a/package.json +++ b/package.json @@ -154,7 +154,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.0.0", "rimraf": "^3.0.2", - "sass": "^1.35.1", + "sass": "^1.35.2", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 59dda7beb..ce0a12e63 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9821,10 +9821,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.35.1: - version "1.35.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.35.1.tgz#90ecf774dfe68f07b6193077e3b42fb154b9e1cd" - integrity sha512-oCisuQJstxMcacOPmxLNiLlj4cUyN2+8xJnG7VanRoh2GOLr9RqkvI4AxA4a6LHVg/rsu+PmxXeGhrdSF9jCiQ== +sass@^1.35.2: + version "1.35.2" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.35.2.tgz#b732314fcdaf7ef8d0f1698698adc378043cb821" + integrity sha512-jhO5KAR+AMxCEwIH3v+4zbB2WB0z67V1X0jbapfVwQQdjHZUGUyukpnoM6+iCMfsIUC016w9OPKQ5jrNOS9uXw== dependencies: chokidar ">=3.0.0 <4.0.0"